Kategorie-Archiv: Hardware

Besuch im IBM Computermuseum in Böblingen

Ich war heute auf einer IBM Veranstaltung in Böblingen. Am Ende hatten wir das Glück, dass wir noch die nicht öffentliche Computersammlung besichtigen konnten. Leider kam meine einfache Handy-Kamera nicht besonders gut mit der Beleuchtung zurecht, aber es sind doch ein paar brauchbare Bilder entstanden.

Frequenzzähler/ Periodenmesser mit einem PIC32 – Teil 2

Da ich am Wochenende im Augenblick stark in die Vereinsarbeit (wsb-calw.de) eingebunden bin, geht es mit meinem kleinen Projekt nicht so schnell voran wie gewünscht. Ich habe in dieser Woche aber doch ein paar weitere Schritte geschafft.

Die erste Hürde lag darin, dass ich nicht den kompletten Microstick einbauen wollte. Zum einen ist es zu teuer, für jedes kleine Bastelprojekt ca. 40 EUR auszugeben. Zum anderen wollte ich ein echtes Microcontrollerprojekt haben und nicht einfach nur eine fertige Modulplatine einbauen.

Eigentlich ist es auch nicht kompliziert. Für die Programmierung und das Debugging sind 5 Leitungen vorgesehen: GND und +3.3V, Daten und Takt sowie Reset. Also habe ich den PIC aus dem Microstick herausgenommen und auf meine Platine gesetzt. Die 5 Leitungen habe ich von der Platine mit dem Adaptersockel auf der Unterseite verbunden. Et voià – der PIC wurde von der Entwicklungsumgebung nicht gefunden. An dieser Stelle hätte ich mir eine Stunde Fehlersuche ersparen können, wenn ich mir den Schaltplan des Microstick richtig angesehen hätte. Dort kann man nämlich genau sehen, dass einige Prozessorpins nicht mit dem Adaptersockel verbunden sind. Unter anderem Reset und +3.3V.

Nachdem ich die Verbindung vom Adaptersockel entfernt und direkt in PIC Fassung eingesteckt hatte, lief die Kontaktaufnahme problemlos. Nun hatte ich den Stand, dass ich einen externen PIC32 programmieren und debuggen konnte.

Der nächste Schritt war dann Fleißarbeit: den Siebensegmentdecoder und den 1 aus 16 Demultiplexer vom Steckbrett auf meine Lochrasterplatine versetzen. Das wäre eigentlich einfach gewesen. Unglücklicherweise habe ich für die Verbindungen einen Draht mit einer extrem weichen und wärmeempfindlichen Isolierung verwendet. Und mir dabei gleich einen Kurzschluss zwischen zwei Datenleitungen eingebaut.

Kurzschluss2

Um es noch etwas komplizierter zu machen, habe ich an dem Multiplexer auch noch den Enabled Eingang offen gelassen. Da ein offener CMOS Eingang auf irgend einem Pegel hängt, bekommt man eine extrem unzuverlässige Schaltung. Bei mir blieb das Display dunkel – bis ich mit dem Finger in die Nähe des ICs gekommen bin. Alleine die Nähe hat ausgereicht, dass der Pin mit 50 Hertz Netzfrequenz ein- und ausgeschaltet hat. Wieder ein Abend verloren, bis ich das gefunden hatte.

Der nächste Abend ging dafür drauf, die 9 PNP Transistoren für den Multiplexer auf der Anodenseite einzulöten und Basiswiederständen zu versehen. Dabei hatte ich im Vorfeld den benötigten Platz etwas knapp kalkuliert. Es hat zwar alles gepasst, ist aber etwas gedrängt und schief. Nun ja – später ist es in einem Gehäuse und man sieht es nicht mehr.

Widerstände in zwei Ebenen2

 

Jetzt läuft aber alles und der nächste Schritt besteht darin, eine interruptgesteuerte Anzeigeroutine für den Multiplexer zu schreiben. Der Lötkolben kann ein paar Tage ausruhen.

Langsamer Durchlauf Blick von Oben Blick von Unten

Weiter zum Teil 3

Frequenzzähler/ Periodenmesser mit einem PIC32 – Teil 1

Im Internet hatte ich vor ein paar Wochen ein Verfahren gefunden, wie man einen Frequenzzähler mit guter Genauigkeit und Messauflösung aufbauen kann. Das Original wurde mit einem AVR Prozessor aufgebaut. Da ich ein PIC32 Projekt durchführen wollte, habe ich diesen Prozessor gewählt, auch wenn ein einfacheres Modell gereicht hätte.

Hier findet man das Originalprojekt, welches sehr gut beschrieben ist und mir wirklich gut gefallen hat.

Siebensegmentanzeige

Bei ebay konnte ich für wenige Euro 9-stellige blaue Siebensegment Displays erwerben. Da mein PIC32 Modell nicht gerade üppig mit Pins bestückt ist, habe ich einen normalen Siebensegment Decoder 7447 verwendet. Das hat auch den angenehmen Vorteil, dass ich gleich eine Open Collector Ansteuerung für die LEDs habe. Den Dezimalpunkt kann ich im Augenblick noch nicht ansteuern, dafür werde ich noch ein Port-Pin spendieren müssen.

Zum Multiplexen der einzelnen Stellen habe ich einen 1 aus 16 Decoder 74154 verwendet. Ich hatte auch überlegt, einen 1 aus 8 Decoder (74138) zu verwenden und die neunte Stelle dann direkt anzusteuern. Das hätte die Schaltung aber umfangreicher gemacht und bringt kaum eine Einsparung. Dann sind eben 7 Schaltzustände ungenutzt. Das kann ich später dazu verwenden um zusätzliche LEDs zur Statusanzeige anzusteuern.

Da ich die Segmente mit mindestens 30 mA ansteuern möchte (laut Datenblatt sind 30 mA erlaubt, deshalb wird das Display es auch überleben, wenn der Multiplexer mal stehen bleibt), kann ich die Stellenumschaltung nicht direkt vom IC aus ansteuern. Es müssen bei der Anzeige der Ziffer 8 ca. 240 Milliampere geliefert werden. Also erfolgt die Ansteuerung über einen PNP Darlington Transistor der mit dem Emitter an Plus liegt. Der Decoder zieht den ausgewählten Kanal freundlicherweise auf 0 – genau passend zur Ansteuerung des Transistors, natürlich mit einem Vorwiderstand. Vermutlich hätte hier statt eines Darlingtons auch ein normaler PNP Transistor gereicht.

Die TTL ICs betreibe ich mit den vorgeschriebenen 5 Volt, den PIC mit 3,3 Volt. Der High Level des PIC hat aber auch bei nur 3,3 Volt einen ausreichend hohen Pegel um von den TTL ICs als High erkannt zu werden.

Für den Prototypen auf dem Steckbrett habe ich nur 3 Stellen verkabelt. Der nächste Schritt besteht darin, das Ganze dann vollständig auf einer Platine aufzubauen. Sobald die Anzeige dann steht, geht es an den Zählerteil.

Zähler 1

Etwas zum Nörgeln habe ich zum Schluss aber noch: die Port-Pin Verteilung bei den 28 Pin PIC32 ist übel. Vom Port A stehen prinzipiell die ersten 5 Bit zur Verfügung – die Einschränkung deshalb, weil ich nur PA0 und PA1 tatsächlich zu einer Ausgabe überreden konnte. PA2 und PA3 gehören scheinbar dem Programmieradapter. Die Verwendbarkeit von PA4 habe ich nicht überprüft.

Beim Port B ist es auch nicht toll. Er ist auf den ersten Blick vollständig – aber nein: die Bits 6 und 12 fehlen ganz. Zwei weitere Bits sind durch den Oszillator belegt und ich habe noch nicht herausgefunden, wie man sie als Ausgang verwenden kann. Da ist es schon mühsam, vier zusammenhängende Bits als Bus zu finden. Das hätte man vielleicht auch sinnvoller aufteilen können.

Weiter zum Teil 2