Mga kategorya: Mga circuit ng Microcontroller
Bilang ng mga tanawin: 16,299
Mga puna sa artikulo: 0
Paano ikonekta ang dumadagdag na encoder sa Arduino
Kadalasan sa mga aparato sa mga microcontroller na kailangan mong ayusin ang pamamahala ng mga item sa menu o ipatupad ang ilang mga pagsasaayos. Maraming mga paraan: gumamit ng mga pindutan, variable na resistor, o mga encoder. Ang incremental encoder ay nagbibigay-daan sa iyo upang makontrol ang isang bagay sa pamamagitan ng walang katapusang pag-ikot ng hawakan. Sa artikulong ito, titingnan namin kung paano makagawa ang incremental encoder at Arduino work.

Mga Tampok ng Incremental Encoder
Ang incremental encoder, tulad ng anumang iba pang uri ng encoder, ay isang aparato na may isang umiikot na hawakan. Distantly, kahawig ito ng isang potensyomiter. Ang pangunahing pagkakaiba mula sa potensyomiter ay ang paghawak ng encoder ay umiikot sa 360 degree. Wala siyang matinding probisyon.
Ang mga encoder ay dumating sa maraming uri. Ang incremental ay naiiba sa na sa tulong nito imposibleng malaman ang posisyon ng hawakan, ngunit ang katotohanan lamang ng pag-ikot sa ilang direksyon - sa kaliwa o sa kanan. Sa pamamagitan ng bilang ng mga pulses ng signal, maaari mo nang makalkula sa kung anong anggulo ang lumingon.

Sa paraang maaari kang pumasa microcontroller utos, pamahalaan ang menu, antas ng dami, halimbawa, at iba pa. Sa pang-araw-araw na buhay, maaari mong makita ang mga ito sa mga radio car at iba pang kagamitan. Ginagamit ito bilang isang organ ng pagsasaayos ng multifunctional level, equalizer at nabigasyon sa menu.

Prinsipyo ng pagtatrabaho
Sa loob ng incremental encoder mayroong isang disk na may mga label at slider na nakikipag-ugnay sa kanila. Ang istraktura nito ay katulad ng isang potensyomiter.

Sa figure sa itaas nakikita mo ang isang disk na may mga marka, kinakailangan nilang matakpan ang koneksyon sa koryente na may contact na maililipat, bilang isang resulta makakakuha ka ng data tungkol sa direksyon ng pag-ikot. Ang disenyo ng produkto ay hindi napakahalaga, maunawaan natin ang prinsipyo ng pagpapatakbo.

Ang encoder ay may tatlong mga output ng impormasyon, isang pangkaraniwan, ang iba pang dalawa ay karaniwang tinatawag na "A" at "B", sa figure sa itaas nakita mo ang encoder pin na may isang pindutan - maaari kang makatanggap ng isang senyas kapag nag-click ka sa baras nito.
Anong signal ang tatanggapin natin? Depende sa direksyon ng pag-ikot, ang lohikal na yunit ay unang lilitaw sa pin A o B, kaya nakakakuha kami ng isang phase-shift signal, at ang shift na ito ay nagbibigay-daan sa amin upang matukoy kung aling direksyon. Ang signal ay nakuha sa anyo ng isang hugis-parihaba na hugis, at ang microcontroller ay kinokontrol matapos ang pagproseso ng data ng direksyon ng pag-ikot at ang bilang ng mga pulses.

Ipinapakita ng figure ang simbolo ng disk kasama ang mga contact, sa gitna mayroong isang graph ng mga signal signal, at sa kanan ay ang katayuan ng talahanayan. Ang aparatong ito ay madalas na iginuhit bilang dalawang mga susi, na kung saan ay lohikal, dahil sa katunayan nakakakuha tayo ng isang senyas na "pasulong" o "pabalik", "up" o "down", at ang bilang ng mga aksyon.

Narito ang isang halimbawa ng isang tunay na encoder pinout:

Kawili-wili:
Ang isang kamalian na encoder ay maaaring mapalitan ng dalawang mga pindutan nang walang pag-lock, at kabaligtaran: kontrol ng lutong bahay kung saan ang dalawa sa mga pindutan na ito ay maaaring wakasan sa pamamagitan ng pagtatakda ng encoder.
Sa video sa ibaba, makikita mo ang kahalili ng signal sa mga terminal - sa panahon ng makinis na pag-ikot, ang mga LED ay lumiliwanag sa pagkakasunud-sunod na makikita sa nakaraang grap.
Walang mas malinaw na isinalarawan sa mga sumusunod na animation (mag-click sa larawan):
Ang encoder ay maaaring maging parehong optical (ang signal ay nabuo ng mga emitters ng mga photodetectors, tingnan ang figure sa ibaba), at magnetic (gumagana ito sa epekto ng Hall). Sa kasong ito, wala siyang mga contact at mas mahabang buhay ng serbisyo.

