LCD-Stoppuhr

Ich möchte euch eine neue / alternative Stoppuhr vorstellen (siehe auch Stoppuhr auf Basis von Siebensegment-Anzeigen). Im Gegensatz zu meiner ersten Variante einer Stoppuhr habe ich mich bei dieser Variante der Stoppuhr für ein  LC-Display als Anzeigeeinheit entschieden. Da auch diese Stoppuhr einen flexiblen / örtlich unabhängigen Betrieb über Batterien / Akkus ermöglichen sollte, wurde besonders auf einen möglichst stromsparenden Betrieb geachtet. So wurde beispielsweise auf eine Hintergrundbeleuchtung für das LC-Display verzichtet. Das Display an sich benötigt somit gerade mal 250 µA. Damit sich jedoch mehr als nur die Art und Weise der Anzeige im Vergleich zur “alten” Stoppuhr ändert, habe ich zusätzlich eine USB-Schnittstelle vorgesehen, damit gemessene Zeitwerte über den PC ausgelesen und weiter verarbeitet werden können. Gespeicherte Zeitmessungen können wahlweise automatisch oder manuell im EEPROM (auch über Spannungsverlust hinaus) gespeichert werden.

Schaltplan

Nachfolgend ist der Schaltplan zur LCD-Stoppuhr zu sehen. Das Herzstück der PICLCD-Stopwatch ist der PIC18F13K22. Es handelt sich hierbei mit 8KB Programmspeicher um einen eher kleineren Vertreter der PIC18F-Reihe. Nichts desto trotz ist der kleine Kerl mit 20 Pins ordentlich mit zusätzlicher Peripherie ausgestattet und hat alles nötige an Board um sich der Aufgabe als Hirn unserer Stoppuhr gegenüber zu stellen. Zur Seite gestellt bekommt er einen nicht-flüchtigen Speicher (siehe U2) sowie einem FTDI-Chip um über USB mit einem Host-PC in Verbindung zu treten (siehe U3). Der Low-Drop-Regler (U4) in Form eines MCP1702 gesellt sich dazu und stellt die Versorgungsspannung für die gesamte Schaltung (mit Ausnahme von U3 bereit). Ein Steckkontakt (J1) dient zum Anschluss für weitere Peripherie (Details im Abschnitt Board). Zu guter letzt ist noch das LC-Display (siehe LCD1) auf dem Schaltplan zu finden, dass durch ein einzeiliges Display mit acht Zeichen von electronic Assembly ausgeführt wird. Hinzu gesellet sich hier und da etwas “Hühnerfutter” in Form von Widerständen, Abblock- und Pufferkondensatoren. Voilà fertig ist der Schaltplan 🙂

Auf den Schaltplan klicken für volle Auflösung

Board

In den nachfolgenden zwei Abbildungen seht ihr eine Vorschau auf die Leiterplatte als Resultat des Layouts in  Eagle. Die erste Abbildung zeigt die Leiterplatte von der Vorderseite, während die zweite Abbildung die Leiterplatte von der Rückseite zeigt (siehe auch jeweils die Bildunterschrift). Die Vorderseite wird ganz eindeutig durch das einzeilige  LC-Display dominiert, das acht vergleichsweise große Zeichen darstellen kann. Zusätzlich ist auf der linken Seite ein fünf-poliger PicoBlade Anschluss vorgesehen (Ground, PushButton, User, Spannungseingang und 3,3V Ausgang). Dieser wird zum Anschluss der Batterien/Akkus sowie für den Multifunktionsbtton verwendet (Details zur Bedienung folgen weiter unten). Vier M2.5 Durchgangslöcher bieten volle Flexibilität zur Montage der Leiterkarte auf einem entsprechenden Träger.

Vorderseite

Da das  LC-Display plan auf der Vorderseite aufliegt, ist dort (unter dem Display) kein Platz für weitere Bauelemente. Diesen mussten aus diesem Grund alle (mit Ausnahme des PicoBlade-Anschlusses) auf der Rückseite platziert werden. Wir finden auf der Rückseite neben dem  PIC18F13k22 Controller zusätzlich den  EEPROM Chip und den  FTDI-USB Chip sowie die mittig platzierte Micro-USB-Buchse zur Verbindung mit dem PC zwecks Datenaustausch. Darüber hinaus sind fünf Kontaktierungs-/Messpunkte vorgesehen (siehe VCC, GND, PGD, PGC und VDD), die zum händischen Programmieren/Debuggen des PIC-Mikrocontrollers vorgesehen sind. Der Grundgedanke ist, dass lediglich der Bootloader auf den PIC geladen wird, der dann weitere Firmware über das USB-Interface entgegen nehmen kann.

