Hallo!
Für ein kleines Projekt würde ich gerne einen Servomotor über ein
Potentiometer steuern. Der Servomotor läuft bereits, und lässt sich über
das Poti steuern. Jedoch verliert der Servo anscheinend immer wieder das
Signal. Dreh ich das Poti langsam von 0 auf ca. 1/2 Anschlag folgt mir
der Servo ca. 1:1, dreh ich dann etwas weiter verliert der Motor auf
einmal die Verbindung (Windows Plugin Sound kommt) und marschiert nur
noch in größeren einzelnen Schritten weiter. Bleib ich dann wieder auf
dem Wert, und drehe wieder langsam in die andere Richtung so fängt er
sich wieder und marschiert 1:1 weiter bis er das nächste mal die
Verbindung verliert.
Habt ihr eventuell eine Ahnung was das sein könnte? Vielen Dank schonmal
für eure Hilfe & Ideen.
LG
Kurze Daten:
Servo VILROS MicroServe SG90 (Pulsbreite von 500us-2500us)
Arduino UNO Board - ATmega328p
(Den Code sende ich sobald sich einer damit auseinander setzen möchte)
Gut, danke. Werde es demnächst ausprobieren, hab nun aber noch 2 weitere
Probleme :D
Und zwar: Soll über UART die aktuelle Grad Position gesendet werden, so
dass der PC User immer weiß welche Stellung der Servo gerade hat. Dies
funktioniert ebenfalls bereits, jedoch unterbricht die Datenübertragung
immer wieder nach unterschiedlicher Zeit. Mittels _delay_ms(1000) sollte
mir die Schnittstelle am PC jede Sekunde die aktuelle Position senden.
Hier der UART-Code und die Umrechnung auf Grad in dem ich die Werte vom
Poti (0-1023) auf 0-180° umrechne (/5,68).
Hab jetzt aber leider keine 5V Versorgung bei der Hand und würde gerne
die anderen Probleme noch beseitigen. Ich bin leider alles schon zu oft
durchgegangen und anscheinend verlese ich mich immer wieder an einer
Stelle, da beides ja schon ziemlich gut funktioniert würde ich sagen,
kann es nur an einer Kleinigkeit liegen. Kennt sich von euch zufällig
jemand gut mit UART aus und verwendet ev. auch HTerm als
Schnittstellensoftware?
Danke für den Hinweis. Hab leider schon unzählige verschiedene
Code-Versionen an denen ich rumbastle. Bin jetzt der Meinung dass die
Versorung einfach zu wenig ist, somit die Verbindung verloren geht und
daher dann auch das Schnittstellenprogramm nicht mehr arbeitet.
Das einzige was noch fehlt:
Der Servo soll durch Eingabe in HTerm (Dez.) (0-180°) an die gewünschte
Position fahren. Bekommt der uC nun also eine Eingabe, so soll er den
ADC deaktivieren (sodass Änderung mittels Poti kurzzeitig nicht mehr
möglich ist), und an die gewünschte Position fahren. Ist dies
abgearbeitet, so soll er den ADC wieder aktivieren.
Ich habe oben schon ein Interrupt geschrieben. Teste ich das ganze mit
einer Hilfsvariable, so bekomm ich immer einen Wert gesendet, obwohl der
ADC deaktiviert ist, und erst ein Wert kommen dürfte wenn ich eine
Eingabe getätigt habe. Hat hierzu jemand vielleicht einen
Lösungsvorschlag, oder gar einen Weg?
LG