Schlagwort-Archive: PIC

Hochgenaue Zeiterfassung über das USB StopWatch Modul

 

Um bei Sportveranstaltungen mit Start- Zielläufen, die Start-, Zwischen und Zielzeiten auf  Hundertstel Sekunden genau und sicher erfassen zu können, ist eine Rechner unabhängige Hardware zur Messung der Zeiten notwendig, die mit einer quarzgenauen interne Zeitmessung arbeitet.

Nun ist der direkte Anschlus von Initiatoren möglich wie sie in der Industrie zum einsatzkommen. Üblicherweise werden Leuze Laserlichtschranken eingesetzt, die direkt an die M12/4 Steckverbinder angeschlossen werden können. Die Versorgung der Initiatoren erfolgt ebenfalls direkt über den M12 Steckverbinder, zur Verfügung gestellt wird diese Versorgungsspannung durch ein Externes Steckernetzteil 9V-24V=.

Beim Vorgängermodel, der Hardware Version 2.0. war es noch notwendug, die Anbindung aller Initiatoren extern, über einen Klemmleiste zu verdrahte und anzuschließen.

StopWatchStopWatch Hardware Version 2.0.

Die StopWatch Hardware verfügt über einen USB Anschluss für den Datenaustausch mit einem PC.
Drei Relais Ausgänge auf dem Modul bieten die Möglichkeit zur Ansteuerung von Signalgebern, wie zum Beispiel einer Ampelanlage. Desweiteren sind drei über Optokoppler getrennte Eingänge vorhanden, die zur Anbindung geeigneter Sensoren für die Start-, Zwischenzeit und Ziel Erfassung dienen.

Über Steuerbefehle vom PC wird die Starsequenz eingeleitet. Je nach Konfiguration des Moduls, wird anschließend die Ampel angesteuert und die Startfreigabe an den Teilnehmer erteilt. Sobald der Relaisausgang (Ampel grün) aktiv ist, beginnt je nach Konfiguration des Moduls die Zeiterfassung sofort oder erst mit dem überschreiten des Startsensors, dass Modul beginnt die Zeiterfassung.

Zeitgleich erhält der PC den Beginn der Zeitmessung über die USB Schnittstelle. Das Erreichen eines Zwischenzeitsensors wird ebenso wie das Erreichen des Zielsensors an den PC übertragen. Die letzten Zeitwerte werden im Modul gespeichert und bleiben dort Spannungsausfallsicher bis zum Beginn einer neuen Zeiterfassung gespeichert. So ist es möglich die zuletzt gesammelten Daten ein weiteres Mal für eine Auswertung auszulesen und erneut zu verarbeiten.

Die StopWatch Software wurde so konzipiert, dass die Darstellung der aktuellen Zeiten in einem eigenen frei verschiebbares Fenster angezeigt werden. In diesem Fenster befinden sich verschiedene Informationen, von denen die ersten beiden fest definiert sind und die laufende Zeit sowie die letzte Zwischenzeit anzeigen. Die anderen Felder können in den Programm Optionen ausgewählt werden. Zusätzlich können beliebig viele Freitexte und ein Werbe Banner eingeblendet werden. Das Fenster mit den Zeiten und einer virtuellen Ampel kann auf einem separaten Bildschirm anzuzeigen werden,  hierfür wird Gebrauch von einer Standard Windows Funktion gemacht, die es erlaubt, gleichzeitig zwei Bildschirme an einem PC zu betreiben.

Die Einstellungen hierfür sind in der Systemsteuerung von Windows unter Anzeige zu treffen. Nach dem Einrichten dieser Funktion, kann das Zeitanzeigefenster einfach mit der Maus auf den zweiten Bildschirm verschoben und dort maximiert werden. Die StopWatch Software wird von uns mit Nachdruck weiterentwickelt und neue Funktionalitäten und Kundenanfragen werden konsequent umgesetzt.

Hardwareentwicklung des USB StopWatch Moduls

Die StopWatch Hardware besteht im wesentlichen aus drei Bereichen.

  1. Einem USB RS232 Konverter, der zum seriellen Datenaustausch zwischen dem PC und dem Mikrokontroller (PIC 16F628/648) dient.
  2. Dem Mikrokontroller, der die Datenerfassung und die Kommunikation mit dem StopWatch Modul übernimmt.
  3. Sowie den Ein- und Ausgängen zur Verbindung mit der Peripherie. Alle Ein- und Ausgänge des StopWatch Moduls sind galvanisch getrennt ausgeführt, die Versorgung der Initiator Eingänge wird durch eine externes Steckernetzteil 7-27V DC gewährleistet. Mit diesem externen Netzteil werden die Angeschlossenen Initiatoren versorgt.
    Der Mikrocontroller besitzt drei über Optokoppler getrennte Eingänge für die Start-, Zwischen und Zielzeit Initiatoren.
    An die Eingänge über M12/4 Stecker direkt z.B. Industrielichtschranken der Fa. Leuze angeschlossen werden.Die drei Ausgänge sind über Read Relais galvanisch entkoppelt. Die grundlegenden Funktionen des PIC bestehen aus der Kommunikation mit dem StopWatch Programm über die USB Schnittstelle.
    Der Erfassung der Zeitmessereingänge und der Bruttozeiterfassung. Hierfür wird wie für andere Funktionen eine Interrupt Routine genutzt, die eine Genauigkeit von 4,096 ms gewährleistet.
StopWatch USB Modul Hardwarebeschreibung Revision 3.0
StopWatch USB Modul Hardwarebeschreibung Revision 3.0
StopWatch-USB-Modul-Hardwarebeschreibung-Revision-3.0.pdf
Version: Hardware Version 3
3.7 MiB
387 Downloads
Details

 

TextToEEprom

TextToEEprom
TextToEEprom
TextToEEprom.zip
Version: 1.0
2.0 MiB
673 Downloads
Details

TextToEEprom

In Mikrokontroller Anwendungen werden Texte z.B. für eine Displayausgabe häufig in externen EEProm Bausteinen abgelegt.

Das Programm “TextToEEprom” dient der Erstellung, der Pflege sowie dem Brennen der indizierten Textfiles in ein EEprom des Typs 24cxx. Je nach Anwendung können verschiedene 24cxx EEPromtypen ausgewählt werden. Die Übertragung der Daten kann seriell, direkt durch dem Microkontroller oder mit einem kleinen externen I2C-Brenner dessen Bauanleitung in der beiliegenden Dokumentation zu finden ist erfolgen. Der Bauplan für den Brenner und diverse Beispieleprogramme für die Nutzung mit einem Mikrokontroller sind als Basic Code in der beiliegeneden Hilfe enthalten. Dieser Code kann so auch leicht in beliebige ander Programmiersprachen portiert werden.

Um einen schnellen Zugriff auf die einzelnen Texte zu erhalten, wird jedem Text ein Index zugewiessen. Diese Indizis, die am Anfang des EEproms liegen, referenzieren (ähnlich einem Zeiger) die Startadresse des entsprechenden Textes im Speicherbereich des EEProms.

Im Programm wird nun z.B. von der fünften Speicherstelle des EEProm der Index für den Fünften Text im EEProm geladen und anschließend begonnen den Text Zeichen für Zeichen aus dem EEProm aus zu lesen und auszugeben, bis die Textende Markierung erreicht wird.

Das Textende wird durch einen frei definierbaren Bytewert gekenzeichent, der im Programm definiert werden kann.


Pseudo Code für die Verwendung der EEProm Daten:

Diese Beispiele zeigen, wie eine 24Cxx EEProm direkt mit einem PIC Microkontroller und der serielle Schnittstelle programmiert werden kann. Um ein besseres Verständnis der Funktionsweise zu erreichen, wurden die Programmteile mit vielen Kommentaren versehen. In diesem Beispiel wurde ein PIC 16F877 verwendet. Die Firmware kann mittels Bootloader über die Hardware serielle Schnittstelle des PIC (MAX 232 nötig) und Microcode Studio übertragen werden, dies erlaubt eine schnelle Fehlersuche bzw. Änderung der Software.
Diese Schnittstelle wird ebenfals für das Übertragen der EEprom Daten aus dem Programm TextToEEProm genutzt.
Die Beispielprogramme zeigen das Laden des EEProms mit Daten von der seriellen Schnittstelle, die Funktionsweise einer Textausgabe der mit TextToEEProm erstellten Texte und den Einsatz dieser Texte in einem kleinem Menü, dass über drei Tasten und ein LCD Display gesteuert werden kann.

