Mga kategorya: Mga circuit ng Microcontroller
Bilang ng mga tanawin: 18998
Mga puna sa artikulo: 0
Pagkonekta ng mga sensor ng analog sa Arduino, pagbabasa ng mga sensor
Ginagamit ang mga sensor upang masukat ang dami, mga kondisyon ng kapaligiran, at reaksyon sa mga pagbabago sa mga estado at posisyon. Sa kanilang output, maaaring mayroong mga digital signal na binubuo ng mga bago at zero, pati na rin ang mga analog, na binubuo ng isang walang katapusang bilang ng mga boltahe sa isang tiyak na agwat.
Tungkol sa mga sensor
Alinsunod dito, ang mga sensor ay nahahati sa dalawang pangkat:
1. Digital.
2. Analogue.
Upang mabasa ang mga digital na halaga, ang parehong mga digital at analog input ng microcontroller ay maaaring magamit, sa aming kaso Avr sa Arduino board. Ang mga sensor ng analog ay dapat na konektado sa pamamagitan ng isang analog-to-digital converter (ADC). Ang ATMEGA328, ito ay naka-install sa karamihan ng mga ARDUINO boards (higit pa tungkol dito may isang artikulo sa site), naglalaman ng circuit built-in na ADC. Tulad ng maraming bilang ng 6 na mga input ay magagamit upang pumili.
Kung hindi ito sapat para sa iyo, maaari kang gumamit ng isang karagdagang panlabas na ADC upang kumonekta sa mga digital na input, ngunit ito ay magulo ang code at madagdagan ang dami nito, dahil sa pagdaragdag ng pagproseso ng mga algorithm at kontrol ng ADC. Ang paksa ng mga analog-to-digital na mga convert ay sapat na malawak na maaari kang gumawa ng isang hiwalay na artikulo o cycle tungkol sa mga ito. Ito ay mas madaling gumamit ng isang board na may isang malaking bilang ng mga ito o multiplexer. Tingnan natin kung paano ikonekta ang mga sensor ng analog sa Arduino.

Pangkalahatang pamamaraan ng mga analog sensor at ang kanilang koneksyon
Ang sensor ay maaaring maging isang maginoo potensyomiter. Sa katunayan, ito ay isang resistive na sensor ng posisyon; sa prinsipyong ito, kinokontrol nila ang antas ng mga likido, ang anggulo ng pagkahilig, ang pagbubukas ng isang bagay. Maaari itong konektado sa arduino sa dalawang paraan.

Pinapayagan ka ng circuit sa itaas na basahin ang mga halaga mula 0 hanggang 1023, dahil sa ang katunayan na ang lahat ng boltahe ay bumaba sa potensyomiter. Ang prinsipyo ng isang divider ng boltahe ay gumagana dito, sa anumang posisyon ng makina, ang boltahe ay ipinamamahagi nang magkakasunod sa ibabaw ng resistive layer o sa isang logarithmic scale (depende sa potentiometer) na bahagi ng boltahe na nananatili sa pagitan ng output ng slider (sliding contact) at ang lupa (gnd) ay nakukuha sa input. Sa breadboard, ganito ang koneksyon na ito:

Ang pangalawang pagpipilian ay konektado ayon sa klasikal na resistive circuit divider, dito ang boltahe sa punto ng maximum na pagtutol ng potentiometer ay depende sa paglaban ng itaas na risistor (sa Figure R2).

Sa pangkalahatan, ang resistive divider ay napakahalaga hindi lamang sa larangan ng trabaho sa mga microcontroller, kundi pati na rin sa electronics sa pangkalahatan. Sa ibaba makikita mo ang pangkalahatang pamamaraan, pati na rin ang kinakalkula na mga ratio para sa pagtukoy ng halaga ng boltahe sa mas mababang braso.

Ang nasabing koneksyon ay katangian hindi lamang para sa isang potensyomiter, ngunit para sa lahat ng mga sensor ng analog, dahil ang karamihan sa kanila ay nagtatrabaho sa prinsipyo ng pagbabago ng paglaban (conductivity) sa ilalim ng impluwensya ng mga panlabas na mapagkukunan - temperatura, ilaw, radiation ng iba't ibang uri, atbp.
Ang sumusunod ay ang pinakasimpleng diagram ng koneksyon thermistor, sa prinsipyo, ang isang thermometer ay maaaring gawin sa batayan nito. Ngunit ang kawastuhan ng mga pagbasa nito ay depende sa katumpakan ng talahanayan ng conversion ng paglaban sa temperatura, ang katatagan ng mapagkukunan ng kapangyarihan at ang mga koepisyenteng pagbabago ng paglaban (kabilang ang risistor ng itaas na braso) sa ilalim ng impluwensya ng parehong temperatura. Maaari itong mai-minimize sa pamamagitan ng pagpili ng pinakamainam na resistensya, ang kanilang lakas at operasyon ng mga alon.

