Innholdsfortegnelse:
- Trinn 1: Velg en Sigal Wire
- Trinn 2: Utvid Wire til Arduino Board
- Trinn 3: Signalanalyse
- Trinn 4: Kode din signalanalyse
- Trinn 5: Identifiser et filter
- Trinn 6: Filtrering: Del 1
- Trinn 7: Filtrering: Del 2
- Trinn 8: Filtrering: Del 3
- Trinn 9: Filtrering: Del 4
Video: Bruk Arduino til å vise motorens turtall: 10 trinn (med bilder)
2024 Forfatter: John Day | [email protected]. Sist endret: 2024-01-30 11:22
Denne guiden vil beskrive hvordan jeg brukte en Arduino UNO R3, en 16x2 LCD -skjerm med I2C og en LED -stripe som skulle brukes som motorhastighetsmåler og skiftelys i min Acura Integra -sporbil. Det er skrevet i form av noen med noen erfaring eller eksponering for Arduino -programvare eller koding generelt, den matematiske programvaren MATLAB, og opprette eller endre elektriske kretser. I fremtiden kan dette bli revidert for å være lettere å forstå for noen med liten eller ingen erfaring med disse emnene.
Trinn 1: Velg en Sigal Wire
Du må få et signal som korrelerer med motorens turtall. Det er mulig å legge til et system som måler motorhastighet, men det er langt mer praktisk å koble til en eksisterende ledning som bærer informasjon om motorhastighet. En enkelt bil kan ha flere kilder for dette, og den kan variere veldig til og med fra år til år på en enkelt bilmodell. Av hensyn til denne opplæringen vil jeg bruke eksemplet på bilen min, et spor endret 2000 Acura Integra LS. Jeg fant på motoren min (B18B1 med OBD2) at det er en ubrukt spenning ute som er 12V høy og faller til 0V etter fullstendig omdreining.
Ting som vil hjelpe til med å identifisere et potensielt motorhastighetssignal:
- Koblingsskjema for bilen din
- Søker i forum etter bilen din som involverer motor-/ECU -signaler
- En vennlig mekaniker eller bilentusiast
Trinn 2: Utvid Wire til Arduino Board
Når du har valgt et passende signal, må du utvide det til uansett hvor du plasserer Arduino -kortet. Jeg bestemte meg for å plassere min inne i bilen der radioen pleide å være, så jeg førte den nye ledningen fra motoren, gjennom en gummigummi i brannveggen og rett til radioområdet. Siden det allerede finnes en mengde veiledninger om stripping, lodding og beskyttelse av ledninger, vil jeg ikke forklare denne prosessen.
Trinn 3: Signalanalyse
Det er her ting kan bli kompliserte. Å ha en generell forståelse av signalanalyse og kontroller vil hjelpe deg langt, men er mulig med liten kunnskap.
Signaltråden som er valgt vil mest sannsynlig ikke spytte ut den nøyaktige verdien av motorhastigheten. Den må formes og modifiseres til å gi det eksakte antallet motorturtall du vil ha. På grunn av det faktum at hver bil og signalkabel som er valgt kan være forskjellige, vil jeg fra dette tidspunktet forklare hvordan jeg brukte posisjonssignalet fra distributøren på min Integra.
Mitt signal er normalt 12V og faller til 0V når jeg fullfører en full rotasjon. Hvis du kjenner tiden for å fullføre en full rotasjon, eller en hel syklus, kan dette lett oversettes til omdreininger/min ved hjelp av noen grunnleggende konsepter.
1 / (sekunder per syklus) = sykluser per sekund, eller Hz
Omdreininger per minutt = Hz * 60
Trinn 4: Kode din signalanalyse
Denne metoden krever at du får tiden det tar for inngangssignalet å fullføre en hel syklus. Heldigvis har Arduino IDE -programvaren en kommando som gjør akkurat det, PulseIn.
Denne kommandoen vil vente på at et signal skal krysse en terskel, begynne å telle og slutte å telle når terskelen er krysset igjen. Det er noen detaljer som bør bemerkes når du bruker kommandoen, så jeg vil inkludere en lenke til informasjon om PulseIn her:
PulseIn vil returnere en verdi i mikrosekunder, og for å holde matematikken enkel bør dette umiddelbart konverteres til normale sekunder. Etter regnestykket på forrige trinn kan denne tidsperioden sidestilles direkte med RPM.
Merk: Etter prøving og feiling oppdaget jeg at distributøren fullfører to rotasjoner for hver rotasjon av motorens veivaksel, så jeg delte mitt svar med 2 for å ta hensyn til det.
Trinn 5: Identifiser et filter
Hvis du er heldig vil signalet ditt ikke ha noe "støy" (svingninger), og motorhastigheten vil være nøyaktig. I mitt tilfelle kom det mye støy fra distributøren som ofte ga spenninger langt fra det som er forventet. Dette blir til meget falske avlesninger av det faktiske motorhastigheten. Denne støyen må filtreres bort.
Etter litt signalanalyse kom nesten all støy med frekvenser (Hz) langt høyere enn det motoren selv sendte ut (noe som er sant for de fleste virkelige dynamiske systemer). Dette betyr at et lavpassfilter er en ideell kandidat for å ta vare på dette.
Et lavpassfilter lar lave frekvenser (ønsket) passere og demper høye frekvenser (uønsket).
Trinn 6: Filtrering: Del 1
Designet av filteret kan gjøres for hånd, men bruk av MATLAB vil øke dette betydelig hvis du har tilgang til programvaren.
Et lavpassfilter kan sidestilles med en overføringsfunksjon (eller brøk) i Laplace -domenet (frekvensdomene). Inngangsfrekvensen vil bli multiplisert med denne brøkdelen, og utgangen er et filtrert signal som bare har informasjonen du vil bruke.
Den eneste variabelen i funksjonen er tau. Tau er lik 1 / Omega, hvor Omega er cutoff -frekvensen du ønsker (må være i radianer per sekund). Grensefrekvensen er grensen hvor frekvenser høyere enn den vil bli fjernet og frekvenser lavere enn den vil bli beholdt.
Jeg angir grensefrekvensen lik en o / min motoren min aldri vil nå (990 RPM eller 165 Hz). FFT -grafene viser omtrent hvilke frekvenser råsignalet mitt bar og frekvensene som kom ut av filteret.
Trinn 7: Filtrering: Del 2
Her ble MATLAB utnyttet igjen for tidens skyld. Avbruddsfrekvensen er definert, og fra den vises den resulterende overføringsfunksjonen. Husk at denne brøkdelen bare gjelder for Laplace-domenet og ikke kan brukes direkte på en tidsbasert mikrokontroller som Arduino UNO R3.
Trinn 8: Filtrering: Del 3
MATLAB har en kommando som vil konvertere en kontinuerlig funksjon (frekvensdomene) til en diskret funksjon (tidsdomene). Utdataene fra denne kommandoen vil gi en ligning som enkelt kan inkorporeres i Arduino IDE -koden.
Trinn 9: Filtrering: Del 4
I Arduino -skissen, inkluder variablene u og y før oppsettet. Flytekommandoen definerer ganske enkelt hvordan variabelen skal lagre data (ting som maksimalverdi, desimaler osv.), Og en lenke til mer informasjon om dette vil bli gitt her: https://www.arduino.cc/reference/en/language /varia …
I sløyfen der konverteringen fra råsignalet til motorhastighet finner sted, inkluderer du u -variabelen og y -multiplikasjonen. Det er flere måter å bruke dette på, men variabelen u bør settes lik det råe inngangssignalet som måles, og variabelen y vil være den filtrerte verdien.
Anbefalt:
I2C / IIC LCD -skjerm - Bruk en SPI LCD til I2C LCD -skjermen Bruke SPI til IIC -modulen med Arduino: 5 trinn
I2C / IIC LCD -skjerm | Bruk en SPI LCD til I2C LCD -skjermen Bruke SPI til IIC -modulen med Arduino: Hei folkens siden en vanlig SPI LCD 1602 har for mange ledninger å koble til, så det er veldig vanskelig å koble den til arduino, men det er en modul tilgjengelig på markedet som kan konverter SPI -skjerm til IIC -skjerm, så da trenger du bare å koble til 4 ledninger
Slik: Kontroller motorens hastighet?: 5 trinn (med bilder)
Hvordan: Kontroller motorens hastighet ?: Hvis du har et par likestrømsmotorer liggende, kommer det første spørsmålet om hvordan jeg skal kontrollere hastigheten på disse motorene! Så i denne instruksjonsboken vil jeg vise hvor enkelt det er å gjøre det! Hvis du føler deg lat, du kan se video på kanalen min Also Huge Tha
Bruk HC-06 Bluetooth-modul til å realisere mikro: bit kommunikasjon med mobiltelefon: 8 trinn (med bilder)
Bruk HC-06 Bluetooth-modul til å realisere Micro: bit-kommunikasjon med mobiltelefon: Mange venner rundt meg som spiller micro: bit, fortell meg at Bluetooth-tilkoblingen til micro: bit ikke er stabil. Det er lett å koble fra. Hvis vi bruker mikropyton, kan ikke Bluetooth engang tas i bruk. Før dette problemet er løst av micro: bit offic
Legg til en PC-synkroniseringskontakt til en Nikon Sc-28 Ttl-kabel (bruk Autoinnstillinger for en på kamerablits og utløser kamerablitser!): 4 trinn
Legg til en PC-synkroniseringskontakt til en Nikon Sc-28 Ttl-kabel (bruk Autoinnstillinger for på-kamera-blits og utløserkamera-blitser !!): I denne instruksen vil jeg vise deg hvordan du fjerner en av de irriterende proprietære 3-pinners TTL-kontaktene på på siden av en Nikon SC-28 av kameraet TTL-kabel og bytt den ut med en standard PC-synkroniseringskontakt. dette lar deg bruke en dedikert blits, s
Bruk SSH og XMing til å vise X -programmer fra en Linux -datamaskin på en Windows -datamaskin: 6 trinn
Bruk SSH og XMing til å vise X -programmer fra en Linux -datamaskin på en Windows -datamaskin: Hvis du bruker Linux på jobben, og Windows hjemme, eller omvendt, kan det være at du til tider må logge deg på datamaskinen på din andre plassering og kjøre programmer. Vel, du kan installere en X -server og aktivere SSH -tunneling med SSH -klienten din, og en