Raspberry Pi - 28BYJ-48 Stappenmotor ULN2003 Driver

Deze handleiding legt uit hoe u een Raspberry Pi gebruikt om een 28BYJ-48 stappenmotor aan te sturen met behulp van een ULN2003 Driver. We gaan in detail behandelen:

Raspberry Pi ULN2003 28BYJ-48 stappenmotor

Hardware Benodigd

1×Raspberry Pi 5
1×28BYJ-48 stappenmotor + ULN2003 Driver Module
1×5V Stroomadapter
1×DC Stroomconnector
1×Jumper draden (man-man)
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 de 28BYJ-48 Stappenmotor

Stappenmotoren zijn ideaal voor positiecontrole. Ze verdelen een volledige rotatie in een reeks gelijke "stappen". Deze motoren worden vaak toegepast in printers, 3D-printers, CNC-machines en industriële automatisering.

Een kosteneffectieve methode om kennis te maken met stappenmotoren is gebruik te maken van de 28BYJ-48 stappenmotor. Deze wordt doorgaans geleverd met een driverboard gebaseerd op de ULN2003, waardoor het zeer eenvoudig in gebruik is.

Volgens het datasheet, wanneer de 28BYJ-48 motor in full-step modus draait, komt elke stap overeen met een rotatie van 11,25°. Er zijn dus 32 stappen voor één volledige omwenteling (360°/11,25° = 32).

Daarnaast heeft de motor een reductieratioset van 1/64. Dit betekent dat het aantal stappen 32 x 64 = 2048 is. Elke stap is dus gelijk aan 360°/2048 = 0,1758°.

Conclusie: Als de motor ingesteld wordt op 2048 stappen in full-step modus, draait deze één volledige omwenteling.

Pinout van de 28BYJ-48 Stappenmotor met ULN2003 Driver

De 28BYJ-48 stappenmotor heeft 5 pinnen. U hoeft zich niet druk te maken over de details van deze pinnen; sluit deze gewoon aan op de connector van de ULN2003 motor driver.

28BYJ-48 stappenmotor

Over de ULN2003 Stappenmotor Driver Module

De ULN2003 is een veelgebruikte motor driver module voor stappenmotoren.

  • Hij heeft vier LEDs die de activiteit van de vier controle-ingangsdraden aangeven, wat een duidelijk visueel effect geeft bij het stappen.
  • Daarnaast is er een ON/OFF jumper aanwezig om de stroomtoevoer naar de stappenmotor af te sluiten.

ULN2003 Pinout

ULN2003 Stappenmotor Driver pinout

De ULN2003 module heeft 6 pinnen en een vrouwelijke connector:

  • IN1 pin: wordt gebruikt om de motor aan te sturen en moet verbonden worden met een output pin van de Raspberry Pi.
  • IN2 pin: wordt gebruikt om de motor aan te sturen en moet verbonden worden met een output pin van de Raspberry Pi.
  • IN3 pin: wordt gebruikt om de motor aan te sturen en moet verbonden worden met een output pin van de Raspberry Pi.
  • IN4 pin: wordt gebruikt om de motor aan te sturen en moet verbonden worden met een output pin van de Raspberry Pi.
  • GND pin: dit is een gemeenschappelijke aarde en moet verbonden worden met zowel de GND van de Raspberry Pi als die van de externe voeding.
  • VDD pin: levert spanning aan de motor en moet verbonden worden met de externe voeding.
  • Motor Connector: hier sluit u de stappenmotor op aan.

※ Notiz:

  • De spanning van de externe voeding moet overeenkomen met de spanning van de stappenmotor. Bijvoorbeeld, als een stappenmotor 12V DC nodig heeft, dient u een 12V voeding te gebruiken. De 28BYJ-48 stappenmotor heeft 5V DC nodig, dus we gebruiken een 5V voeding.
  • Ook al heeft de stappenmotor een 5V voeding nodig, verbind de VDD pin NIET met de 5V pin van de Raspberry Pi. Sluit deze altijd aan op een externe 5V voeding, omdat de stappenmotor teveel stroom trekt.

Bedradingsschema

Raspberry Pi stappenmotor ULN2003 driver bedrading schema

This image is created using Fritzing. Click to enlarge image

Let niet op de kleur van de draden van de stappenmotor. Sluit simpelweg de mannelijke connector van de 28BYJ-48 stappenmotor aan op de vrouwelijke connector van de ULN2003 driver.

Hoe te programmeren om de stappenmotor te besturen

Er zijn drie methoden om een stappenmotor aan te sturen:

  • Full-step
  • Half-step
  • Micro-step

Voor basistoepassingen kan de full-step methode gebruikt worden. De details van deze drie methoden worden besproken in de laatste sectie van deze handleiding.

Raspberry Pi Code

Snelle Stappen

  • Zorg dat u Raspbian of een ander Raspberry Pi compatibel besturingssysteem op uw Pi heeft geïnstalleerd.
  • Zorg dat uw Raspberry Pi verbinding heeft met hetzelfde lokale netwerk als uw pc.
  • Zorg dat uw Raspberry Pi is verbonden met het internet als u enkele libraries moet installeren.
  • Gebruikt u voor het eerst een Raspberry Pi? Begin dan met onze Raspberry Pi Aan de slag gids om eerst de basis te leren.
  • Verbind uw pc met de Raspberry Pi via SSH met behulp van de ingebouwde SSH-client op Linux en macOS, of PuTTY op Windows. Zie hoe uw pc met Raspberry Pi te verbinden via SSH.
  • Zorg dat u de RPi.GPIO library geïnstalleerd heeft. Als dat niet zo is, installeer deze dan met het volgende commando:
