Forum: Mikrocontroller und Digitale Elektronik Encoderauswertung und Steuerung auf einem Mikrocontroller


von Silvan M. (schnudi)


Lesenswert?

Hallo zusammen

Ich arbeite zurzeit an einem kleinen Roboter welcher mit fünf 
Ultraschallsensoren, zwei Motoren und einigen weiteren Tasten 
ausgestatet ist.
über eine UART Schnittstelle soll eine Kommunikation zu einem weiteren 
Gerät hergestellt werden.

Meine Frage ist nun, ob es möglich ist, auf einem Mikrocontroller (in 
meinem Fall ein atmel atmega2560 (arduino mega)) die Auswertung von zwei 
Encodern und den Ultraschallsensoren sowie die gesamte Steuerung des 
Roboters umzusetzen.
Am meisten Sorgen machen mir die Encoder. Die Richtung wird nicht 
dedektiert. Das heisst pro Motor gibt es nur einen Wert welcher 
Inkrementiert wird. Bei etwa 50 Ticks pro Umdrehung und knapp 2 
Umdrehungen pro Sekunde hoffe ich, dass der Kontroller nicht ständig in 
einem Interrupt festsitzt und die Auswertung und Steuerung zuverlässig 
machen kann.

Könnte dies klappen oder wäre der einsatz eines zweiten Kontrollers 
sinnvoll??

Vielen Dank für eure Tipps!

von Peter II (Gast)


Lesenswert?

Silvan Murer schrieb:
> 50 Ticks pro Umdrehung und knapp 2
> Umdrehungen pro Sekunde hoffe ich, dass der Kontroller nicht ständig in
> einem Interrupt festsitzt und die Auswertung und Steuerung zuverlässig
> machen kann.

also 100 aufrufe pro sekunden, dann hat er ja noch genügend zeit zu 
schlafen.

http://www.mikrocontroller.net/articles/Drehgeber

von Karl H. (kbuchegg)


Lesenswert?

Silvan Murer schrieb:

> Inkrementiert wird. Bei etwa 50 Ticks pro Umdrehung und knapp 2
> Umdrehungen pro Sekunde hoffe ich, dass der Kontroller nicht ständig in
> einem Interrupt festsitzt und die Auswertung und Steuerung zuverlässig
> machen kann.

Ähm.
100 Interrupts / Sekunde?

Was hast du in der ISR vor?

Da löst dein µC ja zwischendruch noch 3000 Sudoku von der schwierigen 
Sorte.

von Bronco (Gast)


Lesenswert?

Silvan Murer schrieb:
> 50 Ticks pro Umdrehung

50 Striche oder 50 Flanken?
(Ein Strich besteht aus 4 Flanken)

Zu berücksichtigen wäre, daß die Interrupt-Last mit der Drehzahl steigt, 
hier wäre ein Filter zur Begrenzung der max. Interrupt-Last ggf. 
sinnvoll.

von MaWin (Gast)


Lesenswert?

> Bei etwa 50 Ticks pro Umdrehung und knapp 2 Umdrehungen pro Sekunde
> hoffe ich, dass der Kontroller nicht ständig in einem Interrupt festsitzt

Man wertet Encoder nicht mit Flanken aus, sondern mit festem Zeittakt.

http://www.dse-faq.elektronik-kompendium.de/dse-faq.htm#F.29

auch dann wenn sie nur einen Kanal haben.

von Silvan M. (schnudi)


Lesenswert?

MaWin schrieb:
> Man wertet Encoder nicht mit Flanken aus, sondern mit festem Zeittakt.
>
>
>
> http://www.dse-faq.elektronik-kompendium.de/dse-faq.htm#F.29

Okay, das heisst ich werde eine Timer ISR erstellen welche in 
regelmässigen Abständen den Wert des Encoders ausliest und mit dem 
ursprünglichen Wert vergleicht. Und je nachdem eine Variable 
Inkrementiert.
Das ganze werde ich auf einem Controller realisieren..

Besten Dank für eure Unterstützung!!

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.