Sa parehong paraan, maaari mong ikonekta ang mga photodiodes, phototransistors bilang isang light sensor. Ang Photoelectronics ay natagpuan ang application sa mga sensor na natutukoy ang distansya at ang pagkakaroon ng isang bagay, na isaalang-alang natin sa ibang pagkakataon.

Ipinapakita ng figure ang koneksyon ng photoresistor sa arduino.

Bahagi ng software
Bago ko pag-usapan ang tungkol sa pagkonekta ng mga tiyak na sensor, nagpasya akong isaalang-alang ang software para sa pagproseso ng mga ito. Ang lahat ng mga signal ng analog ay binabasa mula sa parehong mga port gamit ang utos na analogRead ().Kapansin-pansin na ang Arduino UNO at iba pang mga modelo na may 168 at 328 atmega ay may 10-bit ADC. Nangangahulugan ito na nakikita ng microcontroller ang signal ng input bilang isang numero mula 0 hanggang 1023 - isang kabuuan ng 1024 na halaga. Kung isasaalang-alang mo na ang supply boltahe ay 5 volts, pagkatapos ang pagkasensitibo sa pag-input:
5/1024 = 0.0048 V o 4.8 mV
Iyon ay, na may halaga ng 0 sa input, ang boltahe ay 0, at may halaga ng 10 sa input - 48 mV.
Sa ilang mga kaso, upang mai-convert ang mga halaga sa nais na antas (halimbawa, upang maipadala sa output ng PWM), 1024 ay nahahati sa isang bilang, at bilang isang resulta ng paghahati, ang kinakailangang maximum ay dapat makuha. Ang function ng mapa (mapagkukunan, mababa, mataas, mataas, mataas, mababa) ay gumagana nang mas malinaw, kung saan:
-
mababa - mas mababang numero bago ang pag-convert sa pamamagitan ng pag-andar;
-
vch - itaas;
-
VCh - ang mas mababang bilang pagkatapos ng pagproseso ng function (sa output);
-
VHV - tuktok.
Praktikal na aplikasyon para sa pag-convert ng isang function ng isang halaga ng input para sa paghahatid sa isang PWM (maximum na halaga 255, para sa pag-convert ng data mula sa isang ADC sa isang output PWM 1024 na hinati ng 4):
Pagpipilian 1 - dibisyon.
int x;
x = analogRead (palayok) / 4;
// isang numero mula 0 hanggang 1023 ay matatanggap
// hatiin ito sa pamamagitan ng 4, nakakakuha kami ng isang integer mula 0 hanggang 255 analogWrite (pinangunahan, x);
Pagpipilian 2 - ang MAP function - magbubukas ng mas maraming mga pagkakataon, ngunit higit pa sa paglaon.
walang bisa loop ()
{int val = analogRead (0);
val = mapa (val, 0, 1023, 0, 255);
analogWrite (humantong, val); }
O kahit na mas maikli:
analogWrite (humantong, mapa (val, 0, 1023, 0, 255))
Hindi lahat ng mga sensor ay may 5 volts sa output, i.e. ang bilang 1024 ay hindi laging maginhawa upang hatiin upang makakuha ng parehong 256 para sa PWM (o anumang iba pa). Maaari itong maging 2 at 2.5 volts at iba pang mga halaga, kapag ang maximum na signal ay, halimbawa, 500.
Mga tanyag na analog sensor
Ang isang pangkalahatang pagtingin ng sensor para sa arduino at ang koneksyon nito ay ipinapakita sa ibaba:

Karaniwan mayroong tatlong mga output, maaaring mayroong isang pang-apat - digital, ngunit ito ay mga tampok.
Ang pag-decode ng pagtatalaga ng mga output ng analog sensor:
-
G - minus power, karaniwang bus, ground. Maaaring itinalaga bilang GND, "-";
-
V - kasama ang lakas. Maaaring maitaguyod bilang Vcc, Vtg, "+";
-
S - output signal, posibleng notasyon - Out, SGN, Vout, mag-sign.
Ang mga nagsisimula upang malaman kung paano basahin ang mga halaga ng mga sensor ay pumili ng mga proyekto ng lahat ng uri ng mga thermometer. Ang ganitong mga sensor ay nasa digital na disenyo, halimbawa DS18B20, at sa analog - ito ang lahat ng mga uri ng microcircuits tulad ng LM35, TMP35, TMP36 at iba pa. Narito ang isang halimbawa ng modular na disenyo ng tulad ng isang sensor sa board.

