Hallo,
der Weihnachtsmann hat meinem Sohn und mir ein Arduino-Einsteigerpack unter den Weihnachtsbaum gelegt. Die Installation und Einrichtung sowie die ersten Beispiele zur Ansteuerung von LED’s funktionieren auch super. Doch nun stehen wir vor einem großen Problem:
Beim Ausführen von einigen Programmen (Ansteuerung eines Motors), die über die COM-Schnittstelle kommunizieren, wird der Arduino mit dem typischen „Bing“ als USB-Gerät ausgeworfen und sofort wieder angemeldet/eingerichtet. Der Eintrag „Arduino Uno (COM6)“ im Geräte-Manager verschwindet also, taucht wieder auf, verschwindet, usw.
Der Arduino-Treiber ist auf dem aktuellen Stand, als Betriebssystem verwenden wir Windows 7 in der 64-Bit-Variante mit Service Pack 1.
Trotz intensiver Internet-Recherche hab ich bisher keine Lösung gefunden, daher meine Frage an euch – wer kennt dieses Problem und hat einen Tipp, um diesen Fehler zu beheben.
Hoi,
was hängt denn alles noch am USB-Port dran ?
Ich habe denselben Effekt an einem Notebook mit 3 USB-Anschlüssen und 3 Arduino: 2 x MEGA und 1 x UNO
Wenn ich die Boards nun über z.B. einen nicht-aktiven USB-Hub anschließe taucht genau dieser Effekt bei einem Board auf.
Sowie ich den Hub mit Strom versorge ist das Problem weg - heisst also im Umkehrschluss, dass der USB-Port überlastet wird = zu wenig Strom für alle Devices.
Für die weitere Fehlersuche habe ich die Schaltung mal extrem vereinfacht und nur einen Servo (VILROS MicroServe99 SG90) an den Arduino (GND, +5V und Digital Pin 2) angeschlossen. So wie auf dieser Seite hier:
Zusätzlich sind jetzt alle überflüssigen USB-Geräte (Drucker, externe Festplatten etc.) entfernt und nur noch Maus und Tastatur via USB-Kabel an den Rechner angeschlossen.
Wenn ich nun von o.g. Internetseite das letzte Programm („Steuerung eines kontinuierlich drehenden Servo Motors“) auf den Arduino lade tritt weiterhin mein USB-Problem auf. Also permanentes An- und Abmelden des Arduino-COM-Ports.
Stecke ich nun zusätzlich eine 9V-Baterie als zusätzliche Stromversorgung an den Arduino, bewegt sich der Servo wie vorgesehen, dass USB-Problem tritt aber weiter hin auf.
poste doch mal Deinen Sketch - kann sein, dass Du "Serial" benutzt um was an einen Port zu senden - das ist aber für den SerialMonitor reserviert.
Wenn Du im Sketch dann irgendwas initialisierst (wie z.B. den "falschen" COM-Port) startet der natürlich immer wieder durch.
P.S.: ihr habt aber auch einen kontinuierlich drehenden Servo, also 360° Servo ?
Bei einem normalen Servo funktioniert das natürlich nicht und der genannte Effekt tritt auf...
Oder habt ihr einen normalen Servo und benutzt den Sketch aus dem unteren Teil:
Steuerung eines Standard Servo Motors
In diesem Beispiel wird der Servo alle 5 Sekunden um 45 Grad gedreht.
#include <Servo.h>
Servo myServo;
const int servoPin = 2;
const int center = 12;
void setup()
{
myServo.attach(servoPin);
myServo.write(center);
}
void loop()
{
myServo.write(center);
delay(5000);
myServo.write(45);
delay(5000);
myServo.write(90);
delay(5000);
myServo.write(135);
delay(5000);
myServo.write(180);
delay(5000);
}
Wenn das USB-Kabel und die 9V-Baterie angeschlossen sind, surrt der Servo immer zwischen beiden Positionen (45° und 90°) hin und her. Zusätzlich ertönt dieses "Blong Blong" vom USB-Port. Ziehe ich die 9V-Stromversorgung ab hört man nurnoch die An- und Abmelde-Töne vom USB-Port. Der Servo dreht sich nicht mehr, zuckt nur um wenige Millimeter.
Verlängere mal Dein delay(1000); auf delay(10000); oder noch mehr.
Wenn das "Blong Blong" in den Pausen dann nicht auftritt, sondern immer nur wenn der Servo losfährt, dann ist Deine Servo-Stromversorgung viel zu schwach.
Ist das ein Laptop? Insbesondere USB-Ports an Laptops liefern oftmals nur viel weniger als 500 mA Strom.