Kuulutus

Collapse
No announcement yet.

Autocheck lisämittarina (näytön tekstien custom-ohjaus)

Collapse
X
 
  • Suodata
  • Aika
  • Näytä
Clear All
new posts

    Autocheck lisämittarina (näytön tekstien custom-ohjaus)

    Olen monta vuotta miettinyt, että miten helposti autocheckin radion taajuusnäyttöä voisi käyttää esittämään jotain tarpeellisempaa tietoa. Homma sai alkusysäyksen siitä, kun parille kaverille rakentelin Arduino Nanosta 4F:n DRL-ohjainta. Joten ostin eBaysta hintaan 13 e pari tuollaista korttia. Terholta löytyi yksi Gamma-radio jo vuosi sitten ja lopulta sen kaivoin tallin hyllystä hyötykäyttöön.

    Epäilys oli, että kommunikoinnissa käytetään SPI-väylää, koska radiosta löytyivät DATA, CL ja ENA. Vastaavat SPI:ssä ovat MOSI, CLK ja SS. Aluksi mittasin oskilloskoopilla radion pinnejä sain seuraavat tulokset:

    CL: kellotaajuus 10 kHz, alhaalla aktiivinen
    ENA: ylhäällä aktiivinen
    MOSI: alhaalla aktiivinen

    Koska oskilloskoopin kanssa data tarkastelu on vähän hankalaa, päätin käyttää Arduinoa hyväksi. Kytkin radion pinnit korttiin ja tallensin kellon tahtiin DATA-linjaa kokonaisluvuiksi 0 ja 1 riippuen pinnin tilasta. Lisäksi tallensin muutoksen ENA-pinnissä #-merkiksi. Nämä lähetin kortilta eteenpäin USB-väylällä läppäriin ja tulostin Realterm-ohjelmalla näytölle. Kopion pitkän rivin nollia ja ykkösiä notepadiin, pätkin 8 bitin jonoiksi ja tein Excelissä ascii-muutoksen. Tässä vaiheessa ensimmäisen kerran hymyilytti, kun radion näytöllä ollessa 98.5 "stereo" Excelissä luki:

    Koodi:
    #
    00011000    24    "CAN"
    00000010    2    "STX"
    00110000    48    0
    00111001    57    9
    00111000    56    8
    00110101    53    5
    00100000    32    "SPACE"
    #
    #
    00011000    24    "CAN"
    00000010    2    "STX"
    00110000    48    0
    00111001    57    9
    00111000    56    8
    00110101    53    5
    00100000    32    "SPACE"
    #
    Tässä vaiheessa pitää muistuttaa, että koko homma on tehty vain kiinnittämällä johtoja ja koodaamalla, mitään lisäkomponentteja ei tarvittu.

    Seuraavaksi alkoi sitten tappelu sen kanssa, että miksi samaa dataa kortilta autochekille lähetettäessä ei tapahdu mitään. Säädin ja kääntelin kaikkia mahdollisia asetuksia, kunnes lopulta näytöllä luki isolla "TAPE". Tässä kohtaa testailin eri variaatioita ja totesin, että lähetysrutiini mittaristolle tulee olla seuraava:

    ENA ylös
    7 8-bittistä arvoa peräkkäin
    ENA alas
    ENA ylös
    samat 7 8-bittistä arvoa peräkkäin
    ENA alas

    Tässä kohtaa näytöllä oli jo lukuja kolmessa rivissä, mutta ne eivät olleet lähellekään sitä mitä koodissa. Vika selvisi lopulta; Arduinossa datalinja on ylhäällä aktiivinen, eli 1 on ylhäällä ja 0 alhaalla, kun se radiossa on juuri toisinpäin. Arduinossa kuitenkin väylä lepotilassa pinni on ylhäällä, kuten radiossakin. Tätä en heti keksinyt. Homma korjautui invertoimalla tuo pinni toiseen kortin pinniin ja käyttämällä sitä datapinninä. Nyt näyttö alkoikin jo totella käyttäjää: klik. Tässä kohtaa testasin myös 20 kHz:n kellotaajuutta ja näyttö toimii hyvin myös sillä. Mitään muuta hyötyä siitä ei ole kuin prosessorin kellotaajuuden tuplaus, koska SPI-väylän kelloasetukset ovat aika suppeat ja ainoa vaihtoehto on tiputtaa prosessorin kellotaajuutta, joka on nyt 2 MHz. Huonona puolena tuossa on, että mahdolliset merkit riveittäin ovat:

    Ylä: 4 merkkiä 0-9, käyttökelvottomat erikoismerkit
    Keski: stereo-merkki, A-F, käyttökelvottomat erikoismerkit
    Ala: M, U, V, AM, FM + "muistipaikkanumerot/-kirjaimet) 0-6, I, L (esim. U1, M2, V3 jne). Lisäksi U, V ja FM lisäävät yläriville pisteen 3. ja 4. merkin väliin.

    Lisäksi yksikään merkki ei vastaa suoraan ASCII-merkkiä samalla numerolla. :)

    Ajattelin, että ahtopaine olisi sellainen, mikä olisi helppo syöttää mittaristoon. EGT ja AFR myös sellaisia tietoja, mitkä olisivat hyviä. Kortillahan on 8 kpl 10 bit A/D-muunnoskanavia 0-5 V tulolla, joten 0.2-4.8 V ahtopainesignaali voidaan käyttää suoraan.Tällä hetkellä näyttöön syötetään ahtopaine suoraan boksin ahtopainelähdöstä (Urssissa käytössä). EGT odottaa eBaysta tilattua halpisnäyttöä (9 e K-termoparia lukeva digitaalinäyttö), jonka ajattelin teurastaa niin, että se syöttää 0-x V jännitettä kortille. AFR vaatiikin sitten vähän kalliimpia investointeja tai vaihtoehtoisesti itse rakennettua WBO2-ohjainta. Innovate LC-1 olisi reilun 100 e hintaan varmaan ihan järkeväkin ratkaisu. Lisäksi ajattelin lisätä tuonne dataloggauksen kaikista tulosignaaleista lähettämällä dataa USB-portin kautta läppärille. Esim. tuo em. Realterm osaa tallentaa tulevan datan tekstitiedostoon. Joten läppäriltä vain loggauskäsky kortille USB:llä ja se lähettää dataa takaisinpäin.

    Näytön tiloja ohjataan pyyhinviiksestä ajotietokoneen reset-napista. Lyhyt painallushan ei tee mitään ajotietokoneessa, joten sitä voidaan käyttää tähän. Pitkä painallus on ajotietokoneen reset ja se taas hylätään näytön ohjauksessa. Laitan luultavasti tänään johdot paikalleen ja laitan kuvia.

    Edelleen tässä kohtaa muistutan, että homma on tehty 13 euron prossukortilla, mihin ei ole tehty _mitään_ muuta kuin kiinnitetty johdot paikalleen. :)
    Viimeksi muokannut pasi_; 3.1.2013, 10:47.

    #2
    Aika ison työn olet tehnyt. Tälläistä hardcore-twiikkausta meidän foorumi onkin kaipaillut. Erittäin iso hatun nosto! Tulen "ryöstämään" työn hedelmät omaan käyttööni :)

    Comment


      #3
      Nyt on vähän kuviakin. Itse härveli näkyy tässä. Taustalla näkyy diodi, joka pitää olla reset-napin linjassa, ettei mahdollinen 12 V pääse mittaristosta kortille. Ahtopainenäytön toiminta näkyy videolla. Tuosta näkee, että näytön päivitys aiheuttaa välillä sen, että näyttöön saattaa tulla 95 jälkeen kerran 195, vaikka pitäisi olla 100. Oikea data lähetetään, mutta tuo näytön päivitys on vähän hidasta. Katsotaan nyt, että pitääkö lähetysnopeutta vähän hidastaa. Lukema on nyt absoluuttinen, mutta muutan sen pelkästään ylipaineeksi, niin ei turhaan vilku alipainelukemat näytössä. Miinusmerkkiä kun ei eteen saa. Ilman mittarivaloja näyttö on kirkas ja mittarivalot päällä himmeä punainen. Itsellä on valoautomatiikka, jolloin päivällä ei mittarivalot pala niin tuo on ihan hyvä juttu.

      Eri tiloja vaihdetaan tosiaan reset-napilla, video:

      B (boost) - E (EGT) - A (AFR) - OFF - B (boost)

      Merkkikirjaimet B, E ja A näytetään vain hetken aikaa, M1, M2 ja U3 jatkuvasti. Valitettavasti M3:lla ei ole pistettä, joten AFR:n kanssa pitää käyttää U:ta (ULA). EGT- ja AFR-arvot ovat kiinteitä lukuja tällä hetkellä.

      Sitten vielä paikallaan kaasuteltuna arvojen loggaus ja boostista käyrä: http://pasin.kuvat.fi/kuvat/Audi+90+...k/IMAG0054.jpg. Hienosti jo irkissa vinoiltiin, että kameralla screenshotti verkossa olevasta läppäristä... :D Tallennusnopeus on 5 Hz luokkaa, Realterm-ohjelmalla USB:llä syöttämällä kortille *-merkillä käynnistetään loggaus ja #-merkillä pysäytetään. Ohjelma tallentaa sen tekstitiedostoon ja data lähetetään kaksoispisteellä erotettuna, jolloin se on vaikka Excelissä helppo jakaa sarakkeisiin.
      Viimeksi muokannut pasi_; 3.1.2013, 17:38.

      Comment


        #4
        Naputtelinpa vähän lisätoimintoja. Nyt on reset-napilla konffattavissa näytön päivitysnopeus, MAP-anturin koko (laskee automaattisesti normaalissa ilmanpaineessa), ahtopainenäytön tyyppi (absoluuttinen/ylipaine) sekä kaikkien näyttöjen päälle-/poiskytkentä. Voin siis valita vaikka käyttöön vain ahtopainenäytön ja EGT:n, jolloin muut näytöt eivät näy näiden välillä vaihdettaessa. Kytkin myös auton nopeussignaalin tuohon ja tein nopeuskalibraation niin, että 40 km/h nopeudessa nappia painamalla muistiin tallennetaan pulssimäärä, mitä sitten käytetään. Eli renkaita muutettaessa voidaan kalibroida näyttö uusiksi helposti.

        Alkaa olla koodia sen verran, että 2 MHz kellolla tuntuu tulevan jo vähän kiire. Huomasin, että jo reilussa satasessa alkaa näytön päivitysnopeus hieman pudota, jos nopeussignaalia näytteistetään koko ajan. Näin ei kuitenkaan nyt tehdä, ainoastaan nopeusnäytön ollessa käytössä. Voi olla, että dataloggausta ei kaikille kanaville voi yhtä aikaa tehdä kovin suurella taajuudella, jos nopeutta pitää näytteistää samalla. Prkl kun tuon prossun SPI:n kelloasetukset ovat niin suppeat, ettei 16 MHz kidettä voi käyttää ilman 8:lla jakamista.

        Comment


          #5
          Huh, on se hienoa kun osaa. Ite kun ei tajua tämmösistä mitään.

          Comment


          • #6
            Hieno projekti. :) Voisin itsekin vääntää tollasen samalla kun lisää webaan etäkäytön gesmin yli. Se prossu ei gesmin kanssa paljoa laske ja ajon aikana ei edes tarvi nukkua virransäästön vuoksi.
            Alkuperäinen kirjoittaja pasi_ Näytä viesti
            Prkl kun tuon prossun SPI:n kelloasetukset ovat niin suppeat, ettei 16 MHz kidettä voi käyttää ilman 8:lla jakamista.
            En nyt junassa ollessa muista SPI:n kellon speksejä ulkoa, mutta katopas teensy 2.0(++) boardeja. Siinä olis pari prossuvaihtoehtoa lisää joissa tuurilla SPI skaalautuu paremmin. Em. sivulta ladattavalla plugarilla toimii suoraan Arduino -softalla.

            3.0:ssa sit jo 32bit ARMi, kiva sekin.

            http://www.pjrc.com/teensy/index.html
            Viimeksi muokannut Sleepy2; 8.1.2013, 11:27. Perustelu: Hymiöt kielletty.

            Comment


              #7
              Joo, varmasti homma onnistuu, jos vaikka käyttäisi töissä yli jäänyttä 150 MHz Texasin 32-bittistä liukuluku-DSP-prossukorttia, jolla tehdään 68 µs:n aikatasolla vaihtosuuntaajan tehoelektroniikan ohjausta. :) Mutta tuo on edelleen ihan toimiva, pienikokoinen sekä halpa vehe ja riittää tähän hommaan vielä hyvin. Ajattelin, että vois koittaa nostaa kellotaajuuden 16 MHz:iin ja laittaa SPI-rutiinit softaan pyörimään. Ensimmäinen testiversio ei toiminut, vaikka skoopin ja koodin lukemisen perusteella pitäisi olla ihan oikein kaikki. Laitoin vielä lähettämään saman datan USB:llä koneelle bitteinä ja siinäkin se on oikein. No, pitää vähän testailla lisää.

              EEPROM:n lukemisessa tuli pieni ongelma, kun aina autoa startatessa jännite kyykkää ja muistin luku antaa tuloksena puutaheinää. Vaihtoehtoja olisi esimerkiksi viivästää koodin lukua niin, että jännitteet ehtisivät stabiloitua. Tein kuitenkin sen ratkaisun, että otin käyttösähköt X-releen takaa, jolloin kortti on jännitteetön starttauksen ajan. Toimii hienosti.

              Itsellä on ATmega8:aan perustuva Webaston ohjaus, Nokia 6210 kytkettynä kaveriksi. Toiminut hyvin monta vuotta, välillä pitää SIM-kortin kontaktit puhdistaa vuoden parin välein tai bootata puhelin irrottamalla sulake. :) Ei mitään virransäästöjä käytössä prossussa, ei vaikuta akun kestoon. Kännykän ohjaus suoraan johdoilla kolvattuna piirilevyn nappeihin, koska datakaapelin kautta ei onnistunut järkevästi. Kännykästä akku poistettu ja sähkönsyöttö diodin läpi (jännitteen pudotus) 7805:llä.

              Edit: Katsoin nuo Teensyt läpi. Ainakin Atmel-pohjaisissa SPI on sama mitä nykyisessä ja kellotaajuuskin 16 MHz. ARM-versio on 3.3 V, joten vaatii lisäelektroniikkaa.
              Viimeksi muokannut pasi_; 8.1.2013, 10:08.

              Comment


                #8
                Onko siis ongelma, ettei löydy tarpeeks isoa jakajaa SPI:lle, kun auton väylä on niin hidas?

                Comment


                  #9
                  Juurikin. 128 on maksimi ja sen kanssa toimii vielä 2 Mhz kello. 8 MHz kanssa ei enää näyttö toimi. Mutta näköjään prosessorin kellon pääjakajaa voi ohjata softalla, eli voin ehkä tehdä niin, että tiputan lähetyksen ajaksi kellotaajuuden alemmas ja muuten käytän täyttä taajuutta. Vähän kikkailuksi menee, mutta voisi toimia.
                  Viimeksi muokannut pasi_; 8.1.2013, 11:39.

                  Comment


                    #10
                    Ja nyt hajosi mikrokontrolleri luultavasti autosta tulleeseen jännitepiikkiin. Tarvitaan näköjään jotain suojausta 7805:n lisäksi...

                    Comment


                    • #11
                      Uhhuh, sen, mitä käsitin tuosta, vaikuttaa melko H.C. Andersenilta =). Toimiiko tuollainen 2.7T Allroadissa siinä mittariston näytöllä?

                      Comment


                        #12
                        About 99 vuoteen asti on tuolla samalla väylällä, vaikkakin eri kokoinen näyttö. Siitä eteenpäin CAN-väylällä.
                        Pienillä modauksilla toi menis varmasti uudempiinkin. CAN väyläseen pitää sit olla CAN-väylä rautaakin.

                        Comment


                          #13
                          Onkos prefacelift ässä ilman CAN väylää mittariston osalta? Muistelen nähneeni CAN-väylää kytkentäkaavioissa, mutta nyt en muista mistä vuosimallista se oli. Ja toisaalta olen kyllä sitä mieltä ettei sen ikäisessä ässässä vielä CAN-väylää ole.

                          Comment


                            #14
                            se CAN vaihtuu nyrkkisääntönä viisarikello -> digikello

                            Comment


                            • #15
                              Alkuperäinen kirjoittaja amalin Näytä viesti
                              se CAN vaihtuu nyrkkisääntönä viisarikello -> digikello
                              Ai? No hitsi, luulin että se vaihtu about Concert-II -kohdalla. Digikellohan mulla tossa -03:ssa on. Mmhh.. No pitää sit vaihtaa prossu vaikka NXP1768:ksi, siinä on kaks CAN:iä niin voi laittaa sen näytön väliin. Pitää vaan protokolla sitten rev.engineerata uusiksi... Tai googlata.

                              Onkohan tuo näytön CAN sama kuin mikä tulee OBD:lle? Sieltä vois sitten samalla kaivaa kaikkea muutakin.

                              Menee kyllä sen verran säädöksi ettei taida aika riittää kun sen weban ohjauksen tekemiseen...

                              Comment


                                #16
                                Sillähän sen varmistaa, että lähteekö radiolta DATA, ENA JA CLK vai can. Oon kuullu huhuja, että on välimallin mittaristoja, jotka toimii molemmilla.

                                Comment


                                  #17
                                  Ja känillisiä kontrollereita on maa mustana, suosisin autovalmistajienkin käyttämää HC12S:ää (vai olikohan se 12P...), siihen vaan sitten jotain isolointia, jos siis haluaa noihin uudempiin autoihin vastaavia ominaisuuksi. Suurin työ tulee olemaan data-liikenteen dekoodaus, on meinaan aikamoinen määrä noita viestejä tuola auton väylissä, ja sen lisäksi pyydystettävä data voi olla melkein missä tahansa data-kentässä :/
                                  Viimeksi muokannut J-M Koopikka; 10.1.2013, 12:58. Perustelu: muisti vähä prakaa prossun osalta

                                  Comment


                                    #18
                                    Tuota näyttöä ohjataan Can-väyläsessa infortainment väylässä, joten CANin dekoodaus on kertaluokkaa helpompaa, kun _kaikki_ auton viestit ei mene sitä kautta. Mulla on jopa RNS-En ja mittariston välissä CAN-Gate, josta saa väylädatan logitettua ulos.
                                    Jos ois aikaa, niin olis kiva projekti.

                                    Comment


                                      #19
                                      Mulla oli pitkän aikaa demo-kitti duunis, missä oli A5:n mittaristo, kyllä sieläkin aika terve määrä liikennettä meni pelkästään sinne päin (tai mitä se tuotti/kulutti). Sain siitä pyydysteltyä kierroslukuvun ja nopeustiedon asiakasdemoa varten. Mutta mitä muita signaaleja katoin, niin aika hattuvakiolla ne vaihteli :D

                                      Comment


                                        #20
                                        A5;n mittaristo on paria luokkaa vielä isompi informaatioltaan kuin B5 korin. Joten varmasti on liikennettä. :)

                                        Comment


                                          #21
                                          Jahas, toinenkin prossu hajosi autoa käynnistettäessä. Johtuuko sitten ksenoneista vai mistä, mutta pitää laittaa vähän zeneriä suojaksi 5 V:n puolelle, jos vaikka auttaisi.

                                          Comment


                                            #22
                                            Tänään näytössä oli pakolämpö 10 euron eBay-panostuksella. PIkkasen pitää säätää, että näyttää ihan kohdalleen.

                                            Comment


                                              #23
                                              Nyt alkaa olla toimivuus jo ihan ok. Toiminnallisuuksia tällä hetkellä:

                                              - ahtopaine, valittavissa ylipaine tai absoluuttinen, boksilta tieto
                                              - pakolämpö, anturirajapintana 7 e pakolämpömittari, josta ryöstetty vahvistettu 0-5 V anturisignaali
                                              - AFR odottaa WBO2-ohjainta, esim. Innovate LC-1 voisi toimia
                                              - nopeusnäyttö
                                              - testausta odottamassa WGFV:n pulssisuhdenäyttö säätöhommia varten, Porkkis pyysi :)
                                              - dataloggaus läppärille

                                              Asetustilassa:

                                              - näytön päivitysnopeus, luokkaa 2 s välein - useita kertoja sekunnissa
                                              - MAP-anturin koko, 200-1000 kPa 50 kPa portain
                                              - nopeusnäyttö kalibroitavissa rengaskoon mukaan (leveys, profiili, vannekoko), lisäksi +/-10 % hienosäätö nopeudelle 1 % portain
                                              - näyttöjen päälle-/poiskytkentä, jolloin normaalitilassa näyttöjä vaihdettaessa vaihtoehtoina vain halutut

                                              Ylijännitehajoamiset on toivottavasti nyt loppuneet, 5 V puolella 5.6 V:n zener-diodi ylijännitesuojana ja lisäksi 3k3 vastukset näytönohjausjohdoissa ja diodit reset-napin ja nopeussignaalin johdoissa. Testaillaan nyt jonkin aikaa, että miten toimii ja keksitään sitten lisää toiminnallisuuksia. :)

                                              Comment


                                                #24
                                                Tuossa nopeusnäytössä on jokin jännä vika. Kylmällä autolla heittelee nopeus ihan miten sattuu, luokkaa 10-200 km/h. Pikku hiljaa heilunta vähenee, kunnes loppuu kokonaan. Esimerkiksi pakkasessa, kun töihin lähtee, niin 10 min saa ajaa että alkaa näyttämään kohdalleen. Tallista jos lähtee lämpimällä autolla, niin näyttää heti kohdalleen. Pitää laittaa oskilloskooppi kiinni nopeussignaaliin ja katsoa, tuleeko autosta kylmänä joitain häiriösignaaleja. Tuosta omassa purkissa vikaa en kyllä keksi olevan, ellei sitten jokin komponentti kylmänä toimi heikosti.

                                                Comment


                                                  #25
                                                  Vertasin tänään ahtopainemittaria hydrauliikkapainemittaria vasten. Auto sammutettuna näyttää 0.05 bar tarkkuudella samaa. Mutta kun mennään ajamaan, niin mittari näyttää 1.8 bar todellisuuden ollessa 1.65-1.7 bar luokkaa. En tiedä mistä tuo voi johtua. Laitoin 100 mittauksen keskiarvosuodattimen koodiin, mutta sillä ei ollut mitään vaikutusta. Piti sitten laittaa MAP-anturin tyypin määritykseen 10 kPa:n portaat, niin voi säätää näyttämän kohdalleen viiksestä. :)

                                                  Comment


                                                    #26
                                                    Jännitteen regulointi ei pysy vakaana?

                                                    Comment


                                                    • #27
                                                      Millainen kaapeli kulkee anturille? Onko Anturi eristetty rungosta?

                                                      Comment


                                                        #28
                                                        Mitä MAPia käytät? niissä on yleensä ratiometrinen ulostulo, eli skaalautuu käyttöjännitteen mukaan.
                                                        Mittaa käyttöjännite MAPin liittimeltä.
                                                        Näin äkkiä ajateltuna, jos käyttis on esim. 4.8V MAPilla, niin ulostulon arvo vastaa isompaa painetta, kuin että käyttis olis 5V.

                                                        Eli sen saa korjattua skaalaamalla ulostulo todellisen käyttiksen mukaan, teoreettisen sijaan.

                                                        ...ehkä

                                                        Comment


                                                          #29
                                                          MAP on boksin sisällä oleva Motorolan 400 kPa versio: https://shop.vems.hu/catalog/bare-sensor-p-141.html. Näyttö käyttää boksin MAP-tietoa, joka menee Urssissa mittaristoon. Skaalaukset tehty datalehden mukaan. Kaapelina on ihan tavallinen johto. :)

                                                          Maadoituksen erot voisivat tuossa kohtaa vaikuttaa. Kyseessä on kuitenkin niin pieni ero. MAP:n syöttösähkö tulee boksista, reguloitu 5 V ja mittariohjaimella on oma 7805. Joten ei pitäisi akkujännitteellä olla merkitystä.

                                                          Comment


                                                            #30
                                                            Ootko siis haarottanut signaalijohdon. Eri AD-muuntimien sisääntulojen impedanssit voi vaikuttaa signaaliin. Oparilla vois erottaa ne toisistaan, niin eivät vaikuta.
                                                            Jos MAPilla on oma käyttis varrattuna sun ohjaimeen, niin siitäkin voi eroja tulla. AD-muunnin käyttää kuitenkin sun kontrollerin poweria referenssijännitteenä.

                                                            Comment

                                                            Working...
                                                            X