TWI-Slave zur Motorsteuerung mit ATTiny2313

Irgendwann sollte mein CCRP5/RP6-Chassis auch mal fahren! So der Wunsch. Natürlich fällt es einem schwer zwischen Prüfungen, Arbeit und dem restlichen Kram genügend Zeit aufzubringen so etwas wie einen Roboter selbst fertig zu stellen. Selbst wenn er erst einmal nur fahren soll, kann das unter Umständen schon recht lange dauern. Da ich jedoch nichts Fertiges oder einfach ein Arduino-Shield kaufen wollte, musste – ob nun Wohl oder Übel – eine modulare Lösung her.

Motorsteuerung via I²C durch einen ATtiny2313

Die Wahl viel dabei auf eine Vernetzung von mehreren Teilkomponenten mittels TWI oder I²C. Gesagt getan, das erste Modul lief auf dem Steckbrett und funktioniert nun auch als Lochrasteraufbau,nur zur Platine hat es bisher noch nicht reichen wollen.

RP6 TWI-Slave Motorsteuerung

Für die Kommunikation mit der USI-Schnittstelle des Tinys hat sich Martin Junghans schon Gedanken gemacht. Daher war die Anpassung/Erweiterung nicht sonderlich schwierig und konnte nach kurzer Zeit mittels BusPirate getestet werden. Hinzu sind noch die Rad-Encoder für das Chassis (RP6v2-Encoder) gekommen, welche man seit einiger Zeit separat bei Conrad erstehen kann. Mittlerweile kann man nahezu alles per TWI konfigurieren und sogar im EEPROM des AVRs speichern.

Da wären :

  • Tastgrad für alle PWM-Ausgänge separat variiert werden
  • Vorteiler für PWM-Frequenz können paarweise gesetzt werden
  • PWM-Ausgänge können komplett deaktiviert werden
  • Encoderwerte können ausgelesen uns zurückgesetzt werden
  • Laufrichtung für zwei (vier gingen mit Anpassungen auch) Motoren kann gesetzt und invertiert werden
  • Speichern der aktuellen Einstellungen im EEPROM

Natürlich kann jeder Parameter auch gesetzt werden. Interessanter Weise ist trotz der Programmierung in C noch etwas Platz übrig.

Program Memory Usage   : 1354 bytes   66.1 % Full
Data Memory Usage      :   19 bytes   14.8 % Full
EEPROM Memory Usage    :    8 bytes    6.3 % Full

Was die Überlegung weckt die Regelung für den Geradeauslauf (wenn mal Zeit ist) noch zu integrieren.

Der Code und etwas Dokumentation ist ab sofort auf Github zu finden.