ESP32 - DRV8825 Stappenmotor Driver

In deze handleiding verkennen we de DRV8825 Stappenmotor Driver en ontdekken we hoe u deze samen met een ESP32 gebruikt om een stappenmotor aan te sturen. We behandelen de volgende onderwerpen:

ESP32 DRV8825 module

Hardware Vereist

1×ESP32 ESP-WROOM-32 Ontwikkelingsmodule
1×USB-kabel Type-C
1×Stappenmotor Nema 17
1×DRV8825 Stappenmotor Driver
1×Expansiebord voor DRV8825 Motor Driver
1×12V Voedingsadapter
1×DC Voedingsconnector
1×Jumperdraden
1×(Aanbevolen) Schroefklem Uitbreidingsboard voor ESP32
1×(Aanbevolen) Breakout Expansion Board for ESP32
1×(Aanbevolen) Stromsplitter voor ESP32

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 DRV8825 Stappenmotor Driver

De DRV8825 is een populaire stappenmotor driver die gebruikt wordt voor het aansturen van bipolaire stappenmotoren in apparaten zoals CNC-machines, 3D-printers en robots. Hij beschikt over functies zoals een instelbare stroomlimiet, bescherming tegen oververhitting en verschillende microstepping-opties, zoals full-step, 1/2, 1/4, 1/8, 1/16 en 1/32. Dit module kan tot 2,2A per spoel aansturen mits voldoende koeling en werkt binnen een breed spanningsbereik van 8,2V tot 45V, waardoor het geschikt is voor diverse stappenmotoren.

Wilt u meer begrijpen over concepten zoals full-step, microstepping, unipolaire en bipolaire stappenmotoren? Bekijk dan de ESP32 - Stappenmotor gids.

Het is indrukwekkend dat u slechts twee ESP32-pinnen nodig hebt om zowel de snelheid als de draaicirkelrichting van een bipolaire stappenmotor zoals de NEMA 17 te regelen.

DRV8825 Stappenmotor Driver Pinout

DRV8825 module Pinout

De DRV8825 stappenmotor driver heeft 16 pinnen. Hieronder ziet u een veelvoorkomend overzicht van de DRV8825 module. Let op: sommige versies gebruiken andere pinbenamingen, maar de functies blijven gelijk.

Pin Naam Beschrijving
VMOT Voeding voor de motor (8,2 V tot 45 V). Dit voedt de stappenmotor.
GND (voor motor) Aarding voor de motorvoeding. Verbind deze pin met de GND van de motorvoeding.
2B, 2A Uitgangen naar spoel B van de stappenmotor.
1A, 1B Uitgangen naar spoel A van de stappenmotor.
FAULT Foutdetectie-pin. Deze uitgang wordt LOW wanneer de H-brug FET’s uitgeschakeld zijn door overstroombeveiliging of thermische uitschakeling.
GND (voor Logica) Aarding voor de logicasignalen. Verbind deze pin met de GND van de ESP32.
ENABLE Actief-LOW pin om de motoruitgangen aan/uit te zetten. LOW = ingeschakeld, HIGH = uitgeschakeld.
M1, M2, M3 Microstepping resolutie selectie pinnen (zie tabel hieronder).
RESET Actief-LOW reset pin - als deze LOW wordt gezet, wordt de driver gereset.
SLEEP Actief-LOW slaap pin - door deze LOW te maken, gaat de driver in een laag stroomverbruik slaapmodus.
STEP Stap input - een stijgende flank op deze pin verzet de motor één stap (of microstap, afhankelijk van instelling).
DIR Richtingsinput - bepaalt de rotatierichting van de motor.

Er zit ook een kleine ingebouwde draaiknop waarmee u de stroomlimiet kunt instellen, wat helpt om oververhitting van motor en driver te voorkomen.

Kort samengevat zijn de 16 pinnen in groepen verdeeld volgens hun functie:

  • Pinnen verbonden met de stappenmotor: 1A, 1B, 2A, 2B.
  • Pinnen verbonden met ESP32 voor driverbeheer: ENABLE, M1, M2, M3, RESET, SLEEP.
  • Pinnen verbonden met ESP32 voor het besturen van motorrichting en snelheid: DIR, STEP.
  • Pin voor het doorgeven van feedback naar ESP32: FAULT.
  • Pinnen voor de motorvoeding: VMOT, GND (motorvoeding).
  • Pin voor de ESP32-aarde: GND (logica).

De DRV8825 module heeft geen aparte logica-voeding nodig vanuit de ESP32, omdat deze wordt gevoed via de motorvoeding door een ingebouwde 3,3V spanningsregelaar. Het is echter wel essentieel om de GND van de ESP32 te verbinden met de GND (logic) pin van de DRV8825 voor een correcte werking en een gemeenschappelijke referentie.

Microstep Configuratie

De DRV8825 driver maakt microstepping mogelijk door elke stap te verdelen in kleinere delen door variërende stroomniveaus naar de motorwikkelingen te sturen.

Bijvoorbeeld bij een NEMA 17 motor met een staphoek van 1,8 graden (200 stappen per omwenteling):

  • Full-step modus: 200 stappen per omwenteling
  • Half-step modus: 400 stappen per omwenteling
  • Quarter-step modus: 800 stappen per omwenteling
  • Eighth-step modus: 1600 stappen per omwenteling
  • Sixteenth-step modus: 3200 stappen per omwenteling
  • Thirty-second-step modus: 6400 stappen per omwenteling

