أ تشفير الدوران هو مستشعر يحول الحركة الدورانية إلى إشارات رقمية ، مما يسمح بالتحكم الدقيق في الموضع والسرعة والاتجاه. يستخدم عادة في ضوابط الصوت ، الروبوتات ، آلات CNC ، والتنقل في القائمة. سيوضح لك هذا الدليل كيفية إعداد واستخدام تشفير دوار مع Raspberry Pi باستخدام Python.
ماذا ستحتاج
- التوت بي (أي نموذج يحمل دعم GPIO ، على سبيل المثال ، PI 3 ، PI 4)
- الترميز الدوار (على سبيل المثال ، KY-040)
- الأسلاك الأسلاك والبلوز
- بيثون مثبت على التوت PI
الخطوة 1: فهم كيفية عمل المشفر الدوار
أ تشفير الدوران له مخرجان رئيسيان:
- CLK (أ) - إشارة نبض الساعة
- DT (ب) - إشارة الاتجاه
- جنوب غرب (خياري) - زر الضغط (يستخدم لتحديد الخيارات)
عندما تدور ، و تولد دبابيس CLK و DT نبضات. يحدد ترتيب هذه البقول اتجاه الدوران.
الخطوة 2: توصيل المشفر الدوار إلى Raspberry Pi
دبوس التشفير الدوار | التوت بي دبوس | وظيفة |
---|---|---|
VCC | 3.3V (دبوس 1) | مزود الطاقة |
GND | الأرض (دبوس 6) | أرضي |
CLK (أ) | GPIO17 (PIN 11) | نبض الساعة |
DT (ب) | GPIO27 (PIN 13) | إشارة الاتجاه |
SW (زر) | GPIO22 (دبوس 15) | اضغط على زر |
الخطوة 3: تثبيت المكتبات المطلوبة
قم بتحديث Raspberry Pi وتثبيت ملف rpi.gpio مكتبة للتعامل مع المقاطعات GPIO.
sudo apt update && sudo apt upgrade -y
sudo apt install python3-rpi.gpio
الخطوة 4: رمز Python لقراءة مدخلات التشفير الدوار
رمز بيثون الأساسي لقراءة الدوران
import RPi.GPIO as GPIO
import time
# Define GPIO pins
CLK = 17
DT = 27
counter = 0
last_state = None
# Setup GPIO
GPIO.setmode(GPIO.BCM)
GPIO.setup(CLK, GPIO.IN, pull_up_down=GPIO.PUD_UP)
GPIO.setup(DT, GPIO.IN, pull_up_down=GPIO.PUD_UP)
# Read initial state
last_state = GPIO.input(CLK)
try:
while True:
current_state = GPIO.input(CLK)
if current_state != last_state:
if GPIO.input(DT) != current_state:
counter += 1
direction = "Clockwise"
else:
counter -= 1
direction = "Counterclockwise"
print(f"Position: {counter}, Direction: {direction}")
last_state = current_state
time.sleep(0.01) # Debounce delay
except KeyboardInterrupt:
print("Exiting...")
finally:
GPIO.cleanup()
إضافة زر اضغط على الكشف
# Define button pin
SW = 22
GPIO.setup(SW, GPIO.IN, pull_up_down=GPIO.PUD_UP)
def button_pressed(channel):
print("Button Pressed!")
# Add event detection for button press
GPIO.add_event_detect(SW, GPIO.FALLING, callback=button_pressed, bouncetime=300)
الخطوة 5: تطبيقات الترميز الدوار مع Raspberry Pi
- التنقل في القائمة - قم بالتمرير عبر قوائم LCD أو OLED.
- التحكم في مستوى الصوت - ضبط مستوى الصوت في تطبيقات الوسائط.
- آلات CNC - التحكم الدقيق للحركة في تطبيقات السهول.
- الروبوتات - اكتشف دوران العجلات للسرعة وتتبع الموضع.
- أتمتة المنزل الذكية - استخدم كمحدد لوظائف المنزل المختلفة.
استكشاف الأخطاء وإصلاحها
-
المشفر الدوار لا يستجيب
- تحقق من واجبات الأسلاك و GPIO PIN.
- يضمن يتم تمكين مقاومات السحب (
PUD_UP
).
-
تخطي الخطوات أو الحركة غير المنتظمة
- يضيف Debounce تأخير (
time.sleep(0.01)
). - يستخدم مقاطعات GPIO بدلا من الاقتراع (
GPIO.add_event_detect
).
- يضيف Debounce تأخير (
-
زر اضغط لم يتم اكتشافه
- يضمن دبوس الزر متصل بشكل صحيح إلى GND.
- إضافة أ وقت Debounce 300 مللي ثانية في
GPIO.add_event_detect
.
خاتمة
أ تشفير الدوران هو جهاز إدخال متعدد الاستخدامات ل التنقل في القائمة ، والتحكم في المحرك ، وتتبع الموضع. باتباع هذا الدليل ، يمكنك بسهولة دمج تشفير دوار مع التوت بي للمشاريع التفاعلية. 🚀