Page 1 of 4 1234 LastLast
Results 1 to 10 of 37

Thread: Button interface to Bordmonitor on BMW E39 and E46

  1. #1
    Maximum Bitrate bes51659's Avatar
    Join Date
    Sep 2005
    Location
    Vasastaden, Stockholms Län, Sweden, Sweden
    Posts
    852

    Button interface to Bordmonitor on BMW E39 and E46

    Button interface to Bordmonitor on BMW E39 and E46
    This thread will be used as communication channel as well as documentation of common project originally started on hacktheibus.

    I will edit this initial post so that latest info always will be found here.

    Code, schematics, gerber files etc will be shared. Maybe with copywrite.

    Objective
    By removing these connectors from the E39 and placing them onto own pcb to interface the buttons on the BM there will be room to do a screen upgrade since there is no use for original BMW electronics anymore. Goal is also to make it fit the E46 as the buttons in that BM are designed in a similar fashion.



    Art has reversed enginered the button pcb's of the E39
    Drawing over E39 button pcb here

    I have reverese engineered button pcb's of the E46
    Pictures and pinout of right pcb here
    Pictures and pinout of left pcb here
    Pictures and pinout of knobs here
    Eagle files of BMW button pcb's here

    E39 and E46 button pcb's are very similar
    Originating from E46 I have added E39 specifics into Eagle project here

    There are some differences in electronics between the E39 and E46
    1) E39 has diodes on all inputs, E46 has it only on some.
    2) There is one extra LED on E39 for FAN
    3) The eject button is connected to GND on E39
    4) The common wire for Phone and Clock has no series resistor on E39
    5) Button layout differ
    6) LED series resistor values differ. Probably different supply voltage.



    In order to interface them both onto the same pc. Design suggestion and schematics
    - Remove all diodes on button pcb's.
    - Add zero resistor or jumper to set cpu in E39 or E46 mode. This is the only way I have come up with to change behaviour of INFO-DISPLAY-MODE buttons.
    - Use analogue inputs for buttons that has parallel resistor ladder. Will save IO, and the switches have 250-1000ohm resistors.
    - "Digital" IO input for eject button on E39
    - Add digital logic to decode knob pulses into pulses according to direction

    I have made an initial design with Eagle here.

    It is not complete, but size of board, position of holes and connectors are correct.


    Art schematics
    schematics one here
    schematics two here

    Eagle symbols
    The propriatory BMW Connectors
    Milexis ibus chip here TH3122here

    E46 BM button codes
    here

    PCB
    Made as one piece to make it cheaper.



    Assembled

    Now there is room for the LCD interface board! You can see the flat cable that interconnects the two pcb's, and the interface cables. 12V, 0V and IBus.



    E46
    I had to make a new pcb for the E46, as holes overlaped. I also added a connector for the original buttons on the LCD panel (select input, brightness etc) so that I could throw those buttons away, and simulate them by propriatory ibus messages from the PC. What I will do is to add a menu to the front end. As you can see, I have also cut away the mid piece from the frame to make it easier to fit the LCD panel. 3 wire interface is not on picture. (12V, GND and iBus) Left and right pcb are connected with 20 pole flatcable (on picture)



    C# application for test. One tab for E46 and E39, and a tab for simulating LCD panel button presses.






  2. #2
    Maximum Bitrate bes51659's Avatar
    Join Date
    Sep 2005
    Location
    Vasastaden, Stockholms Län, Sweden, Sweden
    Posts
    852
    Art wrote:
    You wrote there that one has to find out which kind of knobs are used. You don't have to, I can tell you that This are just simple optical rotary encoders giving relative rotation as phase differences on their outputs. On the "reverse engeneered" schematics (which I posted before) of the button pcbs, I put the schematics of how I have connected those rotating knobs. For whatever reasons Alpine (bordmonitor is built by Alpine) decided to use two different knobs, one with 5 pins, the other with 6 pins. However, the functionality/technical specification of them seems to be the same. The one with 6 pins need an Vcc input (5V) and gives phase moved peaks on the J2.2/3 pins. The other (with 5 pins) don't need an extra Vcc. So there one just need to pull-up (to Vcc) both pins J1.1/3 and you get the output. On the E39-forum.de somebody found out the manufacturer of compatible rotating knobs for the 4:3 monitor. I think for
    the 16:9 it could be the same. The original knobs where a special development for Alpina. The compatible one is that one: Grayhill 61C22-01-04-02

    So for that part we know already the solutioon

    cheers,
    art

  3. #3
    Maximum Bitrate bes51659's Avatar
    Join Date
    Sep 2005
    Location
    Vasastaden, Stockholms Län, Sweden, Sweden
    Posts
    852
    Excellent! Found a data cheet here.

    But I doubt that it is optical. I got pure 0 ohm and --- ohm without power supply. Seems mechanical to me.

    I think the sw would really benefit from some logic interfacing. Also with debouncing maybe.

    If you detect these sequencies and generate a clockwise and counterclock pulse if you see what I mean, it would really offload cpu and require much less real time performance.
    clockwise
    A 000-1-111-0-00
    B 000-0-111-1-00

    counterclockwise
    A 00-0-111-1-000
    B 00-1-111-0-000

    So,
    1) debounce with nand (here)
    2) generate clock from any change in A and B to pulse a latch
    3) detect red marked conditions above in two differnt signals. One-Step-Up and One-Step-Down. You can then just have a single positive edge interrupt on these inputs.

    Hardware should do what it do best, and sw what it does best. Gates are cheap. :-)

    I will post Eagle file with schematics for above logic, and mechanical dimensions for both E46 boards later tonight.

  4. #4
    Maximum Bitrate bes51659's Avatar
    Join Date
    Sep 2005
    Location
    Vasastaden, Stockholms Län, Sweden, Sweden
    Posts
    852
    Hi Art

    I have been looking at the E39 button pcb today. I am making an Eagle project that contains both E46 and E39 in one for reference. Common electronics, and two set of connectors. One set for E46 and one set for E39. This way it will be very clear how to make our pcb to fit both.

    There is one concern that I have, and that is regarding the diodes on the button pcb. All inputs on E39 has diodes to LED GND, and some inputs on E46 has the same. Any push button terminal cannot have higher voltage than 0.7V (above LED-)

    So with no lower voltages in the system but 0V that is the voltage on LED's, we have to detect 0V when button is closed and 0.7V when open. Very special IO will have to be used to read that. Please tell me if I am wrong.

    I cannot see any way around this but to remove the diodes, do you?

    I have looked ATMEGA32A briefly, and has found that it has 8 channel 10 bit ADC. Is this the correct spec? http://www.atmel.com/dyn/resources/p...ts/doc8155.pdf

    To save IO I think using the AD inputs is a good ide. Ex. Use 0k, 2k, 6k, 14k, 30k and 62k in series with row 1-6 on left button board. Together with 2x1k serieresistors you will then be able to poll that chain and get unique combinations so that two buttons pressed simultaniously will not be detected as a third button.

    If AD is set correctly only 6 bits will be significant, and 4 bits can make up for noise and tolerances. A "round robin" of button chains will have to be implemented in code and hardware. A current generator will have to be used to get a uniform voltage stairway. (A transistor with emitter resistor will do fine)

  5. #5
    Maximum Bitrate bes51659's Avatar
    Join Date
    Sep 2005
    Location
    Vasastaden, Stockholms Län, Sweden, Sweden
    Posts
    852
    I have made a layout and will order boards and components this week


  6. #6
    Maximum Bitrate bes51659's Avatar
    Join Date
    Sep 2005
    Location
    Vasastaden, Stockholms Län, Sweden, Sweden
    Posts
    852
    pcb received! edit in first post

  7. #7
    Maximum Bitrate bes51659's Avatar
    Join Date
    Sep 2005
    Location
    Vasastaden, Stockholms Län, Sweden, Sweden
    Posts
    852
    Pcb built. Now its time to debug code. Edit in first post.

  8. #8
    FLAC sama's Avatar
    Join Date
    Feb 2006
    Location
    London, UK
    Posts
    1,375
    excellent work. how's this going?

  9. #9
    Maximum Bitrate bes51659's Avatar
    Join Date
    Sep 2005
    Location
    Vasastaden, Stockholms Län, Sweden, Sweden
    Posts
    852
    Thanks Sama
    Well, I do not like strapping pcb's so I am building rev 2 at the moment :-)
    I went Art's way with the buttons using a PCF8574 instead of reistor ladder as the buttons resistans varies a lot.
    A lot of code tested, so I will sone be sone with my combined E46&E39 board.
    Art has finished his board for E39!

  10. #10
    FLAC sama's Avatar
    Join Date
    Feb 2006
    Location
    London, UK
    Posts
    1,375
    I've just actually been in touch with Art to figure out how on earth he "cut" the screen. As it turns out, he cut the footprint by cutting the frame, but not the glass itself.

    I'm going to be doing the same with mine (just bought an E46 vert) so I can get a transflective high res in there, however I'll be keeping the buttons as they are as I want to use the existing OEM setup. I'm hoping to achieve that by using an RGsB converter for the OEM stuff and getting that on the higher res monitor, then switching to use a PC. Worklog currently here

    So just to understand 100% your project, the reason you're replacing the buttons with a custom board, is so that you can fit a bigger screen in there?

    Will the buttons broadcast on the ibus directly or will they be CarPC inputs, which then you're free to do what you want with, including ibus broadcasts?

Page 1 of 4 1234 LastLast

Bookmarks

Posting Permissions

  • You may not post new threads
  • You may not post replies
  • You may not post attachments
  • You may not edit your posts
  •