Pic Basic Code Beispiel:Ladeprogramm für das EEprom (24C32 bzw. 24C64)‘————————[ Texte in das EEProm laden ]————————–
’24C32 10101ddd  (4K EEPROM) Adresse im Wordformat
TextToEEProm:
CONT = %10101000
ADDR = 0                    ‚Variable Addr mit null initialisieren
READDATA:
HSERIN 6000,START,[CHAR]            ‚Zeit um die Übertragung zu starten
IF CHAR = 251 THEN START            ‚End of File Zeichen
I2CWRITE SDA,SCL,CONT,ADDR,[CHAR]         ‚Daten in das EEProm schreiben
PAUSE 10                    ’10 ms Brenndauer abwarten
I2CREAD SDA,SCL,CONT,ADDR,[CHAR]        (Optional bei verwendung von ECHO)
HSEROUT [CHAR]                ‚Echo zum Sender (Optional bei verwendung von ECHO)
ADDR = ADDR + 1                ‚Addresse um eins erhöhen
GOTO READDATATextausgabe auf das LCD-Display (EEprom 24C32 bzw. 24C64)‘—————-[ LCD Ausgabe mit Word Pointer H/L ]—————————
’24LC32 4K Bytes %10101ddd (4K EEPROM) Adresse im Wordformat
‚TEXT => Erster Text ab INDEX
DiplayOut:                    ‚Der Index des Textes
CONT = %10101000
TEMP_WORD = (TEXT + OFFSET) * 2        ‚*2 Byte (High/Low)
I2CREAD SDA,SCL,CONT,TEMP_WORD,[ADDR]    ‚I*2 bei Word Pointer, lade Startadresse
READCHAR:
I2CREAD SDA,SCL,CONT,ADDR,[Char]
IF CHAR = 0 THEN RETURN            ‚End of Text Zeichen erkannt
ADDR = ADDR + 1                ‚Addresse um eins erhöhen
LCDOUT CHAR                    ‚Zeichen in das Display schreiben
GOTO READCHARTypischer Programmaufbau für eine Menüführung mit Displayausgabe

‚—————————[ Funktionsmenue ]———————————-
SETUP:
OFFSET = 11                    ‚Text offset Setup Menue
TEXT = 0                        ‚0-„Einstellungen …   “
GOSUB DISPLAYOUT                ‚Textausgabe aus EEProm
PAUSE 700
TEXT = 0                    ‚Setze Hauptmenüeintrag „Rollobedienung“
BACKTOSETUP:
OFFSET = 20                    ‚Text offset Setup Hauptmenue
MENUMAX = 2                    ‚0-3 Anzahl der Menü Einträge

‚******************************** Aktionsmenü  *********************************
MENU:
GOSUB DisplayOut
LOOP:
GOSUB GET_TASTER
SELECT CASE TASTER
CASE 1   ‚Zurück blättern
IF TEXT > 0 THEN                ‚Maximale Anzahl der Einträge erreicht?
TEXT = TEXT – 1
ELSE
TEXT = MENUMAX
ENDIF
GOSUB DISPLAYOUT
CASE 2    ‚Vor blättern
IF TEXT < MENUMAX THEN            ‚Minimale Anzahl der Einträge erreicht?
Text = Text + 1
ELSE
TEXT = 0
ENDIF
GOSUB DISPLAYOUT
CASE 4                        ‚Menüeintrag auswählen
PAUSE 255                    ‚255 ms warten Tastenwiederholrate
IF OFFSET = 20 THEN                ‚Hauptmenü
BRANCHL TEXT, [A0,A1,INIT]            ‚Init ist der letze Eintrag und beendet das Menü
ENDIF
IF OFFSET = 30 then B0
IF OFFSET = 40 then B1
END SELECT
GOTO LOOP

‚************************ Untermenüs *******************************************
A0:
TEXT = WERT                    ‚Atuellen Wert zugewiessen
OFFSET = 30                    ‚Text offset B0
MENUMAX = 3                    ‚Anzahl der Menü Einträge
GOTO MENU

A1:
TEXT = STATUS.2                 ‚Aktuelle Einstellung Binär 0 oder 1
OFFSET = 40                    ‚Text offset B1
MENUMAX = 2                    ‚Anzahl der Menü Einträge
GOTO MENU

‚********************* Aktionen der Untermenüs *********************************
B0:
SELECT CASE TEXT
CASE 0        ‚Eintrag 0
….
CASE 1        ‚Eintrag 1
::::
CASE 2        ‚Eintrag 2
….
CASE 2        ‚Eintrag 3
….
END SELECT
TEXT = 0                    ‚Setze Hauptmenüeintrag A0
GOTO BACKTOSETUP

B1:
SELECT CASE TEXT
CASE is < 2    ‚Eintrag 0..1
…..
CASE 2        ‚Eintrag 3
…..
END SELECT
TEXT = 1                    ‚Setze Hauptmenüeintrag A1
GOTO BACKTOSETUP

Was ist neu

Version 1.22.1  Neu

  • Es wurde eine Updatesuche integriert, die es nun ermöglicht, bequem aus der Anwendung heraus nach einen aktuelleren Version dieser Software zu suchen und diese dann direkt herunterzuladen.

Version 1.22.0

  • Erweiterung der EEProm Typen