- Szükséges alkatrészek:
- Áramkör magyarázat:
- Jelgenerátor 555 időzítő IC-vel:
- Schmitt kiváltó kapu:
- Arduino frekvenciaszámláló kód magyarázat:
Szinte minden elektronikus hobbistának szembe kell néznie egy olyan forgatókönyvvel, ahol meg kell mérnie egy óra, egy számláló vagy egy időzítő által generált jel frekvenciáját. Használhatunk oszcilloszkópot a munka elvégzésére, de nem mindenki engedheti meg magának az oszcilloszkópot. Vásárolhatunk berendezéseket a frekvencia mérésére, de ezek az eszközök költségesek és nem mindenki számára készültek. Ezt szem előtt tartva egyszerű, de hatékony frekvenciaszámlálót fogunk megtervezni az Arduino Uno és a Schmitt trigger kapu használatával.
Ez az Arduino frekvenciamérő költséghatékony és könnyen elkészíthető. Az ARDUINO UNO- t fogjuk használni a jel frekvenciájának mérésére, az UNO itt a projekt szíve.
A frekvenciamérő teszteléséhez egy dummy jelgenerátort fogunk készíteni. Ezt a látszólagos jelgenerátort egy 555 időzítő chip használatával készítik el. Az időzítő áramkör négyzethullámot generál, amelyet az UNO-nak kapunk tesztelés céljából.
Ha minden a helyén van, lesz egy Arduino frekvenciamérő és egy négyzethullámú generátor. Az Arduino más típusú hullámformák előállítására is használható, például szinusz, fűrészfog hullám stb.
Szükséges alkatrészek:
- 555 időzítő IC és 74LS14 Schmitt kiváltó kapu vagy NEM kapu.
- 1K Ω ellenállás (2 db), 100Ω ellenállás
- 100nF kondenzátor (2 db), 1000µF kondenzátor
- 16 * 2 LCD,
- 47KΩ fazék,
- Kenyérlemez és néhány csatlakozó.
Áramkör magyarázat:
Az Arduino használatával végzett frekvenciamérés kapcsolási rajzát az alábbi ábra mutatja. Az áramkör egyszerű, az Arduino-val egy LCD van összekapcsolva a jel mért frekvenciájának megjelenítéséhez. A „Wave Input” a jelgenerátor áramkörbe kerül, ahonnan a jelet tápláljuk az Arduino felé. Schmitt-kioldó kaput (IC 74LS14) használnak annak biztosítására, hogy csak téglalap alakú hullám kerüljön az Arduino-ba. A zaj szűréséhez hozzáadtunk pár kondenzátort a teljes teljesítményre. Ez a frekvenciamérő legfeljebb 1 MHz frekvenciákat képes mérni.
A jelgenerátor áramkört és a Schmitt ravaszt az alábbiakban ismertetjük.
Jelgenerátor 555 időzítő IC-vel:
Először az 555 IC alapú négyszöggenerátorról, vagy mondanom kellene az 555 Astable Multivibrator-ról. Erre az áramkörre azért van szükség, mert a frekvenciamérő használatával olyan jelnek kell rendelkeznünk, amelynek frekvenciája ismeretes számunkra. E jel nélkül soha nem fogjuk tudni megmondani a frekvenciamérő működését. Ha van egy négyzetünk, amelynek frekvenciája ismert, használhatjuk ezt a jelet az Arduino Uno frekvenciamérő tesztelésére, és bármilyen eltérés esetén a pontosság beállításához módosíthatjuk. Az 555 Timer IC- t használó jelgenerátor képe az alábbiakban látható:
Az alábbiakban egy tipikus 555-ös áramkört találunk Astable üzemmódban, amelyből levezetettük a fenti jelgenerátor áramkört.
A kimeneti jel frekvenciája az RA, RB ellenállásoktól és a C kondenzátortól függ. Az egyenlet a következő, Frekvencia (F) = 1 / (Időszak) = 1,44 / ((RA + RB * 2) * C).
Itt az RA és az RB az ellenállás értéke, a C pedig a kapacitás értéke. Az ellenállás és a kapacitás értékek fenti egyenletbe helyezésével megkapjuk a kimeneti négyzethullám frekvenciáját.
Látható, hogy a fenti ábra RB-jét egy pot cserélje ki a jelgenerátor áramkörben; ez azért történik, hogy a jobb tesztelés érdekében változó frekvenciájú négyzethullámot kapjunk a kimeneten. Az egyszerűség kedvéért az edényt egyszerű ellenállással lehet helyettesíteni.
Schmitt kiváltó kapu:
Tudjuk, hogy az összes tesztjel nem négyzet vagy téglalap alakú hullám. Van háromszög hullámunk, foghullámunk, szinusz hullámunk és így tovább. Mivel az UNO csak a négyzet vagy a téglalap alakú hullámokat képes felismerni, szükségünk van egy eszközre, amely bármilyen jelet téglalap alakú hullámokká változtathat, ezért Schmitt Trigger Gate-t használunk. A Schmitt trigger gate egy digitális logikai kapu, amelyet aritmetikai és logikai műveletekre terveztek.
Ez a kapu biztosítja az OUTPUT-ot az INPUT feszültségszintje alapján. A Schmitt-kiváltónak THERSHOLD feszültségszintje van, amikor a kapura alkalmazott INPUT jel feszültségszintje magasabb, mint a logikai kapu THRESHOLD értéke, az OUTPUT HIGH értékre megy. Ha az INPUT feszültség jelszintje alacsonyabb, mint a THRESHOLD, akkor a kapu kimenete alacsony lesz. Általában nem külön kapjuk meg a Schmitt ravaszt, mindig van egy NEM kapunk a Schmitt ravaszt követve. A Schmitt Trigger működését itt magyarázzuk el: Schmitt Trigger Gate
74LS14 chipet fogunk használni , ebben a chipben 6 Schmitt Trigger kapu van. Ezeket a HAT kapukat belsőleg csatlakoztatják, az alábbi ábra szerint.
Az invertált Schmitt kiváltó kapu igazságtáblázata az alábbi ábrán látható, ezzel meg kell programoznunk az UNO-t a pozitív és negatív periódusok invertálására terminálain.
Most bármilyen típusú jelet táplálunk az ST kapuhoz, fordított időtartamú téglalap alakú hullámunk lesz a kimeneten, ezt a jelet tápláljuk az UNO-nak.
Arduino frekvenciaszámláló kód magyarázat:
Az arduino segítségével végzett frekvenciamérés kódja meglehetősen egyszerű és könnyen érthető. Itt elmagyarázzuk a pulseIn függvényt, amely elsősorban a frekvencia méréséért felel. Az Uno-nak van egy speciális impulzusIn funkciója , amely lehetővé teszi számunkra, hogy meghatározzuk egy adott téglalap alakú hullám pozitív állapotának vagy negatív állapotának időtartamát:
Htime = impulzusIn (8, HIGH); Ltime = impulzusIn (8, LOW);
Az adott függvény azt az időt méri, amely alatt a Magas vagy Alacsony szint van jelen az Uno PIN8-nál. Tehát egyetlen hullámciklus alatt a pozitív és a negatív szint időtartama mikroszekundumban lesz megadva. A pulseIn függvény mikro másodpercben méri az időt. Egy adott jelnél magas időnk = 10mS és alacsony időnk = 30ms (25 HZ frekvenciával). Tehát 30000 lesz tárolva egész Ltime-ben és 10000 Htime-ban. Ha összeadjuk őket, megkapjuk a ciklus időtartamát, és ennek megfordításával megkapjuk a frekvenciát.
Az Arduino használatával a teljes kód és videó ehhez a frekvenciamérőhöz alább található.