Rückseite

Bei der Bestellung der Platinen wollte ich dieses Mal etwas neues Ausprobieren. Ich habe mir den Hersteller  OSHPARK herausgesucht. Ein erster kleiner Vorteil bei diesem Anbieter: Man muss das Eagle-Boardfile (*.brd) nicht zuvor ins Gerber-Format exportieren, sondern kann direkt die *.brd Datei hochladen. Alles weitere wird einem abgenommen. Das Exportieren von Gerber-Dateien ist zwar nicht wirklich kompliziert aber wenn ich mir den Schritt sparen kann, warum nicht? Die Bestellung der Platinen ist somit super einfach und ist in wenigen Minuten abgeschlossen. Die Preise sind im Vergleich zu  ITEAD, bei denen ich schon oft bestellt habe und stets sehr zufrieden war, etwas höher. Dafür ist die Qualität der Platinen aber auch auf einem anderen Niveau, siehe:

Schon allein das  ENIG ist deutlich hochwertiger als  HASL bei ITEAD (Anmerkung: ENIG ist bei ITEAD gegen Aufpreis von 20$ auch möglich – beim OSHPARK jedoch inklusive). Eine kleine Besonderheit der Platinen vom  OSHPARK, sind die “Nasen” an den Rändern der Platine, die aufgrund des  Paneling entstehen. Der Hersteller sieht allerdings entsprechende Sollbruchstellen vor, so dass man die Nasen recht einfach und sauber entfernen kann. Sehr markant ist darüber hinaus natürlich auch noch der lila Lötstopplack 🙂

Hinsweis: Ich habe aktuell 2 Platinen über. Bitte schreib mir eine Nachricht über das  Kontaktformular, wenn du eine oder auch mehrere davon gebrauchen kannst. Und wenn ich selber keine Platine(n) mehr habe, dann findest du vielleicht unten in den Kommentaren noch Jemanden, der welche übrig hat 😉

Spannungsversorgung

Der Hauptanschluss der LCD-Stoppuhr befindet sich auf der Vorderseite links. Über einen fünfpoligen PicoBlade-Connector werden alle Anschlüsse realisiert. Die nachfolgende Tabelle beschreibt die Belegung des Connectors (diese ist zusätzlich auch direkt auf der Platine aufgedruckt).

Bezeichnung Funktion
Ground (GND) Masseanschluss der Versorungsspannung 
Push-Button (PB) Schaltkontakt ( ) für den externen Pilztaster (zweitern Kontakt mit 3V3 /  verbinden)
User (USR) Momentan nicht genutzter zusätzlicher Schalteingang
Voltage-IN (VIN) Spannungsversorung Eingang
3,3 Volt (3V3) Signalspannung für externe Schaltkontakte ( )

Der 3,3V Ausgang ist zusammen mit dem Push-Button Anschluss für den Taster vorgesehen, der beim Betätigen einen High-Pegel am PIC-Controller erzeugt, der im Ruhezustand auf Low-Pegel (GND) liegt. Der Spannungseingang hingegen dient zur Spannungsversorung der LCD-Stoppuhr. Zur Versorgung werden  drei in Reihe geschaltete Zellen  verwendet. So ergibt sich die Gesamtspannung am Eingang zu etwa 4,2V (für drei in Reihe geschaltete voll geladene NiMh Akkus) beziehungsweise circa 3,4V, wenn sich die Akkus dem Ende zuneigen. Für Batterien beträgt die Spanne etwa 4,7V bis 3,4V (die Spannung der Batterie fällt noch weiter ab, jedoch sinkt die Gesamtspannung dann unter das minimale Niveau um die Stoppuhr noch versorgen zu können). Daher ist mein Tipp: Versorgt die Stoppuhr mit drei in Reihe geschalteten Mignon-Akkus.

Alternativ kann die LCD-Stoppuhr auch über den Mikro-USB  Anschluss versorgt werden. Der Batterieanschluss VIN  und der Mikro-USB Anschluss  sind zum Schutz durch eine Schottky-Diode voneinander entkoppelt, sodass keine Ausgleichsströme zwischen den zwei Stromquellen (vorausgesetzt zeitgleicher Anschluss) fließen können. Somit ist es nicht erforderlich den Akku abzuziehen, wenn Daten über den PC ausgelesen werden sollen.

