Innehållsförteckning:
2025 Författare: John Day | [email protected]. Senast ändrad: 2025-01-23 15:11
Den här guiden beskriver hur jag använde en Arduino UNO R3, en 16x2 LCD -skärm med I2C och en LED -remsa som ska användas som motorvarvtalsmätare och växelljus i min Acura Integra -spårbil. Det är skrivet i form av någon med viss erfarenhet eller exponering för Arduino -programvara eller kodning i allmänhet, den matematiska programvaran MATLAB, och som skapar eller modifierar elektriska kretsar. I framtiden kan detta revideras för att vara lättare att förstå för någon med liten eller ingen erfarenhet av dessa ämnen.
Steg 1: Välj en Sigal Wire
Du måste få en signal som korrelerar till motorvarvtalet. Det är möjligt att lägga till ett system som mäter motorvarvtalet, men det är mycket mer praktiskt att slå på en befintlig tråd som bär information om motorvarvtal. En enda bil kan ha flera källor för detta, och den kan variera väldigt mycket från år till år på en enda fordonsmodell. För denna handledning kommer jag att använda exemplet på min bil, ett spår som ändrades 2000 Acura Integra LS. Jag upptäckte på min motor (B18B1 med OBD2) att det finns en oanvänd spänning som är 12V hög och sjunker till 0V efter att ha fullbordat ett varv.
Saker som hjälper till att identifiera en potentiell motorvarvtalssignal:
- Kopplingsschema för ditt fordon
- Söker forum efter ditt fordon med motor-/ECU -signaler
- En vänlig mekaniker eller bilentusiast
Steg 2: Förläng tråd till Arduino Board
När du har valt en lämplig signal måste du förlänga den till var du än placerar ditt Arduino -kort. Jag bestämde mig för att placera min inuti fordonet där radion brukade vara, så jag ledde den nya tråden från motorn, genom en gummikanal i brandväggen och direkt till radioområdet. Eftersom det redan finns en överflödig mängd handböcker om avskalning, lödning och skydd av ledningar kommer jag inte att förklara denna process.
Steg 3: Signalanalys
Det är här saker kan bli komplicerade. Att ha en allmän förståelse för signalanalys och kontroller hjälper dig långt, men är genomförbart med lite kunskap.
Signaltråden som väljs kommer troligen inte att spotta ut det exakta värdet på motorvarvtalet. Den måste formas och modifieras för att ge det exakta antalet motorvarvtal du vill ha. På grund av det faktum att alla olika bilar och signalkablar valde kan vara annorlunda, kommer jag från och med nu att förklara hur jag använde positionssignalen från distributören på min Integra.
Min signal är normalt 12V och sjunker till 0V när jag fullbordar en hel rotation. Om du vet tiden för att slutföra en hel rotation, eller en hel cykel, kan detta enkelt översättas till varv/min med hjälp av några grundläggande begrepp.
1 / (sekunder per cykel) = cykler per sekund eller Hz
Varv per minut = Hz * 60
Steg 4: Koda din signalanalys
Denna metod kräver att man får den tid det tar för insignalen att slutföra en hel cykel. Lyckligtvis har Arduino IDE -programvaran ett kommando som gör exakt det, PulseIn.
Detta kommando väntar på att en signal ska passera ett tröskelvärde, börja räkna och sluta räkna när tröskeln överskrids igen. Det finns några detaljer som bör noteras när du använder kommandot, så jag kommer att inkludera en länk till information om PulseIn här:
PulseIn returnerar ett värde i mikrosekunder, och för att hålla matten enkel bör detta omedelbart konverteras till normala sekunder. Efter matematiken i föregående steg kan denna tidsperiod likställas direkt med varvtal.
Obs: efter försök och fel upptäckte jag att distributören genomför två varv för varje varv på motorns vevaxel, så jag delade mitt svar helt enkelt med 2 för att ta hänsyn till det.
Steg 5: Identifiera ett filter
Om du har tur kommer din signal inte att ha något "brus" (fluktuationer) och motorvarvtalet kommer att vara exakt. I mitt fall kom det mycket buller från distributören som ofta gav spänningar långt ifrån vad som förväntas. Detta blir till mycket falska avläsningar av det verkliga motorvarvtalet. Detta buller måste filtreras bort.
Efter viss signalanalys kom nästan allt brus med frekvenser (Hz) som var mycket högre än vad själva motorn matade ut (vilket är sant för de flesta verkliga dynamiska system). Detta innebär att ett lågpassfilter är en idealisk kandidat för att ta hand om detta.
Ett lågpassfilter låter låga frekvenser (önskade) passera och dämpar högfrekvenserna (oönskade).
Steg 6: Filtrering: Del 1
Design av filtret kan göras för hand, men att använda MATLAB kommer att påskynda detta betydligt om du har tillgång till programvaran.
Ett lågpassfilter kan likställas med en överföringsfunktion (eller fraktion) i Laplace -domänen (frekvensdomän). Ingångsfrekvensen multipliceras med denna bråkdel och utsignalen är en filtrerad signal som bara har den information du vill använda.
Den enda variabeln i funktionen är tau. Tau är lika med 1 / Omega, där Omega är den gränsfrekvens du vill ha (måste vara i radianer per sekund). Avstängningsfrekvensen är gränsen där frekvenser högre än den kommer att tas bort och frekvenser lägre än den kommer att hållas.
Jag ställer in avstängningsfrekvensen lika med ett varv / min min motor aldrig kommer att uppnå (990 r / min eller 165 Hz). FFT -graferna visar ungefär vilka frekvenser min råsignal bar och de frekvenser som kom ut ur filtret.
Steg 7: Filtrering: Del 2
Här användes MATLAB igen för tidens skull. Avstängningsfrekvensen definieras och därifrån visas den resulterande överföringsfunktionen. Tänk på att denna fraktion endast gäller för Laplace-domänen och kan inte direkt användas på en tidsbaserad mikrokontroller som Arduino UNO R3.
Steg 8: Filtrering: Del 3
MATLAB har ett kommando som kommer att konvertera en kontinuerlig funktion (frekvensdomän) till en diskret funktion (tidsdomän). Utdata från detta kommando kommer att ge en ekvation som enkelt kan införlivas i Arduino IDE -kod.
Steg 9: Filtrering: Del 4
I Arduino -skissen, inkludera variablerna u och y före installationen. Flytkommandot definierar helt enkelt hur variabeln ska lagra data (saker som maximivärde, decimaler, etc …) och en länk till mer information om detta kommer att tillhandahållas här: https://www.arduino.cc/reference/en/language /varia …
I slingan där konverteringen från råsignalen till motorvarvtal sker, inkludera u -variabeln och y -multipelekvationen. Det finns flera sätt att använda detta, men variabeln u bör sättas lika med den råa insignalen som mäts, och variabeln y är det filtrerade värdet.
Steg 10: Visa ditt filtrerade motorvarvtal
Rekommenderad:
Så här ställer du in Samsung Galaxy S7 med Android 8.0 för att bara visa skärmen för en app !!: 5 steg
Så här ställer du in Samsung Galaxy S7 med Android 8.0 att bara visa skärmen för en app !!: Denna instruktion visar dig hur du ställer in din samsung galaxy s7 för att bara visa skärmen för en app.Detta är bra om du har en bebis/ett barn som gillar att spela med din telefon eller vill se till att din telefon bara finns i en app när någon annan är
Använd Cortana och en Arduino för att styra RGB -lysdioder eller Ledstrips med din röst !: 4 steg (med bilder)
Använd Cortana och en Arduino för att styra RGB -lysdioder eller Ledstrips med din röst !: I den här instruerbara filmen visar jag dig hur du kan styra din RGB -LED eller LED -remsa med din röst. Detta görs av CoRGB -appen som är tillgänglig gratis i Windows App Store. Denna app är en del av mitt CortanaRoom -projekt. När du är klar med
Använd HC-05 Bluetooth-modul för att inse mikro: bitkommunikation med mobiltelefon: 9 steg (med bilder)
Använd HC-05 Bluetooth-modul för att realisera mikro: bitkommunikation med mobiltelefon: I kapitlet Använd HC-06 Bluetooth-modul för att förverkliga mikro: bitkommunikation med mobiltelefon har vi pratat om hur man använder HC-06 för att förverkliga kommunikation mellan mikro: bit och mobiltelefon. Förutom HC-06 finns det en annan vanlig Bluetooth-modul
Använd HC-06 Bluetooth-modul för att inse mikro: bitkommunikation med mobiltelefon: 8 steg (med bilder)
Använd HC-06 Bluetooth-modul för att inse Micro: bitskommunikation med mobiltelefon: Många vänner runt mig som spelar micro: bit säger till mig att Bluetooth-anslutningen till micro: bit inte är stabil. Det är lätt att koppla bort. Om vi använder mikropyton kan Bluetooth inte ens tas i bruk. Innan detta problem är löst av micro: bit offic
Använd SSH och XMing för att visa X -program från en Linux -dator på en Windows -dator: 6 steg
Använd SSH och XMing för att visa X -program från en Linux -dator på en Windows -dator: Om du använder Linux på jobbet och Windows hemma eller vice versa kan du ibland behöva logga in på datorn på din andra plats och köra program. Tja, du kan installera en X -server och aktivera SSH -tunnling med din SSH -klient, och en