Mundarija:
2025 Muallif: John Day | [email protected]. Oxirgi o'zgartirilgan: 2025-01-13 06:58
Rotary enkoder - bu elektron komponent bo'lib, u aylanayotganda harakat va holatni kuzatishi mumkin. Rotary enkoder optik datchiklardan foydalanadi, ular aylanuvchi enkoder aylanganda impuls hosil qiladi. Aylanadigan kodlovchi odatda mexanik yoki robotli harakat monitor sifatida qo'llanilishi, shuningdek, displeyda menyuni tanlash uchun ishlatilishi mumkin. Rotary enkoderning ikkita chiqishi bor, u salbiy (CW) va musbat (CCW) aylanishni farqlay oladi va bitta tugmachaga ega.
1 -qadam: Rotary enkoderning puls oqimi
Quyidagi aylanadigan kodlovchi tomonidan hosil bo'ladigan impuls oqimi yuqoridagi rasmga o'xshaydi.
2 -qadam: Rotary Enkoderni ajratish
Tushuntirish:
- GND GND
- + 5V
- Bosilganda aylanadigan kodlovchi SW tugmasi
- DT ma'lumotlari
- CLK ma'lumotlari 2
DT yoki CLK pinlaridan biri Arduino Uno uzilish oyog'iga ulangan bo'lishi kerak, yoki DT va CLK ikkalasi ham uzilish pimiga ulangan bo'lishi kerak.
3 -qadam: sxematik
- GND va GND Arduino Uno
- + 5 + Arduino Uno
- SW à PIN 4 Arduino Uno
- PIN kod 3 Arduino Uno
- CLK va PIN2 Arduino Uno
4 -qadam: kod
Keyingi o'quv qo'llanmada Arduino Uno -ning PIN -2 -si uzilish sifatida ishlatiladi, PIN -3 esa oddiy kirish sifatida ishlatiladi.
#define encoder0PinA 2 #encoder0PinB 3 ni belgilang # #encoder0Btn 4 int encoder0Pos = 0; void setup () {Serial.begin (9600); pinMode (kodlovchi0PinA, INPUT_PULLUP); pinMode (kodlovchi0PinB, INPUT_PULLUP); pinMode (kodlovchi0Btn, INPUT_PULLUP); attachInterrupt (0, doEncoder, CHANGE); } int valRotary, lastValRotary; void loop () {int btn = digitalRead (encoder0Btn); Serial.print (btn); Serial.print (""); Ketma -ket chop etish (valRotary); if (valRotary> lastValRotary) {Serial.print ("CW"); } agar (valRotary {
Serial.print ("CCW");
} lastValRotary = valRotary; Serial.println (""); kechikish (250); } void doEncoder () {if (digitalRead (encoder0PinA) == digitalRead (encoder0PinB)) {encoder0Pos ++; } boshqa {encoder0Pos--; } valRotary = kodlovchi0Pos/2.5; }
Yuqoridagi eskizning 10 -qatorida Arduino Uno 2 -pinining uzilishini ta'minlash uchun foydalaniladi. "DoEncoder" funktsiyasida aylanadigan kodlovchi hisoblab chiqiladi. Agar DT va CLK (Arduino Uno -ning pinli uzilishi) qiymati bir xil bo'lsa, "encoder0Pos" o'zgaruvchisi ortadi / qo'shiladi, bu shartga qo'shimcha ravishda "encoder0Pos" o'zgaruvchisi kamayadi.
5 -qadam: tushuntirish
ValRotary qiymati - bu bajarilgan qadamlar sonining qiymati. ValRotary qiymati aylanadigan sensorli kodlovchi o'qish qiymatidan 2,5 ga bo'linadi. Tekshiruvdan 2,5 qiymat olinadi, chunki aylanuvchi kodlovchi bir qadam 1dan oshishi mumkin, shuning uchun uning qiymatiga 2,5 ga bo'linadi va o'qish kechiktirilishi qo'shiladi.
19 - 25 -qatorda - aylanadigan CW yoki CCW aylanadigan kodlovchi ekanligini aniqlash dasturi. 19-25 -qatorlarning tushuntirishlari, aylanuvchi kodlovchi o'qilishi oldingi aylanuvchi ma'lumotlardan kattaroq, keyin CW sifatida ifodalanadi. Agar hozirgi o'qish oldingi o'qishdan kichik bo'lsa, u CCW sifatida belgilanadi.
6 -qadam: Chiqish
1 = aylanmagan tugmachaning boshlang'ich tugmasi