Bedienung

Die LCD-Stoppuhr wird über einen einzigen Taster bedient (z.B. über einen “Hot-Buzzer”, siehe auch das  Foto des Aufbaus von meiner Siebensegment-Stoppuhr). In diesem Abschnitt möchte ich nun kurz beschreiben, wie die jeweiligen Funktionen der Stoppuhr über den Taster bedient werden.

Aufwecken der Stoppuhr

Um Strom zu sparen begibt sich der PIC-Controller nach 15 Sekunden Inaktivität in den SLEEP Modus. In diesem Zustand werden alle Taktquellen ausgeschalt, der Stromverbrauch des PIC reduziert sich in diesem Zustand auf 34 nA. Kurz bevor sich der PIC-Controller in den SLEEP Modus begibt, schaltet er zuvor noch das LC-Display aus um zusätzlich Strom zu sparen. So ist es möglich die maximale Laufzeit aus den ggf. genutzten Akkus oder Batterien herauszuholen.

Lange Rede kurzer Sinn: Wenn das Display aus beziehungsweise der PIC im SLEEP Modus ist, muss er zunächst durch einmaliges Tippen des Tasters aufgeweckt werden. Der PIC verlässt durch einmaliges drücken des Tasters den SLEEP Modus und aktiviert das Display. Auf dem Display wird eine kurze Animation zur Begrüßung angezeigt bevor die Zeitanzeige auf den Startwert 00:00:00 umspringt. Jetzt ist die Stoppuhr bereit eine neue Messung zu starten.

Starten / Stoppen einer Messung

Nachdem die Stoppuhr aus dem SLEEP Modus aufgeweckt und bereit für eine neue Zeitmessung ist (Display zeigt 00:00:00), kann eine neue Messung über einmaliges Tippen des Tasters gestartet werden. Alternativ ist die Stoppuhr nicht gerade erst aufgeweckt worden, sondern hatte zuvor gerade erst eine Zeitmessung durchlaufen, dessen Ergebnis noch immer auf der Anzeigt dargestellt wird (z.B.: 09:46:12) – in dem Fall kann durch einmaliges Tippen zurück zum Ausgangszustand gewechselt werden. Nun kann durch einmaliges Tippen direkt eine neue Zeitmessung gestartet werden. Die Anzeige zeigt live die verstrichene Zeit auf dem Display an. Die Zeitdarstellung auf dem Display erfolgt in <M><M>:<s><s>:<ms><ms>, somit würde eine Darstellung von 09:46:12 einer Zeit von 9 Minuten, 46 Sekunden und 120 Millisekunden entsprechen.

Eine laufende Messung wird über erneutes Betätigen des Tasters gestoppt, nachdem die Messung zuvor gestartet wurde (siehe live Anzeige der verstrichenen Zeit auf dem Display). Die Zeitmessung wird gestoppt und das Ergebnis für 10 Sekunden auf dem Display angezeigt. Sofern die letzte Messung einen neuen Rekord darstellt (kürzeste gemessene Zeit / vergleich mit im EEPROM gespeicherten Messwerten), wird der Hinweis Record! für 10 Sekunden blinkend auf dem Display eingeblendet. Im Anschluss wechselt die Anzeige wieder auf kontinuierliche Darstellung des Messwertes. Wenn innerhalb von 15 Sekunden keine neue Zeitmessung gestartet oder der zuletzt gemessene Wert gespeichert wird (siehe Beschreibung im Abschnitt Store), begibt sich die Uhr wieder zurück in den SLEEP Modus (Display wird ausgeschaltet).

Speichern eines Ergebnisses

