Forum: Mikrocontroller und Digitale Elektronik Frequenzen Servo/Ultraschall


von Max D. (Firma: Hobby) (fmhweb)


Angehängte Dateien:

Lesenswert?

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...

von Karl H. (kbuchegg)


Lesenswert?

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.

von Karl H. (kbuchegg)


Lesenswert?

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.

von Max D. (Firma: Hobby) (fmhweb)


Lesenswert?

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

von Tip (Gast)


Lesenswert?

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

von Karl H. (kbuchegg)


Lesenswert?

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
                ***

von Max D. (Firma: Hobby) (fmhweb)


Lesenswert?

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
Noch kein Account? Hier anmelden.