Orodha ya maudhui:

Suluhisho kamili la Rotary Arduino: Hatua 5
Suluhisho kamili la Rotary Arduino: Hatua 5

Video: Suluhisho kamili la Rotary Arduino: Hatua 5

Video: Suluhisho kamili la Rotary Arduino: Hatua 5
Video: заполнитель бутылки csd, машина завалки бутылки горячего заполнения 2019 2024, Julai
Anonim
Suluhisho kamili ya Rotary Arduino
Suluhisho kamili ya Rotary Arduino

Encoders za Rotary ni vifungo vya kudhibiti vinavyogeuzwa kwa miradi ya elektroniki, ambayo hutumiwa mara kwa mara na watawala wadogowadogo wa familia ya Arduino. Wanaweza kutumiwa kurekebisha vigezo, tembea menyu, songa vitu kwenye skrini, weka maadili ya aina yoyote. Ni ubadilishaji wa kawaida wa potentiometers, kwa sababu zinaweza kuzungushwa kwa usahihi na bila kikomo, zinaongeza au kupunguza thamani moja kwa wakati mmoja, na mara nyingi hujumuishwa na swichi inayoweza kusukumwa kwa kazi za aina ya uteuzi. Zinakuja katika maumbo na saizi zote, lakini bei ya chini kabisa ni ngumu ku-unganisha nayo kama ilivyoelezwa hapo chini.

Kuna nakala nyingi juu ya maelezo ya kazi na njia za matumizi ya encoders za Rotary, na nambari kadhaa za sampuli na maktaba juu ya jinsi ya kuzitumia. Shida pekee ni kwamba hakuna hata mmoja wao anafanya kazi 100% sahihi na bei ya chini kabisa ya moduli za rotary za Wachina.

Hatua ya 1: Encoders za Rotary Ndani

Encoders za Rotary Ndani
Encoders za Rotary Ndani
Encoders za Rotary Ndani
Encoders za Rotary Ndani
Encoders za Rotary Ndani
Encoders za Rotary Ndani

Sehemu ya kuzunguka ya kisimbuzi ina pini tatu (na mbili zaidi kwa sehemu ya ubadilishaji wa hiari). Moja ni ardhi ya kawaida (nyeusi GND), zingine mbili ni za kuamua mwelekeo wakati kitovu kimegeuzwa (mara nyingi huitwa bluu CLK na nyekundu DT). Zote hizi zimeambatanishwa na pini ya kuingiza ya PULLUP ya microcontroller, na kufanya kiwango cha HIGH kisomee chaguomsingi. Wakati kitovu kimegeuzwa mbele (au saa moja kwa moja), kwanza CLK ya hudhurungi huanguka kwa kiwango cha chini, halafu DT nyekundu ifuatavyo. Kugeukia zaidi, CLK ya hudhurungi huinuka kurudi juu, halafu kama kiraka cha kawaida cha GND kinaacha pini zote mbili za unganisho, DT nyekundu pia huinuka kurudi juu. Kwa hivyo kukamilisha kupe kamili kamili ya FWD (au saa moja kwa moja). Same inakwenda mwelekeo mwingine BWD (au kinyume na saa), lakini sasa nyekundu huanguka kwanza, na bluu huinuka nyuma kama inavyoonyeshwa kwenye picha za ngazi mbili mtawaliwa.

Hatua ya 2: Mateso ambayo husababisha maumivu ya kweli kwa wengi

Shida Inayosababisha Maumivu Ya Kweli Kwa Wengi
Shida Inayosababisha Maumivu Ya Kweli Kwa Wengi
Shida Inayosababisha Maumivu Ya Kweli Kwa Wengi
Shida Inayosababisha Maumivu Ya Kweli Kwa Wengi
Shida Inayosababisha Maumivu Ya Kweli Kwa Wengi
Shida Inayosababisha Maumivu Ya Kweli Kwa Wengi

Shida ya kawaida kwa wanaovutia wa Arduino, moduli hizo za bei rahisi za usimbuaji Rotary zinabadilisha mabadiliko ya ziada katika viwango vya pato, na kusababisha usomaji wa hesabu za mwelekeo wa ziada na usiofaa. Hii inazuia kuhesabu bila makosa na inafanya kuwa ngumu kuingiza moduli hizi katika miradi sahihi ya rotary. Vipuli hivi vya ziada husababishwa na harakati za kiufundi za viraka juu ya pini za unganisho, na hata kutumia vitendaji vya ziada haziwezi kuziondoa kabisa. Bounces zinaweza kuonekana popote katika mizunguko kamili ya kupe, na zinaonyeshwa na hali halisi za maisha kwenye picha.

Hatua ya 3: Suluhisho la Mashine ya Jimbo (FSM)

