Und wieder ein neues Mikrocontroller-Projekt auf der Schatenseite: der I2C-Dimmer.
Eigentlich ist es nur ein Teilprojekt, aber da man das Ding ziemlich universell verwenden kann habe ich es in ein einzelnes Projekt verpackt. Es handelt sich um einen ATtiny2313, der über ein gängiges Bussystem namens I2C (Inter-Integrated Circuit)gesteuert werden kann. I2C ist ein Warenzeichen von Philips, bei anderen Herstellern wird der Bus TWI (Two Wire Interface) genannt. Es handelt sich dabei um einen Bus an dem viele Bausteine wie Temperaturfühler, Echtzeituhren, Speichergeräte und vieles mehr angeschlossen werden können, mit denen sich ein Mikrocontroller dann unterhalten kann. Und jetzt eben auch mein I2C-Dimmer.
In meinem nächsten großen Projekt will ich wieder mehrere LEDs faden lassen. Unter anderem. Da soll auch eine Echtzeituhr und ein Speicher rein, daher wird es wohl eh auf einen I2C-Bus herauslaufen. Da es für einen Mikrocontroller halbwegs stressig ist, neben ‚richtigen‘ Aufgaben dauernd die LEDs ein- und auszuschalten, und man es ziemlich schnell sieht wenn er sich zwischen der ein- und ausschalterei noch mit anderen komplizierten Sachen beschäftigt, habe ich nach einem separaten Baustein gesucht der mir (bzw. dem Controller) das abnehmen kann. Ohne Erfolg. Ich habe zwar was gefunden mit dem man LEDs dimmen kann, aber der Baustein ist zum einen für mich unlötbar (SMD), zum anderen kann man die Ausgänge nicht frei steuern: jeder Ausgang ist entweder an, aus, oder er nimmt eine von zwei gedimmten Helligkeiten an. Die sind dann zwar variabel, aber man ist eben nicht voll flexibel.
Also habe ich mir überlegt, dafür einen eigenen Baustein zu bauen. Die AVRs können per I2C auch Kommandos entgegen nehmen, also muss nur noch eine Pulsweitenmodulation implementiert werden. Nach mehreren Versuchen ist Thomas Stegemann auf eine blendende Idee gekommen wie man das sehr effizient machen kann. Der Algorithmus ist auf der Projektseite beschrieben, ich weiß nicht ob es dafür einen Namen gibt. Sachdienliche Hinweise nehme ich gerne entgegen.
So ist es jetzt möglich, den Baustein quasi als Black Box in zukünftigen Projekten einzusetzen. Der ATtiny2313 wird mit 20MHz getaktet und kann so bis zu 13 Kanäle auf 128 Helligkeiten halten. Theoretisch wären da sogar noch mehr Kanäle möglich, allerdings müsste man dann einen anderen Controller benutzen: der kleine hat nicht mehr Pins…