- LiFePO4 Speicher Test         
Seite 3 von 3 ErsteErste 123
Ergebnis 21 bis 26 von 26

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

  1. #21
    Anzeige

    Praxistest und DIY Projekte
    previous was not declared in this scope. Ich habe da einfach keine ahnung, um das entsprechend zu adaptieren. es läuft einfach nix.
    DIR habe ich an Digital 3, STEP an Digital 2 und den Knopf an Digital 4 und 5V, weiterhin den Widerstand zwischen Digital 4 und GND

    Den ersten Code in meinem Beitrag von 21:01 habe ich genauso kopiert, obwohl hier Digital1 und Digital 2 als Ausgang hergenommen wird und bei mir dieses ja 2 und 3 sind. Das ist schonmal das Erste, was ich nicht verstehe. Aber immerhin funktionierte das. GErade eben habe ich es nocheinmal getestet. Es funktioniert immer noch, also der Motor ist heile, und müsste folglich auch korrekt am Polololu angeschlossen sein.

    der betirag von nasenbär von 14:54 entsprechend mithilfe des Links http://www.arduino-tutorial.de/2010/06/digital-in/ auf Arduino umgeschrieben, da Arduino "Taste" nicht kennt:

    const int buttonPin = 4;

    int buttonState = 0;


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

    void loop() {
    buttonState = digitalRead(buttonPin);
    if (buttonState == HIGH) {
    digitalWrite(2, HIGH); // +5V an Pin D1
    digitalWrite(3, HIGH); // +5V an Pin D2
    delay(100); // warte eine zehntel Sekunde
    digitalWrite(3, LOW); // Gnd an Pin D2
    delay(100); // warte eine zehntel Sekunde

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


    nix geht und ich kann mir da nicht helfen. muss ich vielleicht einen schalter statt eines tasters nehmen?

    - - - Aktualisiert - - -

    Hallo, jetzt geht es.

    bei obigem Code muss man 2 durch 3 und 3 durch 2 ersetzen, dann geht es. DIR is bei mir auf 3 und STEP auf 2, also jeweils anderes herum wie in den geposteten Codes

    - - - Aktualisiert - - -

    aber den Taster muss ich durch einen Schalter ersetzen, da der Motor sich nur solange in die Gegenrichtung bewegt, wie ich die Taste drücke?

    - - - Aktualisiert - - -

    müssen nur Taster oder auch Schalter entprellt werden? UNd was ist "entprellen" in einfachen Worten?

  2. #22
    Erfahrener Benutzer Robotik Einstein Avatar von Geistesblitz
    Registriert seit
    16.03.2011
    Ort
    Dresden
    Alter
    37
    Beiträge
    1.937
    Dafür musst du gucken, ob der Ausgang schon auf High ist oder nicht.
    Mal in Pseudocode ausgedrückt:

    Code:
    if Taste==High and Dir==High
       Dir=Low;
    elseif Taste==High and Dir==Low
       Dir=High;
    Das sorgt dann dafür, dass bei Tastendruck umgeschaltet wird, allerdings schaltet der dann immer um, wenn er die Schleife aufruft, hält man also länger gedrückt, wechselt es immer zwischen vor und zurück. Daher müsstest du wohl noch eine Variable einführen, die in der Schleife gesetzt wird und dann ein erneutes Umschalten verhindert.
    Quasi so:

    Code:
    if Taste==High and Dir==High and Bla==Low
       Dir=Low;
       Bla=High;
    elseif Taste==High and Dir==Low and Bla==Low
       Dir=High;
       Bla=High;
    elseif Taste==Low and Bla==High
       Bla=Low;
    Edit: Schalter entprellen? Hmm, das weiß ich ehrlich gesagt auch nicht, bei Tastern muss es aber sein. Entprellen bedeutet, dass beim Drücken der Kontakt nicht sofort geschlossen wird, sondern eventuell durch irgendwelche Effekte noch ein zweites Mal auslöst. Dies lässt sich entweder durch einen Kondensator zwischen Eingang und Gnd lösen, der das Spannung für die kurze Zeit hält, oder man macht das softwareseitig, indem man nach dem ersten Kontakt ein Weilchen wartet, bis der Eingang wieder abgefragt wird. Das Entprellen macht aber auch nur Sinn, wenn durch den Taster ein Interrupt ausgelöst wird, wenn du ihn eh nur alle 100ms abfragst, ist die Chance sehr gering, dass er ausgerechnet in dem Moment, wo er abgefragt wird, prellt.
    Geändert von Geistesblitz (12.01.2014 um 16:44 Uhr)

  3. #23
    wundert mich das der code funktioniert hat war einfach mal so hin geschrieben. auch hier wieder einfach um das Schema zu verdeutlichen. Bei fragen fragen :P
    schau dir mal externe Interrupts an das wäre wahrscheinlich die eleganteste Lösung dazu.
    versuch mal :

    const int buttonPin = 4;
    const int Dir = 3;
    const int Step = 2;

    int buttonState = 0;
    int merker=0;

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

    void loop() {

    buttonState = digitalRead(buttonPin);

    if ((buttonState == HIGH)&&(merker==0))
    {
    digitalWrite(Dir, HIGH); // +5V an Pin D1
    merker=1;
    }

    if ((buttonState == LOW)&&(merker==1))
    {
    merker=2;
    }

    if ((buttonState == HIGH)&&(merker==2))
    {
    digitalWrite(Dir, LOW); // +5V an Pin D1
    merker=3;
    }
    if ((buttonState == LOW)&&(merker==3))
    {
    merker=0;
    }


    }

    digitalWrite(Step, HIGH); // +5V an Pin D2
    delay(100); // warte eine zehntel Sekunde
    digitalWrite(Step, LOW); // Gnd an Pin D2
    delay(100); // warte eine zehntel Sekunde


    }


    gruß

    Andreas

  4. #24
    Hi, eine ganz doofe Frage ich habe folgenden Sketch benutzt. Der Motor dreht sich nun 1 Milisekunde rechts....Pause....und 1 Milisekunde links. Wie kriege ich es hin, dass sich der Motor länger in die eine Richtung und dann länger in die andere Richtung dreht?

    Ich weiß, dass das für euch alle wahrscheinlich sehr simpel ist. Würde mich sehr freuen....


    /*
    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
    }

  5. #25
    Erfahrener Benutzer Roboter-Spezialist
    Registriert seit
    22.07.2009
    Beiträge
    405
    Du hast die Kabel vertauscht -
    Pin 1 muß an Richtung
    Pin 2 an Tackt

    digitalWrite(1, HIGH); // +5V an Pin D1 läßt den Motor in eine Richtung drehen, dauerhaft
    digitalWrite(1, LOW); // Gnd an Pin D1 läßt ihn in die andere Richtung drehen, dauerhaft

    Dann wird in der Schleife Pin 2 dauerhaft getoggelt (umgeschaltet von +5V auf Gnd und zurück)
    Dieser Wechsel ist der Tackt in dem der Motor dreht.

    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 Du die delayzeit verkleinerst dreht der Motor schneller
    wenn Du sie vergrößerst dreht er langsamer - - -

  6. #26
    Neuer Benutzer Öfters hier
    Registriert seit
    15.08.2016
    Beiträge
    7
    hallo,

    ich bin gerade dabei einen nema 17 mit dem Pololu anzusteuern. habe bisher auch alles angeschlossen bis auf den motor power supply...kann mir jemand empfehlen, was ich da kaufen sollte?

    danke und viele grüße
    danny

Seite 3 von 3 ErsteErste 123

Ähnliche Themen

  1. Pololiu A4988 STEP-Eingang mit PWM steuern - geht das?
    Von acrobat88 im Forum Elektronik
    Antworten: 2
    Letzter Beitrag: 10.10.2011, 22: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, 17:31
  3. Schrittmotor Ströme & Pololu A4983
    Von irrenhaus im Forum Motoren
    Antworten: 2
    Letzter Beitrag: 29.11.2010, 17:32
  4. SCP1000 an Arduino Duemilanove anschließen
    Von Calmato im Forum Sensoren / Sensorik
    Antworten: 2
    Letzter Beitrag: 19.08.2010, 17:08
  5. 3,3 V Sensoren an einem Arduino Duemilanove
    Von Calmato im Forum Elektronik
    Antworten: 10
    Letzter Beitrag: 26.07.2010, 16:28

Berechtigungen

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

Solar Speicher und Akkus Tests