Ingenieurbüro für Leistungselektronik und Antriebe
L-E-A | Dr. Volker Bosch
Beratender Ingenieur / Consultant

 

 

 

 

 

 

 

 

 

 

Digitale und analoge Elektronik

Verschiedene Mikrocontroller-Applikationen

Auch mit kleinen, einfachen und preisgünstigen 8-Bit-Mikrocontrollern lassen sich komplexe Aufgaben einfach und zuverlässig erledigen, wenn man deren Hardware-Baugruppen effizient nutzt, wie die beiden folgenden Beispiele zeigen.

Gerne unterstütze ich Sie bei der Entwicklung Ihrer Mikrocontroller-Anwendungen — sowohl mit Design und Aufbau der Hardware als auch bei der Soft- bzw. Firmwarentwicklung.

Externe Tastatur für HM8130 und HM8142

Für die Messgeräte HM8130 (Funktionsgenerator) und HM8142 (Doppelnetzteil) wurden vom Hersteller externe Tastaturen angeboten, welche die Eingabe der Sollwerte durch eine Zifferntastatur vereinfachen. Diese sind jedoch mittlerweile nicht mehr erhältlich. Die Schnittstelle zwischen Tastatur und Messgeräte besteht aus drei Schieberegistern mit jeweils acht parallelen Eingängen, womit sich 25 Taster abfragen lassen (die 25. Taste befindet sich am seriellen Eingang des letzten Schieberegisters). Die Anzeigewerte des LCDs werden über weitere Schieberegister übertragen.

Der hier vorgestellte Entwurf vereinfacht die Schaltung erheblich. Anstelle der Schieberegister wird die SPI-Schnittstelle eines Atmel ATmega16-Mikrocontrollers im Slave-Modus verwendet. Die Eingabetaster sind in einer Matrix angeordnet. Das LCD ist ein handelsübliches Modul mit paralleler Schnittstelle.

Das Layout ist doppelseitig ausgeführt, wobei sich auf der Oberseite die Tastaturmatrix und das LCD-Modul befinden. Der kompakte Aufbau ermöglicht den Einbau in ein kleines Seriengehäuse (Bopla).

Die Firmware des Mikrocontrollers erkennt automatisch, an welches der beiden Messgeräte es angeschlossen wurde und wählt selbsttätig die passende Tastaturbelegung aus.

 

USB-Interface für einen digitalen Messschieber

Das V-Usb-Projekt stellt die Firmware für die Implementierung eines Low-Speed-USB-Interfaces auf Atmel-AVR-Mikrocontrollern bereit. So lassen sich sehr einfach Human-Interface-Devices (HID) implementieren, wie eine PC-Tastatur oder eine Maus, welche ohne Treiber an jedem PC mit USB-Interface arbeiten.

Bei dem hier vorgestellen USB-Interface für einen digitalen Messschieber kann die Dekodierung des synchronen seriellen Datenformats des Messschiebers nicht in Software implementiert werden, da ansonsten die V-USB-Routinen nicht mehr ausreichend CPU-Leistung erhalten. Aus diesem Grund wird die Dekodierung mit Hilfe des USI-Interface der verwendeten ATtiny45-MCU durchgeführt, die wie ein vereinfachtes SPI-Interface betrieben werden kann.

Auf dem einfachen einseitigen Layout befinden sich ausschließlich SMD-Bauteile, so dass die Leiterplatte mit der unbestückten Seite auf die Rückseite des Messschiebers geklebt werden kann.

Nach Betätigung des Tasters sendet die Schaltung den aktuellen Messwert des Messschiebers in die Standardeingabe des angeschlossenen PCs. Wird die Taste lange gedrückt gehalten, schaltet die Software zwischen dem deutschen Komma und dem anglo-amerikanischen Dezimalpunkt um.