Ang katumpakan ng sensor ay mula sa 0.5 hanggang 2 degree. Itinayo sa isang TMP36 chip, tulad ng marami sa mga analog, ang mga halaga ng output ay 10 mV / ° C. Sa 0 °, ang output signal ay 0 V, at pagkatapos ay 10 mV bawat 1 degree ay idinagdag. Iyon ay, sa 25.5 degree, ang boltahe ay 0.255 V, posible ang isang paglihis sa loob ng pagkakamali at pag-init ng sarili ng kristal ng IC (hanggang sa 0.1 ° C).
Depende sa ginamit na microcircuit, maaaring magkakaiba ang pagsukat at mga boltahe ng output, tingnan ang talahanayan.

Gayunpaman, para sa isang de-kalidad na thermometer, hindi mo lamang mabasa ang mga halaga at ipakita ang mga ito sa tagapagpahiwatig ng LCD o serial port para sa pakikipag-usap sa isang PC, para sa katatagan ng output signal ng buong system sa kabuuan, kailangan mong average ang mga halaga mula sa mga sensor, kapwa analog at digital, sa loob ng ilang mga limitasyon, habang nang hindi pinipinsala ang kanilang bilis at katumpakan (mayroong isang limitasyon sa lahat). Ito ay dahil sa pagkakaroon ng ingay, panghihimasok, hindi matatag na mga contact (para sa resistive sensor batay sa isang potensyomiter, tingnan ang mga pagkakamali ng sensor ng tubig o gasolina sa tangke ng kotse).
Ang mga code para sa pagtatrabaho sa karamihan ng mga sensor ay lubos na maliwanag, kaya't hindi ko naibigay ang lahat, madali silang matatagpuan sa network sa pamamagitan ng kahilingan na "sensor + Arduino name".
Ang susunod na sensor na madalas gamitin ng arduino robotic engineers ay ang line sensor. Ito ay batay sa mga aparatong photoelectronic, uri ng phototransistors.

Sa kanilang tulong, ang isang robot na gumagalaw sa linya (ginamit sa awtomatikong produksyon upang maghatid ng mga bahagi) ay tumutukoy sa pagkakaroon ng isang puti o itim na guhit. Sa kanang bahagi ng pigura, makikita ang dalawang aparato na katulad ng mga LED. Ang isa sa mga ito ay ang LED, maaari itong lumabas sa hindi nakikita na spectrum, at ang pangalawa ay isang phototransistor.
Ang ilaw ay makikita mula sa ibabaw kung madilim - ang phototransistor ay hindi tumatanggap ng isang nakalarawan na stream, ngunit kung tatanggap ang ilaw at magbubukas ito. Ang mga algorithm na inilagay mo sa microcontroller ay nagpoproseso ng signal at matukoy ang tama at direksyon ng paggalaw at iwasto ang mga ito. Ang optical mouse, na malamang na hawak mo sa iyong kamay habang binabasa ang mga linyang ito, ay magkatulad na nakaayos.
Magdaragdag ako sa isang katabing sensor - isang sensor ng distansya mula sa Biglang, ay ginagamit din sa mga robotics, pati na rin sa mga kondisyon ng pagsubaybay sa posisyon ng mga bagay sa espasyo (kasama ang kaukulang error sa TX).

Gumagana ito sa parehong prinsipyo. Ang mga aklatan at halimbawa ng mga sketch at proyekto na kasama nito ay magagamit sa maraming mga numero sa mga site na nakatuon sa Arduino.
Konklusyon
Ang paggamit ng mga sensor ng analog ay napaka-simple, at sa madaling-malaman na wika ng programming ng Arduino, mabilis mong natutunan ang mga simpleng aparato. Ang pamamaraang ito ay may makabuluhang mga disbentaha kumpara sa mga digital na katapat. Ito ay dahil sa malawak na pagkakaiba-iba sa mga parameter; nagiging sanhi ito ng mga problema kapag pinalitan ang sensor. Maaaring kailanganin mong i-edit ang source code ng programa.
Totoo, isinasama ng mga indibidwal na aparato ng analog ang mga mapagkukunan ng sanggunian ng sanggunian at kasalukuyang mga stabilizer, na may positibong epekto sa pangwakas na produkto at pag-ulit ng aparato sa paggawa ng masa. Ang lahat ng mga problema ay maiiwasan sa pamamagitan ng paggamit ng mga digital na aparato.
Ang digital circuitry tulad ng nababawas ang pangangailangan para sa pag-tune at pag-aayos ng circuit pagkatapos ng pagpupulong. Nagbibigay ito sa iyo ng pagkakataon na mag-ipon ng maraming magkaparehong aparato sa parehong source code, ang mga detalye kung saan ay magbibigay ng parehong mga signal, na may resistive sensor na ito ay bihirang.
Tingnan din sa aming website:Pagkonekta ng mga panlabas na aparato sa Arduino
Tingnan din sa electro-tl.tomathouse.com
: