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

Op stappen gebaseerde roterende standaard bestuurd door seriële dialoog

Componenten en benodigdheden

28BYJ48 stappenmotor
× 1
X113647 Stappenmotorstuurprogramma
× 1
Pololu universele aluminium montagenaaf voor 5 mm as
× 1
Arduino UNO
× 1
Houten voet 15cm x 15cm
× 1
rubberen pads
× 4

Benodigde gereedschappen en machines

fretsaw
boor met 6 mm bit voor hout

Over dit project

Het volledige verhaal hier:http://www.cesarebrizio.it/Arduino/Turntable.html

Dit project gaat over een roterend platform op basis van een stappenmotor.

Stepper-model is 28BYJ48, bestuurd via de X113647 stappenmotordriver (gebaseerd op de ULN2003A IC) die normaal bij de stepper wordt gekocht.

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

De volgende commando's zijn geïmplementeerd:

  • R =Continu met de klok mee draaien (wat betekent:meerdere slagen)
  • r =Draaien voor 360deg; met de klok mee
  • L =Continu linksom draaien (wat betekent:meerdere slagen)
  • ik =Draaien voor 360deg; tegen de klok in
  • S =Stop met draaien

Vanuit mechanisch oogpunt is de montage heel eenvoudig:er is alleen een vierkant multiplex of soortgelijk materiaal nodig, ongeveer 15 cm x 15 cm groot, voor de ondertafel.

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

De stepper-hub is uit het midden:door de hub in het gat van 6 mm te steken, kan de contour van de stepper met een potlood worden getekend.

Vervolgens wordt met een figuurzaag een zo strak mogelijk rond gat rond de contour van de stepper gesneden, zodat de twee bevestigingsgaten van de stepper stevig op het hout van de tafel zitten, zodat ze kunnen worden gebruikt om de stepper aan de tafel.

Er zijn 10 mm hoge rubberen pads nodig om de benodigde ruimte te geven (de stepper blijft een beetje onder de tafel plakken).

De roterende plaat wordt aan de stepper bevestigd dankzij een Pololu Universal Aluminium Mounting Hub voor 5 mm Shaft.

Informatiebronnen:

Kleine stepper-besturing:http://arduino-info.wikispaces.com/SmallSteppers

Eigenlijk heb ik 4 verschillende pinnen gebruikt, maar de onderstaande circuitillustratie geeft de verbindingen nauwkeurig weer. 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 graden; 

Code

  • De volledige schets in Arduino
