Ha tetszik az oldal, kérlek támogasd egy minimális összeggel!
KÖZÖSSÉG
Üzenőfal
Nyomj egy tetszik gombot!
Oszd meg!
Küldj mailt!
1
Nagy pontosságú frekvenciamérő Arduinoval
Arduino alapú frekvenciamérőkkel Dunát lehetne rekeszteni. Most ezt a listát szeretném bővíteni egy pontosabb, megbízhatóbb változattal.
Minden frekvenciamérő pontossága elsősorban az alkalmazott órajel pontosságától függ. Az olcsó (de a drágább) Arduino alaplapok 16 MHz-es alap órajele gyakran hagy kívánnivalót maga után. Ez sok esetben javítható a kvarckrictály rezonanciáját beállító 22p körüli kondenzátorok cseréjével. Ám önmagában ez sem fog látványos eredményt produkálni, hiába állítjuk be az órajelet pontos 16 MHz-re, ha nem lesz hosszútávon stabil. Márpedig hőmérsékletváltozás hatására látványosan el fog mászni a frekvencia, ami néhány alkalmazásnál problémákat fog okozni. Jó példa erre egy frekvenciamérő, ami sok bosszúságot okozott már emiatt.
A közelmúltban praktikussági szempontokat figyelembevéve, bedobozoltam egy Arduino Mega alaplap kínai klónját.
A dobozban több kiegészítő mellett (Nokia3410 LCD, SD kártyaolvasó, 4x4+4x1 keypad, stb...) helyet kapott egy DS3231 RTC modul is. Ehez készítettem már néhány shieldet, most egy frekvencia és fordulatszám mérő lap van soron. Rendkívül idegesítő volt a fentebb említett okok miatt pontatlan és mindíg más értéket mutató műszer, ezért elkezdtem túrni a netet, de nem találtam kielégítő megoldást. Némi fejtörés után arra jutottam, hogy valami külső referenciát használva mérés előtt kalibrálni kell a frekvenciamérőt. Egy fórumon hívták fel a figyelmem az RTC stabilitására. A DS3231 RTC modul rendelkezik egy hőkompenzált, pontos, TTL szintű 32768 Hz-es kimenettel. Ezt referenciaként használva igen jó frekvenciamérő építhető.
A Mega alaplapon sok frekvenciamérési módszert végigpróbálva, Paul Stoffregen segédkönyvtárát találtam a legjobbnak. A library letölthető a Githubról . Mega2560 esetén a 47. pin használható bemenetnek, Uno vagy Nano lapnál a digitális 5. pin. Mivel egy pin használható a méréshez, viszont két külön forrásból származó frekvencát kell mérni, ezért mérés közben átkapcsolásra van szükség. Ez történhet kézzel is, de célszerűbb automatizálni ezt a feladatot. Én egy DIP tokozású Reed relével oldottam meg.
A mérés folyamata a következő. Bekapcsoláskor meghúz a relé, és néhányszor megméri a referenciát. A mért értékből kiszámítja mekkora az eltérés a valós 32768 Hz-hez képest. Elment egy kompezációs értéket kikapcsolásig. Elengedi a relét, ezzel átkapcsolja a bemenetet a mérni kívánt eszközre. Mér, majd a kompenzációs értékkel módosítja azt. Ezután kerül a kijelzőre a valós érték. Hogy érthetőbb legyen, megpróbálom számokkal bemutatni a kompenzálás folyamatát.
1 MHz mérése. Az egyszerűség miatt a számsorokat rövidítettem.
Referencia mérés: 32795 Hz
Kompenzáció számítás: 32768/32795=0,99917...
Valódi mérés: 1000823,97460...Hz
Valódi freki számítás: 1000823,97460*0,99917
Kompenzálva : 1000000 Hz
Ha hosszú időn keresztül méregetünk, célszerű újraindítani a frekvenciamérőt, így újra kalibráva lesz. Nem csak
RTC használható, megfelelhet bármilyen TCXO az Arduino méréstartományában, csak a referencia értékét kell módosíani a kódban. A referenciaforrás felszerelhető egy shieldre is a relével és egy nyomógombbal ami újraindítja a mérési folyamatot, ez nem szerepel a kódban. Mivel nekem dobozon belül van az RTC, ezért a Megán lévő NC (semmihez sem csatlakozó) kivezetéshez csatlakoztattam a referencia órajelet. A relét kapcsoló kivezetést, a ledet és a nyomógombot
bármelyik szabad pinre köthetjük, csak a sketchben át kell írni a pinek számozását.
A kompenzált mérés, és a kompenzáció nélküli mérés különbségét könnyen tesztelhetjük, csak egy komment jelet kell egy sorral lejjebb helyezni a kódban.
Lehet, hogy csak az én Mega alaplapom ad ilyen gyalázatos mérést, de a javulás több nagyságrendű annak ellenére, hogy az RTC sem a legpontosabb. 2 MHz-es jelgenerátorral tesztelve (megbízható frekvenciamérővel mérve 2000062 Hz) az Arduino 2007355 Hz-et mért. Ez 0,735% pontosságot jelent. Kompenzálva 2000030 Hz a mért érték. Ez már 0,003% pontosság. A teszteket többször ismételve arra jutottam, hogy megérte a befektetett idő.
A kapcsolás sok hozzáfűznivalót nem kíván. A nyomógomb felhúzóellenállása 10k körül legyen, de el is hagyható a belső felhúzóellenállás bekapcsolásával. A tranzisztor bármilyen kisjelű típus lehet, figyelembevéve az alkalmazott relé behúzótekercsének áramszükségletét. A nyomógombbal indítható a kalibrálás és mérés, ezt jelzi egy led (opcionális) is. A gomb következő megnyomása leállítja a mérést. A led nem szerepel a rajzon, anódja egy 330 Ohm értékű ellenálláson keresztül csatlakozik a D11 pinre, A katód pedig GND-re kerül. A kódot bárki szabadon használhatja, módosíthatja.
A kapcsolásokhoz hozzászólhattok a Facebookon! Kövessétek Morgoelektronika csoportot!