Gumawa ng isang Digital Oscilloscope Via Arduino: 3 Mga Hakbang

Gumawa ng isang Digital Oscilloscope Via Arduino: 3 Mga Hakbang

Talaan ng mga Nilalaman:

Anonim

Kadalasan nakikita ng mga tao na gumagawa ng online digital oscilloscope, ang DSO ay dapat magkaroon ng digital-analog conversion unit, ayon sa d / a conversion circuit ay maaaring nahahati sa dalawang mga mode: 1. Espesyal na ADC chip + single-chip, 2. gamit ang single-chip ADC count inside ang converter. Para sa unang modelo ko sinubukan ang dalawang (tingnan ang aking blog: http://blog.Sina.com.CN/ntwhq), ang circuit na ito ay isang maliit na mas kumplikado, sangkap ay mas mahirap upang makumpleto, ito ay mahirap para sa mga nagsisimula. Ang ikalawang istraktura ay medyo simple, madaling gawin, ngunit may isang makabuluhang sagabal, iyon ay, withina makitid bandwidth, isa sa mga mas karaniwang mga gawa ay ang mga kaibigan sa ibang bansa ng http://www.serasidis.gr/circuits/AVR_oscilloscope/avr_oscilloscope. htm, ang bandwidth ng osiloskoup ay 7.7KHz lamang. Ang mga domestic user at STC single-chip AVR produksyon, ngunit ang aktwal na bandwidth ay mas mababa sa 10KHz. Maaari mo ring piliing gamitin ang Fusion PCB upang gumawa ng isang PCB board sa halip na paghihinang sa pamamagitan ng iyong sarili.

Mga Kagamitan:

Hakbang 1: Code

Kamakailan lamang nakita ang isang netong kaibigan na may Arduino oscilloscope, mas madali kaysa sa pangalawang paraan sa itaas, ngunit ang kanilang mga resulta ay hindi perpekto, ang bandwidth ay makitid. Kaya gusto kong subukan at makita at walang mabuting paraan upang malutas ang problemang ito. Ginawa sa pamamagitan ng eksperimento, at patuloy na baguhin ang code, at pinahusay na d / isang rate ng sample ng conversion, napakahusay na mga resulta ay nakakamit.

Ang pangunahing mga parameter ng pangwakas na produkto: Dalas ng tugon: 10Hz-50KHz Power supply: 5V LCD LCD screen: 128x64 (ST7920) Pagsukat ng lugar ng display: 96x64 Display impormasyon: 32x64, ipinapakita ang dalas ng signal ng pagsubok, Vpp, at higit pa Sync: Ang pagtaas ng gilid ay nag-trigger ng Pag-scan ng bilis: 0.02ms / div ~ 10ms / div, pagdadala ng siyam na 1-2-5 Hold function: i-freeze ang ipinapakita na waveform at mga parameter Pangalawa, pangunahing pagsubok Ang paggamit ng pinakamalaking kalamangan ng proyekto ng Arduino ay ang mga rich resources nito, at hindi kailangan maraming kaalaman sa SCM. Ginawa ko gamit ang isang repository u8glib LCD, na ginagawang mas madali sa programa, o LCD drive ay magdulot sa iyo ng maraming oras. U8glib download: u8glib_arduino_v1.13.zip (989.55 KB, downloads: 2577) Narito ang aking unang pagsubok circuit para sa Arduino UNO gusali, ng 12864 LCD LCD gamit ST7920 control. Hangga't ang paraan ng pag-input sa sumusunod na code, pinagsama pagkatapos ng pag-download na maaari mong makamit ang mga pangunahing pag-andar ng digital na osiloskoup, hindi ba magiging mas simple? # Isama // pahayag U8GLIB_ST7920_128X64_4X u8g (13, 12, 11); Statement LCD SPI Com: SCK = 13, MOSI = 12, CS = 11 int x, y; Ang naka-paint point coordinates int Buffer 128; Cache imbakan array na walang bisa setup () {} Sample void sample () {for (x = 0; x <128; x ++) Buffer x = analogRead (A0); Sample ng signal para sa (x = 0; x <128; x ++) Buffer x = 63- (Buffer x >> 4); Kalkulahin ang mga halaga ng y} Ipakita ang walang bisa na gumuhit () {para (x = 0; x <127; x ++) u8g.drawLine (x, Buffer x, x, Buffer x + 1); Gumuhit ng dalawang linya na u8g.drawLine (64,0,64,63); Gumuhit ng axes u8g.drawLine (0,32,128,32); Para sa (x = 0; x <128; x + = 8) // gumuhit ng axis scale u8g.drawLine (x, 31, x, 33); para sa (x = 0; x <64; x + = 8) u8g.drawLine (63, x, 65, x); u8g.drawFrame (0,0,128,64); Gumuhit ng border} void loop () {sample (); Sample u8g.firstPage (); I-clear ang screen na gumuhit (); Ipakita habang (u8g.nextPage ());

}