Tulad ng nabanggit na, ang direksyon ng pag-ikot ay maaaring matukoy kung alin sa mga signal ng output ay nagbago dati, ngunit ito ay kung paano ito nakikita sa pagsasanay!

Ang katumpakan ng kontrol ay nakasalalay sa paglutas ng encoder - ang bilang ng mga pulses bawat rebolusyon. Ang bilang ng mga pulso ay maaaring mula sa mga yunit hanggang libu-libong mga piraso. Dahil ang encoder ay maaaring kumilos bilang isang sensor ng posisyon, mas maraming mga pulses, mas tumpak ang pagpapasiya ay magaganap.Ang parameter na ito ay tinukoy bilang PPR - pulso bawat rebolusyon.
Ngunit mayroong isang maliit na nuance, lalo, ang isang katulad na pagtatalaga na LPR ay ang bilang ng mga label sa disk.
At ang bilang ng mga naproseso na pulso. Ang bawat label sa disk ay nagbibigay ng 1 hugis-parihaba na pulso sa bawat isa sa dalawang mga output. Ang salpok ay may dalawang fronts - ang likuran at harap. Dahil mayroong dalawang paraan, nakakakuha kami ng 4 na pulso sa kabuuan mula sa bawat isa sa kanila, ang mga halaga na maaari mong iproseso.
PPR = LPRx4
Kumonekta sa Arduino
Nalaman namin kung ano ang kailangan mong malaman tungkol sa dumadagdag encoder, ngayon alamin kung paano ikonekta ito sa Arduino. Isaalang-alang ang diagram ng koneksyon:

Ang isang module ng encoder ay ang board kung saan matatagpuan ang incremental encoder at pull-up resistors. Maaari mong gamitin ang anumang mga pin.

Kung wala kang module, ngunit isang hiwalay na encoder, kailangan mo lamang idagdag ang mga resistors na ito, ang circuit ay hindi magkakaiba sa prinsipyo. Upang suriin ang direksyon ng pag-ikot at kakayahang magamit nito kasabay ni Arduino maaari naming basahin ang impormasyon mula sa serial port.

Suriin natin ang code nang mas detalyado, sa pagkakasunud-sunod. Sa walang bisa setup (), inihayag namin na gagamitin namin ang komunikasyon sa pamamagitan ng serial port, at pagkatapos ay magtakda ng mga pin 2 at 8 sa mode ng pag-input. Piliin ang mga numero ng pin mismo batay sa iyong scheme ng koneksyon. Ang INPUT_PULLUP patuloy na nagtatakda ng mode ng pag-input, ang arduino ay may dalawang pagpipilian:
-
INPUT - input nang walang pull-up resistors;
-
INPUT_PULLUP - koneksyon sa input ng mga pull-up resistors. Mayroon nang mga resistor sa loob ng microcontroller kung saan ang input ay konektado sa power plus (pullup).
Kung gumagamit ka ng mga resistor upang higpitan ang lakas kasama ang ipinapakita sa mga diagram sa itaas o gamitin ang module ng encoder - gamitin ang utos INPUT, at kung sa ilang kadahilanan ay hindi mo nais o ayaw mong gumamit ng mga panlabas na resistors - INPUT_PULLUP.
Ang lohika ng pangunahing programa ay ang mga sumusunod: kung mayroon kaming isa sa input na "2", naglalabas ito ng port H sa monitor, kung hindi, L. Samakatuwid, kapag umiikot ka sa parehong direksyon sa monitor ng serial port, makakakuha ka ng isang bagay tulad nito: LL HL HH LH LL. At kabaligtaran: LL LH HH HL LL.
Kung maingat mong basahin ang mga linya, marahil ay napansin mo na sa isang kaso ang unang karakter ay nakakuha ng isang halaga, at sa ibang kaso, ang pangalawang character ay unang nagbago.
Konklusyon
Ang mga incremental encoder ay natagpuan ang malawak na praktikal na aplikasyon sa mga amplifier para sa mga sistema ng acoustic - ginamit sila bilang isang control ng dami, sa mga radio radio - upang ayusin ang mga tunog na mga parameter at mag-navigate sa mga menu, sa mga computer mice kasama nito mag-scroll ka ng mga araw-araw (ang isang gulong ay naka-install sa baras nito) . At din sa pagsukat ng mga tool, mga machine ng CNC, mga robot, selsyn hindi lamang bilang mga kontrol, kundi pati na rin ang pagsukat ng mga halaga at pagtukoy ng posisyon.
Tingnan din sa electro-tl.tomathouse.com
: