Tartalomjegyzék:

Az Arduino használatával jelenítse meg a motor fordulatszámát: 10 lépés (képekkel)
Az Arduino használatával jelenítse meg a motor fordulatszámát: 10 lépés (képekkel)

Videó: Az Arduino használatával jelenítse meg a motor fordulatszámát: 10 lépés (képekkel)

Videó: Az Arduino használatával jelenítse meg a motor fordulatszámát: 10 lépés (képekkel)
Videó: Использование драйвера шагового двигателя L298N Для управления 4-проводным шаговым двигателем 2024, November
Anonim
Az Arduino használatával jelenítse meg a motor fordulatszámát
Az Arduino használatával jelenítse meg a motor fordulatszámát
Az Arduino használatával jelenítse meg a motor fordulatszámát
Az Arduino használatával jelenítse meg a motor fordulatszámát
Az Arduino használatával jelenítse meg a motor fordulatszámát
Az Arduino használatával jelenítse meg a motor fordulatszámát

Ez az útmutató felvázolja, hogyan használtam egy Arduino UNO R3 -at, egy 16x2 -es LCD -kijelzőt I2C -vel és egy LED -szalagot, amelyet motor fordulatszámmérőként és sebességváltó lámpaként használtam az Acura Integra nyomkövető autómban. Olyan személyre van írva, akinek van némi tapasztalata vagy kitettsége az Arduino szoftverben vagy általában a kódolásban, a MATLAB matematikai szoftverben, és elektromos áramköröket hoz létre vagy módosít. A jövőben ezt felülvizsgálhatjuk, hogy könnyebben érthető legyen azok számára, akik kevés vagy semmilyen tapasztalattal nem rendelkeznek ezekben a témákban.

Lépés: Válasszon Sigal vezetéket

Válasszon Sigal vezetéket
Válasszon Sigal vezetéket

Olyan jelet kell kapnia, amely megfelel a motor fordulatszámának. Lehetőség van olyan rendszer hozzáadására, amely méri a motor fordulatszámát, de sokkal praktikusabb meglévő vezetéket csatlakoztatni, amely a motor fordulatszámára vonatkozó információkat hordozza. Egy autónak több forrása is lehet erre, és ez akár évről évre vadul is változhat egyetlen járműmodell esetében. Ennek az oktatóanyagnak a kedvéért az autóm példáját fogom használni, egy 2000 -es Acura Integra LS vágányt. A motoromon (B18B1 OBD2 -vel) azt találtam, hogy egy kihasználatlan feszültség kimarad, ami 12 V magas, és 0 V -ra csökken a teljes fordulat befejezése után.

Dolgok, amelyek segítenek azonosítani a potenciális motorfordulatszám -jelet:

  • A jármű bekötési rajza
  • Fórumok keresése a járműhöz motor/ECU jelekkel
  • Barátságos szerelő vagy autórajongó

2. lépés: Húzza ki a vezetéket az Arduino táblára

Húzza ki a vezetéket az Arduino táblára
Húzza ki a vezetéket az Arduino táblára
Húzza ki a vezetéket az Arduino táblára
Húzza ki a vezetéket az Arduino táblára

Miután kiválasztotta a megfelelő jelet, ki kell terjesztenie azt arra a helyre, ahová az Arduino táblát helyezi. Úgy döntöttem, hogy az enyémet a járműbe helyezem, ahol korábban a rádió volt, ezért az új vezetéket a motorból, a tűzfalban lévő gumi tömítésen keresztül, és közvetlenül a rádió területére vittem. Mivel már rengeteg útmutató található a csupaszításról, forrasztásról és a vezetékek védelméről, nem fogom megmagyarázni ezt a folyamatot.

3. lépés: Jellelemzés

Jel elemzése
Jel elemzése

Itt bonyolulttá válhatnak a dolgok. A jelfeldolgozás és a vezérlőelemek általános ismerete sokat segíthet, de kevés tudással kivitelezhető.

A jelzőhuzal valószínűleg nem a motor fordulatszámának pontos értékét köpi ki. Úgy kell alakítani és módosítani, hogy pontosan a kívánt motorfordulatszámot adja meg. Tekintettel arra, hogy minden egyes választott autó és jelvezeték eltérő lehet, ettől a ponttól fogva elmagyarázom, hogyan használtam az Integrám forgalmazójának helyzetjelét.

Jelzésem általában 12V, és egy teljes körforgás befejezésekor 0V -ra csökken. Ha ismeri az időt egy teljes körforgás vagy egy teljes ciklus befejezéséhez, akkor ezt néhány alapvető fogalom segítségével könnyen fordíthatjuk fordulatszám/perc sebességre.

1 / (másodperc ciklusonként) = ciklus másodpercenként, vagy Hz

Fordulatszám percenként = Hz * 60

4. lépés: kódolja a szignál -elemzést

Kódolja a jel elemzését
Kódolja a jel elemzését

Ez a módszer megköveteli, hogy megkapjuk a bemenő jel teljes ciklusának befejezéséhez szükséges időt. Szerencsére az Arduino IDE szoftver rendelkezik egy paranccsal, amely pontosan ezt teszi, a PulseIn.

Ez a parancs megvárja, amíg egy jel átlépi a küszöböt, elkezdi a számlálást, és leállítja a számlálást, amikor a küszöböt újra átlépi. Van néhány részlet, amelyet figyelembe kell venni a parancs használatakor, ezért a PulseIn információira mutató linket itt adok meg:

A PulseIn mikroszekundumban ad vissza egy értéket, és hogy a matematika egyszerű legyen, ezt azonnal normál másodpercre kell konvertálni. Az előző lépés matematikáját követően ez az időtartam egyenlővé tehető az RPM -mel.

Megjegyzés: próba és hiba után rájöttem, hogy az elosztó két fordulatot hajt végre a motor főtengelyének minden egyes fordulata után, ezért egyszerűen elosztottam a válaszomat 2 -vel.

5. lépés: Szűrő azonosítása

Szűrő azonosítása
Szűrő azonosítása

Ha szerencséje van, a jelzésben nem lesz „zaj” (ingadozás), és a motor fordulatszáma pontos lesz. Az én esetemben sok zaj hallatszott az elosztótól, ami gyakran messze nem adott feszültséget a várttól. Ez a hajtómű tényleges fordulatszámának nagyon hamis leolvasásává válik. Ezt a zajt ki kell szűrni.

Némi jelmérlegelés után szinte az összes zaj sokkal magasabb frekvencián (Hz) érkezett, mint maga a motor, (ami igaz a legtöbb valódi dinamikus rendszerre). Ez azt jelenti, hogy az aluláteresztő szűrő ideális jelölt erre.

Az aluláteresztő szűrő lehetővé teszi az alacsony frekvenciák (kívánt) áthaladását, és tompítja a magas frekvenciákat (nem kívánt).

6. lépés: Szűrés: 1. rész

Szűrés: 1. rész
Szűrés: 1. rész
Szűrés: 1. rész
Szűrés: 1. rész
Szűrés: 1. rész
Szűrés: 1. rész

A szűrő tervezése kézzel is elvégezhető, azonban a MATLAB használata jelentősen felgyorsítja ezt, ha hozzáfér a szoftverhez.

Az aluláteresztő szűrő a Laplace tartomány (frekvenciatartomány) átviteli függvényével (vagy törtével) egyenlő. A bemeneti frekvenciát megszorozzuk ezzel a törtszámmal, és a kimenet egy szűrt jel, amely csak a használni kívánt információt tartalmazza.

A függvény egyetlen változója a tau. Tau egyenlő 1 / Omega -val, ahol az Omega a kívánt határfrekvencia (radiánban kell megadni másodpercenként). A határfrekvencia az a határ, ahol a magasabb frekvenciákat eltávolítják, és a náluk alacsonyabb frekvenciákat megtartják.

A vágási frekvenciát a motor által soha el nem érhető fordulatszámmal állítom be (990 RPM vagy 165 Hz). Az FFT grafikonok nagyjából azt mutatják, hogy a nyers jelzésem milyen frekvenciákat hordoz, és a szűrőből származó frekvenciákat.

7. lépés: Szűrés: 2. rész

Szűrés: 2. rész
Szűrés: 2. rész
Szűrés: 2. rész
Szűrés: 2. rész

Itt a MATLAB -ot újra használták az idő kedvéért. A határfrekvencia definiálva van, és ebből az eredményül kapott átviteli funkció jelenik meg. Ne feledje, hogy ez a tört csak a Laplace tartományra vonatkozik, és nem használható közvetlenül olyan időalapú mikrovezérlőn, mint az Arduino UNO R3.

8. lépés: Szűrés: 3. rész

Szűrés: 3. rész
Szűrés: 3. rész
Szűrés: 3. rész
Szűrés: 3. rész

A MATLAB rendelkezik egy paranccsal, amely egy folytonos függvényt (frekvenciatartományt) diszkrét függvénnyé (időtartomány) alakít át. Ennek a parancsnak a kimenete egy egyenletet biztosít, amely könnyen beépíthető az Arduino IDE kódba.

9. lépés: Szűrés: 4. rész

Szűrés: 4. rész
Szűrés: 4. rész
Szűrés: 4. rész
Szűrés: 4. rész

Az Arduino vázlatában adja meg az u és y változókat a beállítás előtt. A float parancs egyszerűen meghatározza, hogy a változó hogyan tárolja az adatokat (például maximális érték, tizedesjegyek stb.), És az erről szóló további információk linkje itt található: https://www.arduino.cc/reference/en/language /varia…

A hurokban, ahol a nyers jelből a motor fordulatszámává történő átalakítása zajlik, vegye be az u változót és az y többszörös egyenletet. Ennek több módja is van, de az u változót egyenlőnek kell beállítani a nyers bemeneti jellel, és az y változó lesz a szűrt érték.

Ajánlott: