בעזרת מקודד סיבוב עם ה- Raspberry Pi

Using a Rotary Encoder with the Raspberry Pi

א מקודד רוטרי הוא חיישן שממיר תנועה סיבובית לאותות דיגיטליים, ומאפשר שליטה מדויקת על מיקום, מהירות וכיוון. הוא משמש בדרך כלל ב בקרות נפח, רובוטיקה, מכונות CNC וניווט בתפריטו מדריך זה יראה לך כיצד להגדיר ולהשתמש במקודד סיבוב עם פטל PI באמצעות פייתון.


מה תצטרך

  1. Raspberry Pi (כל דגם עם תמיכה ב- GPIO, למשל, pi 3, pi 4)
  2. מקודד רוטרי (למשל, KY-040)
  3. חוטי לחם וגשר
  4. פיתון מותקן על ה- 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

  1. ניווט בתפריט - גלול בתפריטי LCD או OLED.
  2. בקרת נפח - התאם את עוצמת הקול ביישומי מדיה.
  3. מכונות CNC - בקרת תנועה מדויקת ביישומי מנוע צעד.
  4. רובוטיקה - זיהוי סיבוב גלגלים למעקב אחר מהירות ומיקום.
  5. אוטומציה של בית חכם - השתמש כבורר לפונקציות ביתיות שונות.

פתרון בעיות

  1. מקודד רוטרי לא מגיב

    • בדוק את חיווט ומשימות סיכות GPIO.
    • לְהַבטִיחַ נגדי משיכה מופעלים (PUD_UP).
  2. דילוג על צעדים או תנועה לא תקינה

    • לְהוֹסִיף עיכוב DebUnce (time.sleep(0.01)).
    • לְהִשְׁתַמֵשׁ GPIO מפריע במקום סקרים (GPIO.add_event_detect).
  3. לחיצה על לחצן לא זוהה

    • לְהַבטִיחַ סיכת הכפתור מחוברת כראוי ל- GND.
    • הוסף א זמן DebUnce של 300ms ב GPIO.add_event_detect.

מַסְקָנָה

א מקודד רוטרי הוא מכשיר קלט רב -תכליתי עבור ניווט בתפריט, בקרת מנוע ומעקב אחר מיקוםו על ידי ביצוע מדריך זה, אתה יכול לשלב בקלות מקודד סיבוב עם שלך Raspberry Pi לפרויקטים אינטראקטיביים. 🚀

השאירו תגובה

Notice an Issue? Have a Suggestion?
If you encounter a problem or have an idea for a new feature, let us know! Report a problem or request a feature here.