Arduino alapú fordulatszámmérő. Fordulatszámmérő az Arduino IR sugártörés áramkörén

A fordulatszámmérő egy olyan eszköz, amely egy mechanikus tárgy, például egy kerék forgási sebességének mérésére szolgál. A fordulatszámmérőket széles körben használják az autókban. A rádióamatőrök körében a robotikában talált alkalmazást, lehetővé téve a kerekes robot mozgási sebességének mérését. A fordulatszámmérőknek általában számos felhasználási területük van, beleértve az egyenáramú motorok fordulatszámának mérését, hogy biztosítsák, hogy az előírásoknak megfelelően működjenek.



A fordulatszámmérő lényegét tekintve meglehetősen egyszerű eszköz, így az Arduino segítségével könnyedén elkészítheti saját maga.


A fordulatszámmérő saját kezű készítéséhez a forgási sebességet olvasható formára kell konvertálnunk. Az Arduino egyetlen formája az elektromos feszültség. Köztudott, hogy ha feszültséget kapcsolunk egy motorra, akkor ez a motor elkezd forogni, és ezzel együtt a kerék is forog (ha a motor tengelyéhez van rögzítve), aminek a sebességét a feszültség nagysága határozza meg. szállított. Ennek azonban az ellenkezője is igaz: ha magunk forgatjuk a motort, akkor az adott motor kivezetéseinek mindkét végén feszültséget kaphatunk. Ez a feszültség rákapcsolható az Arduino-ra, és az Arduino képes lesz kiszámítani a forgási sebességet attól függően, hogy mekkora feszültséget kapcsoltak egy adott motorra.


Az alábbiakban bemutatjuk az Arduino alapú, házi készítésű fordulatszámmérő elemeinek összekapcsolását. A motor itt egy ellenálláshoz és egy LED-hez van csatlakoztatva. Az ellenállást arra használják, hogy megakadályozzák a túl sok áramot, amely általában károsítaná az Arduino-t. A LED jelzi, hogy a motor jár, és megakadályozza az áram visszaáramlását. A sebesség kijelzésére ebben az esetben egy egyjegyű hétszegmenses jelző és egy IC7447 regiszterchip vezérli ezt a mutatót.



Amint a motor forogni kezd, pozitív feszültséget küld az Arduino analóg bemenetére. Az Arduino ezt a feszültséget digitális kódká alakítja. Mivel hétszegmenses kijelzőt használunk, 10 értékünk lehet, azaz 0-tól 9-ig. Az Arduinót beprogramozhatjuk úgy, hogy a kapott analóg értéket 9 részre ossza, ami 0-tól a kívánt kimenetet adja. 9. Az alábbiakban található egy házi készítésű fordulatszámmérő Arduino rendszeren történő működtetésének kódja.


