Moin, mal wieder ein Neueinsteiger. Für mich sind Mikrocontroller nur ein Hobby und nicht nur deswegen fehlt es wohl etwas an Grundwissen und wahrscheinlich auch an Mathematikfähigkeiten. Ich habe ein Programm geschrieben, bzw. natürlich aus den fantastischen Tutorials hier auf der Seite (Asm, C) etwas abgeschrieben, welches über einen Poti einen Servo ansteuert. Zusätzlich wird der ADC Wert über 8 LEDs verteilt angezeigt (1023 / 8). Zu meiner Überraschung hat es auch gleich funktioniert, allerdings stimmte zwar die Mittelposition des Servos, jedoch nicht die Anschlagstellungen. Statt sich von der Mitte aus ca 90° in eine Richtung zu drehen, waren es nur ca 45°. Die Leds zeigen mir, das der ADC Wert stimmt (1023 = 8 Leds; 0 = 0 Leds). Frage 1: AtMega8, Quartz 4Mhz, Timer1 CTC Modus, 64 Prescaler Meine "Berechnungen": Erinnerung: 1,5ms Signal: Servo Mittelstellung ca. 18,6ms kein Signal 4000000 / 64 = 62500 hz 1000 ms / 62500 hz = 0,016 ms 20 ms / 0,016 ms = 1250 (OCR1A) Periodenlänge für 20 ms Mittelstellung: funktioniert OCR1A = 1156: 1,5 ms = (1250 - 1156) * 0,016 ms Anschlagsstellung: nur ca. 45°: 2 ms = (1250 - 1125) * 0,016 ms 90° erreiche ich wenn ich OCR1A auf 1095 stelle: 2,48 ms = (1250 - 1095) * 0,016 ms Irgendetwas stimmt mit meinem Timing nicht oder der Servo kann längere Signale ab. Ich steig einfach nicht dahinter. Angehängt ist der Code (in C) des Programms... Frage 2: Für ein Ultraschallprojekt möchte ich einen Sender an zwei Pins anschließen und hin und her schalten (+5V/-5V). Die Frequenz soll 40hHz betragen. Muss ich jetzt innerhalb einer Periode hin und her schalten oder am Ende einer Periode umschalten? Ja, da fehlt noch einiges an Wissen! Wie hier mit 8Mhz, nur mit 4Mhz (zur Übung und ohne MOS4001) http://www.mikrocontroller.net/articles/Entfernungsmessung_mit_Ultraschall So das wärs erstmal von mir, bis dann...
Max Durst schrieb: > Servos, jedoch nicht die Anschlagstellungen. Statt sich von der Mitte > aus ca 90° in eine Richtung zu drehen, waren es nur ca 45°. Klingt für viele Servos ziemlich normal. Dein Denkfehler liegt darin, dass die 90° der komplette Servoweg sind, also 45° nach links und 45° nach rechts. Wobei allerdings auch die 90° nicht in Stein gemeisselt sind. Es gibt auch Servos die zb. 180° von einer Endstellung in die andere drehen, oder ca. 1440° (=4 Umdrehungen) (Segelwinden). Genormt ist da herzlich wenig. Wenn dein Servo mit kürzeren bzw. längeren Pulsen zurecht kommt (was viele Servos tun), dann ist das doch ok.
Max Durst schrieb: > Für ein Ultraschallprojekt möchte ich einen Sender an zwei Pins > anschließen und hin und her schalten (+5V/-5V). Die Frequenz soll 40hHz > betragen. Muss ich jetzt innerhalb einer Periode hin und her schalten > oder am Ende einer Periode umschalten? Ja, da fehlt noch einiges an > Wissen! Eine Frequenz wird gemessen, indem man eine komplette Welle betrachtet. Wenn also deine 'Welle' mit dem Übergang "0 auf 1" beginnt, dann muss die fallende Flanke "1 auf 0" bei 0.5 Sekunden sein, wenn du eine Frequenz von 1 Hz haben willst +---------+ +----- | | | | | | | | | -----+ +--------+ ^ ^ | | | 1 Sekunde = | | 1 Herz | Bei 40Hz hast du dann demenstrechend 40 mal "0 auf 1" und 40 mal "1 auf 0", also 80 Flankenwechsel in 1 Sekunde.
Hi, mein Servo (standart Modellbauservo 4,95€), hat einen kompletten Servoweg von ca. 180° (zumindest kann ich ihn dann nicht weiter drehen). Deswegen hatte es mich nur gewundert, dass er sich nur 90° bewegte. Ich war davon ausgegangen das die 1ms/2ms Signal genormte Anschlag-/Endstellungen sind und da er nicht knurrt, soll es mir recht sein, auch mal z.B. 2,48ms zu senden. Dann werde ich jetzt mal den Entfernungsmesser probieren. Danke für die Antworten
Der Pulslängenbereich 1 .. 2 ms bezieht sich meist auf +/- 45° Position und nicht auf die Anschläge. Oft geht ein Pulslängenbereich von 0,5 .. 2,5 ms, wobei das aber nicht für alle Servos garantiert ist. Auf jeden Fall darf man die Pulslänge nicht so weit ausreizen, dass der Motor knurrt, i.e. über den mechanischen Anschlag hinausfahren will. mfg
Max Durst schrieb: > Servoweg von ca. 180° (zumindest kann ich ihn dann nicht weiter drehen). > Deswegen hatte es mich nur gewundert, dass er sich nur 90° bewegte. Im Modellbaubereich braucht man meistens nicht mehr. Meistens sogar wesentlich weniger. Dazu kommt das Abtriebsgestänge, welches ja rechtwinklig aus der 0-Stellung weggeführt wird. Dreht das Servo über 45° hinaus, dann wird der Zugewinn des Weges am linearen Gestänge immer weniger. Ob das Servo 80° oder 90° aus der 0-Stellung herausgedreht hat, macht sich am Gestänge praktisch nicht mehr bemerkbar. Das Gestänge wird dann nur noch seitlich parallel verschoben aber nicht mehr vor und zurück.
1 | *** <-----> |
2 | * *------------------------------------> |
3 | * * |
4 | * * |
5 | * O * |
6 | * * |
7 | * * |
8 | * * |
9 | *** |
Ist mir dann auch aufgefallen, da das Servo irgendwann auch mal die Lenkung eines Roboterautos(1:10) steuern soll. Da bringt die geringe seitliche Bewegung über 45° natürlich wenig (je nachdem wie man die Lenkung realisiert). Trotzdem danke...
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.