FREE SHIPPING ON ALL ORDERS OVER £20

60 DAY HASSLE-FREE RETURNS

Rotációs kódoló használata a Raspberry PI -vel

Using a Rotary Encoder with the Raspberry Pi

A rotációs jeladó egy olyan érzékelő, amely a forgómozgást digitális jelekké alakítja, lehetővé téve a pozíció, a sebesség és az irány pontos szabályozását. Általában a következő területeken használják: hangerőszabályzók, robotika, CNC gépek és menünavigáció rotációs jeladó Raspberry Pi használatával, Python nyelven.


Amire szükséged lesz

  1. Raspberry Pi (bármely GPIO-támogatással rendelkező modell, pl. Pi 3, Pi 4)
  2. Rotary Encoder (pl. KY-040)
  3. Breadboard és összekötő vezetékek
  4. Python telepítve a Raspberry Pi-on

1. lépés: A forgó jeladó (rotary encoder) működésének megértése

A rotációs jeladó két fő kimenettel rendelkezik:

  • CLK (A)
  • DT (B)
  • SW (opcionális)

Elforgatva a A CLK és DT pinek impulzusokat generálnak forgásirány.


2. lépés: A forgó jeladó (rotary encoder) csatlakoztatása a Raspberry Pi-hez

Rotary Encoder Pin Raspberry Pi Pin Funkció
VCC 3.3V (Pin 1) Tápegység
GND Földelés (6. tű) Földelt
CLK (A) GPIO17 (11-es tű) Órajel
DT (B) GPIO27 (13-as tű) Irányjelző
SW GPIO22 (15. tű) Gombnyomás

3. lépés: A szükséges könyvtárak telepítése

RPi.GPIO könyvtár a GPIO-megszakítások kezeléséhez.

sudo apt update && sudo apt upgrade -y
sudo apt install python3-rpi.gpio

4. lépés: Python-kód a forgó jeladó (rotary encoder) bemenetének leolvasásához

Alapvető Python-kód a forgatás leolvasásához

python
import RPi.GPIO as GPIO
import time

# GPIO pinek meghatározása
CLK = 17
DT = 27
counter = 0
last_state = None

# GPIO beállítása
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)

# Kezdeti állapot leolvasása
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 = "Óramutató járásával megegyező"
            else:
                counter -= 1
                direction = "Óramutató járásával ellentétes"
            print(f"Pozíció: {counter}, Irány: {direction}")
        last_state = current_state
        time.sleep(0.01)  # Prellmentesítési késleltetés
except KeyboardInterrupt:
    print("Kilépés...")
finally:
    GPIO.cleanup()

Gombnyomás-érzékelés hozzáadása

python
# Gomb pinjének meghatározása
SW = 22
GPIO.setup(SW, GPIO.IN, pull_up_down=GPIO.PUD_UP)

def button_pressed(channel):
    print("Gomb megnyomva!")

# Eseményérzékelés hozzáadása a gombnyomáshoz
GPIO.add_event_detect(SW, GPIO.FALLING, callback=button_pressed, bouncetime=300)

5. lépés: A forgó jeladó (rotary encoder) alkalmazási lehetőségei Raspberry Pi-vel

  1. Menünavigáció
  2. Hangerőszabályzó – Hangerő beállítása a médialejátszó alkalmazásokban.
  3. CNC gépek
  4. Robotics – Érzékeli a kerék forgását a sebesség és a pozíció nyomon követéséhez.
  5. Smart Home automatizálás – Használja választóként a különböző otthoni funkciókhoz.

Hibaelhárítás

  1. A forgó jeladó nem válaszol

    • Ellenőrizze a huzalozás és GPIO lábkiosztás.
    • Gondoskodjon róla a felhúzó ellenállások engedélyezve vannak (PUD_UP).
  2. Lépések kihagyása vagy rendszertelen mozgás

    • Hozzáadás prepergésmentesítési késleltetés (time.sleep(0.01)).
    • Use GPIO megszakítások lekérdezés (polling) helyett (GPIO.add_event_detect).
  3. Gombnyomás nem észlelhető

    • Gondoskodjon róla a gombostű megfelelően csatlakozik gnd-re
    • Hozzáadás: 300 ms-os prepergésmentesítési idő be GPIO.add_event_detect.

Összegzés

A rotációs jeladó egy sokoldalú beviteli eszköz a menünavigáció, motorvezérlés és pozíciókövetés rotációs jeladó a(z) Raspberry Pi interaktív projektekhez. 🚀

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.

Hagyj egy megjegyzést