DuckMini

From BlinkenArea Wiki
Jump to: navigation, search
zur Projektübersicht
English Version of this Page
DuckMini.jpg
Jahr 2019
Anzahl Pixel 34
Graustufen / Farben 8 Graustufen
Leuchtmittel SMD-LEDs
Leistungsaufnahme
Kontaktperson Arne Rossius
Projekt-Website

Die DuckMini ist die SMD-Ausführung der THT-Duck (Ente), die Entstehungsgeschichte ist dort erklärt. Schaltung und Software sind weitgehend identisch.

Version 1.0

Hardware

Die Schaltung ist bis auf den Microcontroller-Typ identisch mit der "großen" Ente. Aus Preisgründen wurde der ATmega8 durch den ausschließlich im SMD-Gehäuse erhältlichen ATtiny88 ersetzt. Anstelle eines losen Batteriehalters mit 3 Mignon-Zellen (AA) wird ein auf der Platinenrückseite angelöteter Batteriehalter für 3 Micro-Zellen (AAA) eingesetzt. Es empfiehlt sich, den Batteriehalter zusätzlich mit einem Stück doppelseitigem Schaum-Klebeband (Spiegel-Montageband) an der den Pins gegenüberliegenden Ecke auf der Platine festzukleben. Über dem Batteriehalter ist die Platine gerade groß genug, um den großen Tantal-Kondensator und eine Stiftleiste für die ISP-Schnittstelle unterzubringen.

Anstelle des großen Batteriehalters kann die Platine auch einen Knopfzellenhalter für eine CR2032 aufnehmen. Durch die geringere Spannung und den hohen Innenwiderstand der Knopfzelle ist das Quaken der Ente jedoch sehr leise und die LEDs sind etwas dunkler. Für eine Ente ohne Ton, die nicht tagelang eingeschaltet bleibt, ist die Knopfzelle dennoch eine sinnvolle Alternative.

Firmware

Version 2.0

Hardware

In Version 2 wurde der Controller durch einen 14-Pin-Typ ersetzt, es können entweder ATtiny84 oder ATtiny804/814 eingesetzt werden.

Die LEDs werden jetzt mit Charlieplexing angesteuert, so dass sie nur 7 Pins benötigen. Die Transistoren sind nun als Emitterfolger verschaltet, um kompatibel mit dem Charlieplexing-Verfahren zu sein, und die Basiswiderstände können auch entfallen. Eine Spalte der LEDs wird ausgewält, indem der Microcontroller den dazugehörigen Pin high steuert und der Transistor so die LED-Anoden mit Spannung versorgt. Die Kathoden-Pins aller LEDs in dieser Spalte, die aufleuchten sollen, werden low gesteuert, alle anderen Pins bleiben hochohmig (Eingang). Dieser Ablauf erfolgt für alle 6 Spalten und wiederholt sich dann (wie beim Multiplexing auch).

Firmware

Da sich die ISP-Schnittstelle in dieser Version die Pins mit den LEDs teilt, ist der Immer-An-Jumper wie in Version 1 nicht mehr möglich. Stattdessen kann man den Taster beim Einlegen der Batterien gedrückt halten, um den Immer-An-Modus zu aktivieren. Ein automatisches Einschalten beim Anlegen der Spannung ist nicht möglich.

Die ATtiny804/814 unterstützen die ISP-Schnittstelle nicht, daher ist die 2x3-Stiftleiste mit diesen Controllern nutzlos. Eine Programmierung im System ist dennoch möglich, indem ein Kabel an den ungenutzten Pin 10 angelötet und mit einem UPDI-Programmer verbunden wird. Zusätzlich muss der Programmer natürlich noch mit Masse verbunden werden.

Die PWM-Pins liegen beim ATtiny804/814 auch anders als beim ATtiny84. Pin 6 (PA7/OC0B beim ATtiny84) unterstützt per PORTMUX das PWM-Signal WO0, so dass eine einfache Register-Einstellung am Beginn des Programms ausreicht. Auf Pin 5 (PB2/OC0A beim ATtiny84) ist jedoch gar kein PWM-Signal verfügbar. Stattdessen wird das CCL-Modul verwendet, um intern das WO1-Signal auf LUT1-OUT durchzureichen, was dann auf Pin 5 ausgegeben werden kann.

Version 3.0/3.1

Hardware

In Version 3 wurde der Microcontroller erneut ersetzt, diesmal durch den nur einmal programmierbaren Padauk PMS152. Sowohl die 14- als auch die 16-Pin-Version kann eingesetzt werden, die zusätzlichen beiden Pins bleiben ungenutzt. Für Entwicklungszwecke wird auch der pinkompatible PMS154 mit Flash-Speicher unterstützt, allerdings haben die LED-Ausgänge unterschiedlich starke Pin-Treiber, so dass einige LEDs heller leuchten als andere. Mit dem PMS152 haben alle Pins, an denen LEDs angeschlossen sind, gleich starke Pin-Treiber.

Da der PMS152 nur 1280 14-Bit Worte ROM hat, ist ein zusätzliches 24C64-EEPROM nötig, in dem die Audio-Daten gespeichert werden. Mit größeren EEPROMs sind auch längere Audio-Sequenzen möglich. Das Audio-Format ist identisch wie in Duck beschrieben, die Audio-Rohdaten werden (mit abschließendem Null-Byte!) direkt ins EEPROM geschrieben, angefangen an Adresse 0.

In Version 3.1 sind zwei Fehler der Version 3.0 behoben: der fehlende Pull-Up-Widerstand an SDA wurde ergänzt (SCL wird immer vom Microcontroller getrieben) und PB3 & PB4 wurden vertauscht.

Firmware

Die Firmware muss mit AS assembliert und mit dem Easy-PDK-Programmer in den Controller geschrieben werden. Wie oben erwähnt haben die Platinen der Version 3.0 einen Layoutfehler, der eine Firmware-Korrektur erfordert. Nur für diese Platinen muss daher "PCB_30_FIX" auf 1 gesetzt werden.

Wenn der Taster beim Einlegen der Batterien gedrückt gehalten wird, aktiviert die Firmware den Immer-An-Modus, in dem die Ente nicht mit dem Taster ein- oder ausgeschaltet werden kann (Quaken funktioniert weiterhin). Wird der Taster für 5 Sekunden gedrückt gehalten geht die Firmware in einen Test-Modus, in dem die LEDs langsam nacheinander aufleuchten. Dieser Modus ist nützlich um zu prüfen, ob alles richtig gelötet ist und um Fehler zu finden. Beide Modi können nur durch Herausnehmen der Batterien verlassen werden.

Fotos

Mehr Fotos unter http://arne.blinkenarea.org/duck-mini/gallery.htm.