-
-
Viele (alle) Wege führen nach Rom ...
Sogar auf einem ATTiny13 kann man eine softwarebasierte I2C-PWM-Motorsteuerung realisieren. Der Code ist deutlich unter 1KByte, er kann also auch in einen ATTiny13 rein. Allerdings macht das so direkt keinen Sinn. Statt die PWM über den Timer-1 laufen zu lassen, muss man die Hardware-PWM verwenden. Das reicht aber in jedem Fall, da man aufgrund der geringen Pinzahl eh nur einem Motor vernünftig rechts/links mit PWM anschliessen kann.
Einfache Rechnung:
- ATTiny13 mit internem Takt => 6 I/O-Leitungen
- 2 fallen weg für I2C => 4 I/O Leitungen zur Motorsteuerung
- 3 brauche ich pro Motor wenn ich z. B. einen L298 direkt anschliesse (rechts, links und enable), damit ich Rechtslauf, Linkslauf, Stop und Leerlauf unterscheiden kann. Das kann ich nur über einen zusätzlichen Inverter auf zwei Leitungen reduzieren. Also passt in der einfachen Variante nur ein Motor dran.
Man kann zwar das Problem mit dem ATTiny13 auch lösen. Aber warum so kompliziert und warum immer wieder ein neues Design? Wenn es schon ein Tiny sein soll, dann einfach der zum AT90S2313 kompatible ATTiny2313. Quarz dran, Software rein und fertig. Mit einem 20MHz Quarz kommt man dann sogar auf 100KHz SCL.
Wenn mir jemand einen vernünftigen Grund liefert, warum eine solche Lösung unbedingt mit einem ATTiny13 gemacht werden soll, baue ich das eventuell mal um.
Die I2C-Ansteuerung des voeliegenden PWM-Moduls kann am besten nachvollzogen werden, wenn man sich das zugehörige Testprogramm anschaut. Ausserdem sieht man im Slave-Programm in der Hauptkommunikationsschleife einen Programmteil, der die empfangenen Kommandos auswertet und die Parameter für die interne PWM-Routine neu stetzt.
Es gibt Kommandos zum Setzen des PWM-Anteils für die einzelnen Motoren, Kommandos für rechts/links/stop pro Motor und ein generelles RESET-Kommando zum Rückstellen des Moduls.
Grüße,
Kai.
Berechtigungen
- Neue Themen erstellen: Nein
- Themen beantworten: Nein
- Anhänge hochladen: Nein
- Beiträge bearbeiten: Nein
-
Foren-Regeln
Lesezeichen