Industriële fabricage
Industrieel internet der dingen | Industriële materialen | Onderhoud en reparatie van apparatuur | Industriële programmering |
home  MfgRobots >> Industriële fabricage >  >> Manufacturing Technology >> Productieproces

Arduino-gestuurde Serieel Bediende Stappenmotor-Draaibare Stand

Onderdelen en Benodigdheden

28BYJ48 stappenmotor×1
X113647 Stappenmotordriver (ULN2003A)×1
Pololu Universele Aluminium Montagehub voor 5mm as×1
Arduino UNO×1
Houten basis 15cm x 15cm×1
Rubberen voeten×4

Benodigde Tools en Machines

  • Laagzaag
  • Boormachine met 6mm boor voor hout

Over dit Project

Volledig verhaal hier: https://www.cesarebrizio.it/Arduino/Turntable.html

Dit project gaat over een draaiplatform gebaseerd op een stappenmotor. Het stappenmotormodel is 28BYJ48, bestuurd via de X113647 stappenmotordriver (gebaseerd op de ULN2003A IC) die normaal bij de stappenmotor wordt geleverd.

Het platform kan in beide richtingen draaien en wordt bestuurd via de seriële monitor of Tera Term.

De volgende commando's zijn geïmplementeerd:

  • R = Continu draaien met de klok mee (meerdere draaiingen)
  • r = Draaien voor 360°; met de klok mee
  • L = Continu draaien tegen de klok in (meerdere draaiingen)
  • l = Draaien voor 360°; tegen de klok in
  • S = Stoppen met draaien

Vanuit mechanisch oogpunt is de montage heel simpel: er is slechts een vierkant van multiplex of vergelijkbaar materiaal nodig, ongeveer 15cm x 15cm, voor de basistafel.

Het midden van de tafel bevindt zich op het snijpunt van de diagonalen - er wordt een 6mm gat precies op dat punt geboord.

De stappenmotorhub is excentrisch: door de hub in het 6mm gat te steken, kan de contour van de stappenmotor met een potlood getekend worden.

Daarna wordt een rond gat zo strak mogelijk om de stappenmotorcontour uitgezaagd met een laagzaag, zodat de twee bevestigingsgaten van de stappenmotor stevig op het hout van de tafel zitten, zodat ze gebruikt kunnen worden om de stappenmotor aan de tafel te bevestigen.

10mm hoge rubberen voeten zijn nodig voor de benodigde ruimte (de stappenmotor steekt een beetje onder de tafel uit).

De draaiplaat wordt aan de stappenmotor bevestigd dankzij de Pololu Universele Aluminium Montagehub voor 5mm as.

Bronnen:

Arduino-gestuurde Serieel Bediende Stappenmotor-Draaibare Stand

Arduino-gestuurde Serieel Bediende Stappenmotor-Draaibare Stand

Daadwerkelijk gebruikte ik 4 verschillende pinnen, maar het schakelschema hieronder weergeeft de verbindingen nauwkeurig. Kijkend naar de foto hierboven (rode draad van Arduino vervangt "Roze"):

#define motorPin1 4 // Blauw - 28BYJ-48 pin 1
#define motorPin2 5 // Roze - 28BYJ-48 pin 2
#define motorPin3 6 // Geel - 28BYJ-48 pin 3
#define motorPin4 7 // Oranje - 28BYJ-48 pin 4
// Rood - 28BYJ-48 pin 5 (VCC)
// Blauw - 28BYJ-48 pin GND
#define STEPS_PER_TURN 2048 // aantal stappen in 360°

Arduino-gestuurde Serieel Bediende Stappenmotor-Draaibare Stand

Code

De volledige sketch in Arduino Arduino

Een volledige beschrijving van de software met commentaar

/* Stappenmotor-gebaseerd draaiplatform bestuurd via seriële dialoog
   Schema en commentaar: Zie https://www.cesarebrizio.it/Arduino/Turntable.html
   Schema is geïllustreerd hier: https://www.tdegypt.com/wp-content/uploads/2017/08/stepper-motor-wiring.png
   Het enige verschil is dat de sketch digitale outputs 4-5-6-7 gebruikt terwijl het Fritzing-schema
   aangemaakt 23 dec 2017, gewijzigd door Cesare Brizio
   Deze voorbeeldcode is in het publieke domein.
*/

/*-----( Importeer benodigde bibliotheken )-----*/
#include <AccelStepper.h>

/*-----( Declaratie constanten en pinnummers )-----*/
/* NOOIT ; NA EEN #define STATEMENT ZET!!!! */
// motorpinnen
#define motorPin1 4 // Blauw - 28BYJ-48 pin 1
#define motorPin2 5 // Roze - 28BYJ-48 pin 2
#define motorPin3 6 // Geel - 28BYJ-48 pin 3
#define motorPin4 7 // Oranje - 28BYJ-48 pin 4
// Rood - 28BYJ-48 pin 5 (VCC)
// Blauw - 28BYJ-48 pin GND
#define STEPS_PER_TURN 2048 // aantal stappen in 360°
int motorSpeed = 500; // Hoge snelheden (800+) kunnen erratisch gedrag veroorzaken bij 28BYJ-48
int motorAccel = 400; // Ook hier: extreme acceleraties beter vermijden
int myPos = 0; // wordt gebruikt om startpunt voor 360° rotaties te definiëren
int LeftTurnUp = 0; // Vlaggen voor rotatierichting
int RightTurnDown = 0; // Vlaggen voor rotatierichting
int Continuous = 0; // gebruikt om continue/éénmalige rotatie te onderscheiden
int incomingByte = 0; // voor inkomende seriële data

