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

Bitte melde dich an, um einen Beitrag zu schreiben.

oder

Mit Google-Account einloggen

Die Registrierung ist kostenlos und dauert nur eine Minute.

Jetzt registrieren