Sisällysluettelo:
- Vaihe 1: Tekniset näkökohdat
- Vaihe 2: Tarvittavat komponentit
- Vaihe 3: Rakentaminen
- Vaihe 4: Koodi
- Vaihe 5: Käyttö
Video: Arduino -aaltomuodon generaattori: 5 vaihetta (kuvilla)
2024 Kirjoittaja: John Day | [email protected]. Viimeksi muokattu: 2024-01-30 09:00
Helmikuun 2021 päivitys: tutustu uuteen versioon, jonka näytteenottotaajuus on 300 -kertainen Raspberry Pi Picon perusteella
Laboratoriossa tarvitaan usein toistuvaa tietyn taajuuden, muodon ja amplitudin signaalia. Se voi olla testata vahvistinta, tarkistaa piiri, komponentti tai toimilaite. Tehokkaita aaltomuodon generaattoreita on saatavana kaupallisesti, mutta hyödyllisen generaattorin tekeminen Arduino Unon tai Arduino Nanon avulla on suhteellisen helppoa, katso esimerkiksi:
www.instructables.com/id/Arduino-Waveform-…
www.instructables.com/id/10-Resister-Ardui…
Tässä on kuvaus toisesta, jolla on seuraavat ominaisuudet:
* Tarkat aaltomuodot: 8-bittinen lähtö käyttäen R2R DAC: tä, 256 näytteen muoto
* Nopea: 381 kHz näytteenottotaajuus
* Tarkka: 1mHz askeltaajuusalue. Yhtä tarkka kuin Arduino -kristalli.
* Helppo käyttää: aaltomuoto ja taajuus asetettavissa yhdellä pyörivällä anturilla
* Laaja amplitudialue: millivolttia - 20 V.
* 20 ennalta määriteltyä aaltomuotoa. Suora lisätä.
* Helppo tehdä: Arduino Uno tai Nano plus vakiokomponentit
Vaihe 1: Tekniset näkökohdat
Analogisen signaalin lähettäminen
Yksi Arduino Unon ja Nanon puutteista on se, että siinä ei ole DAC-muunninta, joten sitä ei voida antaa antamaan analogista jännitettä suoraan nastoille. Yksi ratkaisu on R2R -tikkaat: 8 digitaalista nastaa on kytketty vastusverkkoon niin, että 256 lähtötasoa voidaan saavuttaa. Suoran portin kautta Arduino voi asettaa 8 nastaa samanaikaisesti yhdellä komennolla. Vastusverkkoa varten tarvitaan 9 vastusta, joiden arvo on R ja 8, joiden arvo on 2R. Käytin 10 kOhm: n arvoa R: lle, joka pitää virran nastoista 0,5 mA: iin tai alle. Luulen, että R = 1 kOhm voisi myös toimia, koska Arduino voi helposti toimittaa 5 mA per pin, 40 mA per portti. On tärkeää, että R- ja 2R -vastuksen välinen suhde on todella 2. Tämä saavutetaan helpoimmin asettamalla kaksi R -arvoista vastusta sarjaan, yhteensä 25 vastusta.
Vaihevaraaja
Aaltomuodon luominen sitten lähettää toistuvasti 8-bittisen numerosarjan Arduino-nastoille. Aaltomuoto tallennetaan 256 tavun matriisiin, ja tästä taulukosta otetaan näytteitä ja lähetetään nastoille. Lähtösignaalin taajuus määräytyy sen mukaan, kuinka nopeasti ryhmä etenee. Vankka, tarkka ja tyylikäs tapa tehdä tämä on vaiheakulla: 32-bittinen luku kasvaa säännöllisin väliajoin, ja käytämme 8 merkittävintä bittiä taulukon indeksinä.
Nopea näytteenotto
Keskeytykset mahdollistavat näytteenoton tarkasti määriteltyinä aikoina, mutta keskeytysten yleiskustannukset rajoittavat näytteenottotaajuuden ~ 100 kHz: iin. Ääretön silmukka vaiheen päivittämiseksi, aaltomuodon näytteenottamiseksi ja nastojen asettamiseksi kestää 42 kellojaksoa, jolloin näytteenottotaajuus on 16 MHz/42 = 381 kHz. Pyörivän anturin kiertäminen tai työntäminen aiheuttaa nastan vaihdon ja silmukasta poistuvan keskeytyksen, joka muuttaa asetusta (aaltomuoto tai taajuus). Tässä vaiheessa taulukon 256 numeroa lasketaan uudelleen siten, että aalomuodon todellisia laskelmia ei tarvitse suorittaa pääsilmukassa. Absoluuttinen enimmäistaajuus, joka voidaan luoda, on 190 kHz (puolet näytteenottotaajuudesta), mutta silloin on vain kaksi näytettä jaksoa kohden, joten muotoa ei ole paljon hallittavissa. Liitäntä ei siis salli taajuuden asettamista yli 100 kHz. 50 kHz: n taajuudella on 7-8 näytettä jaksoa kohden ja 1,5 kHz: n taajuudella ja alle kaikkien matriisiin tallennettujen 256 numeron näytteitä otetaan joka jakso. Aaltomuodoissa, joissa signaali muuttuu tasaisesti, esimerkiksi siniaalto, näytteiden ohittaminen ei ole ongelma. Mutta aaltomuodoille, joilla on kapeat piikit, esimerkiksi neliöaalto, jolla on pieni toimintajakso, on olemassa vaara, että yli 1,5 kHz: n taajuuksilla yhden näytteen puuttuminen voi johtaa siihen, että aaltomuoto ei toimi odotetusti
Taajuuden tarkkuus
Luku, jolla vaihetta lisätään jokaisessa näytteessä, on verrannollinen taajuuteen. Taajuus voidaan siten asettaa 381 kHz/2^32 = 0,089 MHz tarkkuuteen. Käytännössä tällaista tarkkuutta tuskin koskaan tarvitaan, joten käyttöliittymä rajoittaa taajuuden asettamista 1 MHz: n askelin. Taajuuden absoluuttinen tarkkuus määräytyy Arduinon kellotaajuuden tarkkuuden mukaan. Tämä riippuu Arduino-tyypistä, mutta useimmat määrittävät taajuuden 16.000 MHz, joten tarkkuus on ~ 10^-4. Koodin avulla voidaan muuttaa taajuuden ja vaiheen lisäyksen suhdetta korjatakseen 16 MHz: n oletuksen pienet poikkeamat.
Puskurointi ja vahvistaminen
Vastusverkossa on suuri lähtöimpedanssi, joten sen lähtöjännite laskee nopeasti, jos kuorma liitetään. Tämä voidaan ratkaista puskuroimalla tai vahvistamalla lähtöä. Tässä puskurointi ja vahvistaminen tehdään opampilla. Käytin LM358, koska minulla oli niitä. Se on hidas opamp (kääntymisnopeus 0,5 V / mikrosekunti), joten korkealla taajuudella ja suurella amplitudilla signaali vääristyy. Hyvä asia on, että se pystyy käsittelemään jännitteitä hyvin lähellä 0V. Lähtöjännite on kuitenkin rajoitettu ~ 2 V kiskon alle, joten +5 V tehon käyttö rajoittaa lähtöjännitteen 3 V: iin. Step-up-moduulit ovat kompakteja ja halpoja. Syöttää +20 V opampille, se voi tuottaa signaaleja, joiden jännite on jopa 18 V. (Huomaa, kaaviossa sanotaan LTC3105, koska se oli ainoa askel, jonka löysin Fritzingissä. Käytännössä käytin MT3608-moduulia, katso kuvat seuraavissa vaiheissa). Päätän soveltaa muuttuvaa vaimennusta R2R DAC: n ulostuloon ja käyttää toista opampeista puskuroimaan signaalin ilman vahvistusta ja toista vahvistamaan 5,7: llä, jotta signaali voi saavuttaa noin 20 V: n maksimilähdön. Lähtövirta on melko rajallinen, ~ 10mA, joten voimakkaampaa vahvistinta saatetaan tarvita, jos signaalin halutaan ohjaavan suurta kaiutinta tai sähkömagneettia.
Vaihe 2: Tarvittavat komponentit
Sydämen aaltomuodon generaattorille
Arduino Uno tai Nano
16x2 LCD -näyttö + 20 kOhm trimmeri ja 100 ohmin sarjan vastus taustavalolle
5-nastainen pyörivä anturi (integroidulla painikkeella)
25 vastusta 10 kOhm
Puskurille/vahvistimelle
LM358 tai muu dual opamp
tehostusmoduuli, joka perustuu MT3608: een
50 kOhm: n muuttuva vastus
10 kOhm vastus
47 kOhm vastus
1 muF kondensaattori
Vaihe 3: Rakentaminen
Juotin kaiken 7x9 cm: n prototyyppilaudalle, kuten kuvassa. Koska se meni vähän sotkuiseksi kaikkien johtojen kanssa, yritin värittää positiivisen jännitteen johtavat johdot punaisiksi ja maadoitetut johdot.
Käyttämässäni anturissa on 5 nastaa, 3 toisella puolella, 2 toisella puolella. Sivu, jossa on 3 nastaa, on todellinen anturi, ja puoli, jossa on 2 nastaa, on integroitu painike. 3-napaisella puolella keskitappi on liitettävä maahan, kaksi muuta nastaa D10 ja D11. 2-nastaisella puolella yksi nasta tulee liittää maahan ja toinen D12-liittimeen.
Se on rumin asia, jonka olen koskaan tehnyt, mutta se toimii. Olisi mukava laittaa kotelo, mutta toistaiseksi ylimääräinen työ ja kustannukset eivät oikeuta sitä. Nano ja näyttö on kiinnitetty nastoilla. En tekisi sitä uudestaan, jos rakentaisin uuden. En laittanut liittimiä levylle signaalien vastaanottamiseksi. Sen sijaan poimin ne krokotiilijohtimilla kuparilangan ulkonevista paloista, jotka on merkitty seuraavasti:
R - raakasignaali R2R DAC: sta
B - puskuroitu signaali
A - vahvistettu signaali
T - ajastimen signaali nastasta 9
G - maa
+ - positiivinen 'korkea' jännite lisämoduulista
Vaihe 4: Koodi
Koodi, Arduino -luonnos, on liitteenä ja se on ladattava Arduinoon.
20 aaltomuotoa on ennalta määritelty. Muiden aaltojen lisäämisen pitäisi olla helppoa. Huomaa, että satunnaiset aallot täyttävät 256-arvoisen taulukon satunnaisarvoilla, mutta sama kuvio toistuu joka jakso. Todelliset satunnaiset signaalit kuulostavat melulta, mutta tämä aaltomuoto kuulostaa paljon enemmän viheltämiseltä.
Koodi asettaa 1 kHz: n signaalin nastaan D9 ja TIMER1. Tämä on hyödyllistä tarkistaa analogisen signaalin ajoitus. Näin ymmärsin, että kellosyklien lukumäärä on 42: Jos oletan, että 41 tai 43 ja synnytän 1 kHz: n signaalin, sen taajuus on selvästi erilainen kuin nastan D9 signaali. Arvon 42 kanssa ne sopivat täydellisesti.
Normaalisti Arduino keskeyttää joka millisekunti, jotta voit seurata aikaa millis () -toiminnon avulla. Tämä häiritsisi tarkan signaalin luomista, joten tietty keskeytys on poistettu käytöstä.
Kääntäjä sanoo: "Sketch käyttää 7254 tavua (23%) ohjelman tallennustilaa. Enintään 30720 tavua. Globaalimuuttujat käyttävät 483 tavua (23%) dynaamista muistia jättäen 1565 tavua paikallisille muuttujille. Suurin sallittu määrä on 2048 tavua." Joten paljon tilaa kehittyneemmälle koodille. Varo, että sinun on ehkä valittava "ATmega328P (vanha käynnistyslatauslaite)" ladataksesi onnistuneesti Nano -laitteeseen.
Vaihe 5: Käyttö
Signaaligeneraattoria voidaan käyttää yksinkertaisesti Arduino Nanon mini-USB-kaapelin kautta. Se on parasta tehdä virtalähteellä, jotta laitteeseen, johon se voidaan liittää, ei ole tahatonta maasilmukkaa.
Kun se kytketään päälle, se synnyttää 100 Hz siniaaltoa. Pyörittämällä nuppia voidaan valita yksi muista 20 aaltotyypistä. Pyörittämällä painettuna kohdistin voidaan asettaa mille tahansa taajuuden numerolle, joka voidaan sitten muuttaa haluttuun arvoon.
Amplitudia voidaan säätää potentiometrillä ja joko puskuroitua tai vahvistettua signaalia voidaan käyttää.
On todella hyödyllistä käyttää oskilloskooppia signaalin amplitudin tarkistamiseen erityisesti silloin, kun signaali syöttää virtaa toiselle laitteelle. Jos virtaa vedetään liikaa, signaali leikkuu ja signaali vääristyy voimakkaasti
Hyvin matalilla taajuuksilla lähtö voidaan visualisoida 10 kOhm: n vastuksella varustetulla LED -sarjalla. Äänitaajuudet voidaan kuulla kaiuttimella. Varmista, että asetat signaalin hyvin pieneksi ~ 0,5 V, muuten virta nousee liian korkeaksi ja signaali alkaa leikata.
Suositeltava:
Generaattori - Fidget Spinner 9W LED -lamppu 230 V: 3 vaihetta (kuvilla)
Generaattori - Fidget Spinner, virtalähde 9 W: n LED -lamppu 230 V: Alla olevilla riveillä haluamme näyttää, kuinka voimakas heilahdusgeneraattori voidaan luoda. Se tuottaa alussa 100 volttia vaihtovirtaa ja voi sytyttää 230 V 9 W. Löytö
Sääpohjainen musiikkigeneraattori (ESP8266 -pohjainen Midi -generaattori): 4 vaihetta (kuvilla)
Sääpohjainen musiikkigeneraattori (ESP8266 -pohjainen Midi -generaattori): Hei, tänään selitän, kuinka tehdä oma pieni sääpohjainen musiikkigeneraattori, joka perustuu ESP8266: een, joka on eräänlainen Arduino, ja se reagoi lämpötilaan, sateeseen ja valon voimakkuutta.Älä odota sen tekevän kokonaisia kappaleita tai sointuohjelmaa
Generaattori - DC -generaattori Reed -kytkimellä: 3 vaihetta
Generaattori - tasavirtageneraattori Reed -kytkimellä: Yksinkertainen tasavirtageneraattori Tasavirtageneraattori on sähkökone, joka muuntaa mekaanisen energian tasavirtasähköksi Tärkeää: Tasavirtageneraattoria voidaan käyttää tasavirtamoottorina ilman rakenteellisia muutokset
Generaattori "Pyörän muoto": 19 vaihetta (kuvilla)
Generaattori "Pyörän muoto": Hei kaikki, tässä esitän teille luovan ajatuksen sähkön tuottamisesta pyörän avulla. Lyhyesti sanottuna tässä projektissa sekoitan menneisyyden ja nykyisyyden välille yhdistämällä vanhan puisen pyörän muodon nykyaikaiseen generaattorijärjestelmään, joka
Rakenna yksinkertainen Marx -generaattori: 10 vaihetta (kuvilla)
Rakenna yksinkertainen Marx -generaattori: Pidätkö ajatuksesta tesla -kelat ja muut suurjänniteiset kipinöivät tavarat, mutta sinulla ei ole aikaa, rahaa tai kärsivällisyyttä rakentaa jotain hienostunutta? Tässä on hauska 'n' yksinkertainen projekti, joka voi saada suuria, lihavia, meluisia kipinöitä vähintään 2 tuumaa