intval=0; intbinVal; void setup() ( Serial.begin(9600); // a soros port beállítása pinMode(3,OUTPUT); pinMode(4,OUTPUT); pinMode(5,OUTPUT); pinMode(6,OUTPUT); pinMode(A2) ,INPUT ) void loop() ( val = analogRead(A2); // az analóg bemenet olvasása (a motor feszültsége) Serial.println(val); // hibakeresési érték binVal=val/1024*9; switch( binVal)( 0. eset: digitalWrite(3,LOW); digitalWrite(5,LOW); break; (5,LOW); digitalWrite(6,LOW); digitalWrite(3,LOW); : digitalWrite(3,HIGH); digitalWrite(5,LOW); digitalWrite(6,LOW); szünet; 7. eset: digitalWrite(3,HIGH); digitalWrite(4,HIGH); digitalWrite(5,HIGH); digitalWrite(6,LOW); szünet; 8. eset: digitalWrite(3,LOW); digitalWrite(4,LOW); digitalWrite(5,LOW); digitalWrite(6,HIGH); szünet; 9. eset: digitalWrite(3,HIGH); digitalWrite(4,LOW); digitalWrite(5,LOW); digitalWrite(6,HIGH); szünet; alapértelmezett: break; ) )

A vonalérzékelővel összeállított fordulatszámmérőt könnyű csatlakoztatni. Nem kell tervezési változtatásokat végrehajtani azon alkatrészen, amelynek forgási sebességét mérni szeretné: lyukakat fúrni, hornyokat készíteni, kiegészítő elemeket beépíteni stb. Elég egy kontrasztos vonalat felvinni rá (világos felületre feketét, sötétre fehéret) és a vonalérzékelőt a felszínre hozni, azonnal pontos eredményt, percenkénti fordulatszámot kapunk. A vázlatot nem kell módosítani, függetlenül attól, hogy milyen színű a vonal.

Szükségünk lesz:

A projekt megvalósításához telepítenünk kell a könyvtárat:

  • Könyvtár iarduino_4LED (négy számjegyű LED jelzővel való munkához).

A könyvtárak telepítéséről a Wiki oldalon olvashat – Könyvtárak telepítése az Arduino IDE-ben.

Videó:

Csatlakozási diagram:

A LED-jelző bármely két Arduino érintkezőhöz (digitális és analóg) csatlakozik, a számok a vázlaton vannak feltüntetve. A vonalérzékelő bármely analóg bemenethez csatlakozik, a szám a vázlaton látható.

Ebben az oktatóanyagban a LED-jelző a 2. és 3. digitális érintkezőhöz, a vonalérzékelő pedig az A0 analóg bemenethez csatlakozik.

Munka algoritmus:

  • Az információ csak akkor jelenik meg a LED kijelzőn, ha a vonalérzékelő világos mezőről sötét mezőre vált át.
  • A hurokfunkció első sora ellenőrzi, hogy a vonalérzékelő sötét mezőn van-e, ha igen, akkor...
  • Megjelenítjük a percenkénti fordulatszámot a LED kijelzőn (ha a millis túlcsordulás nem észlelhető) és elmentjük az átmeneti időt
  • A while ciklust addig hajtjuk végre, amíg a vonalérzékelő el nem hagyja a sötét mezőt. Emiatt az előző műveletet csak 1 alkalommal hajtják végre, mindaddig, amíg az érzékelő a sötét mezőben van.
  • Ha az érzékelő 6 másodpercnél hosszabb ideig sötét vagy világos mezőben van, akkor a „STOP” üzenetet jelenítjük meg (ezek a vonalak eltávolíthatók, ha a készülék percenkénti fordulatszáma 10 alatt van).

Program kód:

#beleértve // a könyvtár összekapcsolása egy négyjegyű LED jelzővel iarduino_4LED dispLED(2,3); // deklarál egy objektumot az iarduino_4LED könyvtár funkcióival való munkavégzéshez, jelezve a jelzőtűket (CLK, DIO) const uint8_t pinLine = A0; // deklarálunk egy konstanst, amely jelzi az analóg bemenet számát, amelyhez a vonalérzékelő csatlakozik uint32_t strLine = 0; // az érzékelő átmenetének ideje a világosról a sötét mezőbe void setup())( dispLED.begin(); // elindítja a LED jelzőfényt ) void loop())( if(analogRead(pinLine)>400)( // ha a vonalérzékelő leolvasása nagyobb, mint 400 (sötét mező) if(strLine 350)( // várja meg, amíg a vonalérzékelő elhagyja a sötét mezőt if((millis()-strLine)>6000)(dispLED.print("STOP");) // ha az érzékelő több mint a sötét mezőben van 6 másodpercig, majd jelenítse meg a "STOP" feliratot a jelzőn ) ) if((millis()-strLine)>6000)(dispLED.print("STOP");) // ha az érzékelő hosszabb ideig a fénymezőben van 6 másodpercnél, majd jelenítse meg a "STOP" feliratot)

A fordulatszámmérő hasznos eszköz egy kerék vagy bármi forgó kerék fordulatszámának (percenkénti fordulatszám) számlálására. A fordulatszámmérő elkészítésének legegyszerűbb módja infravörös adó és vevő használata. Ha a köztük lévő kapcsolat megszakad, tudja, hogy valami forog, és a kód segítségével kiszámíthatja az RPM-et a kommunikációs megszakítás gyakorisága alapján.

Ebben a cikkben megvizsgáljuk, hogyan lehet infravörös adót és vevőt használni fordulatszámmérő készítéséhez Arduino használatával. Az eredmény egy 16x2-es LCD kijelzőn jelenik meg.

A projekt célja egy bemenettel és egy kimenettel rendelkező rendszer létrehozása. A készülék bemenetén van egy jel, amely magasról (+5V) alacsonyra (+0V) vált, ha a kommunikáció megszakad. Ennek a jelnek megfelelően az Arduino növeli a belső számláló értékét. Ezután további feldolgozás és számítás történik, és ha a trigger megszakad, a számított fordulatszám megjelenik az LCD kijelzőn.

A kommunikációhoz egy kis ellenállású ellenálláson keresztül csatlakoztatott IR LED-ből származó infravörös sugarat fogunk használni, hogy az erősen világítson. Vevőként fototranzisztort fogunk használni, amely „bezár” az IR LED fényének hiányában. A számítógép ventilátora az infravörös adó és a vevő közé kerül, és bekapcsol. A tranzisztoros áramkörön keresztül csatlakoztatott infravörös vevő megszakításokat generál. Az eredmény kiadására az Arduino LCD interfész szolgál majd, így a végső RPM értéket tudjuk kiadni az LCD kijelzőre.

Elemek:

Kenyér deszka

Trimmer ellenállás 5 kOhm

Jumperek

SIP csatlakozók

2x 2N2222 NPN tranzisztor

Infravörös LED

Fototranzisztor

10 ohmos ellenállás

Ellenállás 100 kOhm

Ellenállás 15 kOhm vagy 16 kOhm

Számítógép ventilátor

A tételek részletes listája

A projektben használt összes elemet fentebb felsoroltuk, de a fő elemek funkcióit részletesebben ismertetem.

Arduino UNO

Ez az Arduino kártya, amelyet az infravörös sugár megszakításából származó impulzusok feldolgozására fogunk használni, amelyek jelzik a számítógép ventilátorlapátjának jelenlétét a vevő és az érzékelő között. Az Arduino ezeket az impulzusokat egy időzítővel együtt használja a ventilátor fordulatszámának kiszámításához.

LCD 16×2

Miután az Arduino kiszámította az RPM-et, ez az érték felhasználóbarát módon megjelenik a kijelzőn.

Trimmer ellenállás 5 kOhm

Ez a trimmer a 16x2-es LCD kontrasztjának beállítására szolgál. 0 és +5 V közötti analóg feszültséget biztosít, lehetővé téve az LCD kijelző fényerejének beállítását.

Infravörös LED és fototranzisztor

A fototranzisztor bekapcsol, ha erős infravörös fény éri. Tehát ha az IR LED világít, akkor nyitva tartja a fototranzisztort, de ha az IR LED-et például ventilátorlapát takarja, akkor a fototranzisztor zárva van.

2N3904 és 2N3906

Ezeket a tranzisztorokat a jelszint átalakítására használják annak érdekében, hogy a fototranzisztortól az Arduino felé kimenő impulzusokat biztosítsanak, amelyekben +0 és +5 V-on kívül nincs más feszültség.

Sematikus ábrája

Az áramkörben a kommunikációs interfész az LCD kijelzővel leegyszerűsített, és csak 2 vezérlővonalat és 4 adatvonalat tartalmaz.

A rendszer jellemzői

16×2 LCD interfész

2 vezérlő érintkező és 4 adatátvitelhez csatlakozik az Arduino az LCD kijelzőhöz. Ez jelzi az LCD-n, hogy mit és mikor kell csinálni.

IR sugár megszakító áramkör

Az infravörös sugártörés jele az Arduino 2. digitális érintkezőjére megy. Ez megszakítja az Arduino-t, lehetővé téve az impulzus számlálását, és lehetővé teszi a fordulatszámmérő számára az adatok fogadását.

Arduino LCD könyvtár

Ehhez a projekthez az Arduino LCD könyvtárat fogjuk használni. Alapvetően csak az RPM értéket frissítjük a második sorban az új értékre.

A felkészüléshez vessen egy pillantást az alábbi kódra, amely ezt a könyvtárat használja a "Hello, World!" A fordulatszámmérőben hasonló kódot fogunk használni, különösen: "lcd.print(millis()/1000);".

Mielőtt továbblépne, ismerje meg ennek az LCD-könyvtárnak a funkcióit a lehető legrészletesebben. Ez nem túl bonyolult, és jól dokumentált az Arduino webhelyén.

RPM kiszámítása Arduino segítségével

Mivel egy számítógép ventilátor fordulatszámát fogjuk kiszámítani, meg kell értenünk, hogy a számításhoz infravörös sugár megszakítást használunk. Ez nagyon kényelmes, de figyelembe kell venni, hogy a számítógép ventilátora 7 lapáttal rendelkezik. Ez 7 megszakítást jelent 1 fordulattal.

Ha megszakításokat követünk, tudnunk kell, hogy minden 7. megszakítás azt jelenti, hogy éppen 1 teljes forgás történt. Ha nyomon követjük a fordulat végrehajtásához szükséges időt, könnyen kiszámíthatjuk az RPM-et.

1. fordulat ideje = P * (µS/fordulat)

RPM = ford./perc = 60 000 000 * (µS/perc) * (1/P) = (60 000 000 / P) * (rpm)

Az RPM kiszámításához a fenti képletet használjuk. A képlet precíz, és a pontosság attól függ, hogy az Arduino mennyire tudja nyomon követni a megszakítások közötti időt, és megszámolja a teljes fordulatok számát.

Áramkör összeszerelés

Az alábbi képen az összes szükséges alkatrészt és jumpert láthatja, mint az ábrán.

Először csatlakoztassa a +5 V-ot és az LCD kijelző adat/vezérlő vezetékeit. Ezután LCD kijelző, kontrasztpotenciométer és tápellátás LED.

Az infravörös sugár megszakítása össze van szerelve. Próbálja meg tartani a távolságot az IR LED és a fototranzisztor között. Ez a kép az IR LED és a fototranzisztor közötti távolságot mutatja, ahová a számítógép ventilátorát elhelyezem.

Elég a hardverbeszélgetésből! Kezdjük el csinálni a firmware-t/programot, hogy lássuk, hogyan működik az eszköz!

Szoftver rész

A kódnak két fő része van, amelyeket az alábbiakban mutatunk be és részletezünk:

Alapvető LCD frissítési ciklus

Megszakítási idő frissítése

A fő ciklusban az LCD-kijelző fordulatait és frissítéseit számolja. Mivel a fő hurok egy óriási while(1) hurok, mindig futni fog, a fordulatszámot számolja, és az LCD másodpercenként többször frissül. A megszakításban lévő függvény számolja az IR megszakítások közötti időt, így számolhatja a főhurok fordulatszámát.

Ne feledje, hogy a számítógép ventilátorának 7 lapátja van, ezért ezt a fordulatszámmérőt csak ezekkel a ventilátorokkal való használatra tervezték. Ha a ventilátor vagy más eszköz csak 4 impulzust produkál fordulatonként, módosítsa a kódot "(idő*4)"-re.

Itt egy bemutató videó a fordulatszámmérő működéséről.

A két ventilátor hozzávetőlegesen 3000 és 2600 ford./perc fordulatszámon működik, körülbelül +/-100 ford./perc hibával.

Az Arduino fordulatszámmérőjének áttekintése

A ventilátor megszakító impulzusokat generál, és a kimeneten RPM-et látunk. Bár a pontosság nem 100%, hanem körülbelül 95%, az elemek ára 10 dollár, érdemes ezt a fordulatszámmérőt Arduino-ra építeni.

Akkor most mi van?

A nyalábtörés alapú rendszerek nem csak RPM méréseknél hasznosak, hanem egyéb szenzorokként is. Például tudni szeretné, hogy egy ajtó nyitva van-e vagy zárva. Talán szeretné tudni, hogy nem halad-e át valami a robot alatt. A gerendavágásnak számos felhasználási területe van, és az itt használt áramkör olyan egyszerű, hogy sokféleképpen javíthatunk és építhetünk más csodálatos eszközöket.

Következtetés

Összességében sikeresnek tartom ezt a projektet... De ez idő és tapasztalat kérdése.. Így vagy úgy, a rendszer rendeltetésszerűen és elég megbízhatóan működik, és meg is kaptuk a várt eredményt. Remélem, élvezte ezt a cikket, és megtanulta, hogyan készíthet saját fordulatszámmérőt az Arduino segítségével!

Eredeti angol nyelvű cikk (fordítás: Alekszandr Kaszjanov a cxem.net webhelyhez)

A fordulatszámmérő egy hasznos eszköz a kerék vagy bármi forgó fordulatszámának (percenkénti fordulatszám) számlálására. A fordulatszámmérő elkészítésének legegyszerűbb módja az infravörös adó és vevő használata. Ha a köztük lévő kapcsolat megszakad, tudja, hogy valami forog, és a kód segítségével kiszámíthatja az RPM-et a kommunikációs megszakítás gyakorisága alapján.

Ebben a cikkben megvizsgáljuk, hogyan lehet infravörös adót és vevőt használni fordulatszámmérő készítéséhez Arduino használatával. Az eredmény egy 16x2-es LCD kijelzőn jelenik meg.

A projekt célja egy bemenettel és egy kimenettel rendelkező rendszer létrehozása. A készülék bemenetén van egy jel, amely magasról (+5V) alacsonyra (+0V) vált, ha a kommunikáció megszakad. Ennek a jelnek megfelelően az Arduino növeli a belső számláló értékét. Ezután további feldolgozás és számítás történik, és amikor a trigger megszakad, a számított fordulatszám megjelenik az LCD kijelzőn.

A kommunikációhoz egy kis ellenállású ellenálláson keresztül csatlakoztatott IR LED-ből származó infravörös sugarat fogunk használni, hogy az erősen világítson. Vevőként fototranzisztort fogunk használni, amely „bezár” az IR LED fényének hiányában. A számítógép ventilátora az infravörös adó és a vevő közé kerül, és bekapcsol. A tranzisztoros áramkörön keresztül csatlakoztatott infravörös vevő megszakításokat generál. Az eredmény kiadására az Arduino LCD interfész szolgál majd, így a végső RPM értéket tudjuk kiadni az LCD kijelzőre.

Elemek:
Arduino UNO
16x2 LCD
Kenyér deszka
Trimmer ellenállás 5 kOhm
Jumperek
SIP csatlakozók
2x 2N2222 NPN tranzisztor
Infravörös LED
Fototranzisztor
10 ohmos ellenállás
Ellenállás 100 kOhm
Ellenállás 15 kOhm vagy 16 kOhm
Számítógép ventilátor

A tételek részletes listája

A projektben használt összes elemet fentebb felsoroltuk, de a fő elemek funkcióit részletesebben ismertetem.

Arduino UNO
Ez az Arduino kártya, amelyet az infravörös sugár megszakításából származó impulzusok feldolgozására fogunk használni, amelyek jelzik a számítógép ventilátorlapátjának jelenlétét a vevő és az érzékelő között. Az Arduino ezeket az impulzusokat egy időzítővel együtt használja a ventilátor fordulatszámának kiszámításához.

LCD 16x2
Miután az Arduino kiszámította az RPM-et, ez az érték felhasználóbarát módon megjelenik a kijelzőn.

Trimmer ellenállás 5 kOhm
Ez a trimmer a 16x2-es LCD kontrasztjának beállítására szolgál. 0 és +5 V közötti analóg feszültséget biztosít, lehetővé téve az LCD kijelző fényerejének beállítását.

Infravörös LED és fototranzisztor
A fototranzisztor bekapcsol, ha erős infravörös fény éri. Tehát ha az IR LED világít, akkor nyitva tartja a fototranzisztort, de ha az IR LED-et például ventilátorlapát takarja, akkor a fototranzisztor zárva van.

2N3904 és 2N3906
Ezeket a tranzisztorokat a jelszint átalakítására használják annak érdekében, hogy a fototranzisztortól az Arduino felé kimenő impulzusokat biztosítsanak, amelyekben +0 és +5 V-on kívül nincs más feszültség.

Sematikus ábrája

Az áramkörben a kommunikációs interfész az LCD kijelzővel leegyszerűsített, és csak 2 vezérlővonalat és 4 adatvonalat tartalmaz.

A rendszer jellemzői

16x2 LCD interfész
2 vezérlő érintkező és 4 adatátvitelhez csatlakozik az Arduino az LCD kijelzőhöz. Ez jelzi az LCD-n, hogy mit és mikor kell csinálni.

IR sugár megszakító áramkör
Az infravörös sugártörés jele az Arduino 2. digitális érintkezőjére megy. Ez megszakítja az Arduino-t, lehetővé téve az impulzus számlálását, és lehetővé teszi a fordulatszámmérő számára az adatok fogadását.

Arduino LCD könyvtár

Ehhez a projekthez az Arduino LCD könyvtárat fogjuk használni. Alapvetően csak az RPM értéket frissítjük a második sorban az új értékre.

A felkészüléshez vessen egy pillantást az alábbi kódra, amely ezt a könyvtárat használja a "Hello, World!" A fordulatszámmérőben hasonló kódot fogunk használni, különösen: "lcd.print(millis()/1000);".

Mielőtt továbblépne, ismerje meg ennek az LCD-könyvtárnak a funkcióit a lehető legrészletesebben. Ez nem túl bonyolult, és jól dokumentált az Arduino webhelyén.

RPM kiszámítása Arduino segítségével

Mivel egy számítógép ventilátor fordulatszámát fogjuk kiszámítani, meg kell értenünk, hogy a számításhoz infravörös sugár megszakítást használunk. Ez nagyon kényelmes, de figyelembe kell venni, hogy a számítógép ventilátora 7 lapáttal rendelkezik. Ez 7 megszakítást jelent 1 fordulattal.

Ha megszakításokat követünk, tudnunk kell, hogy minden 7. megszakítás azt jelenti, hogy éppen 1 teljes forgás történt. Ha nyomon követjük a fordulat végrehajtásához szükséges időt, könnyen kiszámíthatjuk az RPM-et.

1. fordulat ideje = P * (µS/fordulat)
RPM = ford./perc = 60 000 000 * (µS/perc) * (1/P) = (60 000 000 / P) * (rpm)

Az RPM kiszámításához a fenti képletet használjuk. A képlet precíz, és a pontosság attól függ, hogy az Arduino mennyire tudja nyomon követni a megszakítások közötti időt, és megszámolja a teljes fordulatok számát.

Az alábbi képen az összes szükséges alkatrészt és jumpert láthatja, mint az ábrán.

Először csatlakoztassa a +5 V-ot és az LCD kijelző adat/vezérlő vezetékeit. Ezután LCD kijelző, kontrasztpotenciométer és tápellátás LED.

Az infravörös sugár megszakítása össze van szerelve. Próbálja meg tartani a távolságot az IR LED és a fototranzisztor között. Ez a kép az IR LED és a fototranzisztor közötti távolságot mutatja, ahová a számítógép ventilátorát elhelyezem.

Elég a hardverbeszélgetésből! Kezdjük el csinálni a firmware-t/programot, hogy lássuk, hogyan működik az eszköz!

Szoftver rész

A kódnak két fő része van, amelyeket az alábbiakban mutatunk be és részletezünk:
- Fő LCD frissítési ciklus
- Megszakítási idők frissítése

A fő ciklusban az LCD-kijelző fordulatait és frissítéseit számolja. Mivel a fő hurok egy óriási while(1) hurok, mindig futni fog, a fordulatszámot számolja, és az LCD másodpercenként többször frissül. A megszakításban lévő függvény számolja az IR megszakítások közötti időt, így számolhatja a főhurok fordulatszámát.

Ne feledje, hogy a számítógép ventilátorának 7 lapátja van, ezért ezt a fordulatszámmérőt csak ezekkel a ventilátorokkal való használatra tervezték. Ha a ventilátor vagy más eszköz csak 4 impulzust produkál fordulatonként, módosítsa a kódot "(idő*4)"-re.

A két ventilátor hozzávetőlegesen 3000 és 2600 ford./perc fordulatszámon működik, körülbelül +/-100 ford./perc hibával.

Az Arduino fordulatszámmérőjének áttekintése

A ventilátor megszakító impulzusokat generál, és a kimeneten RPM-et látunk. Bár a pontosság nem 100%, hanem körülbelül 95%, az elemek ára 10 dollár, érdemes ezt a fordulatszámmérőt Arduino-ra építeni.

Akkor most mi van?

A nyalábtörés alapú rendszerek nem csak RPM méréseknél hasznosak, hanem egyéb szenzorokként is. Például tudni szeretné, hogy egy ajtó nyitva van-e vagy zárva. Talán szeretné tudni, hogy nem halad-e át valami a robot alatt. A gerendavágásnak számos felhasználási területe van, és az itt használt áramkör olyan egyszerű, hogy sokféleképpen javíthatunk és építhetünk más csodálatos eszközöket.

Következtetés

Összességében sikeresnek tartom ezt a projektet... De ez idő és tapasztalat kérdése... Így vagy úgy, a rendszer rendeltetésszerűen és elég megbízhatóan működik, és meg is kaptuk a várt eredményt. Remélem, élvezte ezt a cikket, és megtanulta, hogyan készíthet saját fordulatszámmérőt az Arduino segítségével!

Radioelemek listája

Kijelölés típus Megnevezés Mennyiség jegyzetÜzletA jegyzettömböm
Arduino tábla

Arduino Uno

1 Jegyzettömbhöz
T2, T3 Bipoláris tranzisztor

2N2222

2 2N3904 és 2N3906 Jegyzettömbhöz
R1 Ellenállás

10 ohm

1 Jegyzettömbhöz
R2 Ellenállás

100 kOhm

1 Jegyzettömbhöz
R3 Ellenállás

16 kOhm

1

Ez egy digitális eszközt ír le, amely méri a jármű sebességét és a motor főtengely-fordulatszámát. Az indikátor egy 1602A típusú LCD kijelző, szabványos, a HD44780 vezérlőre épül.

Az 1602A jelölés valójában azt jelenti, hogy két sorban, soronként 16 karakterből áll. Az indikátort az Aliexpress-en vásárolták, a „HD44780” kifejezésre keresve (árak 81 rubeltől). Amint már említettük, ennek a mutatónak két sora van. Tehát a felső sorban az eszköz az autó sebességét mutatja, az alsó sorban pedig a motor fordulatszámát.

Ellentétben sok fedélzeti számítógéppel, mint például az „Orion-BK” és hasonlók, valamint a hétszegmenses LED-es kijelzőkkel rendelkező készülékekkel, ez az LCD-kijelző bekapcsolt háttérvilágítás mellett nagyon tiszta képet ad, amely tökéletesen látható fényben és éjszaka a sötétben, ami különösen fontos az autóiparban.

A készülék áramköre egy kész ARDUINO UNO lapra épül, amelyen az ATMEGA328 mikrokontroller, valamint a működéséhez szükséges összes „csövezése” található, beleértve az USB programozót és a tápegységet is.

Az ARDUINO UNO ára az Aliexpressen 200 rubeltől kezdődik. Az ARDUINO UNO kártya leírását, valamint a hozzá tartozó szoftvert, valamint a személyi számítógéphez való csatlakozást a szerző az L.1-ben adja meg, így ha valaki nem tudná, mi az ARDUINO és „mihez használják, ” először feltétlenül olvassa el az L. cikkét .1.

A készülék tápfeszültségen keresztül csatlakozik az autó gyújtáskapcsolójának kimenetéhez, és a Hall-érzékelőktől kap jeleket, amelyek közül az egyik a gyújtásérzékelő, a másik pedig a sebességérzékelő.

Sematikus ábrája

A készülék csak befecskendezős motorral rendelkező autóban működik (a karburátoros autókban nincs sebességérzékelő, és nem mindegyikben van gyújtásérzékelő). Az eszközdiagram az 1. ábrán látható. Ezen az ábrán az ARDUINO UNO kártya sematikusan „felülnézetként” látható.

Rizs. 1. Arduino alapú sebességmérő és fordulatszámmérő sematikus diagramja.

A portok érzékelőkkel való összehangolásához a VT1 és VT2 tranzisztorok kaszkádjait használják. Mivel a készülék tápellátása a gyújtáskapcsoló kimenetéről történik, csak bekapcsolt gyújtás mellett működik. A sebességérzékelő, valamint a jármű gyújtásérzékelője impulzusok forrása, amelyek frekvenciája a jármű mechanikus részeinek forgásától függ.

A négyhengeres benzinmotorral felszerelt autó gyújtásérzékelője a főtengely fordulatánként két impulzust generál. Ha a motornak nincs négy hengere, az impulzus ismétlődési gyakorisága eltérő lesz.

A sebességérzékelők különbözőek, de többnyire, különösen a hazai autók esetében, 6000 impulzust adnak kilométerenként. Bár vannak olyanok, amelyek kilométerenként 2500 impulzust adnak, de talán vannak mások is.

Program

A C++ program részletes megjegyzésekkel az 1. táblázatban található. A program működése az érzékelőktől érkező impulzusok periódusának mérésén, majd a főtengely fordulatszámának és fordulatszámának kiszámításán alapul.

1. táblázat A program forráskódja.

A működéshez használja az impulzus függvényt, amely mikroszekundumban méri a bemeneti impulzus pozitív vagy negatív élének időtartamát. Tehát az időszak megállapításához hozzá kell adni a pozitív és negatív félciklusok időtartamát.

ahol T a periódus másodpercben, F pedig a sebesség km/h-ban. Mivel az időszakot mikroszekundumban mérik, a tényleges képlet a következő:

Ha az érzékelő 2500 impulzus/km (japán), akkor a képlet a következő lesz:

Ennek megfelelően, mivel az időszakot mikroszekundumban mérik:

A főtengely fordulatszámának mérésére a következő képletet használjuk:

ahol T a periódus másodpercben, és F a főtengely forgási sebessége fordulat per percben. Mivel az időszakot mikroszekundumban mérik, a tényleges képlet a következő:

Ezután az eredmények megjelennek az LCD-kijelző megfelelő soraiban. A mértékegységek „km/h” és „ob/tip” (ha nem tetszik, megváltoztathatod).

Ha például nincs bemeneti jel, a gyújtás be van kapcsolva, de a motort nem indítják be vagy hajtják, akkor azokban a sorokban, ahol nincs jel, az „inf” felirat lesz.

Elvileg nincs szükség beállításra. Ha azonban nem ismert, hogy egy adott autó sebességérzékelője hány impulzust ad ki kilométerenként, akkor először ezt kell tisztázni.

Vagy kísérletileg beállíthatja a periódusra osztott számot a tárcsás sebességmérővel, ami nagyon zavaró, vagy lehetetlen, ha a szabványos sebességmérő hibás (ez lehet az oka ennek a készüléknek a gyártásának).

De jobb, ha megtudja a sebességérzékelő paramétereit. Ezután számítsa ki azt a számot, amely el van osztva a programban szereplő időszakkal. Jelöljük ezt a számot X, és a kilométerenkénti impulzusok számát N. Ekkor X kiszámítható a következő képlettel:

X = 3600000000 / N

Például, ha az érzékelő mondjuk 2500 impulzust ad ki kilométerenként:

X = 3600000000 / 2500 = 1440000

Vagy ha az érzékelő 6000 impulzust ad kilométerenként:

X = 3600000000 / 6000 = 600000

Végül

Ha az eszköz meghibásodik, szükség lehet a VT1 és VT2 tranzisztorok bemeneti fokozatainak üzemmódjának optimalizálására az R3 és R6 ellenállások ellenállásának, valamint a C2 és S3 kondenzátorok kapacitásának kiválasztásával.

Karavkin V. RK-12-16.

Irodalom:

1. Karavkin V. Karácsonyfa-villogó az ARDUINO-n, a mikrokontrollerektől való félelem ellen." RK-11-2016.