- Pag-unawa sa module ng ADC:
- Diagram ng Circuit:
- Pag-program ng iyong MSP430 para sa ADC:
- Pagsubok sa iyong resulta!
Ang isang karaniwang tampok na ginagamit sa halos bawat naka-embed na application ay ang ADC module (Analog to Digital Converter). Ang Mga Analog na ito sa mga digital na Converter ay maaaring basahin ang boltahe mula sa mga analog sensor tulad ng Temperatura sensor, Ikiling sensor, Kasalukuyang sensor, Flex sensor at marami pa. Kaya sa tutorial na ito matututunan natin kung paano gamitin ang ADC sa MSP430G2 upang mabasa ang Analog voltages gamit ang Energia IDE. Kami ay interface ng isang maliit na potensyomiter sa board MSP at magbigay ng isang iba't ibang boltahe sa isang Analog pin, basahin ang boltahe at ipakita ito sa Serial Monitor.
Pag-unawa sa module ng ADC:
Tiwala sa akin, hindi ito magtatagal ng 10 minuto upang kumonekta at mai-program ang MSP430G2 upang mabasa ang boltahe ng Analog. Ngunit, gugugolin natin ang ilang oras sa pag-unawa sa module ng ADC sa board ng MSP upang magamit namin ito nang epektibo sa lahat ng aming mga paparating na proyekto.
Ang isang microcontroller ay isang digital na aparato, nangangahulugang maaari nitong maunawaan ang mga 1 at 0 lamang. Ngunit sa totoong mundo, halos lahat ng bagay tulad ng temperatura, halumigmig, bilis ng hangin, atbp. Ay likas na analog. Upang makipag-ugnay sa mga analog na pagbabago, ang microcontroller ay gumagamit ng isang module na tinatawag na ADC. Mayroong maraming iba't ibang mga uri ng mga modyul na ADC na magagamit, ang ginagamit sa aming MSP ay ang SAR 8 channel na 10-bit ADC.
Sunud-sunod na Pag-apila (SAR) ADC: Gumagana ang SAR ADC sa tulong ng isang kumpara at ilang mga pag-uusap sa lohika. Ang ganitong uri ng ADC ay gumagamit ng isang sanggunian boltahe (na kung saan ay variable) at ihinahambing ang input boltahe sa sanggunian boltahe gamit ang isang kumpara at pagkakaiba, na kung saan ay isang digital output, ay nai-save mula sa Pinaka-makabuluhang bit (MSB). Ang bilis ng paghahambing ay nakasalalay sa dalas ng Orasan (Fosc) kung saan umaandar ang MSP.
10-bit Resolution: Ang ADC na ito ay isang 8 channel 10 bit ADC. Dito ipinapahiwatig ng term na 8 channel na mayroong 8 mga ADC pin gamit ang kung saan maaari naming sukatin ang analog boltahe. Ang term na 10-bit ay nagpapahiwatig ng resolusyon ng ADC. Ang 10-bit ay nangangahulugang 2 sa lakas ng sampu (2 10) na kung saan ay 1024. Ito ang bilang ng mga hakbang sa sample para sa aming ADC, kaya ang saklaw ng aming mga halaga ng ADC ay mula 0 hanggang 1023. Ang halaga ay tataas mula 0 hanggang 1023 batay sa halaga ng boltahe bawat hakbang, na maaaring kalkulahin gamit ang formula sa ibaba
Tandaan: Sa pamamagitan ng default sa Energia ang reference boltahe ay itatakda sa Vcc (~ 3v), maaari kang mag-iiba ang reference boltahe pamamagitan ng paggamit ng analogReference () opsyon.
Suriin din kung paano i-interface ang ADC sa iba pang mga Microcontroller:
- Paano Gumamit ng ADC sa Arduino Uno?
- Ang interfacing ADC0808 sa 8051 Microcontroller
- Paggamit ng ADC Module ng PIC Microcontroller
- Tutorial ng Raspberry Pi ADC
Diagram ng Circuit:
Sa aming nakaraang tutorial natutunan na namin kung paano i-interface ang LCD sa MSP430G2, ngayon ay magdagdag lamang kami ng potensyomiter sa MSP430 upang maibigay ito ng isang variable na boltahe at ipakita ang halaga ng boltahe sa LCD. Kung hindi mo alam ang pag-interfaces ng LCD pagkatapos ay bumalik sa link sa itaas at basahin ito, dahil lalaktawan ko ang impormasyon upang maiwasan ang pagsisisi. Ang kumpletong diagram ng circuit ng proyekto ay ibinibigay sa ibaba.
Tulad ng nakikita mong mayroong dalawang potensyomiter na ginamit dito, ang isa ay ginagamit para sa pagtatakda ng kaibahan ng LCD habang ang isa pa ay ginagamit upang magbigay ng isang variable na boltahe sa board. Sa potensyomiter na iyon ang isang matinding dulo ng potentiometer ay konektado sa Vcc at ang kabilang dulo ay konektado sa Ground. Ang gitnang pin (asul na kawad) ay konektado sa pin P1.7. Ang pin na P1.7 na ito ay magbibigay ng isang variable na boltahe mula sa 0V (ground) hanggang 3.5V (Vcc). Kaya kailangan nating i-program ang pin na P1.7 upang mabasa ang variable na boltahe na ito at ipakita ito sa LCD.
Sa Energia, kailangan nating malaman kung aling mga analog na channel ang pagmamay-ari ng pin na P1.7? Maaari itong matagpuan sa pamamagitan ng pag-refer sa larawan sa ibaba
Maaari kang makakita ng P1.7 na pin sa kanang bahagi, ang pin na ito ay kabilang sa A7 (Channel 7). Katulad nito, mahahanap din natin ang kani-kanilang numero ng channel para sa iba pang mga pin. Maaari mong gamitin ang anumang mga pin mula A0 hanggang A7 para sa pagbabasa ng mga analog voltages dito pinili ko ang A7.
Pag-program ng iyong MSP430 para sa ADC:
Ang pagprograma ng iyong MSP430 upang mabasa ang analog boltahe ay napaka-simple. Sa program na ito ay basahin ang analog ng halaga at kalkulahin ang boltahe sa halagang iyon at pagkatapos ay ipakita ang pareho sa LCD screen. Ang kumpletong programa ay matatagpuan sa ilalim ng pahinang ito, sa ibaba ay ipinapaliwanag ko ang programa sa mga snippet upang matulungan kang higit na maunawaan.
Nagsisimula kami sa pamamagitan ng pagtukoy ng mga LCD pin. Tinutukoy nito kung aling pin ng MSP430 ang mga LCD pin ay konektado. Maaari kang mag-refer sa iyo ng koneksyon upang matiyak na ang mga pin ay konektado ayon sa pagkakabanggit
#define RS 2 # tukuyin ang EN 3 # tukuyin ang D4 4 # tukuyin ang D5 5 # tukuyin ang D6 6 # tukuyin ang D7 7
Susunod, isinasama namin ang header file para sa LCD display. Tinatawag nito ang library na naglalaman ng code kung paano dapat makipag-usap ang MSP sa LCD. Ang library na ito ay mai-install sa Energia IDE bilang default kaya hindi mo kailangang mag-abala idagdag ito. Siguraduhin din na ang function na Liquid Crystal ay tinatawag na may mga pangalan ng pin na tinukoy lamang namin sa itaas.
# isama
Sa loob ng aming pag- andar () pag- andar, bibigyan lamang namin ang isang intro message upang maipakita sa LCD screen. Hindi ako nakakakuha ng mas malalim dahil natutunan na namin kung paano gamitin ang LCD sa MSP430G2.
lcd.begin (16, 2); // Gumagamit kami ng isang 16 * 2 LCD display lcd.setCursor (0,0); // Ilagay ang cursor sa ika-1 hilera ng 1st haligi lcd.print ("MSP430G2553"); // Ipakita ang isang intro message lcd.setCursor (0, 1); // itakda ang cursor sa ika-1 haligi ika-2 hilera lcd.print ("- CircuitDigest"); // Magpakita ng isang intro message
Sa wakas, sa loob ng aming walang katapusang pag- andar ng loop () , nagsisimula kaming basahin ang boltahe na ibinigay sa A7 pin. Tulad ng tinalakay na namin ang microcontroller ay isang digital na aparato at hindi nito mabasa nang direkta ang antas ng mga voltages. Gamit ang diskarteng SAR ang antas ng boltahe ay nai-map mula 0 hanggang 1024. Ang mga halagang ito ay tinawag na mga halaga ng ADC, upang makuha ang halagang ADC na ito, gamitin lamang ang sumusunod na linya
int val = analogRead (A7); // basahin ang halaga ng ADC mula sa pin A7
Narito ang pag- andar na analogRead () ay ginagamit upang basahin ang halaga ng analog ng pin, tinukoy namin ang A7 sa loob nito dahil nakakonekta namin ang variable boltahe sa pin na P1.7. Sa wakas ay nai-save namin ang halagang ito sa isang variable na tinatawag na " val ". Ang uri ng variable na ito ay integer dahil makakakuha lamang kami ng mga halagang mula 0 hanggang 1024 upang maiimbak sa variable na ito.
Ang susunod na hakbang ay upang makalkula ang halaga ng boltahe mula sa halaga ng ADC. Upang magawa ito mayroon kaming mga sumusunod na formula
Boltahe = (Halaga ng ADC / Resolusyon ng ADC) * Boltahe ng Sanggunian
Sa aming kaso alam na namin na ang resolusyon ng ADC ng aming microcontroller ay 1024. Ang halaga ng ADC ay matatagpuan din sa nakaraang linya at naimbak ang variable na tinatawag na val. Ang boltahe ng sanggunian ay katumbas ng boltahe kung saan tumatakbo ang microcontroller. Kapag ang board ng MSP430 ay pinalakas sa pamamagitan ng USB cable pagkatapos ang operating boltahe ay 3.6V. Maaari mo ring sukatin ang operating boltahe sa pamamagitan ng paggamit ng isang multimeter sa kabuuan ng Vcc at ground pin sa pisara. Kaya ang pormula sa itaas ay umaangkop sa aming kaso tulad ng ipinakita sa ibaba
float boltahe = (float (val) / 1024) * 3.6; // formula upang mai-convert ang halaga ng ADC sa boltahe
Maaaring malito ka sa line float (val). Ginagamit ito upang mai - convert ang variable na "val" mula sa int data type hanggang sa "float" na uri ng data. Kailangan ang conversion na ito dahil lamang kung makuha namin ang resulta ng val / 1024 sa float maaari nating i-multiply ito ng 3.6. Kung ang halaga ay natanggap sa integer palagi itong magiging 0 at ang resulta ay magiging zero din. Kapag nakalkula namin ang halaga ng ADC at boltahe, ang natitira lamang ay upang ipakita ang resulta sa LCD screen na maaaring gawin sa pamamagitan ng paggamit ng mga sumusunod na linya
lcd.setCursor (0, 0); // itakda ang cursor sa haligi 0, linya 0 lcd.print ("ADC Val:"); lcd.print (val); // Ipakita ang halaga ng ADC lcd.setCursor (0, 1); // itakda ang cursor sa haligi 0, linya 1 lcd.print ("Boltahe:"); lcd.print (boltahe); // Display boltahe
Ipinakita namin dito ang halaga ng ADC sa unang linya at ang halaga ng Boltahe sa pangalawang linya. Sa wakas ay nagbibigay kami ng pagkaantala ng 100 mill segundo at i-clear ang LCD screen. Ito ang halaga ay maa-update para sa bawat 100 mils.
Pagsubok sa iyong resulta!
Sa wakas, bumaba kami sa nakakatuwang bahagi, na sumusubok sa aming programa at nakikipaglaro dito. Gawin lamang ang mga koneksyon tulad ng ipinapakita sa diagram ng circuit. Gumamit ako ng isang maliit na breadboard upang makagawa ng aking mga koneksyon at ginamit ang mga jumper wires upang ikonekta ang breadboard sa MSP430. Kapag ang mga koneksyon ay tapos na ang minahan ay ganito sa ibaba.
Pagkatapos i-upload ang programa na ibinibigay sa ibaba sa board ng MSP430 sa pamamagitan ng Energia IDE. Dapat mong makita ang intro text sa LCD, kung hindi ayusin ang kaibahan ng LCD gamit ang potentiometer hanggang sa makita mo ang mga malinaw na salita. Gayundin, subukang pindutin ang pindutan ng pag-reset. Kung gumagana ang mga bagay tulad ng inaasahan pagkatapos ay dapat mong makita ang sumusunod na screen.
I- vary ngayon ang potensyomiter at dapat mo ring makita ang boltahe na ipinapakita sa LCD na magkakaiba-iba. I-verify natin kung nasusukat namin nang tama ang boltahe upang magawa iyon, gumamit ng isang multimeter upang masukat ang boltahe sa gitna ng POT at ng lupa. Ang boltahe na ipinapakita sa multimeter ay dapat na malapit sa halagang ipinapakita sa LCD tulad ng ipinakita sa larawan sa ibaba.
Iyon lang, natutunan natin kung paano sukatin ang analog boltahe gamit ang ADC ng MSP430 board. Ngayon ay maaari naming i-interface ang maraming mga analog sensor sa aming board upang mabasa ang mga parameter ng real time. Inaasahan kong naintindihan mo ang tutorial at nasiyahan sa pag-alam nito, kung mayroon kang anumang mga problema mangyaring makipag-ugnay sa pamamagitan ng seksyon ng komento sa ibaba o sa pamamagitan ng mga forum. Abangan natin ang isa pang tutorial ng MSP430 na may isa pang bagong paksa.