Talaan ng mga Nilalaman:

Signal Generator AD9833: 3 Mga Hakbang
Signal Generator AD9833: 3 Mga Hakbang

Video: Signal Generator AD9833: 3 Mga Hakbang

Video: Signal Generator AD9833: 3 Mga Hakbang
Video: Waveform Generator using Arduino 2024, Hulyo
Anonim
Signal Generator AD9833
Signal Generator AD9833
Signal Generator AD9833
Signal Generator AD9833

Ang isang signal generator ay isang napaka kapaki-pakinabang na piraso ng test gear. Ang isang ito ay gumagamit ng isang module ng AD9833 at isang Arduino Nano - iyon lang, kahit isang PCB. Maaari kang opsyonal na magdagdag ng isang display na OLED. Ang AD9833 ay maaaring mag-gererate ng sine, tatsulok at parisukat na alon mula sa 0.1 Hz hanggang 12.5 MHz - ang software sa proyektong ito ay limitado sa 1Hz hanggang 100kHz.

Nagkaroon ng iba pang Mga Tagubilin na gumagamit ng isang Arduino at isang AD9833, dito at dito. Ito ay mas simple at maaaring magamit bilang isang sweep generator. Tumutulong ang mga generator ng walisin na subukan ang dalas ng tugon ng mga filter, amplifier at iba pa. Hindi tulad ng iba pang mga disenyo ng Instructable, hindi ito nagsasama ng isang amplifier o amplitude control ngunit maaari mong idagdag ang mga ito kung nais mo.

Hakbang 1: Pinakasimpleng Signal Generator

Pinakasimpleng Tagabuo ng Signal
Pinakasimpleng Tagabuo ng Signal
Pinakasimpleng Signal Generator
Pinakasimpleng Signal Generator
Pinakasimpleng Signal Generator
Pinakasimpleng Signal Generator
Pinakasimpleng Tagabuo ng Signal
Pinakasimpleng Tagabuo ng Signal

Para sa pinakasimpleng Signal Generator, solder mo lang ang AD9833 module sa likuran ng Arduino Nano. Hindi kailangan ng PCB.

Ang AD9833 module na pinili ko ay katulad sa isang ito. Hindi ko sinasabi na iyon ang pinakamahusay o pinakamurang supplier ngunit dapat kang bumili ng isa na katulad ng larawang iyon (o ang larawan sa itaas).

Ang mga koneksyon sa pagitan ng mga module ay:

  • lugar na konektado magkasama
  • D2 = FSync
  • D3 = Clk
  • D4 = Data
  • D6 = Vcc ng AD9833

Ang AD9833 ay pinalakas mula sa data pin D6 ng Arduino - ang Arduino ay maaaring magbigay ng sapat na kasalukuyang. Nagdagdag ako ng isang 100n decoupling capacitor sapagkat naisip kong "nararapat" ngunit hindi ko makita ang anumang pagkakaiba - mayroon nang isang decoupling capacitor sa module ng AD9833 module.

Kung ikaw ay naging magarbong, maaari kang mag-alala tungkol sa "analogue ground" vs "digital ground" ngunit kung ikaw ay nagararami, gagastos ka ng higit sa £ 4.

Ang pinakasimpleng Signal Generator ay kinokontrol at pinalakas sa isang USB lead mula sa isang PC. Ginagaya ng USB ang isang serial port na tumatakbo sa 115200bps (8-bits, walang pagkakapareho). Ang mga utos ay:

  • '0'.. '9': ilipat ang digit sa "min" na hanay ng dalas
  • 'S': itakda ang dalas ng AD9833 at gumawa ng sine wave
  • 'T': itakda ang dalas at gumawa ng alon ng tatsulok
  • 'Q': itakda ang dalas at gumawa ng square wave
  • 'R': i-reset ang AD9833
  • 'M': kopyahin ang "min" na array ng dalas sa "max" na array
  • 'G': walisin mula sa "min" hanggang "max" higit sa 1 segundo
  • 'H': walisin mula sa "min" hanggang "max" sa loob ng 5 segundo
  • 'I': walisin mula "min" hanggang "max" sa loob ng 20 segundo

Naglalaman ang programa ng Arduino ng dalawang 6-character arrays na "min" at "max. Kung magpapadala ka ng isang digit pagkatapos ay ilipat ito sa" min "na array. Kung magpapadala ka ng isang 'S' pagkatapos ay ang" min "na mga character na array ay na-convert sa isang dalas ng longint at ipinadala sa AD9833. Kaya't ipinapadala ang string

002500S

itatakda ang output ng AD9833 sa isang 2500Hz sine wave. Dapat mong palaging ipadala ang lahat ng 6 na digit. Ang minimum na dalas ay 000001 at ang maximum na dalas ay 999999.

Kung magpapadala ka ng isang 'M' pagkatapos ang "min" na array ay nakopya sa "max" na array. Kung magpapadala ka ng isang 'H' pagkatapos ang AD9833 ay paulit-ulit na naglalabas ng isang unti-unting pagtaas ng dalas sa loob ng 5 segundo. Nagsisimula ito sa "min" na dalas at pagkalipas ng 5 segundo ay nasa "max" na dalas. Kaya

020000M000100SH

nagwawalis mula 100Hz hanggang 20kHz. Ang pagbabago ng dalas ay logarithmic kaya pagkatapos ng 1 segundo ang dalas ay 288Hz, pagkatapos ng 2 segundo 833Hz pagkatapos 2402, 6931 at 20000. Ang dalas ay binago bawat milliSecond.

Humihinto ang loop kapag nakatanggap ang Arduino ng isa pang character kaya't mag-ingat na huwag magpadala ng utos na sinusundan ng car- return o line-feed. Tatapusin ng sobrang tauhang iyon ang loop. Kung gumagamit ka ng Serial Monitor, mayroong isang kahon sa kanang bahagi sa ibaba na maaaring sabihin halimbawa "parehong NL & CR" na (sa palagay ko) ay nagpapadala ng mga character pagkatapos ng iyong utos. Itakda ito sa "Walang linya na nagtatapos".

Maaari mong i-download ang programa ng Windows EXE sa ibaba na magpapadala ng mga kinakailangang utos o maaari kang sumulat ng iyong sarili. Ang Arduino INO file ay narito rin.

Hakbang 2: Magdagdag ng isang OLED

Magdagdag ng isang OLED
Magdagdag ng isang OLED
Magdagdag ng isang OLED
Magdagdag ng isang OLED
Magdagdag ng isang OLED
Magdagdag ng isang OLED

Kung nagdagdag ka ng isang OLED at dalawang mga pindutan, maaaring gumana nang nag-iisa ang generator ng signal nang walang PC.

Iyong mga nabasa na ang aking oscilloscope Instructable ay makikilala ang pagkakapareho. Ang AD9833 module ay maaaring idagdag sa aking oscilloscope upang makabuo ng isang "Oscilloscope at Signal Generator sa isang Matchbox".

Ang display ay isang 1.3 OLED na tumatakbo sa 3.3V na kinokontrol ng isang SH1106 chip sa pamamagitan ng isang I2C bus.

Maghanap sa eBay para sa 1.3 "OLED. Ayokong magrekomenda ng isang partikular na nagbebenta dahil mabilis na nawawala ang mga link. Pumili ng isa na kamukha ng larawang iyon, sabi ng" I2C "o" IIC "at mayroong apat na pin na may label na VDD GND SCL SDA. (Ang ilang mga ipinapakita ay tila may mga pin sa ibang pagkakasunud-sunod. Suriin ang mga ito. Ang tamang pangalan para sa orasan ng I2C ay "SCL" ngunit sa eBay ang mga board ay maaaring may label na "SCK" tulad ng aking isa sa larawan.)

