Hallo zusammen. Ich möchte gleichzeitig 14 Servos ansteuern. Dazu brauche ich 14 Impulsbreitensteuerungen. Ich möchte das folgendermaßen realisieren. über Timer 1-Compare-Interrupt erzeuge ich die positive Flanke bei allen Ports. In der Hauptschleife frage ich dann bei jedem Durchgang den aktuellen Timerstand ab. wenn dieser den für den jeweiligen Port zuständigen Wert überschreitet, wird dieser auf 0 gesetzt. Das funzt auch gut. Nun mein Problem: Im Simlator klappt alles gut, Die Impuse haben die definierte Länge. Aber wenn ich das Programm in den Chip lade, Wackelt die Impulsbreite unregelmäßig. Die Servos geben ständig Geräusche ab, und Zucken. Das wäre für meinen Zweck nicht mal so schlimm, aber sie werden durch die ständige Motoraktivierung zu warm. Gibt es da auf dem Prozessor im Hintergrung irgndwelche Aktivitäten, die man explizit abschalten kann und müßte? Alle Interrupts ausser dem Timer-Compare sind ausser Betrieb. Gruß Fritz PS Iim angehängten File habe ich alles auskommentiert, was meiner Meinung nach probleme bereiten könnte. Auch habe ich die Impulserzeugung auf einen Port beschränkt.
Hallo zusammen. Ich habe dasP roblem mittlerweile gelöst. Das Zucken der Impulse ist offensichlich dem Oszilosscop geschuldet. Und dass die Servos gesponnen haben lag daran, dass die Impulspause zu kurz war. Ich habe jetzt einen völlig anderen Lösungsansatz verwendet, und da löste sich das Problem von alleine. Gruß Fritz
Schau Dir mal an, wie es hier gemacht habe: http://stefanfrings.de/servocontroller/index.html Da benutze ich einen Timer zur Ansteuerung von 10 Servos. Mit zwei Timern könnte man 20 Servos ansteuern. Das Hauptprogramm macht bei mir I2C Kommunikation, was dort passiert, beeinflusst das Timing der Servo-Signale nicht.
Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.