א מקודד רוטרי הוא חיישן שממיר תנועה סיבובית לאותות דיגיטליים, ומאפשר שליטה מדויקת על מיקום, מהירות וכיוון. הוא משמש בדרך כלל ב בקרות נפח, רובוטיקה, מכונות CNC וניווט בתפריטו מדריך זה יראה לך כיצד להגדיר ולהשתמש במקודד סיבוב עם פטל PI באמצעות פייתון.
מה תצטרך
- Raspberry Pi (כל דגם עם תמיכה ב- GPIO, למשל, pi 3, pi 4)
- מקודד רוטרי (למשל, KY-040)
- חוטי לחם וגשר
- פיתון מותקן על ה- Raspberry Pi
שלב 1: הבנה כיצד עובד מקודד רוטרי
א מקודד רוטרי יש שתי תפוקות עיקריות:
- CLK (א) - אות דופק שעון
- Dt (b) - אות כיוון
- SW (אופציונלי) - לחצן לחיצה (משמש לבחירת אפשרויות)
כאשר הם מסתובבים, סיכות CLK ו- DT מייצרות קטניותו סדר הפולסים הללו קובע את כיוון הסיבוב.
שלב 2: חיווט מקודד הסיבוב ל- PI הפטל
סיכת מקודד סיבוב | סיכת פטל pi | פוּנקצִיָה |
---|---|---|
VCC | 3.3 וולט (סיכה 1) | ספק כוח |
GND | קרקע (סיכה 6) | טָחוּן |
CLK (א) | GPIO17 (סיכה 11) | דופק שעון |
Dt (b) | GPIO27 (סיכה 13) | אות כיוון |
SW (כפתור) | GPIO22 (סיכה 15) | לחיצה על לחיצה |
שלב 3: התקן ספריות נדרשות
עדכן את ה- Raspberry Pi שלך והתקן את Rpi.gpio ספרייה לטיפול בהפרעות GPIO.
sudo apt update && sudo apt upgrade -y
sudo apt install python3-rpi.gpio
שלב 4: קוד פייתון לקריאת קלט מקודד רוטרי
קוד פיתון בסיסי לקריאת סיבוב
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.
- לְהַבטִיחַ נגדי משיכה מופעלים (
PUD_UP
).
-
דילוג על צעדים או תנועה לא תקינה
- לְהוֹסִיף עיכוב DebUnce (
time.sleep(0.01)
). - לְהִשְׁתַמֵשׁ GPIO מפריע במקום סקרים (
GPIO.add_event_detect
).
- לְהוֹסִיף עיכוב DebUnce (
-
לחיצה על לחצן לא זוהה
- לְהַבטִיחַ סיכת הכפתור מחוברת כראוי ל- GND.
- הוסף א זמן DebUnce של 300ms ב
GPIO.add_event_detect
.
מַסְקָנָה
א מקודד רוטרי הוא מכשיר קלט רב -תכליתי עבור ניווט בתפריט, בקרת מנוע ומעקב אחר מיקוםו על ידי ביצוע מדריך זה, אתה יכול לשלב בקלות מקודד סיבוב עם שלך Raspberry Pi לפרויקטים אינטראקטיביים. 🚀