Arduino spinnt nach dem reset/programmieren für ca. 3 Sek.

Gast #4335132
Lesenswert?
• ▲
▼
Hallo,

ich habe gerade angefangen mich mit den Arduinos/Atmel AVRs zu 
beschäftigen. Habe auch erste Erfolge zu verbuchen (ansteuern A4988, 
serielle Schnittstelle, etc.). Jedoch stört mich eine Sache wenn ich den 
Arduino resette/programmiere, "spinnt" der Arduino für ca. 3 Sek. D.h. 
der Schrittmotor an pin 13 (A4988->STEP) dreht lustig vor sich hin, also 
gibt der Arduino dort ein PWM Signal raus. Danach führt er mein Programm 
wie gewollt aus.

Kann man dagegen was machen?

Vielen Dank

Der Vollständigkeit halber nachfolgend der Code der rein zu Testzwecken 
dient:
#define MOTORLEFT_DIR_FORWARD  HIGH
#define MOTORRIGHT_DIR_FORWARD LOW

void setup() {
  pinMode(8, OUTPUT);
  pinMode(9, OUTPUT);

  pinMode(12, OUTPUT);
  pinMode(13, OUTPUT);
}

void loop() {
  digitalWrite(8, MOTORLEFT_DIR_FORWARD);
  digitalWrite(12, MOTORRIGHT_DIR_FORWARD);

  digitalWrite(9, HIGH);
  digitalWrite(13, HIGH);
  delay(150);
  digitalWrite(9, LOW);
  digitalWrite(13, LOW);
  delay(150);
}
Gast #4335135
Lesenswert?
• ▲
▼
Vollnoob schrieb:
> also
> gibt der Arduino dort ein PWM Signal raus. Danach führt er mein Programm
> wie gewollt aus.

Sicher? Könnte aber auch so sein, dass der Programmer den 
Schrittmotortreiber "mitversorgt", du also die Programmierbits zu sehen 
bekommst. Dagagen hilft es, einen Enable-Eingang des Treibers mit einem 
Pin oder einem Pull-Up/Down-Widerstand zu beschalten.
Gast #4335186
Lesenswert?
• ▲
▼
Noch eine Anmerkung zum bereits Gesagten: D13 ist der LED-Pin, der 
Bootloader blinkt beim Start einige Male die LED.

Du kannst deinen Aufbau so lassen, wenn du dafür sorgst, dass der 
Arduino erst über sein Programm den Motortreibern ein enable-Signal 
gibt. Das ist sowieso empfehlenswert, da der Arduino mit 
High-Z-Ausgängen startet und somit die Signalleitungen zu den 
Motortreibern empfindlich auf Einstrahlung sind. Sinnvoll ist hier also, 
enable der Motortreiber auch vom Arduino steuern zu lassen, ihn aber 
über einen Widerstand so an eine Spannung zu legen, dass die 
Motortreiber standardmäßig ausgeschaltet sind (wenn es "enable" ist, 
dann brauchst du einen Widerstand gegen GND (pulldown), wenn es 
"~enable" ist, dann brauchst du einen Widerstand gegen Vdd (pullup). 10k 
sollten reichen.)
Gast #4335490
Lesenswert?
• ▲
▼
F. F. schrieb:
> erstmal auf LOW zu setzen

Bist Du Dir sicher? Üblich ist das inaktive mit Pullup, Ausgänge 
hochohmig. Und das active-low. Natürlich gibt es massenweise Ausnahmen, 
jeder macht es nach Gutdünken. Aber Pull-Up Widerstände sind eingebaut, 
nach Bedarf zuschaltbar. Pull-down Widerstände sind eher unüblich. 
Früher (TM) konnten die 74xx TTL-Bausteine brauchbar Strom nach Null 
schalten, das hat für eine LED gereicht (20mA), die war dann aktiv bei 
Low. Die Stromtreibfähigkeit bei High war eher untergeordnet.
Gast #4335832
Lesenswert?
• ▲
▼
Vielen Dank für eure Antworten. Ich habe nur noch eine Frage zu den 
Pullup-Widerstand.
Da es an meinem A4988 ein ~ENABLE ist (also LOW = Eingeschaltet) lege 
ich den Pullup an VCC (Logik) und schließe z.B. pin 3 des Arduinos 
zwischen Widerstand und ENABLE. Und wenn ich dann den pin 3 auf LOW 
stelle ist ~ENABLE = Enabled, ist das so richtig ?
Angehängte Dateien:
Gast #4336173
Lesenswert?
• ▲
▼
Vollnoob schrieb:
> Da es an meinem A4988 ein ~ENABLE ist (also LOW = Eingeschaltet) lege
> ich den Pullup an VCC (Logik) und schließe z.B. pin 3 des Arduinos
> zwischen Widerstand und ENABLE. Und wenn ich dann den pin 3 auf LOW
> stelle ist ~ENABLE = Enabled, ist das so richtig ?


Ulrich F. schrieb:
> Da ist zu sehen, dass ENABLE schon mit einem 100K Pulldown versehen
> wurde.


Er braucht aber einen Pullup. Wenn der Pulldown vorhanden ist, dann darf 
der Pullup nicht zu klein werden.
Gast #4336273
Lesenswert?
• ▲
▼
Vielen Dank(!) für eure Antworten. Habe nun nach dem Motto "probieren 
geht über studieren" es einfach mal so angeklemmt wie in meinem letzten 
Post angegeben. Läuft jetzt wie gewünscht und auch das "rumgezicke" nach 
reset/program hat ein Ende.

@Ulrich F.: Ja genau habe ein fertiges (noname)Breakout-Board für 
3€/Stk. (sicher aus dem tiefsten Hindukusch?! :) ) genommen.
#4336382
Lesenswert?
• ▲
▼
abc.def schrieb:
> F. F. schrieb:
>> erstmal auf LOW zu setzen
>
> Bist Du Dir sicher? Üblich ist das inaktive mit Pullup, Ausgänge
> hochohmig. Und das active-low.
Dann halt andersrum.
Mir ging es um den definierten Zustand.
Dass das aber nicht die grundsätzliche Lösung für sein Problem ist 
(bootloader), war mir klar. Pullup/-down wurde ja schon geschrieben.
Das man gerade bei der Hardware schon von vorn herein alles machen muss, 
um Störungen zu vermeiden, setzte ich mal als bekannt bei allen 
Tippgebern voraus.

Antwort schreiben

Hinweis: der ursprüngliche Beitrag ist mehr als 6 Monate alt. Bitte hier nur auf die ursprüngliche Frage antworten, für neue Fragen einen neuen Beitrag erstellen.

Formatierung
  • [c]C-Code[/c]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] – Link zu einem Artikel
  • Verweis auf einen anderen Beitrag: Rechtsklick auf dessen Beitrags-ID (#8078628), „Adresse kopieren“, in den Text einfügen

Mehr zur Formatierung

Längeren Sourcecode als Anhang, nicht in den Text. JPG nur für Fotos und Scans; Zeichnungen und Screenshots als PNG oder GIF. Siehe Bildformate.

Schon registriert? Anmelden

Wird nicht angezeigt. Wir schicken dir einen Link; sobald du damit bestätigst, erscheint dein Beitrag.

Mit dem Abschicken legst du einen kostenlosen Account an und erkennst die Nutzungsbedingungen und die Datenschutzerklärung an.