- 3D-Druck Einstieg und Tipps         
Seite 2 von 3 ErsteErste 123 LetzteLetzte
Ergebnis 11 bis 20 von 26

Thema: [Anfänger] Schrittmotor mit Pololu A4988 und Arduino Duemilanove verbinden

  1. #11
    Anzeige

    Praxistest und DIY Projekte
    Zitat Zitat von dussel07 Beitrag anzeigen
    GAAANZ Wichtig!!!
    Den Pololu Treiber erst mit Spannung versorgen wenn ein Motor angeschlossen ist!! Ansonsten löst der sich sofort in Rauch auf.
    Ansonsten:
    Arduino mit Spannung versorgen (Buchse oder USB) -
    vom Arduino +5V und Gnd zum Treiber Vdd (+5V) und Gnd -
    vom Arduino Digital 01 zum Treiber DIR -
    vom Arduino Digital 02 zum Treiber STEP -
    Treiber Brücke von sleep zu reset -
    Treiber Schrittmotor anschließen -
    Treiber Spannungsversorgung für Schrittmotor anschließen -
    Fertig -
    Im Programm erst mal dauerhaft Digital 01 auf High oder Low setzen -
    und Digital 02 toggeln (ständiges wechseln von High auf Low) -


    /*
    Schrittmotor
    alle 200ms ein Schritt in eine Richtung.

    This example code is in the public domain.
    */

    void setup() {
    // setzen der Digitalpins 1 und 2 als Ausgang.
    pinMode(1, OUTPUT);
    pinMode(2, OUTPUT);
    }

    void loop() {
    digitalWrite(1, HIGH); // +5V an Pin D1
    digitalWrite(2, HIGH); // +5V an Pin D2
    delay(100); // warte eine zehntel Sekunde
    digitalWrite(2, LOW); // Gnd an Pin D2
    delay(100); // warte eine zehntel Sekunde
    }




    wenn alles richtig ist dreht sich der Motor in eine Richtung
    Genau so habe ich es gemacht. Ich nutze den Conrad Emis Schrittmotor E547-52500 12 V/DC Schrittmotor an einem Pololu A4988 und einem Arduino Uno R2
    http://www.conrad.de/ce/de/product/1...A-Wellen-5-mm?

    Es funktioniert!. Aber ich möchte gerne die Drehrichtung des Schrittmotors manuell durch den Druck einer Taste ändern können.
    Wie muss der Sketch dann abgeändert werden bzw. wie muss der Schaltplan dann aussehen.

    Wäre super nett wenn ihr einem Neuling weiterhelfen könnt!

  2. #12
    Erfahrener Benutzer Roboter-Spezialist
    Registriert seit
    12.07.2006
    Ort
    Puchheim
    Alter
    76
    Beiträge
    455
    Ich würde eher einen Schalter an einem Digital-Pin (z.B. D2) verwenden. Wenn der Pin z.B auf Low (0V) ist , soll der Motor rechts rum drehen, falls High (5V), links rum. Brauchst dazu nur einen einpoligen Schalter und einen Widerstand. Im Arduino Forum mehrfach beschrieben.

    Das obige Zitat von dussel07 ist - wie ich leider anfangs schmerzhaft feststellte - für den A4988 lebenswichtig !

    Gruss mausi_mick

  3. #13
    Erfahrener Benutzer Fleißiges Mitglied
    Registriert seit
    13.09.2010
    Ort
    Bad Nenndorf
    Beiträge
    159
    int richtung = 1;void setup() {
    // setzen der Digitalpins 1 und 2 als Ausgang.
    pinMode(1, OUTPUT);
    pinMode(2, OUTPUT);
    pinMode(3, INPUT);
    digitalWrite(1, HIGH); // +5V an Pin D1
    }


    void loop() {
    do{
    digitalWrite(2, HIGH); // +5V an Pin D2
    delay(100); // warte eine zehntel Sekunde
    digitalWrite(2, LOW); // Gnd an Pin D2
    delay(100); // warte eine zehntel Sekunde
    } while (digitalRead(3) == LOW);
    if (richtung == 0){
    richtung = 1;
    digitalWrite(1, HIGH);
    }
    else{
    richtung = 0;
    digitalWrite(1, LOW);
    }
    delay(10);

    }
    Das müsste eigentlich gehen.
    Du musst nur einen Taster an Pin3 anschließen http://www.arduino-tutorial.de/2010/06/digital-in/.

  4. #14

    geht leider nicht

    Zitat Zitat von robots4-ever Beitrag anzeigen
    Das müsste eigentlich gehen.
    Du musst nur einen Taster an Pin3 anschließen http://www.arduino-tutorial.de/2010/06/digital-in/.
    vielen dank, aber bis jetzt geht leider noch nix.

    ich habe jetzt einen taster und einen widerstand hergenommen und diesen code ausprobiert. der motor gibt nur ein hochfrequentes fiepen von sich.

    ich bin total verzweifelt, da ich das unbedingt hinkriegen muss.

  5. #15
    huhu

    gieb den Motor mal 5 ms als delay. bei 100ms sieht man ka kaum das sich da was bewegt.
    tut sich dann immer noch nichts sieht es nach falsch angeschlossenem Motorwiklingen aus.
    haste ein ossy da?

    Gruß
    Andreas

    Edit: du willst doch auf die taste drücken und er soll los laufen oder?

  6. #16
    Erfahrener Benutzer Fleißiges Mitglied
    Registriert seit
    13.09.2010
    Ort
    Bad Nenndorf
    Beiträge
    159
    Hmmm

    ich habe alles so wie in diesem Thread beschrieben aufgebaut und bei mir geht es.
    Hast du alles richtig angeschlossen?

  7. #17
    ich werde in ner std mal posten wie ich es verdarhtet habe, vllt. habe ich ja was falsch gemacht.

    ich wollte, dass mit tasterdruck die drehrichtung solange geändert wird, bis wieder gedrückt wird.

    wiegesagt, der sketch in meinem Beitrag von 21:01 Uhr funktioniert aber. insofern müssten doch die wicklungen richtig angeschlossen sein?

  8. #18
    richtig schreib mal vor das im loop

    eine if schleife die den Taster abfragt und bei high bin d1 high setzt und im else d1 low setzt, dann sollte die Drehrichtung schon mal ändern können.


    edit1:


    void setup() {
    // setzen der Digitalpins 1 und 2 als Ausgang.
    pinMode(1, OUTPUT);
    pinMode(2, OUTPUT);
    pinMode(3, INPUT);
    }

    void loop() {

    Taste = digitalRead(3);

    if (Taste == HIGH) {
    digitalWrite(1, HIGH); // +5V an Pin D1
    digitalWrite(2, HIGH); // +5V an Pin D2
    delay(100); // warte eine zehntel Sekunde
    digitalWrite(2, LOW); // Gnd an Pin D2
    delay(100); // warte eine zehntel Sekunde
    }else {
    digitalWrite(1, LOW); // +5V an Pin D1
    digitalWrite(2, HIGH); // +5V an Pin D2
    delay(100); // warte eine zehntel Sekunde
    digitalWrite(2, LOW); // Gnd an Pin D2
    delay(100); // warte eine zehntel Sekunde
    }

    }


    so müsste das ungefähr aussehe programmiere die Dinger normal im avr-studio in c da ist der code etwas andert


    edit2: hoffe das mit der schleife vor dem loop wird was klare durch edit1 war etwas unglücklich ausgedrückt sorry dafür.
    Geändert von nasenbär1 (12.01.2014 um 13:31 Uhr)

  9. #19
    Erfahrener Benutzer Fleißiges Mitglied
    Registriert seit
    13.09.2010
    Ort
    Bad Nenndorf
    Beiträge
    159
    Das mit der IF Verknüpfung vor der loop Schleife verstehe ich nicht ganz.

  10. #20
    Erfahrener Benutzer Roboter-Spezialist
    Registriert seit
    12.07.2006
    Ort
    Puchheim
    Alter
    76
    Beiträge
    455
    hallo,

    mit den Tatern ist das wegen des "Prellens" etwas kritisch, daher einen debounce einbauen , z.B. aus

    http://forum.arduino.cc/index.php?topic=170643.0




    void loop()
    {
    reading = digitalRead(inPin);

    // Beim Wechsel des Eingangs von LOW zu HIGH und nach der Entprellzeit:
    if (reading == HIGH && previous == LOW && millis() - time > debounce) {
    time = millis();
    Tue irgendwas
    }

    // Beim Wechsel des Eingangs von HIGH zu LOW und nach der Entprellzeit:
    if (reading == LOW && previous == HIGH && millis() - time > debounce) {
    time = millis();
    Tue irgendwas anderes
    }
    previous = reading;
    }

Seite 2 von 3 ErsteErste 123 LetzteLetzte

Ähnliche Themen

  1. Pololiu A4988 STEP-Eingang mit PWM steuern - geht das?
    Von acrobat88 im Forum Elektronik
    Antworten: 2
    Letzter Beitrag: 10.10.2011, 21:57
  2. [ERLEDIGT] [ARDUINO] 2 Motoren + Servo mit dem Arduino Uno steuern
    Von Torrentula im Forum C - Programmierung (GCC u.a.)
    Antworten: 0
    Letzter Beitrag: 31.08.2011, 16:31
  3. Schrittmotor Ströme & Pololu A4983
    Von irrenhaus im Forum Motoren
    Antworten: 2
    Letzter Beitrag: 29.11.2010, 16:32
  4. SCP1000 an Arduino Duemilanove anschließen
    Von Calmato im Forum Sensoren / Sensorik
    Antworten: 2
    Letzter Beitrag: 19.08.2010, 16:08
  5. 3,3 V Sensoren an einem Arduino Duemilanove
    Von Calmato im Forum Elektronik
    Antworten: 10
    Letzter Beitrag: 26.07.2010, 15:28

Berechtigungen

  • Neue Themen erstellen: Nein
  • Themen beantworten: Nein
  • Anhänge hochladen: Nein
  • Beiträge bearbeiten: Nein
  •  

12V Akku bauen