Nachdem eine Zeitmessung beendet wurde (und die Stoppuhr noch nicht wieder in den IDLE Modus übergegangen ist), kann ein Messergebnis in das externe EEPROM (nicht flüchtiger Speicher) gespeichert werden um diese Zeitmessung später mit Hilfe eines PCs auszulesen und die Resultate z.B. in Excel weiter zu verarbeiten. Im Anschluss an eine Zeitmessung wird das Ergebnis für 10 Sekunden auf dem Display angezeigt (zum Beispiel 09:46:12). Solange das Ergebnis angezeigt wird, kann dieses nun mit einem Drücken & Halten des Tasters für drei Sekunden gespeichert werden. Auf dem Display wird eine kurze Bestätigung angezeigt: -> #0049 . Hier wurde das letzte Messergebnis in den Slot mit der Nummer 49 gespeichert. Der Speicher ist fortlaufend organisiert, so dass der nächste Messwert an die Position 50 gespeichert werden würde (solange der Speicher nicht zuvor gelöscht wurde). Es können maximal 1000 Messergebnisse im EEPROM gespeichert werden. Wenn der Speicher voll ist, wird das älteste Messergebnis überschrieben und geht somit verloren.

Löschen des Speichers

Von Zeit zu Zeit kann es vorkommen, dass ihr den Speicher des EEPROMS vollständig löschen möchtet. Das könnt ihr wahlweise über das PC-Tool erledigen oder direkt an der Stoppuhr. Um den Speicher direkt an der Stoppuhr zu löschen, drückt und haltet ihr den Taster für 5 Sekunden. Im Anschluss erscheint die Meldung Erase? auf dem Display.

Wenn ihr euch sicher seid, dass der Speicher vollständig gelöscht werden soll, bestätigt noch einmal mit einem erneuten Tipp auf den Taster. Das Löschen alle Messergebnisse wird mit Erased! auf dem Display bestätigt. Die Anzeige verschwindet nach weiteren drei Sekunden wieder vom Display.

Fernsteuern via PC

Über den PICLCD Stopwatch Reader kann die Stoppuhr vom PC ferngesteuert werden. Außerdem bietet das kleine PC-Tool, das in Java geschrieben wurde, die Möglichkeit die im externen EEPROM gespeicherten Messwerte in eine Comma-Seperated-Value Datei (CSV) auszulesen. Somit können die Daten auf einfache Weise von der Stoppuhr exportiert und zum Beispiel in Microsoft Excel grafisch aufbereitet werden. Bei der Entwicklung des PC-Tools wurde wert darauf gelegt eine möglichst leicht zu bedienende und übersichtliche Oberfläche zu gestalten. Im Reiter Settings wird die Verbindung zur PICLCD Stopwatch konfiguriert. Letztendlich wird hier einfach nur der COM-Port ausgewählt, an dem die PICLCD Stopwatch angeschlossen ist. Über einen Button kann die Liste der verfügbaren COM-Ports aktualisiert werden, wenn die PICLCD Stopwatch z.B. erst an den PC angeschlossen wurde, nachdem das Reader-Tool gestartet wurde. Über den Ping-Test Button kann dann der ausgewählte COM-Port geprüft werden. Es wird, wie der Name schon sagt ein Ping an die PICLCD Stopwatch gesendet. Wenn daraufhin das Echo empfangen wird, war der Test erfolgreich und die PICLCD Stopwatch kann entsprechend ferngesteuert werden (siehe weitere Reiter des Tools).

Im Tab Data können einige Informationen zur PICLCD Stopwatch ausgelesen werden. Sowohl das Datum als auch die Nummer des Builds der geflashten Firmware werden über den Button mit dem kleinen ausgelesen. Die Daten werden im Anschluss in den Textfeldern angezeigt (siehe Firmware-Version und Buildnumber). Wenn zusätzlich noch die Daten des externen EEPROM von Interesse sind, können diese ebenfalls ausgelesen werden. Nachdem der Button zum Auslesen der EEPROM Informationen gedrückt wurde, werden die Anzahl der gespeicherten Messungen im EEPROM sowie der aktuelle Rekord angezeigt. Weiterhin können alle gespeicherten Messungen in eine CSV-Datei exportiert werden. Wenn hingegen alle gespeicherten Messungen aus dem EEPROM gelöscht werden sollen, kann der Button mit dem Besen genutzt werden.

Im Remote Tab kann die PICLCD Stopwatch ferngesteuert werden. Über den Start Button wird eine Messung auf der Stopwatch gestartet und über den Stop Button entsprechend wieder gestoppt. Das Ergebnis der Messung wird im Anschluss an eine Messung (Stop Button betätigt) im dunkel hinterlegten Testfeld dargestellt. Die Formatierung entspricht hierbei der des Displays der Stopwatch (<m><m>:<s><s>:<ms>ms>). Sofern die letzte Messung einen neuen Rekord darstellt, wird etwas Konfetti für eure hervorragende Leistung geworfen 🙂 Sofern ein neuer Rekord erreicht wurde, wird dieses Ergebnis automatisch ins EEPROM gespeichert. Wenn die letzte Messung kein neuer Rekord ist, kann das Ergebnis manuell ins EEPROM gespeichert werden. Aber Vorsicht: Nach Ablauf von 10 Sekunden nachdem die Messung beendet wurde, verfällt die letzte Messung.

Hier nun noch ein Beispiel eines Exports der Messungen. Zum Zeitpunkt des Exports waren acht Messungen im EEPROM gespeichert. Die PICLCD Stopwatch Remote speichert die exportieren Messungen immer in der Datei Measurements.csv, die direkt neben dem Tool abgelegt wird (der Pfad, in dem ihr die Exe der PICLCD Stopwatch Remote abgelegt habt). In der ersten Zeile sind die Titel/Beschreibungen für darunter liegenden Daten angeführt. Im Anschluss findet ihr pro Zeile ein Messergebnis. Achtung: Die Datei wird bei jedem neuen Export überschrieben!

Number,Minutes,Seconds,Milliseconds
1,00,09,57
2,00,07,68
3,00,06,23
4,00,04,50
5,00,05,04
6,00,01,80
7,00,07,19
8,00,11,13

Was ist noch zu tun?

Nun, verbessern lässt sich eine Software eigentlich immer, doch die Entwicklung der Firmware für die PICLCD Stopwatch ist überwiegend abgeschlossen. Was ich jedoch noch machen muss:

  • Strombedarf messen

Die Uhr ist sehr stromsparend designed und auch programmiert (regelmäßiger gebrauch des Sleep-Mode, geringer Strombedarf durch Auswahl der Bauelemente …). Nichts desto trotzt möchte ich nun natürlich auch wissen wie viel Strom sie denn nun wirklich benötigt und wie lange aufgrund dessen die Batterien halten werden. Diese Info werde ich in den nächsten Tagen an dieser Stelle nachliefern.

Stückliste

In der Vergangenheit habe ich oft einen Warenkorb als Reichelt-Link oder als PDF zur Verfügung gestellt. Da sich Bestellnummern hin und wieder mal ändern, möchte ich stattdessen dazu übergehen stattdessen eine Stückliste anzugeben. Anhand dieser sollten sich die Bauteile dann auch leicht beim Distributor eurer Wahl finden lassen.

Bauteil Wert Gehäuse Kommentar
C1, C2, C3, C4, C5 Kondensator 100nF SMD 0805 Abblockkondensator
C6, C7, C8, C10 Kondensator 1µF SMD 0805 Pufferkondensator
D1 Schottkydiode SK36A SMA/DO-214AC Entkopplung USB / Batterie
J1 PicoBlade Molex-Buchse MOLEX-SD-53398-0571
Krimpkontakte + Steckergehäuse MOLEX 50079-8100 +  MOLEX 510210500 Ruhig etwas Reserve einplanen, da relativ klein 😉
J2 Micro-USB-Buchse USB-B-MICRO-SMD USB Type Beispielfoto 
LCD1 LC-Display von electronic assembly EA_DOGM081 Schutzfolie auf beiden Seiten entfernen
LED1 Signal-LED LEDKA-3528ASYC LED mit etwa 2,5V / 10mA
R1, R2, R6 Widerstand 10k SMD 0805
R3, R4, R5 Widerstand 470R SMD 0805
R7 Widerstand 56R SMD 0805 LED Vorwiderstand
U1 Mikrocontroller PIC18F13K22 PIC18F13K22-I/SS Auf I/SS achten (erhältlich z.B. bei Voelkner)
U2 256K SPI EEPROM 25LC256-I/SN
U3 FT232RL SSOP28 USB zu Seriell Wandler
U4 MCP1702T-3302E SOT23 LDO Regler

Download

Falls ihr einen Nachbau der LCD-Stoppuhr plant, findet ihr hier die notwendigen Daten. Ich biete euch hier neben dem reinen Source-Code zusätzlich die aktuellste Firmware als HEX-Datei sowie darüber hinaus den Bootloader und natürlich auch die PCB-Dateien um die Platine ggf. beim Platinenhersteller eures Vertrauens fertigen zu lassen sowie den entsprechenden Reichelt-Warenkorb.

Leave a Comment