LED

Weihnachtsbaum deluxe

Hier (Weihnachtsbaum mit Lichtern) hatte ich bereits mit meinem Weihnachtsbaum aus Holz herumgespielt.

Hier

Projekt: STM8S105 6×8 Bits Output Teil 1a

Projekt: STM8S105 6×8 Bits Output Teil 1b

Projekt: STM8S105 6×8 Bits Output Teil 2

Projekt: STM8S105 6×8 Bits Output Teil 3

habe ich längere Zeit mit einer neuen Version geliebäugelt. Dann war er lange Zeit vergessen. Weihnachten 2015 leuchtete die alte Version.

Jetzt aber ist es soweit, er ist in neuer Schönheit 😉 wieder da.

Weihnachtsbaum
Weihnachtsbaum

Das bereits kommentierte Programm werde ich noch hinzufügen, es muss für die Webseite doch noch etwas aufgehübscht werden.

Testplatine mit dem WS2811 Chip

Nachdem die WS2811 chips bereits seit längerem eingetroffen sind und herumliegen, war es heute an der Zeit, einen Test zu machen. Als Basis diente eine SOP20-Adapterplatine, auf die eine PLCC6-5050-RGB-LED gelötet wurde.

WS2811 Testboard oben
WS2811 Testboard oben

 

WS2811 Testboard seitlich
WS2811 Testboard seitlich

 

WS2811 Testboard unten
WS2811 Testboard unten

 

WS2811 Testboard seitlich unten
WS2811 Testboard seitlich unten

Der WS2811 wurde daneben platziert und gemäß Datenblatt verschaltet.

WS2811 Datenblatt
Beschaltung des WS2811 gemäß Datenblatt

Die Schaltung läuft dem Anschein nach auf Anhieb.

Im Vergleich zu den integrierten WS2812B-LEDs fällt jedoch bei Nutzung eines Adafruit-Testprogrammes auf, dass Rot und Grün vertauscht sind. Die Verkabelung ist korrekt gemäß Datenblatt. In einer Reihe mit WS2812B geschaltet, geht trotzdem Grün statt Rot an und umgekehrt. Blau ist richtig. Ist das nun ein Fehler der WS2812B oder des WS2811? Es liegt, sofern man meinen google-Ergebnissen trauen kann, an den verschiedenen Chip-Versionen des WS281x. Das heißt aber auch, dass man diese Chips nicht einfach mischen kann oder die Verkabelung anpassen muss.

EDIT: Verkabelung geändert, es läuft ohne einen Unterschied zu den WS2812B

Bausatz bicolor LED-Matrix 32×16 Pixel aus China

Bei Ebay gibt es derzeit von verschiedenen Anbietern einen Bausatz für eine Bicolor-Anzeige mit 32 x 16 Punkten. Präziser gesagt, es gibt zwei verschiedene Bausätze.

Der hier Besprochene verwendet acht 74HC595 und zwei 74HC138 als aktive Bauelemente. Der Bausatz kommt mit einer vorgefertigten Platine, es geht also nur noch um das Zusammenlöten. Das sollte eine einfache Samstagsbeschäftigung werden. Zunächst lief alles routinemäßig ab, beim Test jedoch ging nichts so, wie es sollte. Einige Pixel leuchteten immer, andere gar nicht, völlig unabhängig von der Ansteuerung.

Die optische Analyse brachte zunächst nichts, außer, dass ein IC etwas seitlich verrutscht war, weil die Leiterpads für die IC auf beiden Seiten deutlich länger als nötig waren. Anhand der zu sehenden Fehler bei der Anzeige war irgendwann klar, dass dieser IC schuld sein muss. War er auch. Das gesamte Layout ist löttechnisch nicht sehr anfängerfreundlich, siehe Bild:

Layout, markierte Problemstellen
Layout, markierte Problemstellen

Durch den seitlich (im Bild: nach unten verschoben) verschobenen IC (leider habe ich diesen im eingebauten Zustand nicht fotografiert) wurden Pads mit den benachbarten Vias kurzgeschlossen, was sogar zu einem Total-Ausfall des IC führte:

Lötproblem
Lötproblem

Ein passender Ersatz war noch in der Bastelkiste, so dass dieses Problem mit einer kritischen Nachkontrolle aller anderen IC-Lötungen zu lösen war. Jetzt funktionierte die LED-Matrix, es waren jedoch noch immer Pixelfehler (nicht leuchtende LED) zu erkennen:

Pixelfehler rot
Pixelfehler rot

 

Pixelfehler grün
Pixelfehler grün

Nachdem ich diese Stellen mit der Lupe untersucht habe, stellte sich heraus, dass es sich vermutlich um Transportschäden handelt. Die defekten Pixel waren kaum erkennbar mechanisch beschädigt. (Einstichloch) Die jeweils andere Farbe funktionierte jedoch.

Wenn ich so etwas nochmals aufbaue, werde ich die Bauelemente vorher einzeln testen müssen. Zum Glück fallen die Fehler bei dynamischem Betrieb (Laufschriften) nicht so sehr auf.

Insgesamt gesehen ist der Bausatz für diesen Preis (10,78 € inkl. Versand aus China) jedoch in Ordnung.

Anzeigemodul mit VQE21 (alias „die grüne Pest“)

Die VQE21-Lichtschachtanzeigen aus DDR-Produktion gibt es bei Pollin seit langem als häufige Beilage in jedem LCD/LED-Sortiment. Diese Anzeigen sind allerdings nur sehr eingeschränkt zu gebrauchen. Eine Idee, den Nutzen etwas zu erhöhen, ist das Kombinieren zweier Anzeigen, indem die zweite auf den Kopf gestellt angefügt wird. So hat man immerhin 2,5 Stellen („188“) und weitere Segmente für Funktionsanzeigen als 7-Segment-Anzeige zur Verfügung, statt nur 1,5 Stellen.

Der Schaltplan ist eine eingekürzte Version und deshalb etwas unübersichtlich. Ursprünglich war eine Doppelanzeige geplant, also insgesamt vier VQE21.

 

VQE21 Schaltplan
VQE21 Schaltplan
VQE21 Layout
VQE21 Layout

 

 

 

 

 

 

 

 

 

Platine oben
Platine oben
Platine unten
Platine unten

 

 

 

 

 

 

 

 

 

 

Seitenansicht
Seitenansicht
Draufsicht
Draufsicht

 

 

 

 

 

 

Ansicht von unten
Ansicht von unten

STM32F030 eigenes breakout Board V

Nachdem ich einen ganzen Vormittag mit der Fehlersuche aufgrund eigener Dummheit verbracht habe, (der Chip sitzt auf der Unterseite, ist also bezüglich der Anschlüsse, von oben gesehen, gespiegelt – ein Nachteil meines Layouts, aber verschmerzbar, wenn man die Unterseite als Oberseite betrachtet und die DIL-Pins entsprechend einlötet) geht das Board nunmehr so wie geplant.

Board in Funktion
Board in Funktion
bestückte Oberseite
bestückte Oberseite

Beim fertigen Board fällt auf, dass noch viel Platz ist. Das soll zwar auch zum Teil so sein, denn es wird ja mit Hand bestückt. Aber hier ist noch Optimierungspotential und doch Platz für einen RESET-Taster und einen ST-Link-Stecker. Die Lötbrücken auf die Chip-Seite umlegen, der Quarz geht sowieso auf beiden Seiten einzulöten, die zusätzlichen Teile ebenfalls auf die Chipseite und dann oben und unten „tauschen“, so sollte es besser gehen.

bestückte Unterseite
bestückte Unterseite

Der fehlende Lack auf einem Leiterzug der Unterseite ist mein Fehler, bin mit dem Lötkolben abgerutscht – Weller WECP-20, siehe Foto als Größenvergleich:

Vergleich Lötkolben Chip (baugleicher STM8S103)

 

Es wird Zeit, sich eine „ernsthafte“ Anwendung zu überlegen. Hier zunächst das mit Coocox erstellte Test-Programm:

#include "stm32f0xx.h"
#include "stm32f0xx_gpio.h"
#include "stm32f0xx_rcc.h"

#include <stdio.h>

void init(void)
{
    GPIO_InitTypeDef GPIO_InitStructure;
    RCC_AHBPeriphClockCmd(RCC_AHBPeriph_GPIOA, ENABLE);

    // LED: Configure PA0 and PA1 in output pushpull mode
    GPIO_InitStructure.GPIO_Pin = GPIO_Pin_0 | GPIO_Pin_1;
    GPIO_InitStructure.GPIO_Mode = GPIO_Mode_OUT;
    GPIO_InitStructure.GPIO_OType = GPIO_OType_PP;
    GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz;
    GPIO_InitStructure.GPIO_PuPd = GPIO_PuPd_NOPULL;
    GPIO_Init(GPIOA, &GPIO_InitStructure);
}

void Delay(__IO uint32_t nCount)
{
    while(nCount--)
    {
    }
}

int main (void)
{
    init();

    while (1)
    {
        GPIOA->BSRR = GPIO_Pin_1 | GPIO_Pin_0;  // Set PA! HIGH = LED off
        Delay(500000L);
        GPIOA->BRR = GPIO_Pin_0;  // Set PA0 to GND (red LED on)
        Delay(500000L);
        GPIOA->BRR = GPIO_Pin_1;  // Set PA1 to GND (green LED on)
        Delay(500000L);
    }
}

Ach ja, mit Quarz läuft dasselbe blinky-Programm deutlich schneller als auf dem TSSOP28-Adapter-Board. (ca. 3..4 mal schneller?) Schaltet der Chip die Taktquellen selbstständig um (angeblich startet er immer mit HSI und man muss mittels Programm umschalten) oder ist das Umschalten im Startcode von Coocox zu suchen? Ok, hab also noch zu tun …

EDIT: Hier:

 

ist ein Video des Testprogrammes zu sehen. Die Lösung des Geschwindigkeitsproblems liegt wie vermutet im startup-Code von Coocox, der bei externem Takt die PLL einschaltet.

LC204VL LED Display aus dem Pollin-LED/LCD Sortiment

Dieses vierstellige rot leuchtende LED-Display mit zusätzlichen Symbolen und gemeinsamer Kathode ist häufiger Bestandteil des Pollin-LED-/LCD-Sortimentes.

Nominell sollen die LED rot sein, es ist aber eher ein rötlich-oranges Leuchten. Die äußeren Abmaße sind 36 mm x 11 mm (B x H). Die Ziffern sind 6,2 mm hoch. Die Pins sind als DIL angeordnet und im normalen Raster (2,54 mm).

Maße aus dem Datenblatt
Maße aus dem Datenblatt

Die LEDs (zumindest die vier Ziffernstellen) sind nur per Multiplex mit gemeinsamer Kathode betreibbar.

Pinout aus dem Datenblatt
Pinout aus dem Datenblatt

Die elektrischen und optischen Parameter sind der folgenden Tabelle zu entnehmen:

characteristics from datasheet
characteristics from datasheet

Schaltungen für das Multiplexen von LED-Anzeigen gibt es zu hauf im Internet zu finden, benutzbar ist z. B. ein MAX7219.

Ich habe interessehalber eine andere Variante ausprobiert. Gleich vorweg, diese kann ich nicht zur Nachahmung empfehlen. Da ich schon öfter gelesen hatte, dass man eine LED zwischen zwei Pins eines Mikrocontrollers ohne Vorwiderstand betreiben kann, habe ich dies mit diesem Display ausprobiert.

Aufbau
Aufbau

Die Nachteile dieses Verfahrens sind jedoch offensichtlich. Je mehr Segmente und Ziffern eingeschaltet sind, desto dunkler wird die Anzeige. Die Helligkeit hängt also sehr stark vom angezeigten Inhalt ab. Außerdem haben die Exemplarstreuungen sowohl bei der Anzeige als auch beim Controller deutlichen Einfluß auf die Helligkeit. Auf den Fotos ist das nicht so deutlich erkennbar, wenn man die Anzeige jedoch vor sich hat, ist dieser Effekt sehr deutlich ausgeprägt.

Anzeige
Anzeige

Unter ungünstigen Umständen (z. B. höhere Temperatur) kann der Controllerausgang mit dem LED-Strom überlastet werden.

STM8S103F3P6 Entwicklungsboard Pollin

Pollin verkauft derzeit ein STM8S Entwicklungsboard:

Entwicklungsboard
Entwicklungsboard

Dieses Board ist mit dem STM8S103F3P6 ausgestattet:

stm8s103f3 Pinout
stm8s103f3 Pinout

Leider ist das eine etwas anders ausgestattete Version des STM8S im Vergleich zum weit verbreiteten STM8-discovery-Board. Das heißt auch, dass die meisten im Internet verfügbaren Programme angepasst werden müssen. Hinzu kommt, dass es drei verschiedene Compiler für die Prozessorserie von ST gibt. Nächste Erschwernis ist, dass in den Beispielen eine von ST verfügbar gemachte Firmware-Bibliothek benutzt wird. Diese ist allen auf der ST-Seite downloadbaren Beispielen beigefügt. Ein mit den genannten Eigenschaften versehenes tutorial für das discovery-Board findet sich unter benryves.com.

