Announcement

Collapse
No announcement yet.

Button interface to Bordmonitor on BMW E39 and E46

Collapse
X
  • Filter
  • Time
  • Show
Clear All
new posts

  • 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.





    My car installation mp3car thread "showing off project"

  • #2
    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
    My car installation mp3car thread "showing off project"

    Comment


    • #3
      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.
      My car installation mp3car thread "showing off project"

      Comment


      • #4
        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)
        My car installation mp3car thread "showing off project"

        Comment


        • #5
          I have made a layout and will order boards and components this week

          My car installation mp3car thread "showing off project"

          Comment


          • #6
            pcb received! edit in first post
            My car installation mp3car thread "showing off project"

            Comment


            • #7
              Pcb built. Now its time to debug code. Edit in first post.
              My car installation mp3car thread "showing off project"

              Comment


              • #8
                excellent work. how's this going?
                Current:
                [BMW E46 ///M3 Convertible]

                Previous:
                [BMW E31 850CSi]|[BMW E39 535i]|[BMW HVAC Research]|[IBUS Scrolling Text]|[BMPuter]|[Velocity]|[TomTom]|[Vision]|[Space Navigator Driver]|[Super Fast Boot]

                Comment


                • #9
                  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!
                  My car installation mp3car thread "showing off project"

                  Comment


                  • #10
                    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?
                    Current:
                    [BMW E46 ///M3 Convertible]

                    Previous:
                    [BMW E31 850CSi]|[BMW E39 535i]|[BMW HVAC Research]|[IBUS Scrolling Text]|[BMPuter]|[Velocity]|[TomTom]|[Vision]|[Space Navigator Driver]|[Super Fast Boot]

                    Comment


                    • #11
                      Have not read you log, but I will.

                      The board will output keypresses on ibus just as the OEM does. As far I understand it will be completely compatible with OEM for this reason, but this has not been verified. Maybe you can do that :-)

                      The OEM baord covers the entire width of the door, and contains analogue LCD panel controller as well as button interface. By the use of a board like mine or Art's you can get rid of that OEM board and for E39 that is absolutely nessessary to be able to get anything else in there. It makes E46 conversion much easier too. Not only cdo you free space for your own screen, but you also loose the flatcable from the door to the house. All you need is three wires, power and ibus. This makes it much easier to fit your own flat cable in there for your own LCD driver board.

                      Don't know how much power Art's board takes, but mine takes 2mA and can be powered on at all times. No need to handle polling of BM etc. The buttons works all the time!

                      If you also build a board like my "dash pcb" that will drive LCD LED backlight (dimmed by ibus dash illumination messages) and the door motor you can loose the OEM pcb inside the house too. It can also "press" eject on a DVD drive so that DVD is ejected when door has fully opened.

                      Maybe then it is even possible to fit the PC in there too....;-)
                      My car installation mp3car thread "showing off project"

                      Comment


                      • #12
                        I'll be following your unbelievable enthusiasm with great enthusiasm!
                        Current:
                        [BMW E46 ///M3 Convertible]

                        Previous:
                        [BMW E31 850CSi]|[BMW E39 535i]|[BMW HVAC Research]|[IBUS Scrolling Text]|[BMPuter]|[Velocity]|[TomTom]|[Vision]|[Space Navigator Driver]|[Super Fast Boot]

                        Comment


                        • #13
                          So I've taken my board monitor apart and had a good look inside. I can see why you're doing this and I think I have to do the same now too!

                          I have the Bluetooth in the car however and I'm wondering if there's a way to keep the LED's for that?
                          Current:
                          [BMW E46 ///M3 Convertible]

                          Previous:
                          [BMW E31 850CSi]|[BMW E39 535i]|[BMW HVAC Research]|[IBUS Scrolling Text]|[BMPuter]|[Velocity]|[TomTom]|[Vision]|[Space Navigator Driver]|[Super Fast Boot]

                          Comment


                          • #14
                            The LED's are controlled by iBus, so there is no difference there. At least the board I make will support all LED's. I think Art's is too.
                            My car installation mp3car thread "showing off project"

                            Comment


                            • #15
                              Excellent! Now I want it!

                              If I was to fit my LCD controller with the screen, I'd need power, VGA, video (reverse camera) and ibus to go to the back of the panel. Could I do what BMW have done and use a flat cable to carry all of those, including enough juice to power the LCD? I know a bit about electronics but I'm not amazing at soldering.

                              I'm thinking, the RGsB to VGA adaptor (verified this works now) can be put inside the back of the board monitor, taking the RGB lines directly from the boardmonitor connector and giving a VGA signal to the new higher res LCD. Final piece of the puzzle would be to add an ibus activated VGA switcher (maybe it can pretend it's the CD player or something), which would then switch to the external VGA/Video inputs. Add VGA and Phono plugs on the back of the board monitor and voila... BoardMonitor++ ready for an use!
                              Current:
                              [BMW E46 ///M3 Convertible]

                              Previous:
                              [BMW E31 850CSi]|[BMW E39 535i]|[BMW HVAC Research]|[IBUS Scrolling Text]|[BMPuter]|[Velocity]|[TomTom]|[Vision]|[Space Navigator Driver]|[Super Fast Boot]

                              Comment

                              Working...
                              X