Solution Mashine ya Jimbo (FSM)
Solution Mashine ya Jimbo (FSM)

Picha inaonyesha nafasi kamili ya hali ya mabadiliko ya kiwango kinachowezekana kwa pini mbili (bluu CLK na nyekundu DT), zote kwa bounces sahihi na za uwongo. Kulingana na mashine hii ya serikali suluhisho kamili inaweza kusanidiwa ambayo inafanya kazi kwa usahihi kila wakati kwa 100%. Kwa sababu hakuna ucheleweshaji wa uchujaji unaohitajika katika suluhisho hili, pia ni haraka iwezekanavyo. Faida nyingine ya kutenganisha nafasi ya hali ya pini kutoka kwa njia ya kufanya kazi ni kwamba mtu anaweza kutumia njia zote za kupigia kura au kukatiza kwa kupenda kwake mwenyewe. Kupiga kura au kukatiza kunaweza kugundua mabadiliko ya kiwango kwenye pini na utaratibu tofauti utahesabu hali mpya kulingana na hali ya sasa na hafla halisi za mabadiliko ya kiwango.

Hatua ya 4: Msimbo wa Arduino

Msimbo wa Arduino
Msimbo wa Arduino

Nambari hapa chini inahesabu kupe za FWD na BWD kwenye mfuatiliaji wa serial na pia inaunganisha kazi ya kubadili hiari.

// Peter Csurgay 2019-04-10

// Pini za rotary iliyopangwa kwa bandari za Arduino

#fafanua SW 21 #fafanua CLK 22 #fafanua DT 23

// Thamani ya sasa na ya zamani ya kaunta iliyoangaziwa na rotary

int curVal = 0; int prevVal = 0;

// Majimbo saba ya FSM (mashine ya serikali yenye mipaka)

#fafanua IDLE_11 0 #fafanua SCLK_01 1 #fafanua SCLK_00 2 #fafanua SCLK_10 3 #fafanua SDT_10 4 #fafanua SDT_00 5 #fafanua SDT_01 6 int state = IDLE_11;

usanidi batili () {

Serial. Kuanza (250000); Serial.println ("Anza…"); // Kiwango cha juu kitakuwa chaguomsingi kwa pini zote za PinMode (SW, INPUT_PULLUP); pinMode (CLK, INPUT_PULLUP); pinMode (DT, INPUT_PULLUP); // Wote CLK na DT watasababisha usumbufu kwa mabadiliko yote ya kiwango ambatanishaInterrupt (digitalPinToInterrupt (CLK), rotaryCLK, CHANGE); ambatishaKukatisha (digitalPinToInterrupt (DT), rotaryDT, MABADILIKO); }

kitanzi batili () {

// Kushughulikia swichi ya hiari iliyojumuishwa kwenye encoders kadhaa za rotary ikiwa (digitalRead (SW) == LOW) {Serial.println ("Pressed"); wakati (! digitalRead (SW)); } // Mabadiliko yoyote ya thamani ya kukanusha yanaonyeshwa kwenye Serial Monitor ikiwa (curVal! = PrevVal) {Serial.println (curVal); prevVal = curVal; }}

// Mabadiliko ya Mashine ya Serikali kwa mabadiliko ya kiwango cha CLK

rotary batiliCLK () {if (digitalRead (CLK) == LOW) {if (state == IDLE_11) state = SCLK_01; vinginevyo ikiwa (hali == SCLK_10) hali = SCLK_00; vinginevyo ikiwa (state == SDT_10) state = SDT_00; } mwingine {if (state == SCLK_01) state = IDLE_11; vinginevyo ikiwa (hali == SCLK_00) hali = SCLK_10; vinginevyo ikiwa (state == SDT_00) state = SDT_10; vinginevyo ikiwa (hali == SDT_01) {state = IDLE_11; curVal -; }}}

// Mabadiliko ya Mashine ya Serikali kwa mabadiliko ya kiwango cha DT

batili rotaryDT () {if (digitalRead (DT) == LOW) {if (state == IDLE_11) state = SDT_10; vinginevyo ikiwa (state == SDT_01) state = SDT_00; kingine ikiwa (state == SCLK_01) state = SCLK_00; } kingine {if (state == SDT_10) state = IDLE_11; vinginevyo ikiwa (state == SDT_00) state = SDT_01; kingine ikiwa (state == SCLK_00) state = SCLK_01; vinginevyo ikiwa (hali == SCLK_10) {state = IDLE_11; curVal ++; }}}

Hatua ya 5: Jumuishi isiyo na kasoro

Unaweza kuangalia kwenye video iliyoambatishwa kuwa suluhisho la FSM hufanya kazi kwa usahihi na haraka hata ikiwa kuna encoders za rotary za anuwai na athari kadhaa za kupunguka mara kwa mara.

Ilipendekeza: