Programmierung des PMS150C-U06          


Elektronik-Labor  Labortagebuch  Projekte 


Hier geht es um den echten und einzigen 3-Cent-Controller von Padauk. Der PMS150C ist weitgehend kompatibel mit dem PFS154, aber nur einmal programmierbar, (OTP, One Time Programmable). Das kleine SOT23-Gehäuse macht die Sache etwas schwierig. Ich habe es auf eine Lochrasterplatine gelötet und dann alle sechs Beinchen so verdrahtet, dass damit ein PMS150C-S08 vorgetäuscht werden sollte. So wie das IC eingelötet ist, könnte ich es dann leicht wieder auslöten und in sein Zielsystem einbauen.





Aber der der Padauk-Brenner brachte eine Fehlermeldung, dass Anschlüsse nicht verbunden seien. Also das stimmt, zwei Beinchen sind nicht verbunden, weil der sechspolige Controller sie gar nicht hat. Und sie werden auch nicht für die Programmierung gebraucht. Aber jetzt habe ich mich schon so mit der Löterei abgequält, dass ich nicht aufgeben kann. Also was kann denn der Programmer überhaupt prüfen, wenn es da nur hochohmige CMOS-Eingänge geben sollte. Das einzige, was mir dazu einfällt sind die internen Schutzdioden nach VCC und GND. Diese Methode benutze ich auch manchmal mit dem Ohmmeter, um die Anschlüsse und ihre Verbindungen zu überprüfen. Und vermutlich reicht es, wenn man nur eine der beiden Schutzdioden, nämlich die nach VCC überprüft. Also habe ich zwei Dioden nach VCC an die beiden freien Pinne gelegt. Und tatsächlich, die ersehnte Meldung "IC ready" erschien im Display.



OTP heißt, einmal für immer zu programmieren. Da will es gut überlegt werden, was da nun reingebrannt wird. Ein Programm für die Ewigkeit, da ist mir zuerst der ewige Blinker eingefallen. Das ursprünglich für den PFS154 entwickelte Programm ließ sich auch problemlos für den PMS150 übersetzen. Und tatsächlich, es blinkt. Zum Vergleich habe ich meinen anderen Blinker mit auf das Steckboard gesetzt. Beide blinken mit fast gleicher Frequenz. Und ein Test mit einem Elko mit 1000 µF zeigte, dass der Controller damit fast eine Minute lang läuft.



void FPPA0 (void)
{
// .ADJUST_IC SYSCLK=IHRC/2 // SYSCLK=IHRC/2
.ADJUST_IC SYSCLK=ILRC //ca. 50 kHz, 50 µA @ 3V

// Insert Initial Code

PAC = 255;
PBC = 255;
while (1)
{
PA = 255;
.delay(500); //ca. 10 ms
PA = 0;
.delay(50000); //ca. 1 s
}
}






In einem zweiten Versuch habe ich eine Adapterplatine  verwendet. Eine aufgelötete Drahtfeder soll das IC in Position halten. Wenn das so funktioniert, hat man einen  Sockel für SOT32-ICs. Allerdings kann das IC so nicht direkt in den Brenner gesetzt werden. Die Pinne müssen wieder umcodiert werden. Dazu soll es einen weiteren Adapter geben.



Wie zu befürchten war, gab es zunächst Kontaktprobleme mit dem lose aufgesetzten IC. Der Anpressdruck der kleinen Feder reichte zwar um das IC in Position zu halten, nicht aber für einen zuverlässigen Kontakt aller sechs Beinchen. Hilfe kam in Form einer selbsthaltenden Pinzette. Damit hat es nun funktioniert. Der Massenproduktion steht nichts mehr im Weg.




Der Mikroblinker



Der Ewige Blinker einmal anders: Der sechspolige Controller PMS150C wurde dazu direkt unter die LED mit internem Widerstand gelötet. Der Anodendraht der LED wurde durchschnitten und an den Ausgang gelötet. Der keramische Kondensator blockt die Betriebsspannung ab, dient aber auch dazu, die mechanische Stabilität der Anschlussdrähte zu sichern. Zwei alte Batterien mit zusammen noch 2,4 V werden nun aufgebraucht. Ich hoffe auf eine Restlaufzeit von einem Jahr.



Einbau in die Haxko-Eule



Der Hacker- &Makerspace Koblenz https://haxko.space/ hat einen SMD-Bausatz für einen Gegentaktblinker entwickelt und im Rahmen der "Nacht der Technik 2019" verwendet. Es handelt sich um einen klassischen Multivibrator mit zwei NPN-Transistoren. Das haxko SMD LED practice kit ist ausführlich auch auf Github dokumentiert. Diese kleine  Eule hat viele Monate lang vor sich hin geblinkt.

Auf der Suche nach einer schönen Platine für ein Controller-Projekt stach sie mir in die Augen. Ich wollte aber nichts ausbauen, damit ich alles später wieder in den Originalzustand versetzen kann. Deshalb habe ich Basis und Emitter der Transistoren kurzgeschlossen und sie damit schlafen gelegt. Ihre Arbeit wird solange von PMS150C übernommen. Ich brauchte dazu nur zwei Drähtchen vom Kontroller zu den Kollektoren und ein Drähtchen zum Pluspol der Batterie.

Das Programm habe ich etwas angepasst. Die Eule blinkt nun fünf Mal wie gehabt. Aber dann gibt es eine Pause. Der interessierte Beobachter denkt: Was nun, kaputt? Aber dann zwinkert die Eule zwei Mal auf dem rechten Auge. Und danach geht es weiter wie gehabt.

// Haxco-Eule blinkt und zwinkert
#include "extern.h"


void FPPA0 (void)
{
.ADJUST_IC SYSCLK=ILRC //ca. 50 kHz, 50 µA @ 3V

PAC = 0x48; //A.6=64 + A.3=8, andere sind Eingänge

CLKMD = 0x4C; //ILRC/16 // Clock / 16, noch langsamer

R BIT PA.3; //Links und Rechts definieren
L BIT PA.6;

while (1)
{
Byte n;
n = 5;
do
{
R=1; L=0;
.delay(2500); //ca. 0,75 s
R=0; L=1;
.delay(2500); //ca. 0,75 s
} while (--n);
R=1; L=1;
.delay(5000); //ca. 1,5 s
L=0;
.delay(500); //ca. 0,15 s
L=1;
.delay(500); //ca. 0,15 s
L=0;
.delay(500); //ca. 0,15 s
L=1;
.delay(5000); //ca. 1,5 s
}
}




Elektronik-Labor  Labortagebuch  Projekte