Hakbang 2: Circuit

Gamit ang circuit ng pagsubok, ang aking Arduino ay sinukat na direkta gamit ang analogRead () function upang makumpleto ang ad / conversion para sa tungkol sa 111 μs bilis ng conversion ay mabagal, kaya ang bandwidth nito ay 1KHz, ang susunod na prayoridad ay upang mapabuti ang bilis ng digital-analog conversion, habang nagdaragdag ng iba pang mga tampok.

Ikatlo, ang pinakabagong mga programa Narito ang pinakabagong source code gamit, mangyaring panatilihin ang aking boot LOGO, HA HA. Arduino_oscilloscope.zip (2.72 KB, downloads: 2710)

Programa ng chip 1.1V ADC gamitin boltahe reference nabanggit sa itaas, kung nais mong gamitin ang panlabas na 5V reference boltahe ay dapat na programa ADMUX = 0xe0; Sa: ADMUX = 0x60; Vpp = (V_max-V_min) * 1.1 / 255; basahin: Vpp = (V_max-V_min) * 5/255;

Gamitin ang Fusion PCB ay maaaring gumawa ng isang mas mahusay na circuit board.

Apat, nakagawa ng mga eksperimento sa makina gamit ang Arduino UNO sa itaas, ang aktwal na card kapag gumagamit ng Arduino PRO mini, upang magkaroon ng mas maliit na lakas ng tunog.

Circuit diagram:

Listahan ng pangunahing bahagi: Numero ng pangalan Arduino PRO mini 1 LCD12864 LCD (ST7920) 1 electrolytic capacitors (100 μ 25V) 1 potentiometer (50k) 1 butas plate 3 kapangyarihan switch 1 baterya cartridge 2 pindutan switch (may rechargeable baterya, ika-7)

1, hinang Arduino PRO mini PIN.

2, welding circuit board components

3, gumagawa ng LCD hole plate

4, assembling circuit boards

5, na ginawa ang kaso na ginamit ko ang isang singilin na muling pagbubuo ng kahon ng kayamanan na may plastic casing, sa naaangkop na lugar sa butas.

6, Assembly

I-load ang circuit board sa kaso, na may makapal na White Panel, na naka-attach sa loob ng front panel.

Hakbang 3: Pag-upload at Pagsubok

Dahil sa Arduino PRO mini ay hindi nakabukas ang USB serial port circuit, kaya ang paglipat sa pamamagitan ng USB serial port sa pag-download bago i-download ang programa.

Ang pag-debug ng osiloskoup ay napaka-simple, kailangan lang ayusin ang potensyomiter 50k Center ang pahalang scanlines. Gumagamit ako ng source signal signal generator.

Boot LOGO

Pagsubok:

ilang mga paliwanag

1, ito ay isa sa mga pinaka-simpleng digital na Oscilloscopes, maaari mong higit pang mapabuti ang batayan ng ito;

2, maaaring napansin mo na hindi ako gumagamit ng I / O port 0-7, na nangyayari na maging isang micro-computer na 8-bit AVR at bibig, ganito ang inihanda ko para sa kasunod na mga pag-upgrade, gamit ang espesyal na chip ng ADC ay maaaring gamitin bilang entry ng data, kung ikaw ay interesado sa osiloskoup, pagkatapos ay isasaalang-alang ko ang pag-upgrade;

3, ang trabaho ay dali-dali at may anumang mga depekto at kakulangan ng, mangyaring ipaalam, mayroon kang anumang mga katanungan na maaari mong gawin dito.