Tartalomjegyzék:
- 1. lépés: Digitális frekvencia felosztás
- 2. lépés: Ajánlott hardver
- 3. lépés: Az áramkör
- 4. lépés: A kód és az alacsony frekvenciák mérése
Videó: A nagyfrekvenciás és a terhelési ciklus mérése egyidejűleg, mikrokontroller segítségével: 4 lépés
2024 Szerző: John Day | [email protected]. Utoljára módosítva: 2024-01-30 09:42
Tudom, mit gondol: "Huh? Sok utasítás található a mikrovezérlők használatával a jelfrekvencia mérésére. Jawn." De várjon, ebben van egy újdonság: Leírok egy módszert, amellyel a mikrokontroller (MCU) által elviselhető frekvenciákat és a jel működési ciklusát sokkal magasabbra lehet mérni - mindezt egyszerre!
A készülék frekvenciatartománya ~ 43 Hz -től ~ 450 kHz -ig terjed, míg a működési ciklus 1% -tól 99% -ig terjed.
Hadd magyarázzam el az "elviselhető" részt: egy MCU méri a négyzethullám jelének periódusát, T, két követő átmeneti esemény közötti idő követésével. Például alacsony-magas feszültség ugrik az egyik I/O érintkezőjén. Ez úgy történik, hogy megszámolja a saját belső órájának impulzusainak számát. Naivan, a mért frekvenciák felső határának engedelmeskednie kell a Nyqvist-Shannon mintavételi tételnek; azaz nagyjából megegyezik az MCU -k órajel -frekvenciájának felével. A valóságban a határ sokkal -sokkal alacsonyabb, mert az MCU -nak kódot kell végrehajtania a megszakítások kezelésére, a változók mentésére, a számtani műveletek elvégzésére, az eredmények megjelenítésére stb. körülbelül 106. Ezért a mérhető frekvenciatartomány felső határa ebben az esetben 48 000 /212 /2 = 226,4 kHz lenne.
Míg az MCU méri a jel periódusát, meg tudja határozni annak impulzusszélességét is, P: a jelfeszültség magas maradási ideje. Más szóval, az alacsony-magas és a magas-alacsony átmenet közötti idő. A jel működési ciklusát a következő százalékban határozzák meg:
Vám = 100% * P / T
Csakúgy, mint a frekvencia esetében, az impulzusszélességnek gyakorlati korlátai vannak. A fenti példát használva 106 órajel -ciklus az impulzus szélességét legalább 2,21 mikroszekundumra korlátozza. Vagy legalább 50% 226,4 kHz -en.
A négyzethullámú jelek felső frekvenciahatárának növelésének egyik módja a flip-flop-okat használó digitális elválasztók alkalmazása. Ha a bemeneti frekvenciát n -el osztjuk, a mérhető felső tartomány n -szeresére nő. Ez nagyszerű hír, a digitális elválasztóknak egyetlen alapvető hibájuk van: az osztott jel elveszíti az impulzusszélesség (és a működési ciklus) információit! Az elválasztók működési módja miatt a teljesítményük mindig 50% -os. Dőzsölés…
A következő oldalakon azonban megmutatom, hogyan lehet digitálisan felosztani a frekvenciát és megőrizni az eredeti impulzusszélességet, lehetővé téve számomra, hogy a jeleket jóval meghaladva mérjem a közvetlen számlálás által meghatározott határokat.
1. lépés: Digitális frekvencia felosztás
A hagyományos digitális frekvenciaelosztók papucsokat használnak; ez az oktatóanyag szépen elmagyarázza az elválasztók felépítésének alapelveit szabványos JK flip-flopok használatával. Ez megoldja a túl magas bemeneti frekvenciák problémáját az MCU számára, de van egy jelentős hátránya: az osztott jel 50% -os működési ciklusú, függetlenül a bemeneti jel teljesítményétől! Nézze meg az első két ábrát, hogy miért van ez így. Az eredeti jelet T periódussal és P impulzusszélességgel egy JK flip-flop óracsapjába táplálják, miközben a J és K csapokat mindig magasan tartják (első ábra). A 3.3V logikát mindenhol feltételezzük. Tegyük fel, hogy a flip-flopot az óra pozitív (azaz emelkedő) széle váltja ki. Ilyen körülmények között a kimeneti csap állapotának változásai (egyedi "flip" és "flops") minden alkalommal előfordulnak, amikor az óracsap alacsonyról magasra emelkedik. Az óra magas -alacsony átmenetét (azaz a negatív élét) teljesen figyelmen kívül hagyja. Lásd a második ábrát. A Q kimeneti tüske olyan jelet bocsát ki, amelynek periódusa kétszer olyan hosszú, mint az eredeti periódus, azaz a felére csökken a frekvenciája. A kimenet impulzusszélessége mindig egyenlő T. Következésképpen az eredeti impulzusszélesség, P, elvész.
Egy másik JK flip-flop hozzáadása a harmadik ábrán látható konfigurációban osztja az eredeti frekvenciát 4-gyel. További flip-flopok hozzáadása ugyanazon a sorrendben megosztja a gyakoriságot a következő 2: 8, 16, 32 stb.
Probléma: hogyan lehet felosztani egy négyzethullám frekvenciáját, miközben megőrzi annak impulzusszélességét?
Az ötlet az, hogy megfelelően adjunk hozzá egy negatív éllel kiváltott JK flip-flopot a keverékhez. Nevezzük "Neg FF" -nek; lásd a negyedik ábrát. Itt a "megfelelően" azt jelenti, hogy az új flip-flop J és K csapjai az előző ábrán látható 4-es osztó ("Pos FF") Q és Qbar kimeneti csapjaihoz vannak kötve. (Itt a "bar" a Q szimbólum feletti vízszintes sáv, amely a logikai tagadást jelzi.) Ha látni szeretné, hogy ez mit ér el, tekintse meg a "Neg FF" függvénytáblázatát az ötödik ábrán: Neg kimeneti csapjai, Q és Qbar, tükrözze a bemeneti csapok, J és K állapotát. Ez azt jelenti, hogy tükrözik a Pos 'Q és Qbar állapotát. De a Neg flip-flop akciójának meg kell várnia az eredeti jel negatív élét, amely a pozitív él után P időpontban érkezik. Aha!
A kapott hullámformákat a hatodik ábra szemlélteti. A "Pos Q" 1/4 -es frekvencián ad ki jelet, a "Pos Qbar" inverz, a "Neg Q" a P impulzusszélességgel eltolt "Pos Q" -t követi, és a "Neg Qbar" az inverze. Ellenőrizheti, hogy a "Pos Qbar" és a "Neg Q" logikai ÉS impulzusvonatot eredményez -e, amelyet az eredeti P impulzusszélesség és 1/4 a frekvencia jellemez. Bingó!
Először pontosan ezt a kimeneti jelet használtam az MCU táplálásához. Ez azonban problémásnak bizonyult nagyon rövid impulzusszélességek esetén, mivel az MCU 106 cikluskorlátozása szerepel a Bevezetésben. Ezt a kis problémát úgy oldottam meg, hogy másik kimenetet választottam: "Pos Qbar" ÉS "Neg Qbar". Egy pillantás a hullámformákra meg kell győznie Önt arról, hogy az adott hullámforma, P 'impulzusszélessége T és 2T között változik a P (0, T) tartománya helyett. A P könnyen visszanyerhető P' -ből:
P = 2T - P '
2. lépés: Ajánlott hardver
Igazán szeretem az elektronikus hobbik relatív újoncát: az Atmel SAM D21 MCU-kat, amelyek a 32 bites ARM Cortex M0+ processzoron alapulnak, 48 MHz-es órajelen, ami sokkal magasabb, mint a régebbi Atmels. Ehhez a projekthez vettem:
- ItsyBitsy M0 Express MCU lap az Adafruit -tól
- Véletlenül volt egy újratölthető LiPo akkumulátorom az Adafruit -tól
- Monokróm 128x32 SPI OLED kijelző (kitalálta: Adafruit)
- Kettős pozitív éllel kiváltott JK flip-flop SN74HC109 a Texas Instruments-től
- Kettős negatív éllel kiváltott JK flip-flop SN74HC112 a Texas Instruments-től
- Négyes és kapu CD74AC08E a Texas Instruments -től
- Négyszeres vagy kapu CD74AC32E a Texas Instruments -től
3. lépés: Az áramkör
Az első ábra a frekvencia/teljesítménymérő egyszerűsített vázlatát mutatja. A 3.3 V -os CMOS logikát feltételezzük. Következésképpen a bemeneti négyzethullám amplitúdójának a megfelelő V között kell lennieIH szint (azaz 2 V) és 3,3 V. Ha nem, akkor ennek megfelelően kell felfelé vagy lefelé méretezni. A legtöbb esetben elegendő egy egyszerű feszültségosztó. Ha a mérő verzióját más logikai szintre szeretné tervezni, akkor egy másik mikrovezérlőt (MCU), akkumulátort és egy kijelzőt kell használnia, amelyek a kívánt szinten működnek. A projektben használt logikai kapuk és papucsok 2 V és 6 V közötti logikai szinteken működnek, és a legtöbb esetben rendben kell lenniük.
Amint az látható, az ItsyBitsy MCU a 9-13. Érintkezőket használja a kommunikációhoz a kijelzővel a szoftver SPI protokollon keresztül. A 3 V -os tápellátás biztosítja az egész áramkör áramellátását. A 3. digitális bemeneti tüske elfogadja az elemzett jelet, míg a 2. és 4. tüskék a jelforrást vezérlik: vagy közvetlen jel érkezik az AND3 kapun (alacsony bemeneti frekvenciák), vagy jel osztva 4 -gyel az AND4 kapun keresztül (magas bemeneti frekvenciák), a 2. lépésben leírtak szerint A következő lépésben tárgyalt kód automatikusan észleli a bejövő frekvenciatartományt, és megfelelően átkapcsolja a jelforrást.
A vázlat nem mutatja a digitális chipkapcsolatok valódi összetettségét. A második kép azt mutatja, hogy a projekt hogyan nézne ki egy kenyértáblán. A bemeneti jel piros vezetéken keresztül érkezik a kettős pozitív élű flip-flop 2CLK csapjához. FIGYELMEZTETÉS: Általában ennek a flip -flopnak az összes J és K csapját magasan kell tartani, de különösen az SN74HC109 rendelkezik a Kbar csapdal - egy fordított K csapdal. Ezért ezt a csapot földelni kell! Az SN74HC112 első negatív élű flip-flopjának 1K és 1J csapja az SN74HC109 1Q és 1Qbar csapjaihoz van csatlakoztatva. Az SN74HC112 második flip-flopja nincs használatban, és a bemeneti csapjai (2K, 2J, 2CLRbar) földelve vannak. Az összes többi papírt, a PREbar (előre beállított) és a CLRbar (átlátszó) csapokat logikai magasra kell csatlakoztatni. A fel nem használt óra és kimeneti csapok nincsenek csatlakoztatva. Hasonlóképpen, a nem használt bemeneti tüskék minden kapuban földelve vannak, míg a nem használt kimeneti tüskék nincsenek csatlakoztatva. Amint azt a "Láthatatlan telefongyilkos gyilkos" című fejezetemben tárgyaltam, utasítható, a logikai chipek nem használt bemeneti csapjainak földelése kiküszöböli a véletlenszerű ingadozásokat és energiát takarít meg.
4. lépés: A kód és az alacsony frekvenciák mérése
Természetesen minden művelet az alábbi linkben történik. Amikor a 3. tűn bejövő bemenet digitális alacsonyról magasra vált, az MCU elkezdi számolni a belső 48 MHz -es órajelét. Megjegyzi a magasról az alacsonyra való átmenet pillanatát, és folytatja a számlálást a következő alacsony -magas váltásig, amikor újraindítja az egész folyamatot. Az első szám az impulzus szélességét jelzi, míg a teljes szám a jel periódusát. És ez az egész titok.
A CPU ezeket az átmeneteket hardveres megszakításokkal jegyzi meg. A SAMD21 több órával rendelkezik; a kódom TC3 -at használ. Kezdetben azzal kezdtem, hogy elolvastam az M0 adatlapját, amely sok erőfeszítést igényel a megszakításkezelő kódolásában, de hamarosan nagyon sok kapcsolódó kódot fedeztem fel az Arduino Forum bejegyzéseiben, amelyeket az electro_95, MartinL és Rucus felhasználók közöltek. kellően elismert. Kombinált kódomat beépítettem és módosítottam az enyémben; sok időt spórolok meg!
Amint azt már korábban említettem, a jelfelbontást ~ 106 CPU -ciklus korlátozza a megszakítások közötti kód végrehajtásához. Az impulzusszélesség -megőrzéssel rendelkező digitális felosztás gondoskodik a magas frekvenciákról. Az alacsony frekvenciák ezzel szemben újabb kihívást jelentenek: mivel a TC3 óraszámláló 16 bit hosszú, túlcsordul a 65, 536 számlálási korlát átlépése után. Ezt a helyzetet túlcsordulás megszakítás hozzáadásával lehet kezelni, de más megoldást választott: a TC3 használhat előre méretezett (azaz szoftveresen osztott) CPU órát a hardver 48 MHz-es óra helyett. Így ha a jel periódusa megközelíti a túlcsordulási határértéket, a kód utasíthatja a TC3 -at, hogy 24 MHz -es számokat használjon a következő időszakban, és íme, a számláló 32, 768 szám alá csökken. Még alacsonyabb frekvenciák esetén a TC3 utasítható 12 MHz -es impulzusok számolására. Ennek eredményeként az eszköz tartományának alsó vége körülbelül 43 Hz.
Örömmel várjuk a kódot és használjuk fel a projektben, de kérjük, említse meg a forrást az eredmények közzétételekor.
Link a kódhoz.
Ajánlott:
Arduino fürdőszobai mérleg 50 kg terhelési cellákkal és HX711 erősítővel: 5 lépés (képekkel)
Arduino fürdőszobai mérleg 50 kg -os terhelési cellákkal és HX711 erősítővel: Ez az utasítás leírja, hogyan kell mérleget készíteni a polcról könnyen hozzáférhető részekből. Szükséges anyagok: Arduino - (ez a kialakítás szabványos Arduino Uno -t használ, más Arduino változatoknak vagy klónoknak működniük kell és) HX711 a kitörési boa -n
Menstruációs ciklus magyarázata - Makey Makey & Scratch segítségével: 4 lépés
Menstruációs ciklus megmagyarázva - Makey Makey's & Scratch segítségével: Egy hete a 7. osztályosokkal dolgoztam egy "menstruációs ciklus naptár" elkészítésén, amelyről a biológia órán tanulnak. Többnyire kézműves anyagokat használtunk, de a természettudományok tanárával úgy döntöttünk, hogy egy Makey Makey -t is hozzáadunk az
Súlymérés terhelési cellával: 9 lépés
Súlymérés terhelési cellával: Ez a bejegyzés az 1 kg alatti súlyok mérésére szolgáló áramkör beállításával, hibaelhárításával és újrarendezésével foglalkozik. Az ARD2-2151 ára 9,50 euró, és megvásárolható a következő címen: https: //www.wiltronics .com.au/product/9279/load-ce … Mit használtak: -A 1 kg-os töltőcella (ARD2-2151)
Oktatóanyag a HX711 interfészhez 50 kg -os terhelési cellával: 10 lépés (képekkel)
Oktató a HX711 interfészhez 50 kg terhelésmérő cellával: HX711 BALACE MODULES Leírás: Ez a modul 24 nagy pontosságú A / D konvertert használ. Ezt a chipet nagy pontosságú elektronikus mérlegre és tervezésre tervezték, két analóg bemeneti csatornával rendelkezik, 128 integrált erősítő programozható erősítéssel. A bemeneti áramkör
Egyedi ezüst kábelek Audio/Digitális/Nagyfrekvenciás/GPS: 7 lépés
Egyedi ezüst kábelek Audio/Digitális/Nagyfrekvenciás/GPS: Számos új audio/video mod és új eszköz, mind az ipod audio, mind a digitális videó esetén, össze kell kapcsolnunk rendszereinket az új eszközökhöz, összetettebb kábelekkel. Néhány nagyon drága … Ezeknek feltétlenül tartalmaznia kell az összetevőket & építési anyagok