PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : Atmega 2560 - Leistungsfähigkeit - PWM + Schrittmotor + ADC



#fritz#
16.10.2015, 09:52
Hallo
ich arbeite an einem Roboter (Zumo) mit einem Atmega 2560.
Er läuft mit 16 MHz. Programmiert mit Bascom.

Ausstattung:
2 x PWM für die beiden Motoren
1 Schrittmotor bewegt einen Kopf mit Sharp Infrarotsensor
ADC-Messungen für:
2 x Radsensoren bei jedem Durchlauf
1 x Entfernungsmessung Infrarotsensor ca 20 x je Sekunde
Batteriespannungsmessung 1 x je Minute

Später sind noch weiter ADC's für Linienfolgen geplant.

Jede dieser Komponenten wurde einzeln getestet und funktioniert.
Alle zusammen gehen jedoch nicht.
Wenn sich während des Fahrens der Schrittmotor drehen soll, dann
funktioniert fast nichts. Die Radsensoren sind ungenau, der Schrittmotor
dreht sich sehr langsam oder der Roboter fährt sehr langsam.

Die beiden Timer für Schrittmotor und PWM sind auf maximale Prescale
eingestellt 64 und 256.

Frage:
Ist der Atmega 2560 mit diesen Aufgaben generell überfordert oder könnte es
nach Optimierung der Software funktionieren.
Ich weis, Diagnosen aus der Ferne sind schwer möglich. Aber wenn der 2560
das generell nicht schaffen kann, dann nehme ich für den Schrittmotor gleich
zusätzlich einen Atmega 8 und probiere nicht weiter.

Danke im Voraus

ranke
16.10.2015, 12:31
Ich weis, Diagnosen aus der Ferne sind schwer möglich. Aber wenn der 2560
das generell nicht schaffen kann, dann nehme ich für den Schrittmotor (http://www.rn-wissen.de/index.php/Schrittmotoren) gleich
zusätzlich einen Atmega 8 und probiere nicht weiter.

Das mit den Ferndiagnosen stimmt. Es scheint ja hauptsächlich am Schrittmotortreiber zu liegen. Der kann sehr unterschiedlich verschieden Prozessorzeit verbrauchen, z.B. je nach Motorfrequenz, Teil (Mikro-)schritte, Verwendung gemeinsamer Register im Prozessor (die bei jedem Aufruf einer Interruptroutine gesichert und beim Verlassen wieder hergestellt werden müssen) usw.
Ich vermute schon, dass da noch ein Schrittmotortreiber draufpassen könnte/sollte, wenn man alle Prozesse optimiert. Ob man sich einen Gefallen damit tut, sei dahingestellt. Das Optimieren des Codes ist ein Ding, aber wenn man dann später noch etwas ändern oder dazupacken will, dann muss man wieder alle Abhängigkeiten durchdenken und alles wird vielleicht noch enger.
Wenn Du beim Sichten des Codes nicht schnell einen Ressourcenfresser erkennst, den man leicht ausmerzen kann, ist zweite Prozessor ist vermutlich die schmerzfreie Variante.

damfino
16.10.2015, 12:37
Das liegt sicher an der Software, meiner hat einiges mehr zu tun und schafft das locker.
Wahrscheinlich sind einige Warteschleifen eingebaut, diese muss man vermeiden