/*-----( Objecten voor stappenmotorbesturing )-----*/
// Stel de stappenmotor in als 4-draads bipolaire op pin 4,5,6,7
// LET OP: De volgorde 1-3-2-4 is vereist voor correcte sequentie van 28BYJ48
AccelStepper stepper(4, motorPin1, motorPin3, motorPin2, motorPin4);

void setup() {
  Serial.begin(9600);
  stepper.setMinPulseWidth(20); // Aanbevolen instelling om te voorkomen dat pulsen te snel zijn
  stepper.setMaxSpeed(motorSpeed);
  stepper.setSpeed(motorSpeed);
  stepper.setAcceleration(motorAccel);
  // De volgende twee regels resetten "stap nul" naar de huidige positie
  stepper.setCurrentPosition(stepper.currentPosition());
  stepper.runToPosition();
  Serial.println("Beschikbare commando's:");
  Serial.println("R = continue draaiing met de klok mee");
  Serial.println("r = 360° draaiing met de klok mee");
  Serial.println("L = continue draaiing tegen de klok in");
  Serial.println("l = 360° draaiing tegen de klok in");
  Serial.println("S = stop draaiing");
}

void loop() {
  if (Serial.available() > 0) {
    incomingByte = Serial.read();
    if (incomingByte == 'R') {
      Serial.println("ontvangen «R» - activeren continue draaiing met de klok mee");
      stepper.stop();
      stepper.runToPosition();
      LeftTurnUp = 1; RightTurnDown = 0;
      Continuous = 1;
      stepper.setCurrentPosition(stepper.currentPosition());
      stepper.setSpeed(motorSpeed);
    }
    if (incomingByte == 'L') {
      Serial.println("ontvangen «L» - activeren continue draaiing tegen de klok in");
      stepper.stop();
      stepper.runToPosition();
      RightTurnDown = 1; LeftTurnUp = 0;
      Continuous = 1;
      stepper.setCurrentPosition(stepper.currentPosition());
      stepper.setSpeed(motorSpeed);
    }
    if (incomingByte == 'r') {
      Serial.println("ontvangen «r» - activeren enkele draaiing met de klok mee");
      stepper.stop();
      stepper.runToPosition();
      LeftTurnUp = 1; RightTurnDown = 0;
      Continuous = 0;
      stepper.setCurrentPosition(stepper.currentPosition());
      stepper.setSpeed(motorSpeed);
      myPos = stepper.currentPosition();
    }
    if (incomingByte == 'l') {
      Serial.println("ontvangen «l» - activeren enkele draaiing tegen de klok in");
      stepper.stop();
      stepper.runToPosition();
      RightTurnDown = 1; LeftTurnUp = 0;
      Continuous = 0;
      stepper.setCurrentPosition(stepper.currentPosition());
      stepper.setSpeed(motorSpeed);
      myPos = stepper.currentPosition();
    }
    if (incomingByte == 'S') {
      Serial.println("ontvangen «S» - stoppen met draaien");
      LeftTurnUp = 0; RightTurnDown = 0;
      stepper.stop();
      stepper.runToPosition();
    }
  }
  if (Continuous == 1) {
    if (LeftTurnUp == 1) stepper.moveTo(10000);
    if (RightTurnDown == 1) stepper.moveTo(-10000);
    stepper.run();
  }
  if (Continuous == 0) {
    if (LeftTurnUp == 1) stepper.moveTo(myPos + STEPS_PER_TURN);
    if (RightTurnDown == 1) stepper.moveTo(myPos - STEPS_PER_TURN);
    stepper.run();
  }
}

Schema's

Het complete schema gemaakt in Fritzing

Arduino-gestuurde Serieel Bediende Stappenmotor-Draaibare Stand

Productieproces

  1. Temperatuur-gecontroleerde Ventilator: DIY Relais Systeem Voor Media Kast Koeling
  2. Raspoulette: Zonnestroom-gevoede Autonome Koeienpoort Systeem Prototype
  3. Zelfbouw autonom Nerf Sentry-turret – Slimme Nerf-pistool met stappenmotoren, camera en Arduino
  4. Uitgebreide bibliotheek voor bipolaire stappenmotoren met Arduino
  5. Bouw een Android-bestuurd extern voertuig met Raspberry Pi Motor Shield
  6. Geautomatiseerde Tinder & Bumble Swiper met Arduino UNO en Stappenmotor
  7. DIY Handgebaren-gestuurde Arduino Robotarm – Stap‑voor‑Stap Bouwhandleiding
  8. Lineaire motoren begrijpen: Van elektrische energie naar nauwkeurige lineaire beweging
  9. Servomotoren Uitgelegd: Hoe Ze Werken en Waarom Ze Belangrijk Zijn
  10. Stapelmotoren: typen, kenmerken en praktische toepassingen
  11. Geïntegreerde drivers vereenvoudigen high-power steppermotor-ontwerp