- Kinakailangan ang Mga Bahagi at Pag-setup ng Hardware
- Nuvoton N76E003 Circuit Diagram upang Basahin ang Boltahe ng Analog
- Ang impormasyon tungkol sa GPIO at Analog Pins sa N76E003
- Ang impormasyon tungkol sa ADC Peripheral sa N76E003
- Programming N76E003 para sa ADC
- Flashing ang code at ang output
Ang Analog to Digital converter (ADC) ay ang pinaka ginagamit na tampok sa hardware sa isang microcontroller. Tumatagal ito sa analog boltahe at ginawang ito sa isang digital na halaga. Dahil ang mga microcontroller ay mga digital na aparato at gumagana sa binary digit 1 at 0, hindi nito maproseso nang direkta ang data ng analog. Sa gayon, ginagamit ang isang ADC upang kumuha ng boltahe ng analog at i-convert ito sa katumbas na digital na halaga na mauunawaan ng isang microcontroller. Kung nais mo ng higit pa tungkol sa Analog to Digital Converter (ADC), maaari mong suriin ang naka-link na artikulo.
Mayroong iba't ibang mga sensor na magagamit sa mga electronics na nagbibigay ng output ng Analog, tulad ng mga sensor ng gas ng MQ, sensor ng ADXL335 Accelerometer, atbp. Sa gayon, gamit ang Analog to Digital converter, ang mga sensor na iyon ay maaaring ma-interfaced sa isang yunit ng microcontroller. Maaari mo ring suriin ang iba pang mga tutorial na nakalista sa ibaba, para sa paggamit ng 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
- Paano gamitin ang ADC sa MSP430G2 - Pagsukat ng Boltahe ng Analog
- Paano gamitin ang ADC sa STM32F103C8
Sa tutorial na ito, gagamitin namin ang inbuilt ADC peripheral ng N76E003 microcontroller unit kaya suriin natin kung anong uri ng pag-setup ng hardware ang kinakailangan namin para sa application na ito.
Kinakailangan ang Mga Bahagi at Pag-setup ng Hardware
Upang magamit ang ADC sa N76E003, gagamit kami ng isang divider ng boltahe gamit ang isang potensyomiter at basahin ang boltahe mula sa 0V-5.0V. Ang Boltahe ay ipapakita sa 16x2 Character LCD, kung bago ka sa LCD at N76E003, maaari mong suriin kung paano i-interface ang LCD sa Nuvoton N76E003. Kaya, ang pangunahing sangkap na kinakailangan para sa proyektong ito ay 16x2 Character LCD. Para sa proyektong ito, gagamitin namin ang mga sumusunod na bahagi-
- Karakter na LCD 16x2
- 1k risistor
- 50k potentiometer o trim pot
- Ilang mga wires na Berg
- Ilang mga wire sa hookup
- Breadboard
Hindi banggitin, bukod sa mga sangkap sa itaas, kailangan namin ng N76E003 microcontroller -based development board pati na rin ang Nu-Link Programmer. Ang isang karagdagang 5V power supply unit ay kinakailangan din dahil ang LCD ay kumukuha ng sapat na kasalukuyang hindi maaaring ibigay ng programmer.
Nuvoton N76E003 Circuit Diagram upang Basahin ang Boltahe ng Analog
Tulad ng nakikita natin sa eskematiko, ang port P0 ay ginagamit para sa koneksyon na nauugnay sa LCD. Sa matinding kaliwa, ipinapakita ang koneksyon sa interface ng programa. Ang potensyomiter ay kumikilos bilang isang boltahe divider at na-sensed ng analog input 0 (AN0).
Ang impormasyon tungkol sa GPIO at Analog Pins sa N76E003
Ang imahe sa ibaba ay naglalarawan ng mga GPIO pin na magagamit sa unit ng N76E003AT20 microcontroller. Gayunpaman, mula sa 20 pin, Para sa koneksyon na nauugnay sa LCD, ginagamit ang Port P0 (P0.0, P0.1, P0.2, P0.4, P0.5, P0.6, at P0.7). Ang mga Analog na pin ay naka-highlight sa mga kulay na PULANG.
Tulad ng nakikita natin, ang Port P0 ay may maximum na mga analog pin ngunit ang mga iyon ay ginagamit para sa komunikasyon na nauugnay sa LCD. Kaya, ang P3.0 at P1.7 ay magagamit bilang mga Analog input pin na AIN1 at AIN0. Dahil ang proyektong ito ay nangangailangan lamang ng isang analog pin, P1.7 na kung saan ang Analog input channel 0, ay ginagamit para sa proyektong ito.
Ang impormasyon tungkol sa ADC Peripheral sa N76E003
Nagbibigay ang N76E003 ng 12-bit SAR ADC. Ito ay isang napakahusay na tampok ng N76E003 na mayroon itong napakahusay na resolusyon ng ADC. Ang ADC ay may mga input na 8-Channel sa single-end mode. Ang pag-interface ng ADC ay medyo simple at prangka.
Ang unang hakbang ay upang piliin ang input ng ADC channel. Mayroong mga 8-Channel input na magagamit sa N76E003 microcontrollers. Matapos piliin ang mga input ng ADC o ang I / O pin, ang lahat ng mga pin ay kinakailangan upang maitakda para sa direksyon sa code. Ang lahat ng mga pin na ginamit para sa input ng Analog ay mga input pin ng microcontroller kaya ang lahat ng mga pin ay kailangang itakda bilang mode na Input-only (high-impedance). Maaari itong maitakda gamit ang rehistro ng PxM1 at PxM2. Itinakda ng dalawang rehistro ang mga mode na I / O kung saan ang x ay nangangahulugang numero ng Port (Halimbawa, Port P1.0 ang rehistro ay P1M1 at P1M2, para sa P3.0 ito ay P3M1 at P3M2, atbp.) makikita sa larawan sa ibaba-
Ang pagsasaayos ng ADC ay ginagawa ng dalawang rehistro ng ADCCON0 at ADCCON1. Ang paglalarawan ng ADCCON0 Rehistro ay ipinapakita sa ibaba.
Ang unang 4 na piraso ng rehistro mula sa bit 0 hanggang bit 3 ay ginagamit upang itakda ang pagpipilian ng ADC Channel. Dahil ginagamit namin ang channel na AIN0, ang pagpipilian ay 0000 para sa apat na bit na ito.
Ang ika-6 at ika-7 na piraso ay ang mga mahalaga. Kinakailangan ang ADCS upang magtakda ng 1 para sa pagsisimula ng ADC conversion at ang ADCF ay magbibigay ng impormasyon tungkol sa matagumpay na conversion ng ADC. Kailangan itong maitakda 0 ng firmware para sa pagsisimula ng ADC conversion. Ang susunod na rehistro ay ang ADCCON1-
Ang rehistro ng ADCCON1 ay pangunahing ginagamit para sa pag-convert ng ADC na na-trigger ng mga panlabas na mapagkukunan. Gayunpaman, para sa normal na mga pagpapatakbo na nauugnay sa botohan, kinakailangan ang unang bit na ADCEN upang magtakda ng 1 para sa pag-on sa ADC circuitry.
Susunod, ang pag-input ng ADC channel ay kailangang kontrolin sa rehistro ng AINDID kung saan maaaring idiskonekta ang mga digital input.
Ang n ay nangangahulugang ang bit ng channel (Halimbawa, ang AIN0 channel ay kailangang kontrolin gamit ang unang bit P17DIDS ng AINDIDS register). Ang digital input ay kailangang paganahin, kung hindi man, babasahin ito bilang 0. Ang lahat ng ito ay ang pangunahing setting ng ADC. Ngayon, ang pag-clear sa ADCF at pagtatakda ng ADCS ang ADC conversion ay maaaring masimulan. Magagamit ang na-convert na halaga sa mga nakarehistrong rehistro-
At
Ang parehong mga rehistro ay 8-bit. Habang nagbibigay ang ADC ng 12-bits na data, ang ADCRH ay ginagamit bilang buong (8-bits) at ang ADCRL ay ginagamit bilang kalahati (4-bits).
Programming N76E003 para sa ADC
Ang pag-coding para sa isang tukoy na module sa bawat oras ay isang abalang trabaho, sa gayon ang isang simple ngunit malakas na LCD library ay ibinibigay na magiging kapaki-pakinabang para sa 16x2 character LCD na nakikipag-interfaces sa N76E003. Ang 16x2 LCD library ay magagamit sa aming Github repository, na maaaring ma-download mula sa link sa ibaba.
Mag-download ng 16x2 LCD Library para sa Nuvoton N76E003
Pinapayuhan na magkaroon ng silid - aklatan (sa pamamagitan ng pag-clone o pag-download) at isama lamang ang mga lcd.c at LCD.h file sa iyong Keil N76E003 na proyekto para sa madaling pagsasama ng 16x2 LCD sa nais na aplikasyon o proyekto. Magbibigay ang library ng sumusunod na kapaki-pakinabang na mga function na nauugnay sa display-
- Pasimulan ang LCD.
- Magpadala ng utos sa LCD.
- Sumulat sa LCD.
- Maglagay ng isang string sa LCD (16 Mga Character).
- I-print ang character sa pamamagitan ng pagpapadala ng hex na halaga.
- Mag-scroll ng mahahabang mensahe na may higit sa 16 mga character.
- Direktang i-print ang mga numero ng integer sa LCD.
Ang pag-coding para sa ADC ay simple. Sa pag-andar ng pag-setup Paganahin ang_ADC_AIN0; ay ginagamit para sa pagse-set up ng ADC para sa AIN0 input. Ito ay tinukoy sa file.
#define Enable_ADC_AIN0 ADCCON0 & = 0xF0; P17_Input_Mode; AINDIDS = 0x00; AINDIDS- = SET_BIT0; ADCCON1- = SET_BIT0 // P17
Kaya, ang linya sa itaas ay nagtatakda ng pin bilang isang input at ise- configure ang ADCCON0, ADCCON1 magparehistro pati na rin ang rehistro ng AINDID din. Basahin ng pagpapaandar sa ibaba ang ADC mula sa rehistro ng ADCRH at ADCRL ngunit may resolusyon na 12-bit.
unsigned int ADC_read (void) { register unsigned int adc_value = 0x0000; clr_ADCF; set_ADCS; habang (ADCF == 0); adc_value = ADCRH; adc_value << = 4; adc_value - = ADCRL; ibalik ang adc_value; }
Ang bit ay naiwan sa kaliwa ng 4 na beses at pagkatapos ay idinagdag sa variable ng data. Sa pangunahing pag-andar, binabasa ng ADC ang Data at direktang nai-print sa display. Gayunpaman, ang boltahe ay na-convert din gamit ang isang ratio o ang ugnayan sa pagitan ng boltahe na hinati ng halaga ng bit.
Ang isang 12-bit ADC ay magbibigay ng 4095 bit sa 5.0V input. Sa gayon paghati sa 5.0V / 4095 = 0.0012210012210012V
Kaya, ang 1 digit ng mga pagbabago sa bit ay magiging katumbas ng mga pagbabago sa 0.001V (Tinatayang). Ginagawa ito sa pangunahing pagpapaandar na ipinakita sa ibaba.
void main (void) { int adc_data; pag-setup (); lcd_com (0x01); habang (1) { lcd_com (0x01); lcd_com (0x80); lcd_puts ("Data ng ADC:"); adc_data = ADC_read (); lcd_print_number (adc_data); boltahe = adc_data * bit_to_voltage_ratio; sprintf (str_voltage, "Volt:% 0.2fV", boltahe); lcd_com (0xC0); lcd_puts (str_voltage); Timer0_Delay1ms (500); } }
Ang data ay na-convert mula sa halaga ng bit sa boltahe at gamit ang isang pagpapaandar ng sprintf , ang output ay na-convert sa isang string at ipinadala sa LCD.
Flashing ang code at ang output
Ang code ay nagbalik ng 0 babala at 0 Mga Error at na-flash gamit ang default na flashing na paraan ng Keil, maaari mong makita ang flashing message sa ibaba. Kung bago ka kay Keil o Nuvoton, tingnan ang pagsisimula sa Nuvoton microcontroller upang maunawaan ang mga pangunahing kaalaman at kung paano i-upload ang code.
Nagsimula ang muling pagtatayo: Proyekto: timer Muling itayo ang target na 'Target 1' na pagtitipon ng Startup.A51… pagtitipid ng main.c… pagtitipid ng lcd.c… pagtitipid ng Pag-antala.c… pag-uugnay… Laki ng Program: data = 101.3 xdata = 0 code = 4162 lumilikha ng hex file mula sa ". \ Mga bagay \ timer"… ". \ Mga Bagay \ timer" - 0 Mga Error, 0 Mga Babala. Lumipas ang Oras ng Build: 00:00:02 I- load ang "G: \\ n76E003 \\ Display \\ Mga Bagay \\ timer" Flash Burahin Tapos Na. Tapos ng Sumulat ng Flash: Na-program ang 4162 bytes. Tapos na Na-verify ang Flash: 4162 bytes na na-verify. Tapos na ang Flash Load ng 11:56:04
Ipinapakita ng imahe sa ibaba ang hardware na konektado sa pinagmulan ng kuryente gamit ang isang DC adapter at ipinapakita ang display ang output ng boltahe na itinakda ng potentiometer sa kanan.
Kung i-on natin ang potensyomiter, ang boltahe na ibinigay sa ADC pin ay magbabago din at mapapansin natin ang halaga ng ADC at Analog boltahe na ipinakita sa LCD. Maaari mong suriin ang video sa ibaba para sa kumpletong gumaganang pagpapakita ng tutorial na ito.
Inaasahan kong nasiyahan ka sa artikulo at natutunan ang isang bagay na kapaki-pakinabang, kung mayroon kang mga katanungan, iwanan ang mga ito sa seksyon ng komento sa ibaba, o maaari mong gamitin ang aming mga forum upang mag-post ng iba pang mga teknikal na katanungan.