Projekt "Stoppuhr"

Motivation

Ist ganz einfach, ich wurde gefragt.
Ein guter Freund (Toddy) brauchte für einen Wettkampf (Nordsee Fire Fight ) eine Zeiterfassung. Und wie das Leben so spielt, sollte das dann auch noch so wenig wie möglich Kosten. Da bin ich dann ins Spiel gekommen. :-)

Funktionen

  1. natürlich die Zeit messen
  2. Zeitanzeige auf einem großen Display
  3. Sensoren für 2 Bahnen auswerten
  4. Akustisches Startsignal liefern
  5. evtl. Fernauslösung des Starts, eine Erfassung der Zeiten an einem Rechner

Umsetzung

Die gesammte Stoppuhr besteht aus zwei Teileinheiten. Zum einen der Steuereinheit, in der die Funktionstansten, die Ansteuerung der Sensoren, die Ansteuerung eines Displays für die Schiedsrichter und zwei serielle Schnittstellen untergebracht sind. Zum anderen ein abgesetztes Display, damit auch die Zuschauer wissen was die Zeit geschlagen hat.

Die Steuereinheit

Hardware

Das Ergebnis:

Steuereinheit

Als Grundlage für die Steuereinheit dient das hier im Wiki vorgestellte Board (Hardware Rev2) mit dem MSP430F2618. Es wurde hierfür aber um einige Funktionen erweitert. An Port 1 des MSP ist das Tastenkreuz für die Bedienung der Stoppuhr angeschlossen. Weiterhin sind hier auch die externen Eingänge für die Auswertung der beiden Lichtschranken und des Tasters für die Fernauslösung angschlossen (diese natürlich über Optokoppler). Das Display ist jetzt an die Schnittstelle „USCI B1“ angeschlossen, um zusätzlich zwei serielle Schnittstellen und einen I2C - Bus bedienen zu können. Die Hintergrundbeleuchtung kann jetzt stufenlos gedimmt werden. Dazu ist die Ansteuerung der zugehörigen Transistoren an Port 4.1…4.3 verlegt worden. Damit vorgenommene Einstellungen an der Software dauerhaft erhalten bleiben, wurde an den SPI - Bus ein FRAM einegfügt. Neben der SPI - Schnittstelle werden wie bereits erwähnt zei serielle Schnittstellen durch den Prozessor bedient. Die Schnittstelle „USCI A0“ stellt über einen USB - Seriell - Wandler (FT232RL) die Verbindung zu einem Rechner her. Die zweite serielle Schnittstelle dient zur Kommunikation mit der LED - Anzeige. Für die ansteuerung externer Geräte (akustischer Signalgeber) sind jetzt zwei Relais vorhanden (wenn da nich ein Stecker zu groß oder das Gehäuse zu klein wäre, wären es zwei. So ist es erstmal nur eines. ^_^)
Die bisher auf dem Demoboard genutzte Stromversorgung wurde durch zwei Schaltregler ersetzt. Diese erzeugen die 3,3V und die 5V Betriebsspannungen auf der Steuereinheit.

Software

Geschrieben habe ich wie immer in „c“.
Bei der Erstellung der Software stand ich zu Beginn vor einem Problem. Wie stelle ich es an, alle Funktionen unterzubringen und dabei die Stoppuhr möglichst genau laufen zu lassen. als erstes habe ich die Stoppuhrfunktionalität in ein eigenes Untermenü gepackt. Die zugehörigen Teilfunktionen werden im Hauptprogramm immer als erstes ausgeführt und alle anderen Funktionen (die nicht Stoppuhr sind) gehen einfach nicht. Damit war das erste Problem gelöst. Als Zeitgeber verwende ich den Timer A, der mir einen Millisekundenimpuls zur Verfügung stellt. Dieser wird zur Generierung des Zehntelimpulses (kleinste Zeitauflösung der Stoppuhr in der Steuereinheit) genutzt. Alle anderen im System genutzten Zeitbasen werden ebenfalls vom Takt des Timers A abgeleitet (Tasterentprellung, Einschaltdauer der Relais, usw.).
Ein weiteres Problem stellte die Aktualisierung des Bildschirminhaltes während der Zeitmessung dar. Jedesmal den ganzen Bildschirm zu schreiben dauert hier einfach zu lange. Deshalb wird hier die aktuelle Zeit direkt in das Display geschrieben, ohne das Grafikram zu nutzen. Für die Darstellung aller anderen Displayinhalte, wird weiterhin das RAM manipuliert und anschließend der Inhalt an das Display übertragen. Die Hintergrundbeleuchtung der Anzeige kann stufenlos zwischen 0% und 100% eingestellt werden. Damit hier keine Softwareresourcen verbraucht werden, erfolgt die Erzeugung der PWM in Hardware durch den Timer B des MSP430. Die Software der Steuereinheit stellt auch die Daten für die LED - Anzeige (die kann eigentlich nix selber) zusammen, die dann sekündlich aktualisiert wird.

