Talaan ng mga Nilalaman:

Ang Arduino AREF Pin: 6 na Hakbang
Ang Arduino AREF Pin: 6 na Hakbang

Video: Ang Arduino AREF Pin: 6 na Hakbang

Video: Ang Arduino AREF Pin: 6 na Hakbang
Video: Ускоряем Ардуино более чем в 20 раз! 2024, Hulyo
Anonim
Ang Arduino AREF Pin
Ang Arduino AREF Pin

Sa tutorial na ito titingnan namin kung paano mo masusukat ang mas maliit na mga boltahe na may higit na kawastuhan gamit ang mga analogue input pin sa iyong Arduino o katugmang board kasabay ng AREF pin. Gayunpaman, gagawa muna kami ng ilang rebisyon upang mapabilis mo. Mangyaring basahin ang post na ito nang buo bago magtrabaho sa AREF sa unang pagkakataon.

Hakbang 1: Pagbabago

Rebisyon!
Rebisyon!

Maaari mong tandaan na maaari mong gamitin ang pagpapaandar ng Arduino analogRead () upang masukat ang boltahe ng isang kasalukuyang elektrikal mula sa mga sensor at iba pa gamit ang isa sa mga analogue input pin. Ang halagang ibinalik mula sa analogRead () ay nasa pagitan ng zero isang 1023, na may zero na kumakatawan sa zero volts at 1023 na kumakatawan sa operating boltahe ng Arduino board na ginagamit.

At kapag sinabi namin na ang operating boltahe - ito ang boltahe na magagamit sa Arduino pagkatapos ng power supply circuitry. Halimbawa, kung mayroon kang isang tipikal na Arduino Uno board at patakbuhin ito mula sa USB socket - sigurado, mayroong 5V na magagamit sa board mula sa USB socket sa iyong computer o hub - ngunit ang boltahe ay nabawasan nang bahagya habang ang kasalukuyang hangin sa paligid ng circuit sa microcontroller - o ang pinagmulan ng USB ay hindi hanggang sa simula.

Madali itong maipakita sa pamamagitan ng pagkonekta ng isang Arduino Uno sa USB at paglalagay ng isang hanay ng multimeter upang sukatin ang boltahe sa mga 5V at GND na pin. Ang ilang mga board ay babalik nang mas mababa sa 4.8 V, ang ilan ay mas mataas ngunit mas mababa pa rin sa 5V. Kaya't kung nag-aakma ka para sa kawastuhan, paganahin ang iyong board mula sa isang panlabas na supply ng kuryente sa pamamagitan ng DC socket o Vin pin - tulad ng 9V DC. Pagkatapos pagkatapos nito dumaan sa circuit ng power regulator magkakaroon ka ng magandang 5V, halimbawa ang imahe.

Ito ay mahalaga dahil ang kawastuhan ng anumang mga halagang analogRead () ay maaapektuhan ng hindi pagkakaroon ng totoong 5 V. Kung wala kang anumang pagpipilian, maaari kang gumamit ng ilang matematika sa iyong sketch upang mabayaran ang pagbagsak ng boltahe. Halimbawa, kung ang iyong boltahe ay 4.8V - ang saklaw ng analogRead () na 0 ~ 1023 ay magkaugnay sa 0 ~ 4.8V at hindi 0 ~ 5V. Maaari itong maging walang halaga, gayunpaman kung gumagamit ka ng isang sensor na nagbabalik ng isang halaga bilang isang boltahe (hal. Ang sensor ng temperatura ng TMP36) - ang kinakalkulang halaga ay magiging mali. Kaya sa interes ng kawastuhan, gumamit ng panlabas na power supply.

Hakbang 2: Bakit Nagbabalik ang AnalogRead () ng Halaga sa pagitan ng 0 at 1023?

Bakit Nagbabalik ang AnalogRead () ng Halaga sa pagitan ng 0 at 1023?
Bakit Nagbabalik ang AnalogRead () ng Halaga sa pagitan ng 0 at 1023?