sudo apt-get update sudo apt-get install python3-rpi.gpio
  • Maak een Python scriptbestand aan met de naam stepper_uln2003.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-28byj-48-stepper-motor-uln2003-driver import RPi.GPIO as GPIO import time # Define GPIO pins for ULN2003 driver IN1 = 23 IN2 = 24 IN3 = 25 IN4 = 8 # Set GPIO mode and configure pins GPIO.setmode(GPIO.BCM) GPIO.setup(IN1, GPIO.OUT) GPIO.setup(IN2, GPIO.OUT) GPIO.setup(IN3, GPIO.OUT) GPIO.setup(IN4, GPIO.OUT) # Define constants DEG_PER_STEP = 1.8 STEPS_PER_REVOLUTION = int(360 / DEG_PER_STEP) # Define sequence for 28BYJ-48 stepper motor seq = [ [1, 0, 0, 1], [1, 0, 0, 0], [1, 1, 0, 0], [0, 1, 0, 0], [0, 1, 1, 0], [0, 0, 1, 0], [0, 0, 1, 1], [0, 0, 0, 1] ] # Function to rotate the stepper motor one step def step(delay, step_sequence): for i in range(4): GPIO.output(IN1, step_sequence[i][0]) GPIO.output(IN2, step_sequence[i][1]) GPIO.output(IN3, step_sequence[i][2]) GPIO.output(IN4, step_sequence[i][3]) time.sleep(delay) # Function to move the stepper motor one step forward def step_forward(delay, steps): for _ in range(steps): step(delay, seq[0]) step(delay, seq[1]) step(delay, seq[2]) step(delay, seq[3]) # Function to move the stepper motor one step backward def step_backward(delay, steps): for _ in range(steps): step(delay, seq[3]) step(delay, seq[2]) step(delay, seq[1]) step(delay, seq[0]) try: # Set the delay between steps delay = 0.005 while True: # Rotate one revolution forward (clockwise) step_forward(delay, STEPS_PER_REVOLUTION) # Pause for 2 seconds time.sleep(2) # Rotate one revolution backward (anticlockwise) step_backward(delay, STEPS_PER_REVOLUTION) # Pause for 2 seconds time.sleep(2) except KeyboardInterrupt: print("\nExiting the script.") finally: # Clean up GPIO settings GPIO.cleanup()
  • Sla het bestand op en voer het Python script uit door het volgende commando in de Terminal uit te voeren:
python3 stepper_uln2003.py
  • Kijk hoe de motor draait.
  • De motor zou één volledige omwenteling met de klok mee moeten maken, gevolgd door twee omwentelingen tegen de klok in, en daarna twee omwentelingen weer met de klok mee.

Door de waarde van de variabele delay in de code aan te passen, kunt u de snelheid van de stappenmotor wijzigen.

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

Extra Kennis

De stappenmotor trilt tijdens beweging

Maak u geen zorgen als de stappenmotor trillingen vertoont tijdens het bewegen. Dit is een karakteristiek van de stappenmotor. U kunt deze trillingen verminderen door gebruik te maken van de micro-step aansturingstechniek.

Bovendien kan de stappenmotor, indien correct aangestuurd, muzikale tonen produceren zoals een muziekinstrument. Een voorbeeld hiervan vindt u hier op Hackster.io.

Methoden om stappenmotoren aan te sturen

  • Full-step: De bewegingsstap is één volledige stap, gelijk aan de gradenwaarde uit het datasheet of de handleiding van de stappenmotor.
  • Half-step: Elke full step wordt verdeeld in twee kleinere stappen. De bewegingsstap is de helft van een full step. Deze methode verdubbelt de resolutie van de motor.
  • Micro-step: Elke full step wordt verdeeld in veel kleinere stappen. De bewegingsstap is een fractie van de full step, bijvoorbeeld 1/4, 1/8, 1/16, 1/32 of zelfs kleiner. Deze methode zorgt voor een hogere resolutie en soepelere beweging bij lage snelheden. Hoe groter de deler, hoe hoger de resolutie en hoe gladder de beweging.

Als het datasheet van de motor 1,8 graden per stap opgeeft:

  • Full-step: De motor beweegt in stappen van 1,8 graden per stap, wat resulteert in 200 stappen per omwenteling.
  • Half-step: De motor beweegt in stappen van 0,9 graden per stap, wat resulteert in 400 stappen per omwenteling.
  • Micro-step: De motor beweegt in stappen van 0,45, 0,225, 0,1125, 0,05625 graden per stap, resulterend in respectievelijk 800, 1600, 3200, 6400… stappen per omwenteling.

De gebruikte code hierboven maakt gebruik van full-step aansturing.

Resonantie probleem

Dit is bedoeld voor de meer ervaren gebruikers. Beginners hoeven zich hier nog geen zorgen over te maken. Resonantie treedt op bij een bepaalde snelheid waarbij de stapfrequentie gelijk is aan de natuurlijke frequentie van de motor. Dit kan leiden tot hoorbare veranderingen in het motorgeluid en toegenomen trillingen. Bij praktische toepassingen moeten ontwikkelaars hier rekening mee houden.

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.

Bekijk onze video-tutorial voor een visuele begeleiding bij dit project! De video biedt extra inzichten en helpt u stap voor stap het project te doorlopen.

※ 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!