Hoe hoger de microstepping instelling, hoe soepeler en preciezer de motor loopt, maar het aantal stappen per volledige omwenteling neemt toe. Houdt u dezelfde stap-pulsfrequentie aan, dan duurt een omwenteling langer en wordt de motor langzamer.

Als uw microcontroller echter snel genoeg pulsen kan genereren passend bij het hogere stapnummer, behoudt of verhoogt u zelfs de snelheid. De praktische limiet hangt af van hoe snel zowel de driver als de microcontroller deze pulsen kunnen verwerken zonder stappen over te slaan.

DRV8825 Microstep Selectiepinnen

De DRV8825 heeft drie ingangen om de microstep-resolutie te selecteren: M0, M1, en M2. Door deze pinnen op bepaalde logische niveaus in te stellen, kiest u uit zes microstepping resoluties:

M0 Pin M1 Pin M2 Pin Microstep Resolutie
Low Low Low Full step
High Low Low Half step
Low High Low 1/4 step
High High Low 1/8 step
Low Low High 1/16 step
High Low High 1/32 step
Low High High 1/32 step
High High High 1/32 step

Deze selectie pinnen hebben ingebouwde pull-down weerstanden die ze standaard in LOW houden. Als ze niet aangesloten zijn, draait de motor in full-step modus.

Hoe het Werkt

Om een stappenmotor met de DRV8825 module aan te sturen heeft u twee ESP32 pinnen nodig: één voor de DIR pin en één voor de STEP pin. De DRV8825 verwerkt deze signalen om de motor nauwkeurig te verplaatsen.

  • STEP Pin: Elke puls op deze pin verzet de motor één stap of microstap, afhankelijk van de instelling.
  • DIR Pin: Bepaalt de draairichting van de motor.

De driver combineert deze signalen met zijn eigen instellingen en stuurt de motor via de 1A, 1B, 2A, en 2B uitgangen aan.

U kunt de extra pinnen op de DRV8825 module (ENABLE, M1, M2, M3, RESET, SLEEP) op drie manieren instellen:

  • Los laten zodat de driver standaardinstellingen gebruikt.
  • Direct verbinden met GND of VCC voor constante instellingen.
  • Verbinden met ESP32 pinnen om deze functies via software te beheren.

Aansluitschema tussen ESP32, DRV8825 module en Stappenmotor

Het onderstaande schema toont de minimale verbindingen tussen de ESP32, DRV8825 module en de stappenmotor. In deze configuratie werkt de DRV8825 driver in zijn standaard modus (full-step).

ESP32 DRV8825 stappenmotor driver aansluitdiagram

This image is created using Fritzing. Click to enlarge image

In detail:

  • VMOT: Verbind met de voedingsspanning van de motor (bijvoorbeeld 12V).
  • GND (voor Motor): Verbind met de massa van de motorvoeding.
  • 1A, 1B, 2A, 2B: Verbind met de spoelen van de stappenmotor.
  • STEP: Verbind met digitale pin D4 op de ESP32.
  • DIR: Verbind met digitale pin D3 op de ESP32.
  • GND (voor Logica): Verbind met de GND-pin van de ESP32.
  • Overige pinnen: Niet verbonden.

ESP32 Code

/* * Deze ESP32 code is ontwikkeld door newbiely.nl * Deze ESP32 code wordt zonder enige beperking aan het publiek beschikbaar gesteld. * Voor volledige instructies en schema's, bezoek: * https://newbiely.nl/tutorials/esp32/esp32-drv8825-stepper-motor-driver */ #include <AccelStepper.h> #define STEP_PIN 12 // The ESP32 pin GPIO12 connected to STEP pin of DRV8825 module #define DIR_PIN 14 // The ESP32 pin GPIO14 connected to DIR pin of DRV8825 module // Creates an instance AccelStepper stepper(AccelStepper::DRIVER, STEP_PIN, DIR_PIN); void setup() { // set the maximum speed, acceleration factor stepper.setMaxSpeed(1000); stepper.setAcceleration(200); // set speed and the target position stepper.setSpeed(200); stepper.moveTo(200); } void loop() { // Change direction once the motor reaches target position if (stepper.distanceToGo() == 0) stepper.moveTo(-stepper.currentPosition()); stepper.run(); // Move the motor one step }

Snelle Stappen

  • Als u voor het eerst met ESP32 werkt, bekijk dan hoe u de omgeving voor ESP32 instelt in Arduino IDE.
  • Maak de bedrading volgens bovenstaande afbeelding.
  • Verbind de ESP32 met uw pc via een USB-kabel.
  • Open Arduino IDE op uw pc.
  • Selecteer het juiste ESP32-bord (bijvoorbeeld ESP32 Dev Module) en de juiste COM-poort.
  • Kopieer de bovenstaande code en open deze in Arduino IDE.
  • Ga naar de Libraries sectie links in Arduino IDE.
  • Zoek op “AccelStepper” en selecteer de AccelStepper library van Mike McCauley.
  • Klik op de Installeren knop om de AccelStepper library toe te voegen.
ESP32 AccelStepper library
  • Plak de code in Arduino IDE.
  • Klik op de Upload knop om de code naar uw ESP32 te sturen.
  • U zult de motor heen en weer zien bewegen.

Tip: Bij gebruik van full-step modus kan de motorbeweging minder soepel zijn; voor een soepelere beweging activeert u microstepping door de M1, M2 en M3 pinnen aan te passen.

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 door het proces.

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