Tartalomjegyzék:

A nagyfrekvenciás és a terhelési ciklus mérése egyidejűleg, mikrokontroller segítségével: 4 lépés
A nagyfrekvenciás és a terhelési ciklus mérése egyidejűleg, mikrokontroller segítségével: 4 lépés

Videó: A nagyfrekvenciás és a terhelési ciklus mérése egyidejűleg, mikrokontroller segítségével: 4 lépés

Videó: A nagyfrekvenciás és a terhelési ciklus mérése egyidejűleg, mikrokontroller segítségével: 4 lépés
Videó: Распределенный автоматический выключатель: повышение отказоустойчивости ваших микросервисов 2024, November
Anonim
Hogyan mérhető nagyfrekvenciás és terhelési ciklus, egyidejűleg, mikrokontroller segítségével
Hogyan mérhető nagyfrekvenciás és terhelési ciklus, egyidejűleg, mikrokontroller segítségével
Hogyan mérhető nagyfrekvenciás és terhelési ciklus, egyidejűleg, mikrokontroller segítségével
Hogyan mérhető nagyfrekvenciás és terhelési ciklus, egyidejűleg, mikrokontroller segítségével
Hogyan mérhető nagyfrekvenciás és terhelési ciklus, egyidejűleg, mikrokontroller segítségével
Hogyan mérhető nagyfrekvenciás és terhelési ciklus, egyidejűleg, mikrokontroller segítségével

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

Digitális frekvencia osztály
Digitális frekvencia osztály
Digitális frekvencia osztály
Digitális frekvencia osztály
Digitális frekvencia osztály
Digitális frekvencia osztály

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

Ajánlott hardver
Ajánlott hardver
Ajánlott hardver
Ajánlott hardver
Ajánlott hardver
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 áramkör
Az áramkör
Az áramkör
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: