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
- Raspberry Pi (bármely GPIO-támogatással rendelkező modell, pl. Pi 3, Pi 4)
- Rotary Encoder (pl. KY-040)
- Breadboard és összekötő vezetékek
- 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
- Menünavigáció
- Hangerőszabályzó – Hangerő beállítása a médialejátszó alkalmazásokban.
- CNC gépek
- Robotics – Érzékeli a kerék forgását a sebesség és a pozíció nyomon követéséhez.
- Smart Home automatizálás – Használja választóként a különböző otthoni funkciókhoz.
Hibaelhárítás
-
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).
-
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).
- Hozzáadás prepergésmentesítési késleltetés (
-
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. 🚀