Ang isang mas buong paglalarawan ng OLED library ay nasa aking oscilloscope Instructable sa Hakbang 8. Dapat mong i-download at i-install ang library ng driver na SimpleSH1106.zip na nasa Hakbang 8. (Hindi ko nais na mag-upload ng isa pang kopya dito at panatilihin ang dalawang kopya.)

Maaaring ma-download ang INO file sa ibaba. Ang mga numero ng pin na ginamit para sa OLED ay idineklara sa paligid ng linya 70. Kung naitayo mo ang aking "Oscilloscope at Signal Generator sa isang Matchbox" at nais na subukan ang INO file na ito kasama nito, ang mga kahaliling numero ng pin ay pinapagana sa pamamagitan ng isang #define.

Nagpakita ako ng isang layout ng stripboard para sa circuit. Mayroong dalawang mga stripboard - isa para sa Nano at ang AD9833 at isa para sa display. Dapat silang bumuo ng isang sandwich. Ang mga board ay ipinapakita mula sa bahagi ng bahagi. Ang mga pinong kakayahang umangkop na mga wire ay sumali sa dalawang board. Ikabit ang mga board kasama ang mga solder na stand-off. Sa aking diagram, ang tanso ng stripboard ay ipinapakita sa cyan. Ang mga pulang linya ay mga link ng kawad sa stripboard o kakayahang umangkop na mga wire na sumasama sa mga board nang magkasama. Hindi ko naipakita ang lakas at mga lead na "signal".

Ang module ng AD9833 ay solder sa tanso na bahagi ng stripboard - sa kabaligtaran mula sa Nano. Ang mga solder pin sa strips ng tanso pagkatapos ay magkasya sa AD9833 sa kanila at solder ito sa.

Ipinapakita ng display ang alinman sa isang solong dalas o mga frequency na "min" at "max".

Mayroong dalawang mga pindutan ng pindutan: isang pindutang "Pahalang" upang pumili ng isang digit ng mga frequency at isang pindutan na "Vertical" upang baguhin ang digit na iyon.

Pinapagana ko ang signal generator mula sa circuit na binuo ko - Palagi akong mayroong 5V na magagamit sa aking workstation.

Hakbang 3: Mga Pag-unlad sa Hinaharap

Mga Pag-unlad sa Hinaharap
Mga Pag-unlad sa Hinaharap

Maaari ba itong pinapatakbo ng baterya? Oo, magdagdag lamang ng 9V PP3 na konektado sa RAW pin ng Nano. Karaniwan itong gumagamit ng 20mA.

Maaari ba itong patakbuhin ng isang solong lithium cell? Hindi ko makita kung bakit hindi. Dapat mong ikonekta ang OLED Vdd at ang pull-up risistor nito sa 3.7V na baterya (duda ako kung ang output ng 3.3V ng Arduino ay gagana nang maayos).

Ang isang sweep generator ay mas kapaki-pakinabang kapag sinusubukan ang dalas ng tugon ng isang filter kung maaari mong i-graph ang amplitude kumpara sa dalas. Ang pagsukat ng amplitude ng isang senyas ay nakakalito - kailangan mong ikalakal ang pagkabulok ng iyong detektor ng sobre kumpara sa ripple para sa mababang mga frequency at oras ng pagtugon para sa mataas na mga frequency. Naitayo ang iyong detektor ng amplitude, maaari mong pakainin ang output nito sa ADC ng Arduino ng "Pinakasimpleng Signal Generator" pagkatapos ay ipadala ang resulta, kasama ang kasalukuyang dalas sa PC.

Ang pahinang ito ay isang kapaki-pakinabang na panimulang punto o maghanap sa Google para sa "detektor ng sobre" o "tuktok na detektor". Sa iminungkahing circuit sa itaas, itatakda mo ang dalas ng signal, hintayin itong tumatag, itakda ang Arduino A0 pin upang mag-output ng digital na mababa, maghintay upang maalis ang C, itakda ang A0 sa input, maghintay, pagkatapos ay sukatin ang ADC. Ipaalam sa akin kung paano ka makakarating.

Inirerekumendang: