Vanhan auton mittariston ohjaus arduinolla -projekti.

  • Keskustelun aloittaja Keskustelun aloittaja Vauxi
  • Aloitettu Aloitettu
Liittynyt
29.10.2016
Viestejä
413
Mittarivaijerissa alkoi vuosia sitten esiintymään ruostetta ja lukuisista purku ja voitelukerroista huolimatta vaiska takerteli aina vaan enemmän ja enemmän kunnes viimeinen niitti tuli eristeen sulamisesta möykyksi kun vaiskan pidike petti ja vaiska putosi pakoputken päälle sulamaan. Tähän autoon ei vaijereita putiikista saa ja hyvin todennäköisesti vaihteiston päästä on matoruuvikombinaatio sökökin niin ajattelin että nyt on ehkä järkevää soveltaa tänpäivän tekniikkaa tuhoamatta oleellisesti vanhaa. Samalla palautan toimintaan lämpömittarin. Sekun on on ollut poissa käytöstä kun sylinterikannessa on vain yksi paikka lämpötilatunnistimelle joka on varattu Microsquirt modulen käyttöön.

Joten tilailin päivien googlettelun jälkeen Teensy 3.2n, CAN väylä adapterin, Ultimate gps breakoutin + aktiiviantennin ja stepper/dc moottorin ohjaimen.

Nytkun moottoria ohjaa Microsquirt on ajatuksena että sen hyväksi käyttämää moottorin lämpötilatietoa voisi myös käyttää lämpötilaviisarin heiluttamiseen mittaristossa. Vain tämä informaatio etenkin näin alkuvaiheessa luettaisiin CAN väylästä. Viisarin heilutuksesta huolehtisi erittäin perus pwm ohjaus kytkentä. Alkuperäinen anturi on mun mielestä ntc tyyppinen ptc sijaan. Nopeuden suhteen ideana on että moottori tulisi tuettuna suoraan mittariston vaijerin reikään kun mitskun takana on tilaa helposti sille. Siten ei tulisi silvottua ite mittaristoa yhtään kummassakaan tilanteessa.

Olen nyt saanut esimerkki koodeilla arduinon ide serial monitoriin gps dataa ja ohjattua hyvin todennäköisesti riittävän nopeaa ja voimakasta sähkömoottoria. Vain can väylästä en ole saanut ulos sitten yhtään mitään. Pitää vielä skooppaa signaali ettei vika vain ole siinä.

Kaikki tämä tähän asti on ollut "helppoa". Mut nyt jahka can saa näkyviin ruudulle, alkaa se kaikista vaikein osuus. Nimittäin koodaus. Siihen tarviin todella paljon apuja. On nimittäin eri juttu copypastee koodi ruudulle yksittäin ja saada se toimii itsenäisesti kuin joko kirjoittaa tyhjästä tai saada toimimaan monta eri laitetta yhtäaikaa siten että gps datasta tulkataan vain nopeus ja sen perusteella moottorin ohjaus pwm ää muutetaan..
 
Viimeksi muokattu:
jenkkilästä löytyy valmiita settejä kaikille mittareille, sekä gps että myöskin obd väylästä luettaville.

speedhut noita ainakin aikoinaan myi, yhden tuollaisen setin olen suomalaisessa museoautossa nähnyt...


löytyipä nopealla kuukkeloinnilla vähän infoa:

GPS Speedometers and Electric Gauges for Any Car
 
Speedhut oli tiedossa. Mut se eiole oikein vaihtoehtokaan kun tässä nopeusmittari on vaakasuuntainen. Aloitusviestistä näköjään unohtu että Megasquirtin can signaali on epästandardi mutta jälkimarkkina mittareista osa osaa lukea suoraan.
 
Tämäkin edennyt 1.5 jätti askelta meikän osaamistasolla. CAN ja GPS signaali on vihdoin ja viimein saatu eri sketseinä näkymään Teensyn sarjamonitorissa. Eilen sain puukotettua kitchensink esimerkki koodista kaiken tässä projektissa ylimääräisen pois. Eli nyt sarjamonitoriin tulostuu vain nopeus kilometreinä. Sama täytyisi jotenkin saada tehtyä myös CAN väylään. Se vaatii vaan rajusti yritystä ja ¤#()//¤#" sanoja :D

Gps ja niin ikään CAN signaalin kohdalla seuraava askel on saada signaalin purun tulos hyödynnettyä kahdessa pwm ohjauksessa. Olenko ihan hakoteillä siinä että pitääkö mun antaa molemmille dekoodaus tulokselle jokin "nimi" jota sitten hyödynnetään pwm ohjauksessa ? Kulkiko tämä nyt nimellä muuttuja ?
 
Muuttujapa hyvinkin. Säästä nyt itseltäsi aikaa ja vietä pari iltaa jonkun ohjelmoinnin alkeet -tutoriaalin parissa. Tutoriaalin ei tarvi liittyä edes arduinoon millään tavalla kunhan on joku c-sukuinen kieli. Perusjutut kun hanskaa edes jotenkin, on tällainen projekti aivan helppo.
 
Whoa. Kuuklasin viikonloppuna kovin samalla ynnäillen ja ihme tapahtui. Sain luotua simppelin ja ennenkaikkea toimivan koodin kokonaisuudessaan. Eli gps data ja can data molemmat muuttuvat omiksi pwm leveyksiksi skaalattuna passelisti.

Sain myös sullottua kaikki osat pieneen laatikkoon. Seuraavaksi on sitten tehtävä mekaaninen toteutus mittariston päässä. :)
 
No jopas on. Nopeusmittari toimii kun potentiometristä kääntelee sille tahtia. Lähtökohdaltaan mittari näytti pienimmillään 50-60kmh kun nollasta lähti pyörittämään. Senverta kipakat magneetit. Muuttelin teensystä pwm ohjauksen taajutta reilusti alemmaksi ja kappas kun nyt pystyy viisaria pitämään 20kmh hitaimmillaan. Tuli ns reilusti enemmän voimaa moottorin pyörittämiseen hitaammalla taajuudella. Vielä hitaammasta ei ollut mitään hyötyä ja moottorikin alkoi vaan pöristä enemmän. Lisäksi koodasin lähes ite! moottorille purskeen jotta sen saa pyörimään heti hitaasti. Nyt viisari loikkaa nollasta noin 25kmh tienoille ja putoo heti 20kmh. Säädettävää on siis vielä. Mutta se hoituu kesän aikana kun saa muuten skaalauksen kohdalleen. Samaan syssyyn toteutin myös niin että moottoria ei ohjata ennen tiettyä arvoa. Eli 0-18kmh on ohjaus nolla. Matkamittarihan ei tällöin pyöri. Mutta eipä sillä niin väliäkään. Myöskin moottorin ohjauksen resoluutio on täysillä nyt.

Lämpömittari osottautu rikkinäiseksi. Tilasin mooonta metriä käämilankaa..
 
Nyt kun nuo aiemmin koodatut mittarit toimivat teoriassa sekä työpöydällä, niin aattelin valjastaa ulkoisen kierroslukumittarin arduinon taakse. Sekin tieto tulee can väylää pitkin ihan 1:1. Eli kun motori pyörii esimerkiksi 2458rpm niin sama numero tulee myös väylän kautta. Sain vinkiksi ulkomailla että käytä tone komentoa tässätapauksessa kun pitää signaalin taajutta muuttaa pulssinleveyden sijaan. Tone toimii kyllä teoriassa. Mutta sen kanssa on pakko käyttää delay komentoa ja se luo perin ikävän viiveen ainakin kierroslukuviisarin ohjaukseen. Vieläkun tone käskyssä on alarajana 30hz ja neloskone pyörii noin 33hz tuhannella kierroksella minuutissa niin ei oikeen ole paras. Delayn pituutta muuttamalla saa näyttämän skaalaa hierottua reagointinopeuden rajusti kärsimällä.

Eli nyt on ulkomuistista
tone(pinni, mapattu taajuus)
delay(15-20 riippuen mitä haluaa laittaa)
noTone
Onkohan jollain parempia ideoita, varsinkin että millä tuon delayn saisi pois tuosta? Ajatuksena kun on nostaa gps vauhti täysille, tai ainakin 5hz jolloin jatkuvat tauot voi olla perin ikäviä.
 
No jopas on. Nopeusmittari toimii kun potentiometristä kääntelee sille tahtia. Lähtökohdaltaan mittari näytti pienimmillään 50-60kmh kun nollasta lähti pyörittämään. Senverta kipakat magneetit. Muuttelin teensystä pwm ohjauksen taajutta reilusti alemmaksi ja kappas kun nyt pystyy viisaria pitämään 20kmh hitaimmillaan. Tuli ns reilusti enemmän voimaa moottorin pyörittämiseen hitaammalla taajuudella. Vielä hitaammasta ei ollut mitään hyötyä ja moottorikin alkoi vaan pöristä enemmän. Lisäksi koodasin lähes ite! moottorille purskeen jotta sen saa pyörimään heti hitaasti. Nyt viisari loikkaa nollasta noin 25kmh tienoille ja putoo heti 20kmh. Säädettävää on siis vielä. Mutta se hoituu kesän aikana kun saa muuten skaalauksen kohdalleen. Samaan syssyyn toteutin myös niin että moottoria ei ohjata ennen tiettyä arvoa. Eli 0-18kmh on ohjaus nolla. Matkamittarihan ei tällöin pyöri. Mutta eipä sillä niin väliäkään. Myöskin moottorin ohjauksen resoluutio on täysillä nyt.

Lämpömittari osottautu rikkinäiseksi. Tilasin mooonta metriä käämilankaa..

Eikös askelmoottorin saa pyörimään siniaaltoaproksimaatiolla ihan mielettömän hitaillakin nopeuksilla, eikä se pidä pahaa ääntäkään.. Katso jostain "microstepping", sillä löytynee ohjeita..
 
Viimeksi muokattu:
Eikös askelmoottorin saa pyörimään siniaaltoaproksimaatiolla ihan mielettömän hitaillakin nopeuksilla, eikä se pidä pahaa ääntäkään.. Katso jostain "microstepping", sillä löytynee ohjeita..

Nopeus/matkamittarin toiminta on riittävällä tasolla nyt. Ymmärsin että askelmoottoria ei välttämättä saa pyörimään tarpeeksi nopeasti jotta mittarin saisi täyteen laukkaansa. Myöskin pykeltävä pyörintä on huonosta.
 
Siis sulla on ihan normi kierroslukumittari joka ohjataan (sytytys)pulssilla?

Käytä vapaata 16bit timeriä, aseta perustaajuus 250KHz. Pulssin pituuden voit asettaa yhteen timerin rekisteriin (OCRnA), ja koko syklin duraation toiseen (ICRn). Ja PWM moodiin koko timeri, nyt sulle tulee sitten automaattisesti esim. 1ms pulssi halutulla taajuudella kokoajan taustalla.

Itse oon tehnyt tällä periaatteella dieselin kierroslukumittarin ohjauksen.
 
Onkos noissa vapaissa timereissä jokin pinnirajoitus ? Nyt kun molen jo muuttanut taajuutta ja resoluutiota niin sepäs muuttaa pakosti melkein kaikista pinneistä kun ovat linkitetty keskenään samaan kellopiiriin. Ainoastaan levyn alapuolella olevat parit pinnit ovat eri piirissä ja niihin ikäväkyllä eiole enää oikein pääsyä kun paketti on koteloitu tiukasti.
Tosiaan ostoslistassa on perinteinen kierroslukumittari viisarilla mikä huolii 12 kanttiaaltoa signaaliksi. Saan oikeanlaista signaalia ulos suoraan ohjainlaittesta mutta en muista että olenko johdottanut sen..
 
Jokaiselle timerille on omat kovakoodatut pinnit ulostuloon.
 
Jokaiselle timerille on omat kovakoodatut pinnit ulostuloon.
Joka näyttäisi olevan Teensyssä pinni 5 ja se on jo käytössä lämpömittarille. Sekä näköjään 3 ja 5 sekä 25 ja 32. Kaksi ekaa ovat käytössä jo ja jälkimmäisiin eiole fyysistä pääsyä enää :/ Eli puljaamiseksi menee.
 
Jaa unehtunut kirjoittaa tännekkin että nopeusmittari ja lämpömittari ovat nyt molemmat omilla askelmoottoreillaan. Vaihteistoremontin yhteydessä jätin matoruuvin pois sieltä. Lopullinen testiajo eli kesän pöristelyt on suorittamatta kun meni käpy koko autoon :D Koeajolla nopeusmittari kyllä näytti täsmälleen oikeita lukuja.
 
On tullut ajettua tällä autolla säilytys mestan tontilla edestakaisin. Nopeusmittari toimii hienosti ainakin nyt vähintään sinne 20kmh asti. Lämpömittarikin toimii hienosti. Ai että kun osaisi tehdä niin että voisi luopua jokakertaisesta askelmoottoreiden pakittamisesta toppariaan vasten kun pistää virrat päälle. Nopeusmittarissa ei tota ehkä niin tarvitsisi, virrat tuskin koskaan katkee vauhdissa.. Mutta lämpömittarin kanssa aina. Sehän jää siihen asentoon pystyyn missä sattuu olemaan kun virrat sammuttaa. Tämä nollakohdan muistaminen tartteisi vähintäänkin jatkuvan muistijännitteen viemisen teensyn lootaan yms enkä ole siitä ihan niin vakuuttunut että se tarvitsee sellaisen. :)
 

Statistiikka

Viestiketjuista
261 775
Viestejä
4 546 788
Jäsenet
74 846
Uusin jäsen
Urnaakkeliz

Hinta.fi

Back
Ylös Bottom