रास्पबेरी पाई के साथ एक रोटरी एनकोडर का उपयोग करना

Using a Rotary Encoder with the Raspberry Pi

ए रोटरी एन्डर एक सेंसर है जो घूर्णी गति को डिजिटल संकेतों में परिवर्तित करता है, जिससे स्थिति, गति और दिशा पर सटीक नियंत्रण की अनुमति मिलती है। यह आमतौर पर उपयोग किया जाता है वॉल्यूम कंट्रोल, रोबोटिक्स, सीएनसी मशीन और मेनू नेविगेशन। यह गाइड आपको दिखाएगा कि कैसे पायथन का उपयोग करके रास्पबेरी पाई के साथ रोटरी एनकोडर को सेट करना और उपयोग करना है।


आपको क्या चाहिए

  1. रसभरी पाई (GPIO समर्थन के साथ कोई भी मॉडल, जैसे, पीआई 3, पीआई 4)
  2. रोटरी एनकोडर (जैसे, केवाई -040)
  3. ब्रेडबोर्ड और जम्पर तार
  4. पायथन स्थापित रास्पबेरी पाई पर

चरण 1: यह समझना कि एक रोटरी एनकोडर कैसे काम करता है

रोटरी एन्डर दो मुख्य आउटपुट हैं:

  • सीएलके (ए) - क्लॉक पल्स सिग्नल
  • डीटी (बी) - दिशा संकेत
  • स्वच्छ (वैकल्पिक) - पुश बटन (विकल्पों का चयन करने के लिए उपयोग किया जाता है)

जब घुमाया जाता है, सीएलके और डीटी पिन दालों को उत्पन्न करते हैं। इन दालों का क्रम निर्धारित करता है रोटेशन की दिशा.


चरण 2: रास्पबेरी पाई को रोटरी एनकोडर को वायरिंग करें

रोटरी एनकोडर पिन रास्पबेरी पाई पिन समारोह
वीसीसी 3.3V (पिन 1) बिजली की आपूर्ति
Gnd ग्राउंड (पिन 6) मैदान
सीएलके (ए) GPIO17 (पिन 11) घड़ी की नाड़ी
डीटी (बी) GPIO27 (पिन 13) दिशा संकेत
SW (बटन) GPIO22 (पिन 15) बटन प्रेस

चरण 3: आवश्यक पुस्तकालय स्थापित करें

अपने रास्पबेरी पाई को अपडेट करें और स्थापित करें 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: रास्पबेरी पाई के साथ एक रोटरी एनकोडर के अनुप्रयोग

  1. मेनू नेविगेशन - एलसीडी या ओएलईडी मेनू के माध्यम से स्क्रॉल करें।
  2. ध्वनि नियंत्रण - मीडिया अनुप्रयोगों में वॉल्यूम समायोजित करें।
  3. सीएनसी मशीनें - स्टेपर मोटर अनुप्रयोगों में सटीक आंदोलन नियंत्रण।
  4. रोबोटिक - गति और स्थिति ट्रैकिंग के लिए पहिया रोटेशन का पता लगाएं।
  5. स्मार्ट होम ऑटोमेशन - विभिन्न घरेलू कार्यों के लिए एक चयनकर्ता के रूप में उपयोग करें।

समस्या निवारण

  1. रोटरी एनकोडर जवाब नहीं दे रहा है

    • जाँचें वायरिंग और GPIO पिन असाइनमेंट.
    • सुनिश्चित करना पुल-अप प्रतिरोधों को सक्षम किया जाता है (PUD_UP).
  2. स्किपिंग स्टेप्स या अनियमित आंदोलन

    • जोड़ना देरी (time.sleep(0.01)).
    • उपयोग GPIO इंटरप्ट करता है मतदान के बजाय (GPIO.add_event_detect).
  3. बटन प्रेस का पता नहीं चला

    • सुनिश्चित करना बटन पिन ठीक से जुड़ा हुआ है gnd को।
    • एक जोड़ना 300ms के समय पर बहस करें में GPIO.add_event_detect.

निष्कर्ष

रोटरी एन्डर के लिए एक बहुमुखी इनपुट डिवाइस है मेनू नेविगेशन, मोटर नियंत्रण और स्थिति ट्रैकिंग। इस गाइड का पालन करके, आप आसानी से अपने साथ एक रोटरी एनकोडर को एकीकृत कर सकते हैं रसभरी पाई इंटरैक्टिव परियोजनाओं के लिए। 🚀

एक टिप्पणी छोड़ें

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.