Das Servo versucht möglichst schnell die Position zu erreichen, die ihm die Pulsweite vorgibt. Man müße also die Sollpulsweite, die durch die ADC Messung vorgegeben wird, von der Istpulsweite aus langsam erreichen. Deine If Bedingung, in der OCR1A um eins verändert wird, steht vermutlich in einer Schleife, die "irre schnell" immer wieder durchlaufen wird. Schneller, als das Servo der durch OCR1A veränderten Pulsweite folgen kann und deshalb versucht es also so schnell es ihm möglich ist, ihr zu folgen.
Gibt sicher viele Möglichkeiten, die Pulsweite von Ist nach Soll langsam zu verändern. Eine simple wäre, die Schleife, in der die IF Abfragen stehen einfach durch ein delay zu verzögern. Welches delay passend ist müßte man ausprobieren. Schätze mal so mit 5ms bis 20ms könnte man anfangen. Dadurch würde auch die ADC Abfrage verlangsamt, sollte aber bei dem Sonnenfolger und den langsamen LDR keine Rolle spielen.
Eine ausgefeilte Möglichkeit bietet oberallgeier an, bedeutet aber auch schon einiges an Einarbeitungszeit.
Kann man auch meistens vernachlässigen. Nur wenn unerklärbare Problem auftauchen, sollte man auch an so etwas denken.@Searcher: Hallo Searcher!
Ja das klingt logisch, dass beim ersten initialisieren die TOP-Werte warscheinlich unsauber sind. Auch wenn ich diese heute beim Test nicht bemerken konnte. Ich werde sie trotzdem anpassen!
Gruß
Searcher
Lesezeichen