Für die Zeiterfassung werden zwei Lichtschranken ausgewertet. Sobald eine Lichschranke unterbrochen wurde, wird die aktuelle Zeit zwischengespeichert (im Bild schirm wird weiter gezählt). Erfolgt innerhalb der nächsten 2 Sekunden keine erneute Auslösung, so wird die gespeicherte Zeit als gewertete Zeit interpretiert und die Messung ist beendet. Der Bildschirm wird ebenfalls auf die gewertete Zeit eingestellt. Dies ist notwendig, weil laut den Wettkampfregeln das Ziel komplett durchschritten werden muss. Da ein Mensch nunmal 2 Beine und im Wettkampf auch noch ne Puppe mit sich führt, müssen diese Mehrfachauslösungen berücksichtigt werden.

Menüstruktur

Menüstruktur

Was noch zu machen ist!!!!

  • Schaltplan überarbeiten (hab doch hier und da einen Fehler gefunden ^_^)
  • Alle geplanten Einstellmöglichkeiten fertigstellen
  • Machen das auch alle Einstellungen gespeichert werden
  • Windows - Software erstellen (Für ganz später)

Dateien

Stelle ich ein sobald die wichtigsten offenen Punkte abgearbeitet sind.

LED - Anzeige

Hardware

Das Ergebnis:

BILD

Die beiden Anzeigen sind zusammen ca. 1,5m breit und ca. 18cm hoch. Die einzelnen Ziffern sind aus LED - Streifen (Internethandel aus China) zusammengesetzt, die auf GFK - Platten aufgeklebt wurden. Die Ansteuerung erfolgt im Multplexbetrieb durch einen MSP430F2132. Dieser übernimmt die Ansteuerung der Zeilen- und Spaltentransistoren. Ebenso ist an ihn das Leistungsnetzteil und eine serielle Schnittstelle angeschlossen. In dem Displaygehäuse (hat Toddy gebaut) ist weiterhin ein 24V Netzteil untergebracht. Aus diesen 24V werden die 12V Versorgungsspannung für die LED's und die 3,3V für den Prozessor erzeugt.

Software

Geschrieben habe ich wie immer in „c“. Wobei ich derzeit das Problem habe, mit gdb-proxy auf den Prozessor zugreifen zu können!?
Auch hier wird durch den Timer A ein Millisekundenimpuls erzeugt, von dem alle anderen verwendeten Zeitbasen abgeleitet werden. Jede Millisekunde wird zwischen den einzelnen Ziffern umgeschaltet. Die darzustellenden Zeitinformationen werden über die angeschlossene serielle Schnittstelle empfangen und ausgewertet. Es gibt derzeit nur 3 Befehle die unterstützt werden. Die anmeldung der Steuereinheit bei der Anzeige, die Zeitinformation für die linke und rechte Seite und der Steuerbefehlt zum Dunkeltasten der entsprechenden Seite.

Was noch zu machen ist!!!!

  • Schaltplan überarbeiten (hab doch hier und da einen Fehler gefunden ^_^)
  • Alle geplanten Einstellmöglichkeiten fertigstellen
  • Stelle 9 und 10 Flackern ab und zu (Ursache noch nicht ganz klar)
  • Die Displayhelligkeit muss noch verbessert werden

Teilumgebautes Display

Dateien

Stelle ich ein sobald die wichtigsten offenen Punkte abgearbeitet sind.

Bilder

Beim Aufbau Lichtschranken im Versuchsaufbau

projekte/stoppuhr.txt · Zuletzt geändert: 09.09.2011 23:00 von michael
Nach oben
Creative Commons License Recent changes RSS feed
Dieses Werk oder dieser Inhalt ist unter einer Creative Commons-Lizenz lizenziert.