Tartalomjegyzék:
- 1. lépés: Műszaki szempontok
- 2. lépés: Szükséges összetevők
- 3. lépés: Építés
- 4. lépés: A kód
- 5. lépés: Használat
Videó: Arduino hullámforma generátor: 5 lépés (képekkel)
2024 Szerző: John Day | [email protected]. Utoljára módosítva: 2024-01-30 09:40
2021
A laborban gyakran szükség van egy bizonyos frekvenciájú, alakú és amplitúdójú ismétlődő jelre. Ez lehet egy erősítő tesztelése, egy áramkör, egy alkatrész vagy egy hajtómű ellenőrzése. Erőteljes hullámforma -generátorok kaphatók a kereskedelemben, de viszonylag könnyen saját maguk készíthetnek hasznosat egy Arduino Uno vagy Arduino Nano segítségével, lásd például:
www.instructables.com/id/Arduino-Waveform-…
www.instructables.com/id/10-Resister-Ardui…
Íme egy másik leírása a következő jellemzőkkel:
* Pontos hullámformák: 8 bites kimenet R2R DAC használatával, 256 minta
* Gyors: 381 kHz mintavételi frekvencia
* Pontos: 1mHz lépéses frekvenciatartomány. Olyan pontos, mint az Arduino kristály.
* Egyszerű kezelés: hullámforma és frekvencia állítható egyetlen forgó jeladóval
* Széles amplitúdójú tartomány: millivolt 20 V -ig
* 20 előre meghatározott hullámforma. Egyszerű hozzáadás.
* Könnyen elkészíthető: Arduino Uno vagy Nano plusz szabványos alkatrészek
1. lépés: Műszaki szempontok
Analóg jel készítése
Az Arduino Uno és Nano egyik hiányossága, hogy nem rendelkezik digitális-analóg (DAC) átalakítóval, így nem lehet közvetlenül a tüskéken analóg feszültséget kiadni. Az egyik megoldás az R2R létra: 8 digitális csap csatlakozik egy ellenálláshálózathoz, így 256 kimeneti szint érhető el. Közvetlen port hozzáférés révén az Arduino egyetlen paranccsal egyszerre 8 tűt állíthat be. Az ellenálláshálózathoz 9 R értékű és 8 2R értékű ellenállás szükséges. 10 kOhm -ot használtam az R értékeként, ez tartja a feszültséget a csapoktól 0,5 mA -ig vagy annál kevesebbig. Azt hiszem, az R = 1 kOhm is működhet, mivel az Arduino könnyen szállít 5 mA -t tűn, 40 mA -t portonként. Fontos, hogy az R és a 2R ellenállások aránya valóban 2. Ezt a legkönnyebben úgy érhetjük el, ha 2 db R értékű ellenállást sorba rakunk, összesen 25 ellenállást.
Fázisakkumulátor
A hullámforma létrehozása ezután ismétlődően elküldi a 8 bites számok sorozatát az Arduino csapokhoz. A hullámformát 256 bájtos tömb tárolja, és ebből a tömbből mintát vesznek, és elküldik a csapokhoz. A kimenő jel frekvenciáját az határozza meg, hogy az ember milyen gyorsan halad előre a tömbön. Ennek robusztus, pontos és elegáns módja a fázisakkumulátor: egy 32 bites szám rendszeres időközönként növekszik, és a 8 legjelentősebb bitet használjuk a tömb indexeként.
Gyors mintavétel
A megszakítások lehetővé teszik a mintavételt pontosan meghatározott időpontokban, de a megszakítások költségei korlátozzák a mintavételi frekvenciát ~ 100 kHz-re. A végtelen ciklus a fázis frissítéséhez, a hullámforma mintavételéhez és a csapok beállításához 42 óra ciklust vesz igénybe, így 16MHz/42 = 381kHz mintavételi sebességet ér el. A forgó jeladó elforgatása vagy megnyomása csapváltást és megszakítást okoz a hurokból, ami megváltoztatja a beállítást (hullámforma vagy frekvencia). Ebben a szakaszban a tömb 256 számát újraszámítják, így a hullámforma tényleges számításait nem kell elvégezni a főhurokban. Az abszolút maximális generálható frekvencia 190 kHz (a mintavételi frekvencia fele), de akkor csak két minta van periódusonként, tehát nem sok irányítás az alakzat felett. Az interfész így nem teszi lehetővé a frekvencia 100 kHz feletti beállítását. 50 kHz-en periódusonként 7-8 minta, 1,5 kHz-en és alatta pedig a tömbben tárolt mind a 256 számból mintát vesznek minden periódusban. Azon hullámformák esetében, ahol a jel zökkenőmentesen változik, például a szinuszhullám, a minták kihagyása nem jelent problémát. De a keskeny tüskés hullámformák, például egy kis hullámhosszú, kis teljesítményciklusú hullámformák esetén fennáll annak a veszélye, hogy 1,5 kHz feletti frekvenciáknál egyetlen minta hiánya azt eredményezheti, hogy a hullámforma nem az elvárt módon viselkedik
A frekvencia pontossága
Az a szám, amellyel a fázist minden mintán növelik, arányos a gyakorisággal. A frekvencia így 381kHz/2^32 = 0,089mHz pontosságú. A gyakorlatban ilyen pontosságra aligha van szükség, ezért az interfész korlátozza a frekvencia 1 mHz -es lépésekben történő beállítását. A frekvencia abszolút pontosságát az Arduino órajelének pontossága határozza meg. Ez az Arduino típustól függ, de a legtöbb 16.000 MHz frekvenciát ad meg, tehát ~ 10^-4 pontosságot. A kód lehetővé teszi a frekvencia és a fázisnövekedés arányának módosítását, hogy kijavítsa a 16 MHz -es feltételezés kis eltéréseit.
Pufferelés és erősítés
Az ellenálláshálózat nagy kimeneti impedanciával rendelkezik, így terhelés esetén a kimeneti feszültsége gyorsan csökken. Ez megoldható a kimenet pufferelésével vagy erősítésével. Itt a pufferelés és az erősítés opamp -el történik. Az LM358 -at használtam, mert volt nálam. Ez egy lassú opamp (fordulatszám 0,5 V / mikroszekundum), így nagy frekvencián és nagy amplitúdóban a jel torzul. Jó dolog, hogy képes 0V közeli feszültséget kezelni. A kimeneti feszültség azonban a sín alatt ~ 2 V -ra korlátozódik, így a +5 V teljesítmény használata 3 V -ra korlátozza a kimeneti feszültséget. A lépcsőzetes modulok kompaktok és olcsók. +20 V -ot táplál az opamp -nak, és akár 18 V feszültségű jeleket is generálhat. (Megjegyzés: a vázlat LTC3105-öt ír, mert ez volt az egyetlen lépés, amit a Fritzingben találtam. A valóságban MT3608 modult használtam, lásd a képeket a következő lépésekben). Úgy döntök, hogy változó csillapítást alkalmazok az R2R DAC kimenetére, majd az egyik opamp segítségével a jelet pufferelni kell erősítés nélkül, a másikat pedig 5,7 -tel erősíteni, hogy a jel elérje a körülbelül 20 V -os maximális kimenetet. A kimeneti áram meglehetősen korlátozott, ~ 10mA, ezért erősebb erősítőre lehet szükség, ha a jel nagy hangszórót vagy elektromágnest akar meghajtani.
2. lépés: Szükséges összetevők
A mag hullámforma generátorhoz
Arduino Uno vagy Nano
16x2 LCD kijelző + 20 kOhm trimmer és 100 Ohm sorozatú ellenállás a háttérvilágításhoz
5 tűs forgó kódoló (beépített nyomógombbal)
25 db 10 kOhm -os ellenállás
A pufferhez/erősítőhöz
LM358 vagy más kettős opamp
fokozó modul az MT3608-on alapul
50 kOhm változó ellenállás
10 kOhm ellenállás
47 kOhm ellenállás
1muF kondenzátor
3. lépés: Építés
Mindent forrasztottam egy 7x9 cm -es prototípus táblára, ahogy a képen is látszik. Mivel kicsit összezavarodott az összes vezeték, megpróbáltam pirosra színezni azokat a vezetékeket, amelyek pozitív feszültséget hordoznak, és azokat, amelyek földeltek.
Az általam használt kódolónak 5 csapja van, 3 az egyik oldalon, 2 a másik oldalon. A 3 érintkezős oldal a tényleges jeladó, a 2 érintkezős oldal a beépített nyomógomb. A 3-tűs oldalon a központi csapot a földhöz kell csatlakoztatni, a másik két csapot a D10-hez és a D11-hez. A 2-tűs oldalon az egyik érintkezőt a földhöz, a másikat a D12-hez kell csatlakoztatni.
Ez a legcsúnyább dolog, amit valaha készítettem, de működik. Jó lenne behelyezni egy házat, de egyelőre a plusz munka és a költségek nem igazán indokolják. A Nano és a kijelző csapszegekkel van rögzítve. Nem csinálnám újra, ha újat építenék. Nem tettem csatlakozókat a táblára a jelek felvételéhez. Ehelyett krokodilvezetékekkel veszem fel őket a rézhuzal kiálló darabjaiból, a következő címkével:
R - nyers jel az R2R DAC -ból
B - pufferelt jel
A - erősített jel
T - időzítő jel a 9. tűből
G - föld
+ - pozitív „magas” feszültség a fokozó modulból
4. lépés: A kód
A kód, egy Arduino vázlat, csatolva van, és fel kell tölteni az Arduino -ba.
20 hullámformát határoztak meg előre. Egyszerűnek kell lennie bármilyen más hullám hozzáadásával. Vegye figyelembe, hogy a véletlenszerű hullámok a 256 értékű tömböt véletlen értékekkel töltik fel, de ugyanaz a minta ismétlődik minden periódusban. A valódi véletlenszerű jelek zajnak hangzanak, de ez a hullámforma sokkal inkább sípként hangzik.
A kód 1 kHz -es jelet állít be a D9 érintkezőn a TIMER1 segítségével. Ez hasznos az analóg jel időzítésének ellenőrzéséhez. Így jöttem rá, hogy az órajel -ciklusok száma 42: Ha 41 -et vagy 43 -at feltételezek, és 1kHz -es jelet generálok, akkor egyértelműen más a frekvenciája, mint a D9 -es tűn. 42 -es értékkel tökéletesen illeszkednek.
Általában az Arduino minden ezredmásodpercben megszakít, hogy nyomon követhesse az időt a millis () függvénnyel. Ez megzavarná a pontos jelképzést, ezért az adott megszakítás le van tiltva.
A fordító ezt mondja: "A Sketch 7254 bájt (23%) program tárhelyet használ. Maximum 30720 bájt. A globális változók 483 bájt (23%) dinamikus memóriát használnak, így 1565 bájt marad a helyi változóknak. Maximum 2048 bájt." Tehát bőven van hely a kifinomultabb kódok számára. Vigyázzon, hogy a Nano -hoz való sikeres feltöltéshez esetleg az "ATmega328P (régi rendszerbetöltő)" lehetőséget kell választania.
5. lépés: Használat
A jelgenerátor egyszerűen táplálható az Arduino Nano mini-USB-kábelén keresztül. A legjobb, ha tápegységgel végezzük, hogy ne legyen véletlen földhurok a készülékkel, amelyhez csatlakoztatható.
Bekapcsolva 100 Hz -es szinuszhullámot generál. A gomb elforgatásával a másik 20 hullámtípus közül választhat egyet. Nyomva tartva forgatva a kurzort a frekvencia bármelyik számjegyére lehet állítani, amelyet ezután a kívánt értékre lehet változtatni.
Az amplitúdó a potenciométerrel szabályozható, és akár a pufferelt, akár az erősített jel használható.
Nagyon hasznos oszcilloszkóp segítségével ellenőrizni a jel amplitúdóját, különösen akkor, ha a jel áramot szolgáltat egy másik eszköznek. Ha túl sok áramot húz, a jel lecsípődik, és a jel erősen torz
Nagyon alacsony frekvenciák esetén a kimenet 10 kOhm -os ellenállású soros LED -del jeleníthető meg. Hangfrekvenciák hangszóróval hallhatók. Ügyeljen arra, hogy a jel nagyon kicsi legyen ~ 0,5 V, különben az áram túl magas lesz, és a jel vágni kezd.
Ajánlott:
DIY funkció/hullámforma generátor: 6 lépés (képekkel)
DIY funkció/hullámforma generátor: Ebben a projektben rövid pillantást vetünk a kereskedelmi funkció/hullámforma generátorokra, hogy meghatározzuk, milyen funkciók fontosak a DIY verzióhoz. Később megmutatom, hogyan lehet létrehozni egy egyszerű funkciógenerátort, az analógot és a számjegyet
Interaktív lézerlap -generátor Arduino -val: 11 lépés (képekkel)
Interaktív lézerlap -generátor Arduino -val: A lézerek hihetetlen vizuális effektek létrehozására használhatók. Ebben a projektben új típusú lézer kijelzőt készítettem, amely interaktív és zenét játszik le. A készülék két lézert forgat, hogy két örvényszerű fénylapot képezzen. Mellékeltem a távolságérzékelőt
Generátor - DC generátor Reed kapcsolóval: 3 lépés
Generátor - egyenáramú generátor Reed kapcsolóval: Egyszerű egyenáramú generátor Az egyenáramú (DC) generátor egy elektromos gép, amely a mechanikai energiát egyenáramú villamos energiává alakítja. Fontos: Az egyenáramú (DC) generátor konstrukció nélkül is használható egyenáramú motorként. változtatások
Alacsony költségű hullámforma generátor (0 - 20 MHz): 20 lépés (képekkel)
Alacsony költségű hullámalakító generátor (0 - 20MHz): RÖVID A projekt abból adódik, hogy 10 Mhz feletti sávszélességű és 1%alatti harmonikus torzítást igénylő hullámgenerátort kell beszerezni, mindezt alacsony költséggel. Ez a dokumentum egy hullámgenerátor tervezését írja le, amelynek sávszélessége meghaladja
Egy generátor öngerjesztése egyenáramú generátor, kondenzátor bank vagy akkumulátor nélkül: 5 lépés (képekkel)
Öngerjesztés generátor, egyenáramú generátor, kondenzátor bank vagy akkumulátor nélkül: Szia! Ez az utasítás arra szolgál, hogy a mezőgerjesztett generátort öngerjesztővé alakítsuk át. Ennek a trükknek az az előnye, hogy nem kell bekapcsolnia a mezőt generátor 12 voltos akkumulátorral, de helyette magától bekapcsol, így