Lite råd om mitt arduino-projekt (hoppas på)
Postat: 9 februari 2011, 22:46:05
Hej, ny på forumet och mitt första inlägg. 
Jo, har införskaffat 1 st Arduino uno och har prövat den lite fram o tebax. Lite konstigt med c-kod när man programmerat basic o pascal innan... + nån liten kurs assembler på högskolan. Men det är inga större problem.... ett par rader kod.. kompilera...lite serial out för att kolla variabelvärden.... rätta till osv.
Jag hade från början tänkt att ha den som hastighetsmätare, varvräknare och styra tändningskurvan på min sommarbil... en cheva. Sen lite andra småsaker som oljetempmätare, automatiskt tillslag av kylfläkt vid låga hastigheter o så.
Anledningen till styrningen av tändkurvan är att tändförställningen i fördelaren arbetar med vikter och fjädrar. För att uttrycka det enkelt så funkar skiten inte bra när man modifierar tändkurvan, genom att byta fjädrar o vikter. Jag har slagits med det fram o tebax o gett upp. Till saken hör att motorn är trimmad och behöver en mer aggressiv kurva.
Det var lite bakgrund
Fördelaren är halvelektronisk. Det sitter en spole i den. I spolen så roterar ett 8 tandat hjul. En elektronisk tändmodul känner av signalen från spolen och gör en fyrkantvåg som skickas till tändspolen. Modulen innehåller också "dwell-control", för att variera tiden för tändspolens magnetisering beroende på varvtal. För att variera tändläget avseende på varv så vrider fjädrarna/vikterna innanmätet på fördelaren.
alltså: spole med 8kantigt hjul => tändmodul => tändspole
Jag hade hela tiden tänkt att tjöpa en modernare tändmodul till en nyare bil, då nyare bilar har elektroniskt styrd tändkurva och fler anslutningar på tändmodulen förståss och inga fjädrar/vikter i fördelaren. Vikterna o fjädrarna i min fördelare tänkte jag förpassa.
I min enfald så trodde jag att tändningsförställningen var analogt styrd på dessa och att en inspänning på ett av benen på mellan 0 och 5 volt då enkelt skulle tala om för tändmodulen hur många graders förtändning man ville ha... lätt som en plätt.
Ha-ha.. lång näsa. De funkar som så att tändmodulen sköter tändningen själv tills en "CPU" anser att motorn har startat...runt 400 rpm. CPU:n lägger då en spänning på tändmodulen varvid modulen skickar tändpulserna till CPU:n istället.
CPU:n läser av varvtalet och beräknar när nästa tändpuls skall ske och skickar då en puls i rätt ögonblick tillbaka till tändmodulen som driver tändspolen. Om det inte framgått så eftersläpar CPU:n en tändpuls hela tiden. Den tar signalen från 1:a pulsen från tändmodulen räknar lite och skickar tändpulsen för 2:a pulsen, och så tar den signalen för den andra o skickar iväg för den tredje osv.
Skit o pannkaka...gick omkring o tjurade nån dag innan jag kom på att det var ju inga problem. Jo jag får skriva om koden jag redan börjat på och så får jag trixa lite med att skriva direkt till utgångarna på arduinon, itället för att använda de långsamma färdiga kommandona... har för mig att det är ca 50 ggr snabbare att skriva direkt.
Sen kom jag på att jag behöver ju inte tjöpa nån modern tändmodul alls...som för övrigt måste trixas in i fördelaren och så slipper jag leta efter specialkontakterna till en sån. 1000 spänn sparade kanske.
Min tanke är att simulera en modern tändmodul... lite pseudosimulering kanske:
Behåll original tändmodul: Koppla bort utgångssignalen till tändspolen och ge den till arduinon istället. En spänningsdelare och en zener drar ner spänningen till straxt under 5 volt för att arduinon inte skall få hicka. Arduinon får räkna ut varvtal och när den skall skicka utsignalen till tändspolen (när den skall läggas låg). Exakta tiden när den skall gå regleras med DelayMicroseconds().
Utsignalen från arduinon driver en effekttransistor som är kopplad till tändspolen.
Alltså: spole med 8kantigt hjul => tändmodul => modulens utgång till tändspole => spänningsdelare => arduino => effekttransistor => tändspole.
Som effekttransistor tänkte jag välja Darlington för att jag är bekväm o lat. dvs dålig på att räkna på mer än en transistor och har aldrig testat MOSFET, vilka jag inte riktigt fattat hur de funkar än annat än att de är spänningsstyrda isället . MED Darlington borde jag kunna styra effekttransistorn direkt från arduinon. Vi talar om 4-6 ampere. Gjorde uppskattning i huvudet om att jag behövde minst 700 i hfe på transistorn. Den storleksordningen i alla fall...
Sen så hade jag tänkt att ha en "limp-mode" på det hela, precis som de moderna tändmodulerna har. Alltså om min arduino inte behagar att fungera så skall de funka ändå... motorn alltså. Det hade jag tänkt lösa genom ännu en effekttransistor som ligger i serie med tändspolen (och den effekttransistor som sitter inne i tändmodulen). Den transistorn skall leda till arduinon tycker att det är dags att styra tändningen själv varvid den stängs.
mitt problem är tvådelat:
1: har jag tänkt vettigt ???
2: Limp-mode-transistorn skall leda strömmen så att jag har tändning om arduinon går sönder eller så. Det är alltså arduinon som skall stänga transistorn. Hur löser jag det ??
Jag har bifogat två bilder.. hopkluddade i något GAMMALT student edition. ORIGINAL OCH MODIFIED. Transistorn längst till vänster på båda bilderna är utgångstransistorn i tändmodulen. Att inte bry sig om heller är eventuella värden på komponenterna (lite besvärligt program än så länge)...
Hur kopplar jag den vänstra darlingtonen så att arduinon bryter den ???... nu har jag dragit en tåt från basen till arduinon och det funkar ju inte. En tanke var att ta en resistor från plus till basen och sen låta arduinon jorda basen när den skall kopplas ur.. kanske via en mellantransistor för att hindra för mycket ström in i arduinon, men kan jag vara säker på att darlingtonen stänger helt då och går det inte onödigt mycket ström till jord då ??
Hoppas på hjälp
/Mats
Mycke text men vill att det skall förstås
jo... frekvensen på tändpulserna kommer att variera mellan ca 40-440 Hz.
Det känns också som om den inte kommer hinna med att mäta hastigheten på bilen samtidigt. För hastighetsmätning så varierar pulserna från bakaxeln 0 Hz - 3000 Hz ca. Känns lite nervöst att ha två interrupt när frekvensen för hstigheten kan bli så hög. Har inte progrmmerat på en 15 år kanske och det är nytt för mig med att processorn skall jobba i "realtid"
tackar på förhand
Jo, har införskaffat 1 st Arduino uno och har prövat den lite fram o tebax. Lite konstigt med c-kod när man programmerat basic o pascal innan... + nån liten kurs assembler på högskolan. Men det är inga större problem.... ett par rader kod.. kompilera...lite serial out för att kolla variabelvärden.... rätta till osv.
Jag hade från början tänkt att ha den som hastighetsmätare, varvräknare och styra tändningskurvan på min sommarbil... en cheva. Sen lite andra småsaker som oljetempmätare, automatiskt tillslag av kylfläkt vid låga hastigheter o så.
Anledningen till styrningen av tändkurvan är att tändförställningen i fördelaren arbetar med vikter och fjädrar. För att uttrycka det enkelt så funkar skiten inte bra när man modifierar tändkurvan, genom att byta fjädrar o vikter. Jag har slagits med det fram o tebax o gett upp. Till saken hör att motorn är trimmad och behöver en mer aggressiv kurva.
Det var lite bakgrund
Fördelaren är halvelektronisk. Det sitter en spole i den. I spolen så roterar ett 8 tandat hjul. En elektronisk tändmodul känner av signalen från spolen och gör en fyrkantvåg som skickas till tändspolen. Modulen innehåller också "dwell-control", för att variera tiden för tändspolens magnetisering beroende på varvtal. För att variera tändläget avseende på varv så vrider fjädrarna/vikterna innanmätet på fördelaren.
alltså: spole med 8kantigt hjul => tändmodul => tändspole
Jag hade hela tiden tänkt att tjöpa en modernare tändmodul till en nyare bil, då nyare bilar har elektroniskt styrd tändkurva och fler anslutningar på tändmodulen förståss och inga fjädrar/vikter i fördelaren. Vikterna o fjädrarna i min fördelare tänkte jag förpassa.
I min enfald så trodde jag att tändningsförställningen var analogt styrd på dessa och att en inspänning på ett av benen på mellan 0 och 5 volt då enkelt skulle tala om för tändmodulen hur många graders förtändning man ville ha... lätt som en plätt.
Ha-ha.. lång näsa. De funkar som så att tändmodulen sköter tändningen själv tills en "CPU" anser att motorn har startat...runt 400 rpm. CPU:n lägger då en spänning på tändmodulen varvid modulen skickar tändpulserna till CPU:n istället.
CPU:n läser av varvtalet och beräknar när nästa tändpuls skall ske och skickar då en puls i rätt ögonblick tillbaka till tändmodulen som driver tändspolen. Om det inte framgått så eftersläpar CPU:n en tändpuls hela tiden. Den tar signalen från 1:a pulsen från tändmodulen räknar lite och skickar tändpulsen för 2:a pulsen, och så tar den signalen för den andra o skickar iväg för den tredje osv.
Skit o pannkaka...gick omkring o tjurade nån dag innan jag kom på att det var ju inga problem. Jo jag får skriva om koden jag redan börjat på och så får jag trixa lite med att skriva direkt till utgångarna på arduinon, itället för att använda de långsamma färdiga kommandona... har för mig att det är ca 50 ggr snabbare att skriva direkt.
Sen kom jag på att jag behöver ju inte tjöpa nån modern tändmodul alls...som för övrigt måste trixas in i fördelaren och så slipper jag leta efter specialkontakterna till en sån. 1000 spänn sparade kanske.
Min tanke är att simulera en modern tändmodul... lite pseudosimulering kanske:
Behåll original tändmodul: Koppla bort utgångssignalen till tändspolen och ge den till arduinon istället. En spänningsdelare och en zener drar ner spänningen till straxt under 5 volt för att arduinon inte skall få hicka. Arduinon får räkna ut varvtal och när den skall skicka utsignalen till tändspolen (när den skall läggas låg). Exakta tiden när den skall gå regleras med DelayMicroseconds().
Utsignalen från arduinon driver en effekttransistor som är kopplad till tändspolen.
Alltså: spole med 8kantigt hjul => tändmodul => modulens utgång till tändspole => spänningsdelare => arduino => effekttransistor => tändspole.
Som effekttransistor tänkte jag välja Darlington för att jag är bekväm o lat. dvs dålig på att räkna på mer än en transistor och har aldrig testat MOSFET, vilka jag inte riktigt fattat hur de funkar än annat än att de är spänningsstyrda isället . MED Darlington borde jag kunna styra effekttransistorn direkt från arduinon. Vi talar om 4-6 ampere. Gjorde uppskattning i huvudet om att jag behövde minst 700 i hfe på transistorn. Den storleksordningen i alla fall...
Sen så hade jag tänkt att ha en "limp-mode" på det hela, precis som de moderna tändmodulerna har. Alltså om min arduino inte behagar att fungera så skall de funka ändå... motorn alltså. Det hade jag tänkt lösa genom ännu en effekttransistor som ligger i serie med tändspolen (och den effekttransistor som sitter inne i tändmodulen). Den transistorn skall leda till arduinon tycker att det är dags att styra tändningen själv varvid den stängs.
mitt problem är tvådelat:
1: har jag tänkt vettigt ???
2: Limp-mode-transistorn skall leda strömmen så att jag har tändning om arduinon går sönder eller så. Det är alltså arduinon som skall stänga transistorn. Hur löser jag det ??
Jag har bifogat två bilder.. hopkluddade i något GAMMALT student edition. ORIGINAL OCH MODIFIED. Transistorn längst till vänster på båda bilderna är utgångstransistorn i tändmodulen. Att inte bry sig om heller är eventuella värden på komponenterna (lite besvärligt program än så länge)...
Hur kopplar jag den vänstra darlingtonen så att arduinon bryter den ???... nu har jag dragit en tåt från basen till arduinon och det funkar ju inte. En tanke var att ta en resistor från plus till basen och sen låta arduinon jorda basen när den skall kopplas ur.. kanske via en mellantransistor för att hindra för mycket ström in i arduinon, men kan jag vara säker på att darlingtonen stänger helt då och går det inte onödigt mycket ström till jord då ??
Hoppas på hjälp
/Mats
Mycke text men vill att det skall förstås
jo... frekvensen på tändpulserna kommer att variera mellan ca 40-440 Hz.
Det känns också som om den inte kommer hinna med att mäta hastigheten på bilen samtidigt. För hastighetsmätning så varierar pulserna från bakaxeln 0 Hz - 3000 Hz ca. Känns lite nervöst att ha två interrupt när frekvensen för hstigheten kan bli så hög. Har inte progrmmerat på en 15 år kanske och det är nytt för mig med att processorn skall jobba i "realtid"
tackar på förhand