De volledige schets in ArduinoArduino
Een volledige beschrijving van de software met opmerkingen
/* Stepper-gebaseerde roterende standaard bestuurd door seriële dialoog Circuit en opmerkingen:Zie http://www.cesarebrizio.it/Arduino/Turntable.htmlCircuit is zoals hier geïllustreerd:https:// www.tdegypt.com/wp-content/uploads/2017/08/stepper-motor-wiring.png de enige uitzondering is dat de schets digitale uitgangen 4 - 5 - 6 - 7 gebruikt, terwijl het Fritzing-diagram is gemaakt op 23 december 2017 gewijzigd --- - door Cesare Brizio Deze voorbeeldcode bevindt zich in het publieke domein. Deze schets bestuurt een roterend platform op basis van een stappenmotor. Het stappenmotormodel is 28BYJ48, bestuurd via de X113647 stappenmotorstuurprogramma (gebaseerd op de ULN2003A IC) die normaal bij de stappenmotor wordt gekocht. Het platform kan in beide richtingen draaien en wordt bestuurd via Serial Monitor of Tera Term. De volgende commando's zijn geïmplementeerd:R =Draai met de klok mee continu (wat betekent:voor meerdere omwentelingen)r =Draai voor 360deg; met de klok meeL =Draai continu tegen de klok in (d.w.z.:voor meerdere omwentelingen)l =Draai voor 360 graden; tegen de klok inS =Stop met draaien Bronnen van informatie:Kleine stepper-besturing:http://arduino-info.wikispaces.com/SmallSteppers*//*-----( Importeer benodigde bibliotheken)-----*/#include /*-----( Declareer constanten en pinnummers)-----*//* ZET NOOIT; NA EEN #define statement!!!! */// 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 360deg;int motorSnelheid =500; // Hoge snelheden (800 en hoger) kunnen grillig gedrag veroorzaken in 28BYJ-48int motorAccel =400; // Zoals hierboven:extreme acceleraties beter vermijdensint myPos =0; // wordt gebruikt om een ​​startpunt voor 360deg te definiëren; rotatiesint Linksomhoog =0; // Paar vlaggen om de draairichting te bepalenint RightTurnDown =0; // Paar vlaggen om de draairichting te bepalen. Continu =0; // hieronder gebruikt om enkelvoudige rotatiecommando's te onderscheiden inkomendByte =0; // voor inkomende seriële data/*-----( Objecten voor stepper control)-----*/// Stel de stepper in als 4-draads bipolair op pin 4,5,6,7// OPMERKING:De volgorde 1-3-2-4 is vereist voor de juiste volgorde van 28BYJ48AccelStepper stepper(4,motorPin1,motorPin3,motorPin2,motorPin4); void setup(){ Serial.begin(9600); stepper.setMinPulseWidth(20); // Aan te raden instelling om te voorkomen dat pulsen van Arduino // te snel worden gedecodeerd stepper.setMaxSpeed(motorSpeed); stepper.setSpeed ​​(motorSpeed); stepper.setAcceleration(motorAccel); // de volgende twee regels reset "stap nul" naar de huidige positie stepper.setCurrentPosition(stepper.currentPosition()); stepper.runToPosition(); Serial.println("Beschikbare commando's:"); Serial.println ("R =continue rotatie met de klok mee"); Serial.println("r =360deg; rechtsom draaien"); Serial.println ("L =continue rotatie tegen de klok in"); Serial.println("l =360deg; tegen de klok in draaien"); Serial.println("S =stop rotatie");}void loop(){ if (Serial.available()> 0) {inkomendeByte =Serial.read(); { if (incomingByte =='R') { Serial.println("ontvangen «R» - continue rotatie met de klok mee activeren"); // De twee volgende regels maken het mogelijk om commando's in elke volgorde te verzenden:// vóór uitvoering wordt een snelle stop uitgevoerd stepper.stop(); // Stop zo snel mogelijk:stelt nieuw doel stepper.runToPosition (); // Nu gestopt na quickstop // Het volgende paar vlaggen bepaalt de draairichting LeftTurnUp =1; Rechtsomlaag =0; Continu =1; // hieronder gebruikt om enkelvoudige rotatiecommando's stepper.setCurrentPosition(stepper.currentPosition()) te onderscheiden; // Stel stap 0 "hier" stepper.setSpeed ​​(motorSpeed); // Eerdere commando's hebben de snelheid gereset } if (incomingByte =='L') { Serial.println("ontvangen «L» - continue rotatie tegen de klok in activeren"); // De twee volgende regels maken het mogelijk om commando's in elke volgorde te verzenden:// vóór uitvoering wordt een snelle stop uitgevoerd stepper.stop(); // Stop zo snel mogelijk:stelt nieuw doel stepper.runToPosition (); // Nu gestopt na quickstop // Het volgende paar vlaggen bepaalt de draairichting RightTurnDown =1; Linksomhoog =0; Continu =1; // hieronder gebruikt om enkelvoudige rotatiecommando's stepper.setCurrentPosition(stepper.currentPosition()) te onderscheiden; // Stel stap 0 "hier" stepper.setSpeed ​​(motorSpeed); // Eerdere commando's hebben de snelheid opnieuw ingesteld } if (incomingByte =='r') { Serial.println("received «r» - activering enkele rotatie met de klok mee"); // De twee volgende regels maken het mogelijk om commando's in elke volgorde te verzenden:// vóór uitvoering wordt een snelle stop uitgevoerd stepper.stop(); // Stop zo snel mogelijk:stelt nieuw doel stepper.runToPosition (); // Nu gestopt na quickstop // Het volgende paar vlaggen bepaalt de draairichting LeftTurnUp =1; Rechtsomlaag =0; Continu =0; // hieronder gebruikt om enkelvoudige rotatiecommando's stepper.setCurrentPosition(stepper.currentPosition()) te onderscheiden; // Stel stap 0 "hier" stepper.setSpeed ​​(motorSpeed); // Vorige commando's hebben de snelheid gereset // Aangezien ik 2047 stappen vooruit moet gaan, sla ik mijn huidige // positie op als startpunt van de rotatie myPos=stepper.currentPosition(); } if (incomingByte =='l') { Serial.println("ontvangen «l» - activeren enkele rotatie tegen de klok in"); // De twee volgende regels maken het mogelijk om commando's in elke volgorde te verzenden:// vóór uitvoering wordt een snelle stop uitgevoerd stepper.stop(); // Stop zo snel mogelijk:stelt nieuw doel stepper.runToPosition (); // Nu gestopt na quickstop // Het volgende paar vlaggen bepaalt de draairichting RightTurnDown =1; Linksomhoog =0; Continu =0; // hieronder gebruikt om enkelvoudige rotatiecommando's stepper.setCurrentPosition(stepper.currentPosition()) te onderscheiden; // Stel stap 0 "hier" stepper.setSpeed ​​(motorSpeed); // Vorige commando's hebben de snelheid gereset // Aangezien ik 2047 stappen achteruit moet gaan, sla ik mijn huidige // positie op als startpunt van de rotatie myPos=stepper.currentPosition(); } if (incomingByte =='S') { Serial.println("ontvangen «S» - stoppen met draaien"); // Reset de vlaggen die de draairichting bepalen LeftTurnUp =0; Rechtsomlaag =0; stepper.stop(); // Stop zo snel mogelijk:stelt nieuw doel stepper.runToPosition (); // Nu gestopt na quickstop } } } if (Continuous ==1) // continue rotatie { if (LeftTurnUp ==1) // left turn { stepper.moveTo (10000); // veel stappen verplaatsen - meer dan mechanisch nodig } if (RightTurnDown ==1) //rechts draaien { stepper.moveTo(-10000); // verplaats veel stappen - meer dan mechanisch nodig } stepper.run(); } if (Continuous ==0) // continue rotatie { if (LeftTurnUp ==1) // left turn { stepper.moveTo(myPos+STEPS_PER_TURN); // 1 draai =2048 stap } if (RightTurnDown ==1) // draai naar rechts { stepper.moveTo(myPos-STEPS_PER_TURN); // 1 draai =2048 stap } } stepper.run();} 

Schema's

Het volledige circuit gemaakt in Fritzing

Productieproces

  1. Stappenmotoren
  2. Geïntegreerde drivers vereenvoudigen het ontwerp van de stappenmotor
  3. Temperatuurgestuurde ventilator
  4. Raspoulette-prototype
  5. Autonome Nerf Sentry-toren
  6. Bipolaire stappenmotorbibliotheek
  7. Android bestuurd speelgoed met Raspberry Motor Shield
  8. Swiper - Auto Tinder/Bumble Swiper
  9. DIY Arduino-robotarm – bestuurd door handgebaren
  10. Wat is een lineaire motor?
  11. Wat is een servomotor?