İçindekiler:
Video: Basit Döner Şifre Çözücü: 4 Adım
2024 Yazar: John Day | [email protected]. Son düzenleme: 2024-01-30 13:19
Bu talimat, bir Arduino Uno R3 kullanarak sıralı bir döner kodlayıcının kodunu çözmenin basit bir yöntemini açıklar.
Geçişlerin sayısını saymak, temas sıçramasını ortadan kaldırmak ve dönüş yönünü belirlemek için kompakt yazılım rutinleri kullanılır. Ek bileşenler ve arama tabloları gerekli değildir.
Kodun kesintili ve kesintisiz sürümleri sağlanır.
Kodun kesme versiyonu sadece tek bir kesme pini gerektirir.
Görüntüler:
- Açılış fotoğrafı, monte edilmiş kodlayıcıyı gösterir.
- Ekran görüntüsü, kesme versiyonunun kodunu ve enkoder şaftının saat yönünde ve saat yönünün tersine döndürülmesinin sayısını gösterir.
- Video, hızlı dönüş sırasında sayımı gösterir.
Adım 1: Devre Şeması
Enkoder bağlantı şeması şekil 1'de gösterilmiştir.
Atlama telleri doğrudan kodlayıcı pinlerine lehimlenmiştir.
Sayım yönü ters ise iki mavi kabloyu değiştirin.
Adım 2: Parça Listesi
Aşağıdaki parçalar https://www.aliexpress.com/ adresinden alınmıştır.
- 1 sadece USB Kablolu Arduino UNO R3.
- 1 sadece anahtarlı sıralı döner kodlayıcı (EC11 veya eşdeğeri).
- 1 sadece şafta uygun düğme.
- 3 sadece Arduino erkekten erkeğe atlama kablosu.
3. Adım: Teori
Sıralı döner kodlayıcılar, Şekil 1'de gösterildiği gibi her biri 90 derece yer değiştiren iki kare dalga üretir.
Şaft 1 ila 6 konumları arasında saat yönünde (CW) ve saat yönünün tersine (CCW) döndürüldüğünde Kontak A ve Kontak B'deki mantık düzenleri farklıdır.
Dönme yönünü belirlemenin yaygın yöntemleri şunları içerir:
- donanım
- ikiz kesintiler
- desen arama tabloları
Bu proje, arama tabloları gerektirmeyen bir yazılım yöntemi kullanır. [1]
Yön
A Kişisi ve B Kişisinden gelen çıktı modellerine bakmak yerine, A Kişisine odaklanalım.
Her A Kişisi geçişinden sonra B Kişisini örnek alırsak şunları not ederiz:
- Enkoder CW döndürüldüğünde A Kontağı ve B Kontağı zıt mantık durumlarına sahiptir.
- Enkoder CCW döndürüldüğünde A Kontağı ve B Kontağı aynı mantık durumuna sahiptir
Gerçek kod:
// ----- Geçişleri say
CurrentStateA = stateContactA(); if (CurrentStateA != LastStateA) { CurrentStateB = digitalRead(ContactB); if (CurrentStateA == CurrentStateB) Count++; if (CurrentStateA != CurrentStateB) Sayım--; LastStateA = CurrentStateA; }
Bu yöntem aşağıdaki avantajları sunar:
- arama tabloları gerekli değildir
- sadece tek bir kesme hattı gereklidir
geri tepme
Tüm mekanik kodlayıcılar "temas sıçramasından" muzdariptir.
Bir anahtar kontağı temiz bir şekilde yapmaz/kesmezse, mantık durumu, anahtar kontağı yerleşene kadar YÜKSEK'ten DÜŞÜK'e hızla salınır. Bu yanlış sayımlara neden olur.
Kontak sıçramasını bastırmak için bir yöntem, her bir anahtar kontağı boyunca küçük bir kapasitör eklemektir. Kondansatör ve ilgili çekme direnci, yüksek frekansları etkin bir şekilde kısaltan ve anahtar voltajının zarif bir şekilde yükselmesine/düşüşüne izin veren bir entegratör oluşturur.
Bu yaklaşımın dezavantajı, enkoder şaftı hızla döndürülürse geçişlerin kaçırılabilmesidir.
Yazılım Geri Dönme
Bu yöntem, sıfıra ayarlanmış iki sayaç (Açık, Kapalı) kullanır. [2]
A Kişisinde bir geçiş algılandığında:
- Sürekli anket A Kişisi.
- Kontak A YÜKSEK olduğunda Açık sayacını artırın ve Kapalı sayacı sıfırlayın.
- A Kontağı DÜŞÜK olduğunda Kapalı sayacı artırın ve Açık sayacı sıfırlayın.
- Sayaçlardan biri önceden belirlenmiş bir sayıma ulaştığında döngüden çıkın. Herhangi bir temas sıçramasının ardından etkin bir şekilde kararlı durum periyodunu arıyoruz.
Gerçek kod:
// ----- A Kişisini Geri Döndür
while (1) { if (digitalRead(ContactA)) { // ----- ContactA Açık Kapalı = 0; // Boş karşıt entegratör Open++; // Eğer (Aç > MaxCount) HIGH döndürürse entegre et; } else { // ----- ContactA Kapalı Açık = 0; // Boş karşıt entegratör Kapalı++; // Eğer (Kapalı > MaxCount) LOW dönerse entegre et; } }
Kontak A ve Kontak B geçişleri çakışmadığından B Kontağının geri dönmesine gerek yoktur.
sayma
Mekanik bir "tetik", tıklamalar arasında iki sayı kaydedildiği için sayınızı etkili bir şekilde ikiye katlar (bkz. şekil 1).
"Detant" sayısı, aşağıda gösterildiği gibi modulo 2 aritmetiği kullanılarak belirlenebilir.
Gerçek kod:
// ----- "tutukları" say
if (Sayı % 2 == 0) { Serial.print("Sayı: "); Seri.println(Sayı / 2); }
Referanslar
Daha fazla bilgi şurada bulunabilir:
[1]
howtomechatronics.com/tutorials/arduino/ro…
[2]
newbiehack.com/ButtonorSwitchDebounceinSof…
4. Adım: Yazılım
Bu proje, https://www.arduino.cc/en/main/software adresinde bulunan Ardino Uno R3 IDE'nin (entegre geliştirme ortamı) yeni bir sürümünü gerektirir.
Aşağıdaki iki Arduino çiziminin her birini indirin (ekli)
- rotary_encoder_1.ino (yoklama versiyonu)
- rotary_encoder_2.no (kesme versiyonu)
Tercih ettiğiniz sürüme çift tıklayın ve ekrandaki talimatları izleyin.
Eğlence …
Diğer talimatlarımı görüntülemek için buraya tıklayın.
Önerilen:
Şifre Koruma Programı: 4 Adım
Parola Koruma Programı: Bu, bir bilgisayar parolasını gizlemenin bir yoludur. Değerli verileri korumanıza izin verir, ancak unutulan bir şifreyi çok fazla zorluk çekmeden kurtarmanıza da izin verir. Çözümlerin en pratiki olmasa da, bu fikir kesinlikle çok
Basit Bir DTMF (ton) Telefon Hattı Şifre Çözücü Nasıl Yapılır: 3 Adım
Basit Bir DTMF (ton) Telefon Hattı Şifre Çözücü Nasıl Yapılır: Bu, temel olarak herhangi bir telefon hattında DTMF sinyallerini çözmenizi sağlayan basit bir projedir. Bu eğitimde, MT8870D kod çözücüyü kullanıyoruz. Önceden oluşturulmuş bir ton dekoderi kullanıyoruz çünkü inanın bana, arkada denemek ve bunu yapmak için bir acı
Kaçış Odası Şifre Çözücü Kutusu: 7 Adım (Resimlerle)
Kaçış Odası Şifre Çözücü Kutusu: Kaçış Odaları, son derece ilgi çekici ve ekip çalışması için harika olan son derece eğlenceli aktivitelerdir. Kendi Kaçış Odanızı yaratmayı hiç düşündünüz mü? Peki, bu dekoder kutusuyla yolunuza devam edebilirsiniz! Daha da iyisi es kullanmayı düşündünüz mü
Not Defteri Kullanarak Basit Mesaj Şifreleyici/Şifre Çözücü Oluşturun: 5 Adım
Not Defteri Kullanarak Basit Mesaj Şifreleyici/Şifre Çözücü Oluşturun: Merhaba, bu Basit HTML Uygulaması ile mesajınızı şifre ile Şifreleyebilir ve Şifresini Çözebilirsiniz. Her şeyden önce size nasıl oluşturulacağını göstereceğim ve sonra nasıl kullanılacağını göstereceğim. Hadi başlayalım
Aruino Pro Micro'da Şifre Saklayıcı veya Ayrıntılı Bir Yol Varken Neden Basit Tutun!: 15 Adım (Resimlerle)
Aruino Pro Micro'da Parola Saklayıcı veya Ayrıntılı Bir Yol Varken Neden Basit Tutun!: Görünüşe göre, elektronik hayranları (özellikle yeni başlayanlar) için mikrodenetleyicilerle ilgili temel sorun, bunları nerede uygulayacaklarını bulmaktır:) Günümüzde elektronikler, özellikle dijital olanlar , giderek daha fazla kara büyü gibi görünüyor. Sadece 80-Lvl sihirbazlar