- Kung paano ito gumagana
- Mga Kinakailangan na Bahagi
- Mga Skema
- Code ng Arduino Osclloscope
- Python (Plotter) Script
- Code ng Arduino
- Arduino Oscilloscope sa Aksyon
Ang Oscilloscope ay isa sa pinakamahalagang tool na mahahanap mo sa workbench ng anumang electronics engineer o gumagawa. Pangunahin itong ginagamit para sa pagtingin sa form ng alon at pagtukoy ng mga antas ng boltahe, dalas, ingay at iba pang mga parameter ng signal na inilapat sa input nito na maaaring magbago sa paglipas ng panahon. Ginagamit din ito ng naka-embed na mga developer ng software para sa pag-debug ng code at mga tekniko para sa pag-troubleshoot ng mga elektronikong aparato habang nag-aayos. Ang mga kadahilanang ito ay gumagawa ng oscilloscope na dapat magkaroon ng tool para sa sinumang engineer. Ang nag-iisang isyu ay maaari silang maging masyadong mahal, Oscilloscope na gumaganap ng pinaka-pangunahing mga pag-andar na may pinakamaliit na kawastuhan ay maaaring maging kasing mahal ng $ 45 hanggang $ 100 habang ang mas advanced at mahusay ay nagkakahalaga ng higit sa $ 150. Ngayon ay ipapakita ko kung paano gamitin ang Arduinoat isang software, na bubuo kasama ang aking paboritong programa ng wika na Python, upang makabuo ng isang mababang gastos, 4-channel Arduino oscilloscope na may kakayahang gampanan ang mga gawain kung saan ang ilan sa mga murang oscilloscope ay na-deploy tulad ng pagpapakita ng mga form ng alon at pagpapasiya ng mga antas ng boltahe para sa mga signal.
Kung paano ito gumagana
Mayroong dalawang bahagi para sa proyektong ito;
- Ang Data Converter
- Ang Plotter
Ang mga oscilloscope ay karaniwang kasangkot sa visual na representasyon ng isang analog signal na inilapat sa input channel nito. Upang makamit ito, kailangan muna nating baguhin ang signal mula sa analog patungo sa digital at pagkatapos ay lagyan ng plano ang data. Para sa conversion, magpapalaki kami sa ADC (Analog to Digital converter) sa atmega328p microcontroller na ginamit ng Arduino upang i-convert ang data ng Analog sa input signal sa isang digital signal. Pagkatapos ng pag-convert, ang halaga bawat oras ay ipinapadala sa pamamagitan ng UART mula sa Arduino sa PC kung saan ang plotter software na bubuo gamit ang python ay magpapalit ng papasok na stream ng data sa isang form ng alon sa pamamagitan ng paglalagay ng bawat data laban sa oras.
Mga Kinakailangan na Bahagi
Ang mga sumusunod na sangkap ay kinakailangan upang buuin ang proyektong ito;
- Arduino Uno (Ang alinman sa iba pang mga board ay maaaring magamit)
- Breadboard
- 10k Resistor (1)
- LDR (1)
- Jumper wires
Mga Kinakailangan na Softwares
- Arduino IDE
- Sawa
- Mga Aklatan sa Python: Pyserial, Matplotlib, Drawnow
Mga Skema
Ang eskematiko para sa Arduino Oscilloscope ay simple. Ang kailangan lang nating gawin ay ikonekta ang signal na susuriin sa tinukoy na Analog pin ng Arduino. Gayunpaman, gagamitin namin ang LDR sa isang simpleng pag-set up ng boltahe upang makabuo ng signal na susuriin, na ang nabuong form ng alon ay ilalarawan ang antas ng boltahe, batay sa tindi ng ilaw sa paligid ng LDR.
Ikonekta ang mga sangkap tulad ng ipinapakita sa mga iskema sa ibaba;
Pagkatapos ng koneksyon, ang setup ay dapat na gusto ang imahe sa ibaba.
Sa tapos na ang mga koneksyon, maaari kaming magpatuloy upang isulat ang code.
Code ng Arduino Osclloscope
Magsusulat kami ng mga code para sa bawat isa sa dalawang seksyon. Para sa Plotter tulad ng nabanggit kanina, magsusulat kami ng isang script ng sawa na tumatanggap ng data mula sa Arduino sa pamamagitan ng UART at Plots, habang para sa converter, magsusulat kami ng isang Arduino sketch na kumukuha ng data mula sa ADC at i-convert ito sa mga antas ng boltahe na ipinadala sa tagbalak.
Python (Plotter) Script
Dahil ang python code ay mas kumplikado, magsisimula kami dito.
Gumagamit kami ng isang pares ng mga aklatan kabilang ang; drawnow, Matplotlib at Pyserial kasama ang script ng sawa tulad ng nabanggit kanina. Pinapayagan kami ng Pyserial na lumikha ng isang script ng sawa na maaaring makipag-usap sa serial port, binibigyan kami ng Matplotlib ng kakayahang makabuo ng mga plots mula sa data na natanggap sa serial port at nagbibigay ang drawnow ng isang paraan para ma-update namin ang balangkas sa real time.
Mayroong maraming mga paraan upang mai-install ang mga package sa iyong PC, ang pinakamadali sa pamamagitan ng pip . Maaaring mai-install ang pip sa pamamagitan ng linya ng utos sa isang windows o linux machine. Ang PIP ay nakabalot sa python3 kaya payuhan ko kayong mag-install ng python3 at lagyan ng tsek ang kahon tungkol sa pagdaragdag ng sawa sa landas. Kung nagkakaproblema ka sa pag-install ng pip, suriin ito ang opisyal na website ng sawa para sa mga tip.
Sa naka-install na pip, maaari na nating mai-install ang iba pang mga silid-aklatan na kailangan namin.
Buksan ang prompt ng utos para sa mga gumagamit ng windows, terminal para sa mga gumagamit ng linux at ipasok ang sumusunod;
pip install pyserial
Sa tapos na ito, i-install ang matplotlib gamit;
pip install matplotlib
Drawnow minsan ay naka-install sa tabi matplotlib ngunit lamang upang maging sigurado, patakbuhin;
pip install drawnow
Sa kumpletong pag-install, handa na kami ngayon na isulat ang script ng sawa.
Ang script ng python para sa proyektong ito ay pareho sa isinulat ko para sa Raspberry Pi Base Oscilloscope.
Nagsisimula kami sa pamamagitan ng pag-import ng lahat ng mga silid-aklatan na kinakailangan para sa code;
i-import ang oras ng import matplotlib.pyplot bilang plt mula sa drawnow import * import pyserial
Susunod, nilikha namin at pinasimulan ang mga variable na gagamitin sa panahon ng code. Gagamitin ang array val upang iimbak ang data na natanggap mula sa serial port at cnt ay gagamitin upang mabilang. Ang data sa lokasyon 0 ay tatanggalin pagkatapos ng bawat 50 bilang ng data. Ginagawa ito upang mapanatili ang data na ipinapakita sa oscilloscope.
val = cnt = 0
Susunod, nilikha namin ang serial port object kung saan ang Arduino ay makikipag-usap sa aming script ng sawa. Tiyaking ang com port na tinukoy sa ibaba ay ang parehong port ng com kung saan ang iyong Arduino board ay nakikipag-usap sa IDE. Ang 115200 baud rate na ginamit sa itaas ay ginamit upang matiyak ang mataas na bilis ng komunikasyon sa Arduino. Upang maiwasan ang mga error, dapat ding paganahin ang serial port ng Arduino upang makipag-ugnay sa rate ng baud na ito.
port = serial.Serial ('COM4', 115200, timeout = 0.5)
Susunod, ginagawa naming interactive ang balangkas gamit ang;
plt.ion ()
kailangan naming lumikha ng isang pagpapaandar upang makabuo ng balangkas mula sa natanggap na data, na lumilikha ng itaas at pinakamaliit na limitasyon na inaasahan namin, na sa kasong ito ay 1023 batay sa resolusyon ng ADC ng Arduino. Itinakda din namin ang pamagat, lagyan ng label ang bawat axis at magdagdag ng isang alamat upang gawing madali itong makilala ang balangkas.
#create the figure function def makeFig (): plt.ylim (-1023,1023) plt.title ('Osciloscope') plt.grid (True) plt.ylabel ('ADC outputs') plt.plot (val, 'ro - ', label =' Channel 0 ') plt.legend (loc =' ibabang kanan ')
Sa tapos na ito, handa na kami ngayon na isulat ang pangunahing loop na kumukuha ng data mula sa serial port kapag magagamit at isinalansan ito. Upang maiugnay sa Arduino, isang data ng handshake ay ipinadala sa Arduino ng script ng sawa upang ipahiwatig ang kahandaang basahin ang data. Kapag natanggap ng Arduino ang data ng handshake, tumugon ito kasama ang data mula sa ADC. Kung wala ang handshake na ito, hindi namin mai-plot ang data sa real time.
habang (Totoo): port.write (b's ') #handshake kasama ang Arduino kung (port.inWaiting ()): # kung ang arduino ay tumugon sa halaga = port.readline () # basahin ang reply na naka- print (halaga) #print upang maaari naming subaybayan ito bilang = int (halaga) #convert natanggap data sa integer print ('Channel 0: {0}'. format (numero)) # Matulog nang kalahating segundo. time.s Sleep (0.01) val.append (int (number)) drawnow (makeFig) #update plot upang maipakita ang bagong input ng data plt.pause (.000001) cnt = cnt + 1 kung (cnt> 50): val.pop (0) #panatilihing sariwa ang balangkas sa pamamagitan ng pagtanggal ng data sa posisyon na 0
Ang kumpletong code ng python para sa arduino oscilloscope ay ibinibigay sa dulo ng artikulong ito na ipinakita sa ibaba.
Code ng Arduino
Ang pangalawang code ay ang Arduino sketch upang makuha ang data na kumakatawan sa signal mula sa ADC, pagkatapos maghintay upang makatanggap ng signal ng handshake mula sa plotter software. Kaagad na natanggap nito ang signal ng pag-handshake, nagpapadala ito ng nakuha ng data sa plotter software sa pamamagitan ng UART.
Nagsisimula kami sa pamamagitan ng pagdedeklara ng pin ng Analog pin ng Arduino kung saan ilalagay ang signal.
int sensorpin = A0;
Susunod, pinasimulan namin at sinisimulan ang serial na komunikasyon sa isang baud rate na 115200
void setup () { // ipasimula ang serial komunikasi sa 115200 bits bawat segundo upang tumugma sa script ng sawa: Serial.begin (115200); }
Panghuli, ang function na voidloop () na humahawak sa pagbabasa ng data, at ipinapadala ang data sa serial sa plotter.
void loop () { // basahin ang input sa analog pin 0: float sensorValue = analogRead (sensorpin); byte data = Serial.read (); kung (data == 's') { Serial.println (sensorValue); antala (10); // pagkaantala sa pagitan ng bumabasa para sa katatagan } }
Ang kumpletong Arduino Oscilloscope Code ay ibinibigay sa ibaba pati na rin sa dulo ng artikulong ito na ipinakita sa ibaba.
int sensorpin = A0; void setup () { // ipasimula ang serial komunikasi sa 115200 bits bawat segundo upang tumugma sa script ng sawa: Serial.begin (115200); } void loop () { / / basahin ang input sa analog pin 0: #### ########### #### #### ### float sensorValue = analogRead (sensorpin); byte data = Serial.read (); kung (data == 's') { Serial.println (sensorValue); antala (10); // pagkaantala sa pagitan ng bumabasa para sa katatagan } }
Arduino Oscilloscope sa Aksyon
I-upload ang code sa pag-setup ng Arduino at patakbuhin ang script ng sawa. Dapat mong makita ang data na magsimulang mag-streaming sa pamamagitan ng linya ng utos ng python at magkakaiba ang balangkas na may kasidhian ng ilaw tulad ng ipinakita sa imahe sa ibaba.
Kaya't ito ay kung paano maaaring magamit ang Arduino bilang Oscilloscope, maaari rin itong gawin gamit ang Raspberry pi, suriin dito ang kumpletong tutorial sa Ospilloscope batay sa Raspberry Pi.