Elektronik_Header_3

 

PIC-Würfel

Tja, so etwa im Januar 2009 hatte ich dann mal Muße und Lust, mir Gedanken über einen PIC-Würfel zu machen, nachdem ich in früheren Zeiten bereits einige elektronische Varianten von Würfeln zusammen gebaut hatte.

Heraus gekommen ist dabei diese Schaltung

SMD-Würfel mit PIC 12F629 (Click für volle Auflösung)

und das zugehörige Layout

einseitiges Layout SMD-Würfel

das, mit Eagle3D und Povray verwurstelt, einen Eindruck des späteren Aussehens vermittelt

SMD-Würfel, gerendert

Im richtigen Leben sah die Platine vor dem Versuch der ersten Programmierung so aus

SMD-Würfel, Original (nach falsches Layout)

und wartet jetzt auf die belebenden Innereien in Form von ausführbarem Code.

Ich habe die Platine einseitig entworfen und bei MME fertigen lassen. Der Batteriehalter für die Knopfzelle sitzt auf der Unterseite, die Anschlüsse werden auf der Oberseite angelötet.
Die drei rechteckigen Pads sind die Kontakte für die Programmierung des PIC, zusätzlich sind Masse und ggf. 5V zu verbinden. Die Batterie muss dann natürlich entfernt werden.
Jede LED hat ihren eigenen Vorwiderstand, was die kreuzungsfreie Leiterführung deutlich erleichtert bzw. überhaupt erst möglich gemacht hat.

Die Designunterlagen im Eagle 5.2-Format können hier geladen werden.


Ich habe natürlich ein paar Ideen zu den Funktionen des Würfels entwickelt, ohne allerdings abschätzen zu können, ob das alles in den verwendeten kleinen PIC 12F629 passt. Das wird mir aber der Compiler sicherlich verraten, wenn das Programm erst mal existiert.

Ich plane, den Würfel in C oder BASIC zu programmieren und verwende dafür die Freeware-Versionen von mikroElektronika, die es erlauben, 2k Code zu erzeugen. Das reicht für den 12F629 dicke aus, der hat nur 1k Speicher.

Die Fallback-Strategie lautet natürlich Assembler, sollten die Compiler zu umfangreichen Code erzeugen.

Hier mein Lastenheft für den PIC-Würfel:

  • Da Batteriebetrieb vorgesehen ist (1x CR1632), muss die Schaltung absolut Strom sparend sein, d.h. der PIC muss im SleepMode sein, solange die Taste nicht gedrückt wird.
  • Die LEDs müssen ggf. gepulst angesteuert werden um Strom zu sparen.
  • Durch Tastendruck wird der PIC geweckt und misst sofort die Zeitdauer des Tastendrucks.
  • Wird die Taste einmal kurz (z.B. kürzer als 400 ms) gedrückt, muss eine Zufallszahl zwischen 1 und 6 erzeugt werden (Huch? ;-)
  • Die Zahl wird blinkend 2 bis 3mal angezeigt, danach wieder SleepMode.
  • Wird die Taste lang gedrückt (z.B. länger als 1/2 Sekunde), wird die zuvor gewürfelte(n) Zahl(en) noch mal angezeigt.
  • Wird die Taste mehrfach kurz gedrückt, (mehrfach jeweils kürzer als z.B. 400 ms) wird je Druck eine Zufallszahl ermittelt und reihum angezeigt (Simulation mehrerer Würfel).
  • Wird Quatsch gemacht (mehrmals drücken aber mal kürzer, mal länger) geht der PIC sofort wieder in den SleepMode.

Wenn der Würfel tut was er soll, werde ich den Code hier veröffentlichen.


... etwas später...

Die ersten Gehversuche in Sachen Würfel-Code habe ich hinter mir. Das Lastenheft ist bisher nur sehr rudimentär erfüllt, sprich, ich habe erst mal nur einen (Pseudo-) Zufallszahlengenerator und eine Anzeigeroutine implementiert, um die Schaltung mit Leben zu erfüllen.

Nach ein paar Wochen Ruhe auf meinem Schreibtisch hat sich der Taster übrigens drastisch verschlechtert und prellt was das Zeug hält. Ich muss also noch eine Entprellroutine vorsehen.

Die Programmierung erfolgte mit dem ICD2-Nachbau über nur für diesen Zweck an den vorgesehenen Pads angelöteten Drähte. Wenn der Code steht, kommen die natürlich wieder weg.

PIC-Würfel mit Programmierschnittstelle

Bei der Programmierung habe ich dann auch gelernt, dass ich die Pinbelegung ändern muss, da der Reset für die Programmierung erhalten bleiben muss und nicht als Ausgang verwendet werden kann. Außerdem benötigt der Reset auch noch einen PullUp-Widerstand und ich habe einen Blockkondensator spendiert. Im Schaltbild und im abgebildeten Layout ist das bereits berücksichtigt.

Zu diesem Zeitpunkt war die Schaltung aber schon fertig aufgebaut, so dass ich die Änderungen durch Kratzen und zusätzliche Drähte einbringen musste. Der Blockkondensator und der PullUp hängen in der zweiten Ebene.

zusätzliche Bauteile und geänderte Verdrahtung

In Orignalgröße sieht das Ganze etwa so aus (zumindest auf meinem Monitor),  man hat also tunlichst eine ruhige Hand, gute Augen (oder alternativ eine gute Brille ;-), eine spitze Pinzette und einen ebensolchen Lötkolben.
Eine Lupe mit Ringleuchte ist in diesem Zusammenhang ebenfalls kein Fehler.

Bildausschnitt etwa in Originalgröße

Nicht ganz trivial, aber es hat funktioniert. Besser ist natürlich die Verwendung des korrigierten Layouts ;-)


Ich habe vor lauter Begeisterung auch noch eine Variante des SMD-Würfels mit einem Atmel ATtiny13 entworfen, dessen Layout auf Grund anderen Pinnings und besserer Features etwas aufgeräumter wirkt.

 


Besucher seit
25.11.2000

>