Sa tutorial na ito ipinapakilala namin ang konsepto ng ADC (Analog to Digital Conversion) sa ARDUINO UNO. Ang board ng Arduino ay may anim na mga channel ng ADC, tulad ng ipinakita sa figure sa ibaba. Kabilang sa mga alinman sa isa o lahat sa kanila ay maaaring magamit bilang mga input para sa analog boltahe. Ang Arduino Uno ADC ay may 10 bit na resolusyon (kaya't ang mga halaga ng integer mula sa (0- (2 ^ 10) 1023)). Nangangahulugan ito na mai-map ang mga voltages ng pag-input sa pagitan ng 0 at 5 volts sa mga halaga ng integer sa pagitan ng 0 at 1023. Kaya para sa bawat (5/1024 = 4.9mV) bawat yunit.
Sa lahat ng ito ikokonekta namin ang isang potensyomiter o palayok sa channel na 'A0', at ipapakita namin ang resulta ng ADC sa isang simpleng pagpapakita. Ang mga simpleng ipinapakita ay mga unit ng display na 16x1 at 16x2. Ang 16x1 display unit ay magkakaroon ng 16 character at nasa isang linya. Ang 16x2 ay magkakaroon ng 32 character sa kabuuang 16in 1 st line at isa pang 16 sa 2 nd line. Narito dapat maunawaan ng bawat isa sa bawat character na mayroong 5x10 = 50 pixel upang maipakita ang isang character na lahat ng 50 pixel ay dapat na magkakasama, ngunit hindi natin kailangang magalala tungkol doon sapagkat mayroong isa pang controller (HD44780) sa display unit na kung saan ang trabaho ng pagkontrol ng mga pixel (maaari mo itong makita sa LCD unit, ito ay ang itim na mata sa likuran).
Kinakailangan ang Mga Bahagi
Hardware: ARDUINO UNO, power supply (5v), JHD_162ALCD (16x2LCD), 100uF capacitor, 100KΩ pot o potentiometer, 100nF capacitor.
Software: arduino IDE (Arduino gabi-gabi)
Circuit Diagram at Paliwanag
Sa 16x2 LCD mayroong 16 na pin sa lahat kung mayroong back light, kung walang back light magkakaroon ng 14 na pin. Maaari ng isang tumakbo o iwanan ang mga light light pin. Ngayon sa 14 na pin mayroong 8 data pin (7-14 o D0-D7), 2 power supply pin (1 & 2 o VSS & VDD o GND & + 5v), 3 rd pin para sa control ng kaibahan (kinokontrol ng VEE kung gaano dapat makapal ang mga character ipinakita), at 3 control pin (RS & RW & E).
Sa circuit, maaari mong obserbahan na kumuha lamang ako ng dalawang control pin, ang kaibahan ng kaunti at READ / WRITE ay hindi madalas ginagamit upang maaari silang maiksi sa lupa. Inilalagay nito ang LCD sa pinakamataas na kaibahan at mode na basahin. Kailangan lang naming makontrol ang Mga PIN na INABAYAHAN at RS upang magpadala ng mga character at data nang naaayon.
Ang mga koneksyon na tapos para sa LCD ay ibinibigay sa ibaba:
PIN1 o VSS sa lupa
Ang PIN2 o VDD o VCC sa + 5v na lakas
PIN3 o VEE sa lupa (nagbibigay ng pinakamataas na maximum na kaibahan para sa isang nagsisimula)
Ang PIN4 o RS (Pagpili ng Rehistro) sa PIN8 ng ARDUINO UNO
Ang PIN5 o RW (Basahin / Isulat) sa ground (inilalagay ang LCD sa read mode ay pinapagaan ang komunikasyon para sa gumagamit)
Ang PIN6 o E (Paganahin) sa PIN9 ng ARDUINO UNO
Ang PIN11 o D4 hanggang PIN10 ng ARDUINO UNO
Ang PIN12 o D5 hanggang PIN11 ng ARDUINO UNO
Ang PIN13 o D6 hanggang PIN12 ng ARDUINO UNO
Ang PIN14 o D7 hanggang PIN13 ng ARDUINO UNO
Pinapayagan ng ARDUINO IDE ang gumagamit na gumamit ng LCD sa 4 bit mode. Ang ganitong uri ng komunikasyon ay nagbibigay-daan sa gumagamit na bawasan ang paggamit ng pin sa ARDUINO, hindi katulad ng iba pang ARDUINO ay hindi kailangang i-program nang magkahiwalay para magamit ito sa 4 na mode na ito dahil bilang default ang ARDUINO ay naka-set up upang makipag-usap sa 4 bit mode. Sa circuit maaari mong makita na gumamit kami ng 4bit na komunikasyon (D4-D7).
Kaya't mula sa pagmamasid lamang mula sa itaas na talahanayan kumokonekta kami ng 6 na mga pin ng LCD sa controller kung saan 4 na mga pin ang mga data pin at 2 mga pin para sa kontrol.
Ipinapakita ng nasa itaas na pigura ang c ircuit diagram ng ADC ng ARDUINO UNO.
Nagtatrabaho
Para sa interfacing ng isang LCD sa ARDUINO UNO, kailangan nating malaman ang ilang mga bagay.
|
Una sa lahat ang mga UNO ADC channel ay may default na sanggunian na halaga ng 5V. Nangangahulugan ito na maaari kaming magbigay ng isang maximum na boltahe ng pag-input ng 5V para sa pag-convert ng ADC sa anumang input channel. Dahil ang ilang mga sensor ay nagbibigay ng mga voltages mula sa 0-2.5V, na may isang sanggunian na 5V nakakakuha kami ng mas kaunting kawastuhan, kaya mayroon kaming isang tagubilin na nagbibigay-daan sa amin na baguhin ang halagang ito ng sanggunian. Kaya para sa pagbabago ng sanggunian na halaga na mayroon kami ("analogReferen ();")
Bilang default nakukuha namin ang maximum na resolusyon ng board ng ADC na 10bits, ang resolusyon na ito ay maaaring mabago sa pamamagitan ng paggamit ng tagubilin ("analogReadResolution (bits);"). Ang pagbabago ng resolusyon na ito ay maaaring maging madaling gamiting para sa ilang mga kaso.
Ngayon kung ang mga kundisyon sa itaas ay nakatakda sa default, maaari nating basahin ang halaga mula sa ADC ng channel '0' sa pamamagitan ng direktang pagtawag sa pagpapaandar na "analogRead (pin);", narito ang "pin" ay kumakatawan sa pin kung saan kinonekta namin ang analog signal, sa kasong ito ay maging "A0". Ang halaga mula sa ADC ay maaaring makuha sa isang integer bilang “int ADCVALUE = analogRead (A0); ", Sa pamamagitan ng tagubiling ito ang halaga pagkatapos maimbak ang ADC sa integer na" ADCVALUE ".
NGAYON pag-usapan natin nang kaunti tungkol sa 16x2 LCD. Una kailangan naming paganahin ang file ng header ('# isama
Pangalawa kailangan naming sabihin sa board kung aling uri ng LCD ang ginagamit namin dito. Dahil mayroon kaming napakaraming iba't ibang mga uri ng LCD (tulad ng 20x4, 16x2, 16x1 atbp.). Dito kami ay mag-uugnay sa isang 16x2 LCD sa UNO kaya nakukuha namin ang 'lcd.begin (16, 2);'. Para sa 16x1 nakukuha namin ang 'lcd.begin (16, 1);'.
Sa tagubilin na ito ay sasabihin namin sa board kung saan namin ikinonekta ang mga pin, Ang mga pin na konektado ay kinakatawan sa pagkakasunud-sunod bilang "RS, En, D4, D5, D6, D7". Ang mga pin na ito ay dapat na kinatawan nang wasto. Dahil ikinonekta namin ang RS sa PIN0 at iba pa tulad ng ipinakita sa circuit diagram, Kinakatawan namin ang numero ng pin sa board na "LiquidCrystal lcd (0, 1, 8, 9, 10, 11);".
Matapos sa itaas doon ang natitira ay upang magpadala ng data, ang data na kailangang ipakita sa LCD ay dapat na nakasulat bilang "cd.print (" hello, mundo! ");". Gamit ang utos na ito ang LCD ay nagpapakita ng 'hello, mundo!'.
Tulad ng nakikita mong hindi namin kailangang mag-alala tungkol sa iba pa, kailangan lang naming pasimulan at ang UNO ay handa na magpakita ng data. Hindi namin kailangang magsulat ng isang loop ng programa upang maipadala ang data na BYTE ni BYTE dito.
Ang paggamit ng ADC ng Arduino Uno ay ipinaliwanag nang sunud-sunod sa programa ng C na ibinigay sa ibaba.