Zwischenzeitlich wurde eine überarbeitete Version von Hard- und Firmware des USB-Interfaces fertiggestellt, wie im Bild rechts dargestellt. Die Hardware basiert nun auf einem ATtiny1614, da dieser die beiden benötigten Komparatoren bereits mitbringt und ein SPI-Interface besitzt, welches auch Bitfolgen unterstützt, die mit dem niederwertigsten Bit beginnen (LSB first).
Das USB-Interface basiert ebenfalls auf v-USB. Dank des großen Programmspeichers von 16 kB konnte ein sog. Composite-Device (Interface Association Descriptor Device Class, IAD) implementiert werden, bestehend aus einem HID-Device (Keyboard), wie bei der ersten Version sowie einem USB Device der CDC ACM Class (Modem, bzw. virtuelle RS232-Schnittstelle). Letzteres bietet einen Kommando-Dispatcher mit umfangreichen Funktionen an. Er kann beim Einsatz an einer Messuhr sinnvoll sein, wenn beispielsweise der Rundlauf einer Welle dokumentiert werden soll oder die Benutzung der Taster die Messung beeinflussen könnte.
Das Interface besitzt nun einen Doppelschichtkondensator von 3,3 F als Energiespeicher, der über das USB-Interface geladen wird und für einen vollen Arbeitstag den (netz-)unabhängigen Betrieb der Messgeräte auch ohne eingelegter Batterie gewährleisten kann.

 

UPDI-Programmiergerät (UPDI-Programmer) für die MCUs der ATtiny0/1/2- und mega0-Familien

Die neuen AVR-Mikrocontroller der ATtiny0-, ATtiny1-, ATtiny2 und mega0-Familien besitzen viele Komponenten die mit der xmega-Serie eingeführt wurden, wie beispielsweise das Event-System, welches die direkte Kopplung verschiedener Peripheriebaugruppen über Hardware ermöglicht oder konfigurierbare Logikelemente (CCL) und kombiniert diese mit der kompakten Baugröße und dem günstigem Preis der kleinsten AVR-MCUs.

Programmiert werden die neuen ATtinies über die neu eingeführte UPDI-Schnittstelle. Diese benötigt nur noch einen Pin der MCU und dieser kann auch als I/O-Pin genutzt werden. Eine Programmierung ist dann auch noch möglich, das Programmiergerät muss einen kurzen 12V-Impuls an diesen Pin anlegen.

Basierend auf dem USB-RS232-Konverter FT230x wurde ein entsprechendes Programmiergerät (neudeutsch: Programmer) aufgebaut, welches auch den weiten Bereich der Versorgungsspannung dieser MCUs von 1,8 bis 5V unterstützt (Schaltplan am rechten Rand anklicken für vergrößerte Darstellung).
Die erwähnte 12V-Schaltspannung wird mittels Ladungspumpe aus dem 6-MHz-Taktsignal erzeugt, welches der FT230x bei entsprechender Programmierung ausgeben kann. Aktiviert wird diese Schaltspannung durch einen weiteren Cbus-Pin des FT230x, der einen 12V-Spannungsregler freigibt und dessen Ausgang über einen Analogschalter auf den Programmierpin der MCU schaltet. Der vierte Cbus-Pin ermöglicht einen echten Halb-Duplex-Mode der UPDI-Schnittstelle, indem er den TxD-Ausgang des FT230x über einen Tristate-Buffer auf die von RxD und TxD gemeinsam genutzte UPDI-Leitung schaltet. So wird eine zuverlässige Programmierung gewährleistet, auch wenn der UPDI-Pin auf dem Zielsystem mit Pullup- oder Pulldown-Widerständen beschaltet wurde.

Für die Programmierung kann auf bestehende Software für PCs mit serieller Schnittstelle zurückgegriffen werden, deren Quellcode im Internet, z.B. auf Github verfügbar ist. Der FT230X sollte durch folgende Funktionsaufrufe der FTD2XX DLL function library auf eine kurze Latenzzeit eingestellt werden:
FT_SetLatencyTimer(Fh, 2);
FT_SetTimeouts(Fh, 5, 0);
FT_SetUSBParameters(Fh, 64, 64);

Aktualisiert: 2024-09-14