Für IAR gibt es deutlich weniger Beispiele, dabei ist auch diese Entwicklungsumgebung bis 8kByte-Flashspeicher frei, mit einem sehr guten Debugger ausgestattet, dem Hörensagen nach unheimlich gut im Optimieren und auch für wirklich große Projekte geeignet:

IAR embedded workbench
IAR embedded workbench

Benötigt wird weiterhin ein ST-Link/V2, den man sehr preiswert kaufen kann, allerdings nur in China und als Klon. Etwas teurer, jedoch nicht so teuer wie die Originale, ist der bei roboterbausatz.de erhältliche Klon:

Dieser ist offensichtlich 100% kompatibel, da ST die Schaltung freigegeben hat. So ist der Klon mit der Originalfirmware von ST versehen und kann auch alle updates übernehmen.

Ein Beispielprojekt, welches per timer-PWM mit einer RGB-LED durch die Farben fadet, ist hier zum download Demoprojekt verfügbar. Es basiert auf einem firmware-Beispiel für die timer von ST. Dieses wurde mit einer huetoRGB-Funktion aus einem Arduino-Buch erweitert, um Farbwechsel zu generieren.

Der Hardware-Aufbau auf einem kleinen Steckbrett ist trivial:

RGB-LED STM8S103F3P6 Steckbrett
RGB-LED STM8S103F3P6 Steckbrett

VQE21F 1,5 stelliges LED Display von Pollin zerlegt

Aus purer Langeweile und aufgrund eines interessanten Beitrages im Mikrocontroller-Forum: alte DDR-Lichtschachtanzeigen VQBxx tunen habe ich heute eins dieser Displays, die in Massen dem Pollin LED-LCD-Sortiment beiliegen, zerlegt.

VQE21 zerlegt
VQE21 zerlegt

 

VQE21 zerlegt Detail
VQE21 zerlegt Detail

Wie der Beitrag im Forum zeigt, ließe sich dieses Display mit modernen Einzel-LED nach-/aufrüsten. Das habe ich aber nicht mehr probiert.

Weihnachtsbaum mit Lichtern

Weihnachten steht mal wieder vor der Tür und da bot sich ein wenig Bastelei an. Der Weihnachtsbaum sollte nicht einfach nur da stehen, auch nicht nur vor sich hin leuchten, sondern ein wenig Abwechslung bringen, aber bloß nicht wild herumblinken! Hmmmmmmmm, da war etwas Überlegung fällig. Na ja, erst mal bohren und LEDs einkleben und dann sehen wir weiter …

Weihnachtsbaum
Weihnachtsbaum

Wenn er nicht einfach nur leuchten soll und auch nicht nur blinken soll, aber trotzdem etwas Abwechslung bieten soll, muss ein Mikrocontroller ran. In der Bastelkiste liegen noch viele AT90S1200 herum. Ok, das ist ein Grufty und er sollte längst im Müll verschwunden sein, aber wenn er nun mal schon da war … Die restlichen Bauelemente sind eigentlich auch alle Müll-reif, aber warum, wenn sie noch Nutzen bringen?

Steuerung
Steuerung für den Weihnachtsbaum

Also, der Grufty sorgt dafür, dass die weißen LEDs, die Kerzenlicht symbolisieren sollen, ab und zu aufblitzen. Im Moment blitzen noch alle gleichzeitig, etwas mehr Zufall wäre wünschenswert, aber das Ding programmiert man ja nur in Assembler. Da eine Zufallsfunktion einbauen ist schon etwas schwerer. Bin schon froh, dass ich die Soft-PWM hinbekommen hab. Derzeitige Funktion also: Die Helligkeit wird so ca. alle 20 Sekunden kurz hochgedreht und dann wieder auf den alten Wert gestellt. Das Ganze natürlich nicht ruckartig, sondern als Auf- und Abblenden. Die farbigen LED sind noch nicht angeschlossen. Für diese hab ich mir überlegt, ab und zu ein zufälliges Flackern einzubauen, d. h., sie kurzzeitig ausgehen zu lassen, als ob sie von Zweigen verdeckt wären oder so. Ansteuerung soll über Schieberegister bzw. Latches gehen, da hab ich mich noch nicht entschieden. Die Latch-Lösung verlangt einen weiteren (unsynchronisierten) Controller, Schieberegister sollte noch über den AT90S1200 gehen. Die Effekte müssen nicht synchron laufen. Auch bezüglich der Stromversorgung muss ich mir noch was überlegen, im Moment dienen alte, „leere“ AA-Batterien als Antrieb. Der Taster soll mal Programmoptionen umschalten, ist derzeit aber noch nicht im Programm berücksichtigt.