
Mündəricat:
2025 Müəllif: John Day | [email protected]. Son dəyişdirildi: 2025-01-23 12:54



Bu təlimat, Arduino Uno R3 istifadə edərək ardıcıl dönən bir kodlayıcının kodunu açmağın sadə bir üsulunu təsvir edir.
Kompakt proqram rutinləri keçid sayını saymaq, təmas sıçrayışını aradan qaldırmaq və fırlanma istiqamətini təyin etmək üçün istifadə olunur. Əlavə komponentlər və axtarış cədvəlləri tələb olunmur.
Kodun fasilə və fasiləsiz versiyaları verilir.
Kodun kəsilmə versiyası yalnız bir kəsmə pininə ehtiyac duyur.
Şəkillər:
- Açılış fotoşəkili yığılmış kodlayıcıyı göstərir.
- Ekran görüntüsü, kəsmə versiyasının kodunu və enkoder şaftı saat yönünde və saat əqrəbinin əksinə döndüyündə sayını göstərir.
- Videoda sürətli fırlanma zamanı sayım göstərilir.
Addım 1: Dövrə Şeması

Enkoderin bağlama diaqramı şəkil 1 -də göstərilmişdir.
Atlama telləri birbaşa kodlayıcı pinlərinə lehimlənir.
Sayma istiqaməti əksinə olarsa, iki mavi teli dəyişdirin.
Addım 2: Parça siyahısı
Aşağıdakı hissələr https://www.aliexpress.com/ saytından əldə edilmişdir.
- USB kabel ilə yalnız 1 Arduino UNO R3.
- 1 yalnız açarı olan ardıcıl fırlanan kodlayıcı (EC11 və ya ekvivalenti).
- Milə uyğun olan yalnız 1 düymə.
- 3 yalnız Arduino kişidən kişiyə keçid telləri.
Addım 3: nəzəriyyə

