Projekte und Tutorials für Arduino › Foren › StartHardware-Forum › Steppermotor um eine bestimmte Gradzahl drehen
Schlagwörter: Steppermotor ansteuern
- Dieses Thema hat 21 Antworten und 3 Teilnehmer, und wurde zuletzt aktualisiert vor 1 Woche, 5 Tage von vijy.
-
AutorBeiträge
-
ThorstenTeilnehmer
Hallo,
ich möchte einen Steppermotor28byj-48, bei gedrücktem Taster um eine einstellbare Gradzahl drehen lassen, bei erreichen der Gradzahl soll der Motor solange die Position halten bis der Taster losgelassen wird und der Motor wieder zurück auf 0 fährt.
Habe dazu noch nicht wirklich was im Internet gefunden, kann mir da von euch jemand weiterhelfen?
Bin für jede Antwort dankbar!!!LG
ThorstenFranz-PeterTeilnehmerHast Du dir mal meine MobaTools angeschaut? Damit kannst Du einen Steppermotor ansteuern und auch Zielpositionen in Grad vorgeben. Es sind auch Beispiele dabei. Bei einem Stepper brauchst Du aber immer einen Referenzpunkt, da Du beim Starten des Programms ja nicht weist, wo der steht.
P.S. Die Lib kannst Du direkt über den Bibliotheksmanager installieren.
ThorstenTeilnehmerDas werde ich mal versuchen….danke dir!!!
Franz-PeterTeilnehmerViel Erfolg! Und wenn noch was unklar ist – einfach fragen ;)
ThorstenTeilnehmerHallo Franz-Peter……danke dir für die Lib…..allerdings blicke ich nicht ganz durch…..besteht die Möglichkeit das wir uns gemeinsam meine Problematik anschauen und bearbeiten?
Würde mich über deine Hilfe sehr freuen.
Franz-PeterTeilnehmerHallo Thorsten,
hast Du denn schonmal ein Beispiel hergenommen, und deinen Motor überhaupt zum Laufen gebracht? Das wäre ja mal der erste Ansatz.
Um wieviel Grad soll denn der Motor überhaupt drehen? Bisher hast Du ja noch nicht gesagt, was das werden soll.ThorstenTeilnehmerHi…..ich schicke dir morgen einen sketch…..der so ziemlich das macht was ich möchte….
Es soll an einem Helm seitlich bei Knopfdruck eine zielerfassungsvorrichtung herunterfahren….so um Ca. 85 bis 95 Grad…das muss man eben einstellen können….gleichzeitig sollen 18 LEDs ws2812 faden und bei erreichen der endposition ganz leuchten….d.h. Ich muss zusätzlich mit millis arbeiten.
Wenn der tastet wieder losgelassen wird dann soll das ganze retour gehen….zur Not kann man mit 2 Schaltern als endschalter arbeiten….
Mein sketch macht das so weit….aber eben noch nicht gleichzeitig und die gradzahl des steppers ist eben noch nicht perfekt eingestellt….
Hast du Messenger oder whatsapp oder wollen wir das hier machen?ThorstenTeilnehmerIch bin cosplayer mit Schwerpunkt Star Wars und das ist für einen Mandalorianer Helm
Franz-PeterTeilnehmerHast du Messenger oder whatsapp oder wollen wir das hier machen?
In einem Forum macht man das üblicherweise öffentlich. Zum einen haben dann auch andere mit ähnlichen Problemen was davon, zum anderen haben vielleicht auch andere noch gute Ideen dazu.
Stefan HermannAdministratorHi Thorsten,
wäre das nicht was für einen normalen Servo-Motor? Dem kann man ja genau sagen, wohin er sich stellen soll. Und die Zielvorrichtung ist ja nicht super schwer, oder? Im Grunde ist es glaube ich mit diesem Beispiel verwandt: https://starthardware.org/bahnuebergang-schranke-und-andreaskreuz-mit-arduino/
Liebe Grüße
Stefan
Franz-PeterTeilnehmerHallo Thorsten,
bei einem Drehwinkel von nur 95 Grad würde ich auch auf jeden Fall für eine Servo plädieren. Das ist in dem Fall wesentlich einfacher. Beim langsamen Drehen des Servo können dir meine MobaTools auch helfen.
Und diskutieren sollten wir das auf jeden Fall hier öffentlich. Dazu ist ein Forum ja da.ThorstenTeilnehmerHi ihr 2…
danke für die Rückmeldungen. Ich mache das im Auftrag eines Kollegen und der möchte einen Steppermotor verwenden, da er da einige davon zu Hause hat.
Meine persönliche Meinung wäre auch ein Servo, damit habe ich schon einige gebaut und programmiert mit 2,4ghz fernsteuerung, alles easy.Ich muss mal gucken ob ich den Kollegen überreden kann nicht doch auf Servo umzusteigen….
Und wegen dem Vorschlag mit Messenger oder WhatsApp wollte ich nur das es hier nicht vollgespamt wird…
Mich würde es trotzdem interessieren das Projekt mit einem Stepper umzusetzen….da ich gerade noch in der Arbeit bin werde ich heute Abend den Sketch den ich bis jetzt habe hier mal posten, würde mich freuen wenn wir da zusammen was machen könnten…
die millis() Funktion ist für mich immer noch ein klein wenig ein Buch mit sieben Siegeln..
Lg und danke schon mal
euer Thorsten
Franz-PeterTeilnehmerZu den millis(): Du kannst dir mal den MoToTimer in den MobaTools anschauen, und die Beispiele dazu ausprobieren. Vielleicht tust Du dich damit leichter.
Das Hauptptoblem beim Stepper ist die Geschichte mit dem Referenzpunkt. Du weist beim Einschalten ja nicht wo er steht. Und im Gegensatz zu einem Servo kannst Du ihn ohne bekannten Referenzpunkt nicht absout positionieren.
ThorstenTeilnehmerHi….
so hier mal der Sketch den ich bis jetzt habe…..
damit fadet der LED Stripe einmal auf und runter…..danach fährt der Motor die Steps und dann leuchten die LEDs konstant…..
und das soll nun gleichzeitig laufen und so ca. 5 bis 6 sek. dauern….Ich habe hier jetzt auch nur einen Taster erstmal zum testen zum runterfahren des Rangefinders, beim betätigen eines zweiten Tasters soll dann der Rangefinder wieder nach oben fahren und die LEDs wieder faden…..
und da hab ich nun das Problem mit den millis()…..
#include <Stepper.h> #include <Adafruit_NeoPixel.h> #define PIN 6 #define BRIGHTNESS 50 int button = 5; const int steps = 500; Stepper stepper(steps, 8,9,10,11); Adafruit_NeoPixel strip = Adafruit_NeoPixel (18, PIN, NEO_GRB + NEO_KHZ800); void setup() { // put your setup code here, to run once: strip.begin(); strip.show(); strip.setBrightness(BRIGHTNESS); stepper.setSpeed(30); pinMode(button, INPUT); } void loop() { // put your main code here, to run repeatedly: if(digitalRead(button)==HIGH){ redfade(); motor(); for(int i = 0; i<strip.numPixels();i++){ strip.setPixelColor(i,strip.Color(255,0,0)); strip.show(); } }else{ } } void motor(){ stepper.step(-steps); } void redfade(){ uint16_t i,j; for (j=15;j<255;j++){ for(i=0;i <strip.numPixels(); i++){ strip.setPixelColor(i,j,0,0); } strip.show(); delay(10); } delay(500); for(j=255;j>15;j--){ for(i=0;i<strip.numPixels(); i++){ strip.setPixelColor(i,j,0,0); } strip.show(); delay(10); } delay(500); }
ThorstenTeilnehmerso…mit diesem Sketch hab ich jetzt den 2ten Taster auch dabei und der Motor fährt auch wieder hoch
#include <Stepper.h> #include <Adafruit_NeoPixel.h> #define PIN 6 #define BRIGHTNESS 50 int button = 5; int button2 = 3; const int steps = 500; Stepper stepper(steps, 8,9,10,11); Adafruit_NeoPixel strip = Adafruit_NeoPixel (18, PIN, NEO_GRB + NEO_KHZ800); void setup() { // put your setup code here, to run once: strip.begin(); strip.show(); strip.setBrightness(BRIGHTNESS); stepper.setSpeed(30); pinMode(button, INPUT); pinMode(button2, INPUT); } void loop() { // put your main code here, to run repeatedly: if(digitalRead(button)==HIGH){ redfade(); motordown(); for(int i = 0; i<strip.numPixels();i++){ strip.setPixelColor(i,strip.Color(255,0,0)); strip.show(); } }else{ } if(digitalRead(button2)==HIGH){ redfade(); motorup(); for(int i = 0; i<strip.numPixels();i++){ strip.setPixelColor(i,strip.Color(0,0,0)); strip.show(); } }else{ } } void motordown(){ stepper.step(-steps); } void motorup(){ stepper.step(steps); } void redfade(){ uint16_t i,j; for (j=15;j<255;j++){ for(i=0;i <strip.numPixels(); i++){ strip.setPixelColor(i,j,0,0); } strip.show(); delay(10); } delay(500); for(j=255;j>15;j--){ for(i=0;i<strip.numPixels(); i++){ strip.setPixelColor(i,j,0,0); } strip.show(); delay(10); } delay(500); }
Videolink folgt
-
AutorBeiträge