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!
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
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.
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.
> 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.
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
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.