Zum Inhalt springen

Steppermotor um eine bestimmte Gradzahl drehen

Projekte und Tutorials für Arduino Foren StartHardware-Forum Steppermotor um eine bestimmte Gradzahl drehen

Schlagwörter: 

Ansicht von 15 Beiträgen - 1 bis 15 (von insgesamt 21)
  • Autor
    Beiträge
  • #7050 Antworten
    Thorsten
    Teilnehmer

    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
    Thorsten

    #7051 Antworten
    Franz-Peter
    Teilnehmer

    Hast 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.

    #7052 Antworten
    Thorsten
    Teilnehmer

    Das werde ich mal versuchen….danke dir!!!

    #7067 Antworten
    Franz-Peter
    Teilnehmer

    Viel Erfolg! Und wenn noch was unklar ist – einfach fragen ;)

    #7069 Antworten
    Thorsten
    Teilnehmer

    Hallo 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.

    #7070 Antworten
    Franz-Peter
    Teilnehmer

    Hallo 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.

    #7071 Antworten
    Thorsten
    Teilnehmer

    Hi…..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?

    #7073 Antworten
    Thorsten
    Teilnehmer

    Ich bin cosplayer mit Schwerpunkt Star Wars und das ist für einen Mandalorianer Helm

    #7074 Antworten
    Franz-Peter
    Teilnehmer

    Hast 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.

    #7093 Antworten
    Stefan Hermann
    Verwalter

    Hi 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

    #7094 Antworten
    Franz-Peter
    Teilnehmer

    Hallo 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.

    #7098 Antworten
    Thorsten
    Teilnehmer

    Hi 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

    #7118 Antworten
    Franz-Peter
    Teilnehmer

    Zu 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.

    #7120 Antworten
    Thorsten
    Teilnehmer

    Hi….

    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);
    }
    #7122 Antworten
    Thorsten
    Teilnehmer

    so…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

Ansicht von 15 Beiträgen - 1 bis 15 (von insgesamt 21)
Antwort auf: Antwort #7073 in Steppermotor um eine bestimmte Gradzahl drehen
Deine Information: