Uitgebreide bibliotheek voor bipolaire stappenmotoren met Arduino
Onderdelen en benodigdheden
| Onderdeel | Aantal |
|---|---|
| Arduino UNO | 1 |
| Texas Instruments Dual H-Bridge motordriver L293D | 1 |
Apps en online diensten
| App |
|---|
| Arduino IDE |
Over dit project
Eerder heb ik een Arduino-bibliotheek voor unipolaire stappenmotoren gepubliceerd. Die controleert perfect snelheid, richting, aantal omwentelingen, motordraaihoek, enz. Maar die werkte alleen voor unipolaire typen. Stappenmotoren kunnen ook bipolair zijn. Daarom heb ik een nieuwe bibliotheek ontwikkeld voor bipolaire stappenmotoren.
Hier is de bipolaire stappenmotorbibliotheek voor Arduino, geschikt voor alle bipolaire typen. De bibliotheek heeft 9 functies om de motor te draaien en te sturen volgens de eisen. Het is ontworpen volgens industriële motion control eisen.
Kenmerken
- Bestuurt elke bipolaire stappenmotor
- Bestuurt draairichting
- Nauwkeurige controle van aantal omwentelingen (1, 2, 3, 4...)
- Nauwkeurige snelheidscontrole in RPM met 95% nauwkeurigheid
- Nauwkeurige rotatie naar gewenste hoek (0–360°) met 80–100% nauwkeurigheid
- Compatibel met alle Arduino-boards
Kort overzicht van alle bibliotheekfuncties:
bi_polar_Stepper(int pin1, int pin2, int pin3, int pin4)– maakt een instantie aan met de stuurpinnen van de motordriver.set_step_per_rev(int steps)– stelt het aantal stappen per omwenteling in (staphhoek/resolutie).set_RPM(int rpm)– stelt de motortoer in RPM in (tot 95% nauwkeurig).rotate_CW()– begint met draaien kloksgewijs (in lus voor continu).rotate_CCW()– begint met draaien tegen de klok in (in lus voor continu).rotate(int dir)– draait motor in geselecteerde richting (1 = CW, 0 = CCW).rotate_one_rev(int dir)– draait precies 1 omwenteling in geselecteerde richting.rotate_n_rev(int dir, int num)– draait het opgegeven aantal omwentelingen in geselecteerde richting.rotate_x_deg(int deg)– draait motor naar gewenste hoek (0–360°) in beide richtingen (80–100% nauwkeurigheid).
Voorbeelden
1) Motor continu draaien in één richting op 60 RPM
/* Dit programma draait de bipolaire stappenmotor continu
* met 1.8° staphhoek (200 stappen/omw) op 60 RPM
* gemaakt door Ashutosh Bhatt op 12/12/16
*/
#include <bi_polar_Stepper.h>
#define steps 200 // aanpassen aan je motor
bi_polar_Stepper my_step_motor(8, 9, 10, 11);
int rpm = 60;
void setup() {
Serial.begin(9600);
Serial.println("bipolaire stappenmotorbibliotheek testprogramma");
my_step_motor.set_step_per_rev(steps);
my_step_motor.set_RPM(rpm);
Serial.println("motor draait kloksgewijs");
}
void loop() {
my_step_motor.rotate_CW();
}
2) 1 omwenteling CW en 1 CCW continu op 30 RPM
#include <bi_polar_Stepper.h>
#define steps 200
bi_polar_Stepper my_step_motor(8, 9, 10, 11);
int rpm = 30;
void setup() {
Serial.begin(9600);
Serial.println("bipolaire stappenmotorbibliotheek testprogramma door Ashutosh Bhatt");
my_step_motor.set_step_per_rev(steps);
my_step_motor.set_RPM(rpm);
}
void loop() {
Serial.println("motor draait kloksgewijs");
my_step_motor.rotate_one_rev(1);
delay(1000);
Serial.println("motor draait tegen de klok in");
my_step_motor.rotate_one_rev(0);
delay(1000);
}
3) CW op 100 RPM (2 omwentelingen) en CCW op 50 RPM (2 omwentelingen) continu
#include <bi_polar_Stepper.h>
#define steps 200
bi_polar_Stepper my_step_motor(2, 3, 4, 5);
int i;
void setup() {
Serial.begin(9600);
Serial.println("Bipolaire stappenmotorbibliotheek testprogramma door Ashutosh Bhatt");
my_step_motor.set_step_per_rev(steps);
}
void loop() {
my_step_motor.set_RPM(100);
for(i=0; i<100; i++) my_step_motor.rotate(1);
delay(2000);
my_step_motor.set_RPM(50);
for(i=0; i<100; i++) my_step_motor.rotate(0);
delay(2000);
}
4) 4 omwentelingen CW op 20 RPM en 2 CCW op 10 RPM continu
#include <bi_polar_Stepper.h>
#define steps 200
bi_polar_Stepper my_step_motor(2, 3, 4, 5);
int i;
void setup() {
Serial.begin(9600);
Serial.println("Unipolaire stappenmotorbibliotheek testprogramma door Ashutosh Bhatt");
my_step_motor.set_step_per_rev(steps);
}
void loop() {
my_step_motor.set_RPM(20);
my_step_motor.rotate_n_rev(1, 4);
delay(2000);
my_step_motor.set_RPM(10);
my_step_motor.rotate_n_rev(0, 2);
delay(2000);
}
5) 90° CW en 90° CCW continu op 30 RPM
#include <bi_polar_Stepper.h>
#define motor_steps 200
bi_polar_Stepper my_step_motor(8, 9, 10, 11);
int rpm = 30;
void setup() {
Serial.begin(9600);
Serial.println("bipolaire stappenmotorbibliotheek testprogramma");
my_step_motor.set_step_per_rev(motor_steps);
my_step_motor.set_RPM(rpm);
Serial.println("motor draait 90 graden heen en weer");
}
void loop() {
my_step_motor.rotate_x_deg(90);
delay(2000);
my_step_motor.rotate_x_deg(270);
delay(2000);
}
Let op: Als de stappenmotor hogere stroom en spanning heeft, kan in plaats van de L293D de L298-chip of 4 losse Darlington-transistoren (TIP122, TIP142, etc.) gebruikt worden.
De bibliotheek en voorbeelden zijn getest met:
- 2-fasen bipolaire motor, 5V, 100 RPM (max), 200 stappen/omw (1.8° staphhoek)
- 2-fasen bipolaire motor, 5V, 60 RPM (max), 200 stappen/omw (1.8° staphhoek)
Code
Arduino-bibliotheek voor bipolaire stappenmotor C/C++
De bibliotheek controleert RPM, richting, omwentelingen, draaihoek van alle typen bipolaire stappenmotoren met 95% nauwkeurigheid.
Geen preview beschikbaar (alleen download).
Schema's
Deze schakeling stuurt en controleert RPM, richting, draaihoek en aantal omwentelingen van een bipolaire stappenmotor.
Productieproces
- Sensor Telemetrie 2.0.1 – Geavanceerde Temperatuurbewaking met Azure IoT Hub
- Raspoulette: Zonnestroom-gevoede Autonome Koeienpoort Systeem Prototype
- Zelfbouw autonom Nerf Sentry-turret – Slimme Nerf-pistool met stappenmotoren, camera en Arduino
- Geautomatiseerde Tinder & Bumble Swiper met Arduino UNO en Stappenmotor
- SmartWay: Complete kit voor trilmotor, RGB LED, GPS-module & Arduino MKR Fox 1200 projecten
- Lineaire motoren begrijpen: Van elektrische energie naar nauwkeurige lineaire beweging
- Servomotoren Uitgelegd: Hoe Ze Werken en Waarom Ze Belangrijk Zijn
- Servo vs Stappenmotors: De Moderne Grijze Zone Verhelderd
- Variabele-reluctantiemotoren: typen, werking en toepassingen
- Stapelmotoren: typen, kenmerken en praktische toepassingen
- Geïntegreerde drivers vereenvoudigen high-power steppermotor-ontwerp