Ardıcıl fırlanan kodlayıcılar, hər biri Şəkil 1-də göstərildiyi kimi 90 dərəcə yerdəyişən iki kvadrat dalğa yaradır.
Kontakt A və Kontaktı B -də məntiq nümunələri, mil 1 -dən 6 -cı mövqelərə qədər saat yönünde (CW) və saat əqrəbinin əksinə (CCW) döndərildikdə fərqlidir.
Dönmə istiqamətini təyin etməyin ümumi üsulları bunlardır:
- aparat
- əkiz kəsmə
- model axtarış masaları
Bu layihə, axtarış masaları tələb etməyən bir proqram metodundan istifadə edir. [1]
İstiqamət
Əlaqə A və Əlaqə B -dən çıxış nümunələrinə baxmaq əvəzinə A Kontaktına diqqət edək.
Hər Əlaqə A keçidindən sonra B Əlaqəsini nümunə götürsək, qeyd edirik:
- Kontakt A və B Əlaqəsi, kodlayıcı CW döndərildikdə əks məntiq vəziyyətlərinə malikdir
- Kontakt A və B Əlaqəsi, kodlayıcı CCW döndərildikdə eyni məntiq vəziyyətinə malikdir
Həqiqi kod:
// ----- Keçidləri sayın
CurrentStateA = stateContactA (); if (CurrentStateA! = LastStateA) {CurrentStateB = digitalRead (ContactB); if (CurrentStateA == CurrentStateB) Count ++; if (CurrentStateA! = CurrentStateB) Count--; LastStateA = CurrentStateA; }
Bu üsul aşağıdakı üstünlükləri təqdim edir:
- axtarış masaları tələb olunmur
- yalnız bir fasilə xətti tələb olunur
Çıxmaq
Bütün mexaniki kodlayıcılar "əlaqə sıçrayışından" əziyyət çəkirlər.
Bir keçid kontaktı təmiz bir şəkildə açmazsa/açmazsa, məntiq vəziyyəti, keçid kontağı oturana qədər YÜKSƏDƏN LOW -a qədər sürətlə salınacaq. Bu, yanlış hesablamalarla nəticələnir.
Kontakt sıçrayışını basdırmağın bir yolu, hər keçid kontaktına kiçik bir kondansatör əlavə etməkdir. Kondansatör və əlaqəli çəkmə rezistoru yüksək tezlikləri təsirli şəkildə qısaldan və açar gərginliyinin zərif bir şəkildə yüksəlməsinə/düşməsinə imkan verən bir inteqrator təşkil edir.
Bu yanaşmanın dezavantajı, enkoder şaftı sürətlə döndərilərsə keçidlərin qaçırıla bilməsidir.
Proqramın ləğvi
Bu üsul sıfıra təyin edilmiş iki sayğacdan (Açıq, Qapalı) istifadə edir. [2]
A Kontaktında keçid aşkar edildikdə:
- Əlaqə A. ilə davamlı olaraq sorğu aparın.
- Açıq sayğacı artırın və A Kontaktı YÜKSƏK olduqda Qapalı sayğacı sıfırlayın.
- Bağlı sayğacı artırın və A saytı aşağı olduqda Açıq sayğacı sıfırlayın.
- Sayğaclardan biri əvvəlcədən müəyyən edilmiş saya çatdıqda döngədən çıxın. Hər hansı bir əlaqə sıçrayışından sonra sabit vəziyyət dövrünü effektiv şəkildə axtarırıq.
Həqiqi kod:
// ----- Əlaqədən çıxın A
while (1) {if (digitalRead (ContactA)) {// ----- ContactA Open Closed = 0; // Boş əks inteqrator Open ++; // İnteqrasiya edin (Aç> MaxCount) YÜKSƏK qaytararsa; } else {// ----- ContactA Bağlıdır Açıq = 0; // Boş əks inteqrator Qapalı ++; // (Qapalı> MaxCount) LOW aşağı qaytarsa inteqrasiya edin; }}
Kontakt A və Kontak B keçişləri üst -üstə düşmədiyindən B Əlaqəsini ləğv etməyə ehtiyac yoxdur.
Saymaq
Mexanik bir "tutma", klik arasında iki say qeydə alındığı üçün sayınızı təsirli şəkildə iki qat artırır (bax şəkil 1).
"Tutulanların" sayı aşağıda göstərildiyi kimi modulo 2 arifmetikindən istifadə etməklə müəyyən edilə bilər.
Həqiqi kod:
// ----- "saxlanılanları" sayın
if (Say % 2 == 0) {Serial.print ("Say:"); Serial.println (Count / 2); }
İstinadlar
Əlavə məlumatı buradan əldə etmək olar:
[1]
howtomechatronics.com/tutorials/arduino/ro…
[2]
newbiehack.com/ButtonorSwitchDebounceinSof…
Addım 4: Proqram təminatı
Bu layihə, https://www.arduino.cc/en/main/software saytında mövcud olan Ardino Uno R3 IDE (inteqrasiya edilmiş inkişaf mühiti) son versiyasını tələb edir.
Aşağıdakı iki Arduino eskizinin hər birini yükləyin (əlavə olunur)
- rotary_encoder_1.ino (sorğu versiyası)
- rotary_encoder_2.no (kəsmə versiyası)
İstədiyiniz versiyanı iki dəfə vurun və ekrandakı təlimatları izləyin.
Zövq alın…
Digər təlimatlarımı görmək üçün bura vurun.
Tövsiyə:
Kitabxana olmadan RC5 Uzaqdan İdarəetmə Protokolu Dekoder: 4 Addım

Kitabxanasız RC5 Uzaqdan İdarəetmə Protokolu Dekoder: rc5 -in kodunu açmadan əvvəl əvvəlcə rc5 əmrinin nə olduğunu və onun quruluşunu müzakirə edirik. televizorlarda, cd pleyerlərdə, d2h, ev kinoteatr sistemlərində və s
İnfraqırmızı NEC Protokol Kodlayıcısı və Dekoder Kartı: 5 addım

İnfraqırmızı NEC Protokol Encoder və Kod Çözücü Kartı: Xam modulyasiya edilmiş və ya demodulyasiya edilmiş NEC IR siqnalını alır və serial portdan göndərilən baytlara çevirir. Serial baud dərəcəsi iki standart sürətdən seçilə bilər. Varsayılan istifadə rejimi, çərçivə baytlı bir əmr ardıcıllığını ötürür
Basys 3 Mors Dekoder: 11 addım

Basys 3 Morse Decoder: Bu, bir kollec sinfi üçün bir layihədir. Bu layihə VHDL -də Vivado adlı bir proqramda yazılmışdır. Basys 3 lövhəsini istifadə edərək Morse Decoder tətbiq etmək üçün lazım olan bütün modulları yaratmaq vəzifələri. Lövhə, bir mişardan mors kodu almaq üçün istifadə olunur
Arduino Magnetic Stripe Dekoder: 4 Addım (Şəkillərlə birlikdə)

Arduino Magnetic Stripe Decoder: Bu təlimat, ilham aldığım kredit kartları, tələbə sənədləri və s. bunu sonra yaz
Dekoder Vizit Kartı - QR Kodlu Gizli Mesaj: 6 Addım (Şəkillərlə birlikdə)

Dekoder Vizit Kartı - QR Kodlu Gizli Mesaj: Yaxşı bir vizit kartına sahib olmaq, əlaqələrinizi qorumağa, özünüzü və işinizi tanıtmağa və dost qazanmağa kömək edə bilər. Alıcının kartınızı aktiv şəkildə tərcümə etməsini ehtiva edən şəxsi vizit kartı yaratmaqla onu xatırlamaq ehtimalını artıracaqsınız