Sa proyektong ito ginagamit namin ang konsepto ng ADC (Analog to Digital Conversion) sa ARDUINO UNO. Gagamitin namin ang isang sensor ng Hall Effect at Arduino uno upang masukat ang lakas ng patlang ng isang pang-akit. Ang sensor na ginamit namin dito ay UGN3503U. Ito ay isang sensor ng hall na nararamdaman ang lakas ng magnetic field at nagbibigay ng iba't ibang boltahe sa output na proporsyonal sa lakas ng patlang. Kinukuha ng sensor na ito ang lakas ng patlang sa mga yunit ng ' GAUSS '.
Kaya sa sensor na ito magkakaroon kami ng lakas sa larangan bilang iba't ibang boltahe. Sa pamamagitan ng paggamit ng tampok na ADC iko-convert namin ang boltahe na ito sa isang numero. Ang bilang na ito ay kumakatawan sa lakas ng patlang at ipinapakita sa LCD.
Ang Arduino ay may anim na mga channel ng ADC. Sa mga alinman sa isa o lahat sa kanila ay maaaring magamit bilang mga input para sa analog boltahe. Ang UNO ADC ay may resolusyon na 10 bit (kaya 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 (2pieces), UGn3503U.
Software: arduino IDE (Arduino gabi-gabi)
Circuit Diagram at Paliwanag
Ipinapakita ng nasa itaas na pigura ang circuit diagram para sa pagsukat ng magnetic field gamit ang arduino uno.
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 sa itaas, maaari mong obserbahan na kinuha ko lamang ang 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.
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.
Kapag ang isang magnet ay dinala malapit sa sensor ang sensor ay kumakatawan sa isang boltahe sa proporsyonal na output sa patlang, ang halagang ito ay kinuha ng Uno at ipinapakita sa LCD. Ang pagtatrabaho ng proyektong pagsukat ng magnetic field na ito ay karagdagang ipinaliwanag sa pamamagitan ng sa ibaba ng C code.