Raspberry Pi - Potentiometer Servo Motor

Deze tutorial leert u hoe u een Raspberry Pi gebruikt om de hoek van een servo motor te regelen op basis van de invoerwaarde van een potentiometer. In detail leert u:

Hardware Benodigdheden

1×Raspberry Pi 5
1×Servomotor
1×Potentiometer
1×Alternatief: 10k Ohm Trimmer Potentiometer
1×(Alternatief) Potentiometer Kit
1×(Alternatief) Potentiometer Module met Knop
1×ADS1115 ADC-Module
1×Breadboard (experimenteerprint)
1×Jumper Draden
1×(Aanbevolen) Schroefklem Block Shield voor Raspberry Pi
1×(Aanbevolen) Raspberry Pi Prototyping Basisplaat & Breadboard Kit
1×(Aanbevolen) HDMI-Touchscreen-Monitor voor Raspberry Pi

Of u kunt de volgende kits kopen:

1×DIYables Sensorkit (30 sensoren/displays)
1×DIYables Sensorkit (18 sensoren/displays)
Openbaarmaking: Sommige van de links in deze sectie zijn Amazon-affiliate links. We kunnen een commissie ontvangen voor aankopen die via deze links worden gedaan, zonder extra kosten voor u. We waarderen uw steun.

Over Servo Motor en Potentiometer

Bent u nog niet bekend met servo motoren en potentiometers (pinouts, hoe ze werken, hoe u ze programmeert, enzovoorts), dan kunnen de volgende tutorials u helpen:

Bedradingsschema

Raspberry Pi Servo Motor Potentiometer Bedradingsschema

This image is created using Fritzing. Click to enlarge image

Om uw bekabelingsopstelling te vereenvoudigen en te organiseren, raden we het gebruik van een Schroevenklemaansluiting-shield voor Raspberry Pi aan. Deze shield zorgt voor veiligere en beter beheerbare verbindingen, zoals hieronder weergegeven:

Raspberry Pi Schroevenklemaansluiting-Shield

Raspberry Pi Code

Snel aan de slag

  • Zorg dat u Raspbian of een ander Raspberry Pi-compatibel besturingssysteem op uw Pi hebt geïnstalleerd.
  • Zorg dat uw Raspberry Pi verbonden is met hetzelfde lokale netwerk als uw pc.
  • Zorg dat uw Raspberry Pi verbonden is met internet als u bepaalde libraries moet installeren.
  • Gebruikt u voor het eerst een Raspberry Pi? Zie hoe Raspberry Pi in te stellen
  • Verbind uw pc met de Raspberry Pi via SSH met de ingebouwde SSH-client op Linux en macOS of met PuTTY op Windows. Zie hoe uw pc met Raspberry Pi via SSH te verbinden.
  • Zorg dat u de RPi.GPIO library geïnstalleerd hebt. Zo niet, installeer die met het volgende commando:
sudo apt-get update sudo apt-get install python3-rpi.gpio
  • Installeer de Adafruit_ADS1x15 library door het volgende commando op uw Raspberry Pi terminal uit te voeren:
sudo pip install Adafruit-ADS1x15
  • Maak een Python scriptbestand aan met de naam potentiometer_servo.py en voeg de volgende code toe:
# Deze Raspberry Pi code is ontwikkeld door newbiely.nl # Deze Raspberry Pi code wordt zonder enige beperking aan het publiek beschikbaar gesteld. # Voor volledige instructies en schema's, bezoek: # https://newbiely.nl/tutorials/raspberry-pi/raspberry-pi-potentiometer-servo-motor import time import RPi.GPIO as GPIO import Adafruit_ADS1x15 # Constants SERVO_PIN = 26 # Raspberry Pi GPIO pin connected to the servo motor ADC_CHANNEL = 0 # Analog channel on ADS1015 GAIN = 1 # Gain (1, 2/3, 1, 2, 4, 8, 16) # Setup GPIO GPIO.setmode(GPIO.BCM) GPIO.setup(SERVO_PIN, GPIO.OUT) # Create PWM instance for servo servo_pwm = GPIO.PWM(SERVO_PIN, 50) # 50 Hz frequency servo_pwm.start(0) # Initialize servo position # Create ADS1x15 instance ads = Adafruit_ADS1x15.ADS1015() def map_value(value, in_min, in_max, out_min, out_max): # Map the input value from one range to another return (value - in_min) * (out_max - out_min) / (in_max - in_min) + out_min try: while True: # Read the raw ADC value from the potentiometer pot_value = ads.read_adc(ADC_CHANNEL, gain=GAIN) # Map the ADC value to the servo angle (0 to 180 degrees) angle = int(map_value(pot_value, 0, 32767, 0, 180)) # Control the servo motor according to the angle duty_cycle = (angle / 18) + 2.5 # Convert angle to duty cycle servo_pwm.ChangeDutyCycle(duty_cycle) print(f"Potentiometer Value: {pot_value}, Servo Angle: {angle}") time.sleep(0.1) except KeyboardInterrupt: servo_pwm.stop() GPIO.cleanup()
  • Bewaar het bestand en start het Python script door het volgende commando in de terminal uit te voeren:
python3 potentiometer_servo.py

Het script draait in een oneindige lus totdat u Ctrl + C indrukt in de terminal.

  • Draai aan de potentiometer
  • Bekijk de rotatie van de servo motor
  • Volg de resultaten in de Seriële Monitor
PuTTY - Raspberry Pi
Potentiometer Value: 100, Servo Angle: 3 Potentiometer Value: 200, Servo Angle: 6 Potentiometer Value: 300, Servo Angle: 9 Potentiometer Value: 400, Servo Angle: 13 Potentiometer Value: 500, Servo Angle: 16 Potentiometer Value: 600, Servo Angle: 19 Potentiometer Value: 700, Servo Angle: 23 Potentiometer Value: 800, Servo Angle: 26 Potentiometer Value: 900, Servo Angle: 29 Potentiometer Value: 1000, Servo Angle: 33

Code-uitleg

Bekijk de regel-voor-regel uitleg die te vinden is in de commentaren van de broncode!

Video Tutorial

We overwegen het maken van videotutorials. Als u videotutorials belangrijk vindt, abonneer u dan op ons YouTube-kanaal om ons te motiveren de video's te maken.

※ ONZE BERICHTEN

  • U bent welkom om de link naar deze tutorial te delen. Gebruik onze inhoud echter niet op andere websites. We hebben veel moeite en tijd gestoken in het maken van de inhoud, respecteer alstublieft ons werk!