Inhoudsopgave:
- Stap 1: Kies een Sigal-draad
- Stap 2: Verleng de draad naar het Arduino-bord
- Stap 3: Signaalanalyse
- Stap 4: Codeer uw signaalanalyse
- Stap 5: identificeer een filter
- Stap 6: Filteren: deel 1
- Stap 7: Filteren: deel 2
- Stap 8: Filteren: deel 3
- Stap 9: Filteren: deel 4
Video: Arduino gebruiken om het motortoerental weer te geven: 10 stappen (met afbeeldingen)
2024 Auteur: John Day | [email protected]. Laatst gewijzigd: 2024-01-30 11:16
Deze gids zal beschrijven hoe ik een Arduino UNO R3, een 16x2 LCD-scherm met I2C en een LED-strip heb gebruikt om te gebruiken als motortoerentalmeter en schakellicht in mijn Acura Integra-baanauto. Het is geschreven in termen van iemand met enige ervaring of blootstelling aan Arduino-software of codering in het algemeen, de wiskundige software MATLAB, en het maken of wijzigen van elektrische circuits. In de toekomst kan dit worden herzien om het gemakkelijker te begrijpen voor iemand met weinig tot geen ervaring met deze onderwerpen.
Stap 1: Kies een Sigal-draad
U moet een signaal krijgen dat overeenkomt met het motortoerental. Het is mogelijk om een systeem toe te voegen dat het motortoerental meet, maar het is veel praktischer om gebruik te maken van een bestaande draad die informatie over het motortoerental bevat. Een enkele auto kan hiervoor meerdere bronnen hebben, en het kan zelfs van jaar tot jaar enorm variëren op een enkel voertuigmodel. Omwille van deze tutorial zal ik het voorbeeld van mijn auto gebruiken, een op het circuit gemodificeerde 2000 Acura Integra LS. Ik ontdekte op mijn motor (B18B1 met OBD2) dat er een ongebruikte spanning is die 12V hoog is en daalt tot 0V na het voltooien van een volledige omwenteling.
Dingen die kunnen helpen bij het identificeren van een potentieel motortoerentalsignaal:
- Bedradingsschema voor uw voertuig
- Forums zoeken voor uw voertuig met motor-/ECU-signalen
- Een vriendelijke monteur of autoliefhebber
Stap 2: Verleng de draad naar het Arduino-bord
Zodra je een geschikt signaal hebt gekozen, moet je het uitbreiden naar waar je je Arduino-bord ook plaatst. Ik besloot de mijne in het voertuig te plaatsen waar de radio vroeger zat, dus leidde ik de nieuwe draad van de motor, door een rubberen doorvoertule in de brandmuur en recht naar de radioruimte. Aangezien er al een overvloed aan handleidingen is voor het strippen, solderen en beschermen van bedrading, zal ik dit proces niet uitleggen.
Stap 3: Signaalanalyse
Dit is waar dingen ingewikkeld kunnen worden. Een algemeen begrip van signaalanalyse en controles zal je een heel eind helpen, maar is te doen met weinig kennis.
De gekozen signaaldraad zal hoogstwaarschijnlijk niet de exacte waarde van het motortoerental uitspugen. Het moet worden gevormd en aangepast om het exacte aantal motortoerentallen te geven dat u wilt. Omdat elke gekozen auto en signaaldraad anders kan zijn, zal ik vanaf dit punt uitleggen hoe ik het positiesignaal van de verdeler op mijn Integra heb gebruikt.
Mijn signaal is normaal 12V en zakt naar 0V bij het voltooien van een volledige omwenteling. Als u de tijd weet om één volledige rotatie of één volledige cyclus te voltooien, kan dit eenvoudig worden vertaald in omwentelingen/min met behulp van enkele basisconcepten.
1 / (seconden per cyclus) = cycli per seconde, of Hz
Omwentelingen per minuut = Hz * 60
Stap 4: Codeer uw signaalanalyse
Deze methode vereist dat u de tijd krijgt die het ingangssignaal nodig heeft om een volledige cyclus te voltooien. Gelukkig heeft de Arduino IDE-software een commando dat precies dat doet, PulseIn.
Dit commando wacht op een signaal dat een drempel overschrijdt, begint te tellen en stopt met tellen wanneer de drempel weer wordt overschreden. Er zijn enkele details die moeten worden opgemerkt bij het gebruik van de opdracht, dus ik zal hier een link naar informatie over PulseIn opnemen:
PulseIn retourneert een waarde in microseconden en om de wiskunde eenvoudig te houden, moet dit onmiddellijk worden omgezet in normale seconden. Na de wiskunde bij de vorige stap, kan deze tijdsduur direct worden gelijkgesteld aan RPM.
Opmerking: na vallen en opstaan ontdekte ik dat de verdeler twee omwentelingen voltooit voor elke enkele omwenteling van de krukas van de motor, dus ik heb mijn antwoord eenvoudig door 2 gedeeld om dat te verklaren.
Stap 5: identificeer een filter
Als je geluk hebt, zal je signaal geen 'ruis' (fluctuaties) hebben en zal je motortoerental exact zijn. In mijn geval kwam er veel lawaai uit de verdeler die vaak spanningen gaf die ver afstonden van wat verwacht werd. Dit verandert in zeer foutieve aflezingen van het werkelijke motortoerental. Deze ruis moet worden uitgefilterd.
Na wat signaalanalyse kwam bijna al het geluid op frequenties (Hz) die veel hoger waren dan wat de motor zelf uitvoerde (wat geldt voor de meeste echte dynamische systemen). Dit betekent dat een laagdoorlaatfilter een ideale kandidaat is om hiervoor te zorgen.
Een laagdoorlaatfilter laat lage frequenties (gewenst) door en dempt de hoge frequenties (ongewenst).
Stap 6: Filteren: deel 1
Het ontwerpen van het filter kan met de hand worden gedaan, maar het gebruik van MATLAB zal dit aanzienlijk versnellen als je toegang hebt tot de software.
Een laagdoorlaatfilter kan worden gelijkgesteld aan een overdrachtsfunctie (of breuk) in het Laplace-domein (frequentiedomein). De ingangsfrequentie wordt vermenigvuldigd met deze breuk en de uitgang is een gefilterd signaal dat alleen de informatie bevat die u wilt gebruiken.
De enige variabele in de functie is tau. Tau is gelijk aan 1 / Omega, waarbij Omega de gewenste afsnijfrequentie is (moet in radialen per seconde zijn). De afsnijfrequentie is de limiet waarbij frequenties hoger dan deze worden verwijderd en frequenties lager dan deze worden behouden.
Ik heb de afsnijfrequentie ingesteld op een toerental dat mijn motor nooit zal bereiken (990 tpm of 165 Hz). De FFT-grafieken laten ongeveer zien welke frequenties mijn onbewerkte signaal droeg en de frequenties die uit het filter kwamen.
Stap 7: Filteren: deel 2
Hier werd MATLAB opnieuw gebruikt omwille van de tijd. De afsnijfrequentie wordt gedefinieerd en daaruit wordt de resulterende overdrachtsfunctie weergegeven. Houd er rekening mee dat deze fractie alleen van toepassing is op het Laplace-domein en niet rechtstreeks kan worden gebruikt op een op tijd gebaseerde microcontroller zoals Arduino UNO R3.
Stap 8: Filteren: deel 3
MATLAB heeft een commando dat een continue functie (frequentiedomein) omzet in een discrete functie (tijddomein). De uitvoer van deze opdracht levert een vergelijking op die gemakkelijk kan worden opgenomen in Arduino IDE-code.
Stap 9: Filteren: deel 4
Neem in de Arduino-schets de variabelen u en y op vóór de installatie. Het float-commando definieert eenvoudig hoe de variabele gegevens zal opslaan (dingen zoals maximale waarde, decimalen, enz …) en een link naar meer informatie hierover zal hier worden gegeven: https://www.arduino.cc/reference/en/language /varia…
In de lus waar de conversie van het onbewerkte signaal naar het motortoerental plaatsvindt, neemt u de u-variabele en de y-meervoudige vergelijking op. Er zijn meerdere manieren om dit te gebruiken, maar de variabele u moet gelijk worden gesteld aan het ruwe ingangssignaal dat wordt gemeten, en de variabele y zal de gefilterde waarde zijn.
Aanbevolen:
Hoe de hartslag op het STONE LCD-scherm weer te geven met Ar - Ajarnpa
Hartslag weergeven op het STONE LCD-scherm Met Ar: korte introductie Enige tijd geleden vond ik een hartslagsensormodule MAX30100 bij het online winkelen. Deze module kan bloedzuurstof- en hartslaggegevens van gebruikers verzamelen, wat ook eenvoudig en gemakkelijk te gebruiken is. Volgens de gegevens ontdekte ik dat er
Een Arduino programmeren Een andere Arduino gebruiken om een scrollende tekst weer te geven zonder een bibliotheek - Ajarnpa
Een Arduino programmeren Een andere Arduino gebruiken om een scrollende tekst weer te geven zonder een bibliotheek: Sony Spresense of Arduino Uno zijn niet zo duur en vereisen niet veel stroom. Als uw project echter beperkingen heeft op het gebied van stroom, ruimte of zelfs budget, kunt u overwegen om Arduino Pro Mini te gebruiken. In tegenstelling tot Arduino Pro Micro, is Arduino Pro Mi
Hoe de Samsung Galaxy S7 met Android 8.0 in te stellen om alleen het scherm voor één app weer te geven !!: 5 stappen
Hoe de Samsung Galaxy S7 met Android 8.0 in te stellen om alleen het scherm voor één app weer te geven !!: Deze Instructable laat u zien hoe u uw Samsung Galaxy S7 kunt instellen om het scherm voor slechts één app weer te geven Dit is geweldig als u een baby / kind hebt die graag met je telefoon speelt of ervoor wil zorgen dat je telefoon alleen in één app blijft als iemand anders
Raspberry Pi Oled-klok Bekijk het, hoor het en voel het: 5 stappen (met afbeeldingen)
Raspberry Pi Oled Clock Watch It Hear It and Feel It: dit is een slimme klok die de tijd op een OLED-display weergeeft en je kunt ook de tijd horen op verschillende tijdsintervallen die hulpvol zijn voor blinden en het verandert ook de led-kleur met de tijd zoals licht in de schemering licht in de avond wordt oranje naar geel en houdt van t
Waterdichte luidsprekers die drijven - "Het drijft, het draagt en het rockt de noten!": 7 stappen (met afbeeldingen)
Waterdichte luidsprekers die drijven - "It Floats, It Totes and It Rocks the Notes!": Dit waterdichte luidsprekerproject is geïnspireerd op vele reizen naar de Gila-rivier in Arizona (en SNL's "I'm on a Boat!" ). We zullen de rivier afdrijven of lijnen aan de kust bevestigen zodat onze drijvers vlak bij onze camping blijven. Iedereen he