Ito ay dahil sa resolusyon ng ADC. Ang resolusyon (para sa artikulong ito) ay ang antas kung saan ang isang bagay ay maaaring mailarawan sa bilang. Ang mas mataas na resolusyon, ang mas mataas na kawastuhan kung saan ang isang bagay ay maaaring kinatawan. Sinusukat namin ang resolusyon sa mga tuntunin ng bilang ng mga piraso ng resolusyon.

Halimbawa, papayagan lamang ng isang 1-bit na resolusyon ang dalawa (dalawa sa lakas ng isa) na halaga - zero at isa. Ang isang 2-bit na resolusyon ay magpapahintulot sa apat (dalawa sa lakas ng dalawa) na halaga - zero, isa, dalawa at tatlo. Kung sinubukan naming sukatin ang isang saklaw na limang volt na may dalawang-bit na resolusyon, at ang sinusukat na boltahe ay apat na volts, ang aming ADC ay magbabalik ng isang bilang na bilang na 3 - dahil ang apat na volts ay nahuhulog sa pagitan ng 3.75 at 5V. Mas madaling isipin ito sa imahe.

Kaya sa aming halimbawang ADC na may resolusyon na 2-bit, maaari lamang itong kumatawan sa boltahe na may apat na posibleng mga resulta na nagreresulta. Kung ang input boltahe ay nahuhulog sa pagitan ng 0 at 1.25, ang ADC ay nagbabalik ng bilang 0; kung ang boltahe ay nahulog sa pagitan ng 1.25 at 2.5, ang ADC ay nagbabalik ng isang numerong halaga ng 1. At iba pa. Sa hanay ng ADC ng aming Arduino na 0 ~ 1023 - mayroon kaming 1024 mga posibleng halaga - o 2 sa lakas na 10. Kaya't ang aming mga Arduino ay may isang ADC na may isang 10-bit na resolusyon.

Hakbang 3: Kaya Ano ang AREF?

Upang maputol ang isang mahabang kwento, kapag ang iyong Arduino ay kumukuha ng isang pagbasa ng analogue, inihinahambing nito ang boltahe na sinusukat sa analogue pin na ginagamit laban sa kilala bilang boltahe ng sanggunian. Sa normal na paggamit ng analogRead, ang boltahe ng sanggunian ay ang operating boltahe ng board.

Para sa mas tanyag na mga board ng Arduino tulad ng Uno, Mega, Duemilanove at Leonardo / Yún boards, ang operating voltage na 5V. Kung mayroon kang isang Arduino due board, ang operating boltahe ay 3.3V. Kung mayroon kang iba pa - suriin ang pahina ng produkto ng Arduino o tanungin ang iyong tagatustos ng board.

Kaya't kung mayroon kang isang boltahe ng sanggunian na 5V, ang bawat yunit na ibinalik ng analogRead () ay nagkakahalaga ng 0.00488 V. (Kinakalkula ito sa pamamagitan ng paghahati ng 1024 sa 5V). Paano kung nais nating masukat ang mga voltages sa pagitan ng 0 at 2, o 0 at 4.6? Paano malalaman ng ADC kung ano ang 100% ng aming saklaw ng boltahe?

At dito nakasalalay ang dahilan para sa mga pin ng AREF. Ang ibig sabihin ng AREF ay Analogue REFerence. Pinapayagan kaming pakainin ang Arduino ng isang boltahe ng sanggunian mula sa isang panlabas na suplay ng kuryente. Halimbawa

Pagkatapos ang bawat hakbang ng ADC ay kumakatawan sa paligid ng 3.22 millivolts (hatiin ang 1024 sa 3.3). Tandaan na ang pinakamababang boltahe ng sanggunian na maaari mong makuha ay 1.1V. Mayroong dalawang anyo ng AREF - panloob at panlabas, kaya't suriin natin sila.

Hakbang 4: Panlabas na AREF

