Indholdsfortegnelse:
- Trin 1: Vælg en Sigal Wire
- Trin 2: Udvid Wire til Arduino Board
- Trin 3: Signalanalyse
- Trin 4: Kode din signalanalyse
- Trin 5: Identificer et filter
- Trin 6: Filtrering: Del 1
- Trin 7: Filtrering: Del 2
- Trin 8: Filtrering: Del 3
- Trin 9: Filtrering: Del 4
Video: Brug Arduino til at vise motorens omdrejningstal: 10 trin (med billeder)
2024 Forfatter: John Day | [email protected]. Sidst ændret: 2024-01-30 08:27
Denne vejledning beskriver, hvordan jeg brugte en Arduino UNO R3, et 16x2 LCD -display med I2C og en LED -strimmel, der skal bruges som motorhastighedsmåler og skiftelys i min Acura Integra -sporvogn. Det er skrevet i form af nogen med en vis erfaring eller eksponering for Arduino -software eller kodning generelt, den matematiske software MATLAB, og oprettelse eller ændring af elektriske kredsløb. I fremtiden kan dette blive revideret for at være lettere at forstå for nogen med lidt eller ingen erfaring med disse emner.
Trin 1: Vælg en Sigal Wire
Du skal få et signal, der korrelerer med motorens omdrejningstal. Det er muligt at tilføje et system, der måler motorhastighed, men det er langt mere praktisk at trykke på en eksisterende ledning, der bærer oplysninger om motorhastighed. En enkelt bil kan have flere kilder til dette, og den kan variere voldsomt endda fra år til år på en enkelt bilmodel. Af hensyn til denne tutorial vil jeg bruge eksemplet på min bil, et spor ændret 2000 Acura Integra LS. Jeg fandt ud af på min motor (B18B1 med OBD2), at der er en ubrugt spænding ude, der er 12V høj og falder til 0V efter at have fuldført en fuld omdrejning.
Ting, der hjælper med at identificere et potentielt motoromdrejningssignal:
- Ledningsdiagram til din bil
- Søger fora efter dit køretøj med motor-/ECU -signaler
- En venlig mekaniker eller bilentusiast
Trin 2: Udvid Wire til Arduino Board
Når du har valgt et passende signal, skal du udvide det til det sted, hvor du placerer dit Arduino -bord. Jeg besluttede at placere min inde i bilen, hvor radioen plejede at være, så jeg førte den nye ledning fra motoren gennem en gummigennemføring i brandvæggen og lige til radioområdet. Da der allerede er en rigelig mængde vejledninger til fjernelse, lodning og beskyttelse af ledninger, vil jeg ikke forklare denne proces.
Trin 3: Signalanalyse
Det er her, tingene kan blive komplicerede. At have en generel forståelse af signalanalyse og kontrol vil hjælpe dig langt, men kan gøres med lidt viden.
Signaltråden, der er valgt, vil sandsynligvis ikke spytte den nøjagtige værdi af motorhastigheden ud. Det skal formes og modificeres til at give det nøjagtige antal motoromdrejninger pr. Minut, du ønsker. På grund af det faktum, at hver anden bil og signalkabel, der er valgt, kan være forskellige, vil jeg fra dette tidspunkt og frem forklare, hvordan jeg brugte positionssignalet fra distributøren på min Integra.
Mit signal er normalt 12V og falder til 0V, når jeg fuldfører en fuld rotation. Hvis du kender tiden til at fuldføre en fuld rotation eller en hel cyklus, kan dette let oversættes til omdrejninger/min ved hjælp af nogle grundlæggende begreber.
1 / (sekunder pr. Cyklus) = cyklusser pr. Sekund eller Hz
Omdrejninger pr. Minut = Hz * 60
Trin 4: Kode din signalanalyse
Denne metode kræver, at det får den tid, det tager, for indgangssignalet at fuldføre en hel cyklus. Heldigvis har Arduino IDE -softwaren en kommando, der gør præcis det, PulseIn.
Denne kommando venter på, at et signal skal krydse en tærskel, begynde at tælle og stoppe med at tælle, når tærsklen er krydset igen. Der er nogle detaljer, der skal bemærkes, når du bruger kommandoen, så jeg vil inkludere et link til oplysninger om PulseIn her:
PulseIn returnerer en værdi i mikrosekunder, og for at holde matematikken enkel skal dette straks konverteres til normale sekunder. Efter matematikken på det foregående trin kan denne tidsperiode sidestilles direkte med RPM.
Bemærk: Efter forsøg og fejl opdagede jeg, at distributøren gennemfører to omdrejninger for hver enkelt rotation af motorens krumtapaksel, så jeg delte simpelthen mit svar med 2 for at tage højde for det.
Trin 5: Identificer et filter
Hvis du er heldig, har dit signal ingen 'støj' (udsving), og dit motoromdrejningstal vil være nøjagtigt. I mit tilfælde kom der meget støj fra distributøren, der ofte gav spændinger langt fra det forventede. Dette bliver til meget falske aflæsninger af det faktiske motoromdrejningstal. Denne støj skal filtreres fra.
Efter nogle signalanalyser kom næsten al støj ved frekvenser (Hz) langt højere end hvad motoren selv udsendte (hvilket er sandt for de fleste reelle dynamiske systemer). Det betyder, at et lavpasfilter er en ideel kandidat til at tage sig af dette.
Et lavpasfilter tillader lave frekvenser (ønsket) at passere og dæmper de høje frekvenser (uønsket).
Trin 6: Filtrering: Del 1
Design af filteret kan udføres i hånden, men brug af MATLAB vil fremskynde dette betydeligt, hvis du har adgang til softwaren.
Et lavpasfilter kan sidestilles med en overførselsfunktion (eller fraktion) i Laplace -domænet (frekvensdomæne). Indgangsfrekvensen vil blive ganget med denne brøkdel, og output er et filtreret signal, der kun har den information, du vil bruge.
Den eneste variabel i funktionen er tau. Tau er lig med 1 / Omega, hvor Omega er den afskæringsfrekvens, du ønsker (skal være i radianer pr. Sekund). Afskæringsfrekvensen er grænsen, hvor frekvenser højere end den vil blive fjernet og frekvenser lavere end den vil blive holdt.
Jeg indstiller afskæringsfrekvensen lig med et omdrejningstal, min motor aldrig når (990 omdr./min. Eller 165 Hz). FFT -graferne viser nogenlunde, hvilke frekvenser mit råsignal bar og de frekvenser, der kom ud af filteret.
Trin 7: Filtrering: Del 2
Her blev MATLAB udnyttet igen af hensyn til tiden. Afskæringsfrekvensen er defineret, og derfra vises den resulterende overførselsfunktion. Husk, at denne brøkdel kun gælder for Laplace-domænet og ikke kan bruges direkte på en tidsbaseret mikrocontroller som Arduino UNO R3.
Trin 8: Filtrering: Del 3
MATLAB har en kommando, der konverterer en kontinuerlig funktion (frekvensdomæne) til en diskret funktion (tidsdomæne). Output af denne kommando vil give en ligning, der let kan inkorporeres i Arduino IDE -kode.
Trin 9: Filtrering: Del 4
I Arduino -skitsen skal du inkludere variablerne u og y før opsætningen. Float -kommandoen definerer ganske enkelt, hvordan variablen vil gemme data (ting som maksimal værdi, decimaler osv.), Og et link til flere oplysninger om dette vil blive givet her: https://www.arduino.cc/reference/en/language /varia …
I sløjfen, hvor konverteringen fra råsignalet til motorhastighed finder sted, skal du inkludere u -variablen og y -multipelligningen. Der er flere måder at anvende dette på, men variablen u skal indstilles lig med det rå indgangssignal, der måles, og variablen y vil være den filtrerede værdi.
Anbefalede:
Programmering af en Arduino Brug af en anden Arduino til at vise en rulletekst uden et bibliotek: 5 trin
Programmering af en Arduino Brug af en anden Arduino til at vise en rulletekst uden et bibliotek: Sony Spresense eller Arduino Uno er ikke så dyre og kræver ikke meget strøm. Men hvis dit projekt har en begrænsning på strøm, plads eller endda budget, kan du overveje at bruge Arduino Pro Mini. I modsætning til Arduino Pro Micro, Arduino Pro Mi
I2C / IIC LCD -skærm - Brug et SPI LCD til I2C LCD Display Brug SPI til IIC modul med Arduino: 5 trin
I2C / IIC LCD -skærm | Brug en SPI LCD til I2C LCD -skærmen Brug af SPI til IIC -modulet med Arduino: Hej fyre, da en normal SPI LCD 1602 har for mange ledninger at tilslutte, så det er meget svært at grænseflade det med arduino, men der er et modul på markedet, som kan konverter SPI -skærm til IIC -skærm, så du skal kun tilslutte 4 ledninger
Sådan gør du: Kontroller motorens hastighed?: 5 trin (med billeder)
Sådan gør du: Kontrol af motorens hastighed ?: Hvis du har et par DC -motorer liggende, kommer det første spørgsmål til at tænke på, hvordan vil jeg kontrollere disse motorers hastighed! Så i denne instruktion vil jeg vise, hvor let det er at gøre det! Hvis du føler dig doven, du kan se video på min kanal Også kæmpe stor
Autonom styring af motorens omdrejningstal ved hjælp af feedback -system fra et IR -baseret omdrejningstæller: 5 trin (med billeder)
Autonom styring af motorens omdrejningstal ved hjælp af feedback -system fra en IR -baseret omdrejningstæller: Der er altid et behov for at automatisere en proces, det være sig en enkel/monstrøs. metoder til vanding/vanding af vores lille stykke jord. Problemet med ingen strømforsyningsledning
Brug af Parallax Basic Stamp II til at ringe til en dørklokke eksternt: 4 trin (med billeder)
Brug af Parallax Basic Stamp II til at ringe til en dørklokke eksternt: Problemet? En hund der bliver alt for begejstret når dørklokken ringer. Løsningen? Ring på døren på tilfældige tidspunkter, hvor ingen er der, og ingen svarer på den for at modvirke hunden - for at bryde foreningen, som en ringende dørklokke e