Ang isang panlabas na AREF ay kung saan mo ibibigay ang isang panlabas na boltahe ng sanggunian sa Arduino board. Maaari itong magmula sa isang kinokontrol na supply ng kuryente, o kung kailangan mo ng 3.3V maaari mo itong makuha mula sa 3.3V pin ng Arduino. Kung gumagamit ka ng isang panlabas na supply ng kuryente, tiyaking ikonekta ang GND sa GND pin ng Arduino. O kung ginagamit mo ang mapagkukunan ng 3.3V ng Arduno - magpatakbo lamang ng isang lumulukso mula sa 3.3V pin hanggang sa AREF pin.

Upang buhayin ang panlabas na AREF, gamitin ang sumusunod sa void setup ():

Pagtukoy sa analogRe (Panlabas); // use AREF para sa sanggunian boltahe

Itinatakda nito ang sanggunian na boltahe sa anumang nakakonekta mo sa AREF pin - na syempre ay magkakaroon ng boltahe sa pagitan ng 1.1V at boltahe ng operasyon ng board. Napakahalagang tala - kapag gumagamit ng isang panlabas na sanggunian ng boltahe, dapat mong itakda ang sanggunian ng analogue sa LABAS bago gamitin ang analogRead (). Pipigilan ka nito mula sa pagpapaikli ng aktibong panloob na boltahe ng sanggunian at ang mga pin ng AREF, na maaaring makapinsala sa microcontroller sa pisara. Kung kinakailangan para sa iyong aplikasyon, maaari kang bumalik sa boltahe ng pagpapatakbo ng board para sa AREF (iyon ay - bumalik sa normal) na may mga sumusunod

sangguniang analogRefer (DEFAULT);

Ngayon upang ipakita ang panlabas na AREF sa trabaho. Gamit ang isang 3.3V AREF, sinusukat ng sumusunod na sketch ang boltahe mula sa A0 at ipinapakita ang porsyento ng kabuuang AREF at ang kinakalkula na boltahe:

# isama ang "LiquidCrystal.h"

LiquidCrystal lcd (8, 9, 4, 5, 6, 7);

int analoginput = 0; // aming analog pin

int analogamount = 0; // nag-iimbak ng papasok na halaga ng lumutang porsyento = 0; // ginamit upang iimbak ang aming porsyento ng halaga ng float na boltahe = 0; // ginamit upang mag-imbak ng halaga ng boltahe

walang bisa ang pag-setup ()

{lcd.begin (16, 2); Pagtukoy sa analogRe (Panlabas); // use AREF for reference voltage}

walang bisa loop ()

{lcd.clear (); analogamount = analogRead (analoginput); porsyento = (analogamount / 1024.00) * 100; boltahe = analogamount * 3.222; // sa millivolts lcd.setCursor (0, 0); lcd.print ("% ng AREF:"); lcd.print (porsyento, 2); lcd.setCursor (0, 1); lcd.print ("A0 (mV):"); lcd.println (boltahe, 2); pagkaantala (250); }

Ang mga resulta ng sketch sa itaas ay ipinapakita sa video.

Hakbang 5: Panloob na AREF

Ang mga microcontroller sa aming mga board ng Arduino ay maaari ring makabuo ng isang panloob na boltahe ng sanggunian na 1.1V at maaari namin itong gamitin para sa gawain ng AREF. Gamitin lamang ang linya:

sanggunian ng analog (INTERNAL);

Para sa mga board ng Arduino Mega, gamitin ang:

sangguniang analogReferensi (INTERNAL1V1);

sa walang bisa na pag-set up () at wala ka na. Kung mayroon kang isang Arduino Mega mayroon ding magagamit na 2.56V sanggunian na boltahe na naaktibo sa:

sangguniang analogReferensi (INTERNAL2V56);

Panghuli - bago mag-ayos ng mga resulta mula sa iyong mga pin ng AREF, palaging i-calibrate ang mga pagbasa laban sa isang kilalang mahusay na multimeter.

Konklusyon

Ang pagpapaandar ng AREF ay nagbibigay sa iyo ng higit na kakayahang umangkop sa pagsukat ng mga signal ng analogue.

Ang post na ito ay dinala sa iyo ng pmdway.com - lahat para sa mga tagagawa ng tagahanga at electronics, na may libreng paghahatid sa buong mundo.

Inirerekumendang: