Start AVR-KursStartseitenicht verfügbar

21. ZEDER 3.0 = ZErfallsdaten Digital ERfassen


Geigerzähler sind bekannt dafür, dass sie bei jedem registrierten Zerfallsereignis mit einem Knacken im Lautsprecher und einem Erhöhen der Zähleranzeige reagieren. In der Regel bleiben diese Reaktionen im Gerät selbst gefangen. Wer eine zusammenhängende Auswertung, beispielsweise für die Aufnahme einer Messreihe zur Ermittlung der Halbwertszeit eines Nuklids haben möchte, der muss viel Zeit investieren, um eine lückenlose Datenreihe zu erhalten. Hier setzt ZEDER an.

Abb. 1: ZEDER-Interface, ZEDER-Kabel und Inspector


 

Was ist ZEDER?

Das ZEDER-Paket umfasst drei Teile - das von einem ATMega8 gesteuerte Interface, das Interfacekabel zum Anschluss des Radiation Alert Inspectors und das VBA-Programm, das zusammen mit MS-EXCEL die Auswertung übernimmt.

Das ZEDER-Interface zählt ankommende TTL-Impulse von einem Geigerzähler während einer einstellbaren Torzeit und speichert das Ergebnis im hauseigenen EEPROM (bis zu 160 Messungen), um dann eine wiederum einstellbare Zeit bis zur nächsten Messung zu warten. Während dieser Zeit kann der Inspector (=Radiation Alert Inspector) vom Interface ausgeschaltet werden. Kurz vor Beginn der nächsten Messung wird er über die Steckverbindung vom ZEDER-Interface wieder mit Spannung versorgt und in Aktion gesetzt. Die ermittelten Werte kann man via USB-Kabel an einen PC übertragen, direkt in EXCEL importieren und dort vom ZEDER-Programm (VBA) auswerten lassen.

Das ZEDER-Interface

Schaltung

Die Schaltung ist dank der Eigenschaften des AT-Mega8 nicht sehr aufwendig. Es reicht eine einseitige Platine. Eine größere Darstellung bekommt man durch Anklicken der Abbildung. Ergänzen kann man noch einen Taster vom Pin1 (RST#) des AT-Mega8 auf Masse. Das ermöglicht einen Hardwarereset, wenn es Probleme im Programmablauf gibt oder auch um eine laufende Funktion blitzschnell abzubrechen. Das Interface wird an einem 9V-Block betrieben oder durch ein externes Netzteil mit 9V stabilisierter Gleichspannung versorgt. Der Pluspol der Batterie liegt am Zentralanschluss der Rohrbuchse, ihr Minuspol dagegen am Anschluss Rsw. Damit ist sicher gestellt, dass ohne Netzteil (=bei gezogenem Stecker schließt Rsw gegen den Masseanschluss der Buchse) die Batterie die Versorgung übernimmt und bei gestecktem Rohrstecker der Minusanschluss der Batterie abgekoppelt wird. Ein mit Transistoren bestückter Pegelwandler formt den TTL-Pegel des AT-Mega8 in einen geschalteten 9V/0V-Pegel, der den Inspector versorgt. Die anderen beiden Transistoren bedienen die blaue und rote Signal-LED. Ein 78L05 stellt die 5V-Versorgung für den AT-Mega8 und das LCD bereit. Der Signaleingang "IN" ist über einen 680Ohm-Widerstand und eine 5V1 Zenerdiode gegen Überspannung geschützt. Port C des AT-Mega8 versorgt das LCD, ein Teil der ISP-Anschlüsse werden gleichzeitig für die Tastatur benutzt. Die Quarzfrequenz beträgt 16 MHz.

Abb. 2: Schaltplan zum ZEDER-Interface


 

Platinenlayout

 

 

Abb. 3: Bestückungsplan und Layoutvorlage

(Klick für PDF-Vorlage)

Die linke Abbildung zeigt die Bestückung, die in der Regel auf der nicht cashierten Seite erfolgt. Ausnahmen bilden die Taster und die Bauteile der USB-Baugruppe, die als SMD Bauteile auf die Kupferseite gelötet werden müssen. DieUSB-Buchse (B-Version) wird dagegen normal, also von der Bestückungsseite her eingesetzt. In der einfachsten Version benötigt das USB-Modul lediglich drei Entkopplungskondensatoren von jeweils 0µ1 zusätzlich zum FT232R. Die Schaltung ist daher im Schaltplan symbolisch nur als Rechteck dargestellt. Etwas Vorsicht ist beim Verlöten der sehr eng liegenden Anschlüsse des FT232R geboten. Diese Arbeit ist nix für Anfänger in der Löttechnik, das sollte man schon einige Stunden Lötpraxis an gröberen Projekten gesammelt haben. Neben der einzelnen Lötung mit sehr wenig Lötzinn von einem maximal 0,5mm dicken Lötdraht und einer wirklich spitzen Lötspitze (nicht zu heiß, damit das Zinn nicht verzundert) gibt es noch eine zweite Möglichkeit. Hier werden alle Pins auf einmal plump aufgelötet und das überschüssige Lötzinn zum Schluss wirder mit Entlötsauglitze entfernt. Ich selbst bevorzuge die Version 1, das zielgerichtete Löten der einzelnen Pins. Unabdingbar für diese Technik ist die Applikation der Platine mit Lötlack, aus der Dose oder selbst hergestellt. Der schützt die Kupferfläche vor Oxidation und dient gleichzeitig als Flussmittel. Erhitzt man IC-Beinchen und Kupferschicht gleichzeitig, fließt das Bisschen Lötzinn wie von selbst in den Spalt zwischen Pin und Kupferbahn.

Im Layout ist rechts unten eine Baugruppe enthalten, die über einen DC-DC-Converter vom Typ MC34063A aus der 5V-Spannung der USB-Schnittstelle die 9V-Betriebsspannung für das Interface bereitstellen kann. Diese Baugruppe wird nur dann bestückt, wenn das Interface permanent ohne externes Netzteil oder Batterie nur über den USB-Port eines PCs versorgt wird.

Die roten Linien in der Bestückungsansicht deuten Verbindungen an, die mittels isoliertem Draht zu ziehen sind. Die Verbindung zum DC-DC-Converter kann man weglassen, wenn die Baugruppe nicht bestückt ist.

Abb. 4a: Innenleben des Gehäuses Abb. 4b: Detail

Die Bilder vom Prototypen offenbaren ein aufgeräumtes Innenleben des Geräts. Der 9V-Block wurde hier durch 6 AA-Zellen ersetzt, um eine längere Laufzeit zu gewährleisten. Außerdem ist die USB-Baugruppe (DC-DC-Converter nicht bestückt) noch auf einer eigenen Platine untergebracht.In der Detaildarstellung kann man sehen wo auf der Kupferseite die Taster eingelötet sind. Rechts unten der herausgeführte ISP-Anschluss, welcher bei mir anders als bei ATMEL beschaltet ist, weil das der Pingeometrie der Prozessoren eher gerecht wird.

Meine Belegung des ISP-Steckers zur Programmierung von AVR-Prozessoren

Die Signale RST VCC SCK MISO MOSI GND von links nach rechts.

Dem Gerät wurde außerdem noch ein Betriebsschalter spendiert, der zwischen dem Zentralstift der Buchse (unten in Abb. 4b) und dem Anschluss auf der Platine liegt. Zu diesem Zweck wurden die beiden dicken Leiterbahnen, die vom Anschluss des Zentralstifts ausgehen aufgetrennt und wieder mit einem Stück Draht verbunden.

Als Display kam das leider nicht mehr lieferbare NAN YA LMK62R125A1 von Pollin zum Einsatz. Das Nachfolgemodell benötigt zur Kontrasteinstellung eine negative Spannung gegen Masse, was einen zusätzlichen Schaltungsaufwand bedeutet.

Die Firmware

Das Programm für das Interface ist in Assembler geschrieben und liefert nahezu 8KB Maschinencode. Zum Einsatz kamen natürlich alle die Module in erweiterter und gegebenenfalls abgewandelter Form, die bereits in früheren Projekten aus dem Kurs entwickelt, beschrieben und eingesetzt wurden. Daher findet an dieser Stelle eine eingehende Besprechung des Quellcodes nicht statt, es wird auf die umfassende Dokumentation des Programms und der Bibliotheken verwiesen.

Das Projekt steht unter der GNU General Public License allen zur Verfügung, die das Projekt weiterentwickeln wollen. Das Copyright verbleibt beim Autor. Bedingung ist jedoch wie üblich, dass mit der Binärdatei auch die Quelldateien sowie deren Header mit den Angaben des Verfassers und dem Hinweis auf die GPL weitergegeben werden müssen. Gleiches betrifft die Programmbibliotheken, die ebenfalls im Archiv enthalten sind.

The ZEDER-Firmware is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation; either version 3 of the License, or (at your option) any later version. This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details. You should have received a copy of the GNU General Public License along with this program; if not, see GNU General Public License.

Für Schnellstarter befindet sich im Archiv auch eine bereits assemblierte Version der Firmware. Diese HEX-Datei kann mittels Ponyprog und einem seriellen Programmer, dessen Anschlüsse den oben genannten entsprechen müssen, in den Flash des AVR übertragen werden.

Bedienungselemente

Zum Steuern der Zählfunktion und zur Verwaltung der ermittelten Messwerte dient ein AT-Mega8. Über 4 Tasten werden 22 Menüpunkte angewählt und über das 2 x 16 Zeichen-LCD dargestellt. Jeder der Menüpunkte dient entweder zum Einstellen der Abtastzeiten und der Abtastlogik oder dem Senden der Messwerte an den PC. Daneben gibt es noch einige Menüpunkte zum Test und zur Statusabfrage. Die linken beiden Tasten (oben T1, unten T4) schalten die Menüs vor (T1) und zurück (T4), die rechten Tasten (T2 oben und T3 unten) erlauben die Auswahl von Werten, Aktionen und Zuständen oder ermöglichen das Hoch- oder Herunterzählen der Schaltzeiten. Die Reset-Taste unten in der Mitte stetzt Hard- und Software im Fehlerfall zurück.

Drei LEDs zeigen den Zustand des Programms an, blau: Inspector wird mit Spannung versorgt/Messung läuft, grün/gelb blinkend: Messreihe läuft und rot: es liegt ein Fehler im Zeitrahmen vor (Torzeit ist größer Zykluszeit).

Abb. 5: ZEDER-Interface Prototyp


Alle Steuerbefehle können neben den Tasten auch über die USB-Schnittstelle des PCs an das ZEDER-Interface übermittelt werden. Ein spezieller Baustein (FT232R von FTDI) setzt im Interface die USB-Daten vom PC in RS-232-Signale um, die der AT-Mega 8 verarbeiten kann.

Abb. 6: Funktionsschema zum ZEDER-Interface


Die Reaktionen des Prozessors werden als RS-232-Signale an den USB-Baustein (FT232R) geschickt, der sie in USB-Signale umwandelt und an den PC weiterreicht. Ein freier VCP-Treiber von FTDI (http://www.ftdichip.com/Drivers/VCP.htm) im PC emuliert eine serielle Schnittstelle auf dem USB-Anschluss (VCP = virtual comm port). So ist es möglich, direkt über ein Terminalprogramm (MS-Hyperterminal) oder ein MS-COMM-Objekt aus VBA heraus auf das ZEDER-Interface zuzugreifen, also Befehle zu senden und die Antwort des Interfaces zu empfangen. Damit der FT232R wie gewünscht arbeitet, muss er ein wenig programmiert werden. Aber keine Angst, es sind keine USB-Kenntnisse nötig nur das Programm MPROG, das von http://www.ftdichip.com/Resources/Utilities.htm#MProg frei herunter geladen werden kann. Das Datenblatt zum Chip gibt es als PDF-Datei: http://www.ftdichip.com/Documents/DataSheets/DS_FT232R_V204.pdf. Welche Einstellungen am FT232R getätigt werden müssen, wird später mitgeteilt.

Hinweis:
der FT232R-Teil des Projekts kann jederzeit auch als virtuelle Schnittstelle für andere Anwendungen eingesetzt werden, die eine RS232-Schnittstelle (auch V24) benötigen. Außer den beiden Leitungen RX und TX stehen alle wesentlichen RS232-Leitungen für das Handshaking am FT232R zur Verfügung. Natürlich muss in so einem Fall noch ein Pegelwandler vom Typ MAX232 nachgeschaltet werden, damit die nötigen +/- 12V-Pegel am Ausgang zur Verfügung stehen. Im vorliegenden Fall ist das nicht erforderlich, da der AT-Mega mit den TTL-Pegeln zurecht kommt, die der FT232R liefert.

Abb. 7: FT232R-Einstellungen in MPROG.EXE von FTDI

Zum Überprüfen der FT232R-Einstellungen wird das Programm "MPROG.EXE" von FTDI gestartet. Der FT232R-Chip muss natürlich mit einem USB-Kabel an einem USB-Anschluss des PCs hängen. Dann kann über das Menü Tools und den Befehl Read and Parse nach dem Baustein gesucht werden um gleich auch noch die aktuellen Einstellungen auszulesen. Sind Änderungen nötig, dann muss man diese zunächst in eine Datei speichern, erst danach steht der Befehl für die Übertragung der Werte auf den Chip zur Verfügung. Die Abbildung zeigt die von mir verwendeten Einstellungen.

Das ZEDER-Kabel

Der Anschluss des Radiation Alert Inspectors (weiterhin kurz RAI oder Inspector genannt) an das Interface erfolgt über ein dreipoliges Kabel. Am Interface wird es mit einem 3,5 mm - Klinkenstecker (Stereoausführung) angeschlossen. Das Ende für den RAI trägt einen Monoklinkenstecker (3,5 mm) und einen Batterieclip, der auf den Clip des RAI anstelle der Batterie geklippst werden kann. Dadurch kann das Interface den RAI nach belieben ein- und ausschalten. Voraussetzung dafür ist natürlich, dass der RAI für die Dauer der Messreihe selbst eingeschaltet ist. Die Anschlussbelegung des Kabels ist wie folgt:

Abb. 8a: Beschaltung der Stecker und Anschlüsse schematisch

 

Abb. 8b: Stecker und Anschlüsse

 

Das ZEDER-Programm

Die Auswertung der Messwerte, die nach Abschluss einer Messreihe im Interface zur Verfügung stehen, geschieht in einem PC. Dazu müssen die Daten natürlich erst einmal an den PC übertragen werden. Das macht ein USB-Kabel möglich, welches Interface und PC verbindet. Weil der AT-Mega8 aber nur RS232-Daten verarbeiten kann, ist im Interface ein weiterer Baustein nötig, der als Übersetzer von USB nach RS232 und umgekehrt wirkt, der FT232R. Über den Pin 2 wird der AT-Mega8 vom FT232R mit Daten vom PC versorgt, über den Pin 3 gibt der AT-Mega8 Antworten via FT232R an den PC heraus.

Im PC sorgt ein spezieller Treiber für die Übersetzung von USB nach RS232 und umgekehrt. Dadurch wird ein einfacher Zugriff auf die USB-Schnittstelle realisiert. Der Treiber gaukelt dem PC einen virtuellen Comm-Port vor, sendet und empfängt aber über eine USB-Leitung. Diese Schnittstelle wird wie ein normaler serieller Anschluss eingestellt und verwendet so wie früher z. B. bei einem Modem. Es gibt also die bekannten Werte wie Baudrate (38400), Anzahl Datenbits (8), Paritybit (keins) und Anzahl Stoppbits (1) einzustellen und zwar auf dem PC und im AT-Mega - in letzterem durch das Programm vorgegeben.

Im einfachsten Fall genügt ein beliebiges Terminalprogramm, um mit dem AT-Mega via VCP und FT232R Kontakt aufzunehmen. Die folgende Liste fasst die möglichen 34 Kommandos zusammen, die man an das Interface - eigentlich an den AT-Mega8 vom PC aus senden kann. Die fettgedruckten sind auch über Tasten und LCD verfügbar.

Befehle via RS232

e 1, 0 Echoflag ein/aus
i 1, 0 Inspector Spannungsversorgung an/aus
I   LCD init
c   LCD löschen
t 00 bis t13 feste Torzeiten setzen
T 0 bis 3600 CR Torzeit sekundengenau frei setzen
z 00 bis 21 feste Zykluszeit setzen
Z 0 bis 64800 CR Zykluszeit sekundengenau frei setzen
g Messung starten
b Break = Messung stoppen
m 0 bis 160 CR Anzahl Einzelmessungen vorgeben (>160 = Dauerlauf)
v Defaultwerte setzen m=160, t = 6 (60s), z = 7 (300s)
r Ausgabe der Firmware-Version
w Zeiten und Anzahl Werte abfragen
W   Flags als Binärzahl abfragen
u Uhr abfragen
U Uhr rücksetzen
f EEPROM-Speicher mit Testwerten füllen
l EEPROM-Speicher leeren
s Werte an PC senden
S 00 bis 99 Zeitintervall in s für "Messwert senden"
C   Countflags setzen/rücksetzen
s0 oder s1 schalten, wenn Messung läuft
d0 oder d1 Dauerlauf, kein Limit auf Anzahl der Messwerte
a0 oder a1 Autosend aus / an
k0 oder k1 keine Pause zwischen Messungen
O   Outputflags setzen/rücksetzen
  l0 oder l1 LCD wird nicht benutzt/benutzt
v0 oder v1 RS232 wird nicht benutzt/benutzt
s0 oder s1 Messwerte werden nicht gespeichert/gespeichert
R

RS232-Test 19,2 kHz-Signal (halbe Baudrate) an Pin 3 des AT-Mega8,
(Abschalten nur über Reset des Prozessors)

a sende aktuellen Messwert im Zählerregister
A sende aktuellen Wert im Register "amessung"
h 0/1 Untergrundmessung stopp/start
H Untergrundwert löschen
X Softwarerestart der Interfacebox (entspricht RST-Taste)

Tab. 1: ZEDER-Kommandos

Bei Verwendung eines Terminalprogramms, werden die Kommandos über die PC-Tastatur an die Interfacebox gesendet und die Antworten werden im Terminalfenster dargestellt. Ein eigenes Programm verwendet für den gleichen Zweck ein MS-COMM-Object. Die Kommandos kann man dann hinter Schaltflächen verbergen, sodass der Endbenutzer die Schreibweise der Kommandos gar nicht kennen muss. Die Antworten von der Interfacebox können dann in Textboxen zur Verfügung gestellt oder direkt in die Zellen einer Tabellenkalkulation geschrieben werden. Die vorliegende Lösung erfolgte mittels VBA in EXCEL. Das Programm zeigt auf, wie Schaltflächen zum Umsetzen von Befehlen dienen, wie Text- Listen- und und Eingabeobjekte eingesetzt werden und wie der VCP bedient wird.

Abb. 9: Elemente der EXCEL-Anwendung in der Datei ZEDER_GUI.XLS

Damit die Kommunikation zwischen PC und Interface funktioniert, müssen beide natürlich mit einem USB-Kabel verbunden sein, Auf dem PC muss der VCP-Treiber von FTDI installiert sein und die Parameter der virtuellen seriellen Schnittstelle (VCP) müssen mit denen im Interface übereinstimmen. Wichtig ist in diesem Zusammenhang auch die Nummer des VCP, die man im Gerätemanager von Windows nachsehen kann.

Abb. 10: VCP im Gerätemanager

 

Geöffnet und geschlossen wird der COMM-Port folgendermaßen:

Tab2: Öffnen und schließen eine virtuellen COMM-Ports

Die Nummer des VCP wird vom Benutzer in das Eingabefeld "inpCommNr" geschrieben, was nur dann möglich ist, wenn der Port gerade nicht benutzt wird, also geschlossen ist. Dieser Wert wird von der Procedur ausgelesen, das Eingabefeld gesperrt und der VCP mit dieser Nummer geöffnet. War das erfolgreich, dann wird der Wert "OPEN" in die Zelle K6 des Tabellenblatts geschrieben. Analog funktioniert das Schließen des VCP.

Anhand des Löschbefehls für die Werte im EEPROM kann man die einfache Übermittlung eines Kommandos und das Abwarten der Rückmeldung studieren. Das Auslesen der Input-Eigenschaft des MS-COMM-Objekts löscht dessen Eingabepuffer, andererseits ist der Puffer leer, wenn seit dem letzten Auslesen keine neuen Daten eingegengen sind. Die While-Schleife liest nun den Eingangspuffer so lange aus, bis der daraus zusammengesetzte String "Eingang" den Begriff "DONE" enthält, welcher vom Interface gesendet wird, wenn es mit dem Löschen des Speichers fertig ist. Erst danach darf ein neues Kommando vom PC gesendet werden.

Als weiteres Beispiel möge der Wertetransfer auf den PC dienen, der durch das Kommando "s" ausgelöst wird. Das Interface sendet darauf hin zu nächst ein LF/CR (=ASCII-Zeichen Nr. 10 und 13) gefolgt von der Anzahl von Messwerten, einem erneuten LF/CR, dann den Wert der Hintergrundmessung, LF/CR, Torzeit in s LF/CR und Zykluszeit in s LF/CR. Es folgen die Messwerte, die wiederum durch LF/CR vom nächsten Wert abgegrenzt werden. Die VBA-Routine benutzt den bekannten Aufbau, um aus dem Datenstrom im Eingabepuffer wieder die einzelnen Werte herzustellen.

Nach diesem Schema ist das gesamte VBA-Programm aus der EXCEL-Mappe "ZEDER_GUI.XLS" aufgebaut, das man im VBA-Editor (Tasten Alt + F11) betrachten und ergänzen/ändern kann, nachdem es heruntergeladen wurde. Durch die Übernahme einzelner Proceduren und/oder die Verwendung EXCEL-interner Funktionen kann der Benutzer jederzeit eigene Anwendungen und Auswertungen entwickeln. Als neue Arbeitsmappe abgespeichert stehen sie dann erneut zur Verfügung, denn VBA-Programme werden zusammen mit der Arbeitsmappe abgespeichert und nicht in irgendwelchen Vorlagendateien. Was ein Benutzer also mit der eingelesenen Tabelle macht, ist völlig offen. Das vorliegende ZEDER-GUI ist daher lediglich als Muster gedacht wie man das Interface anspricht und nicht als Lösung für alle denkbaren Fälle.

Tabelle 2 der Mappe stellt den Zusammenhang der Werte aus Tabelle 1 grafisch dar, während die Tabelle 3 der EXCEL-Mappe noch einmal alle Kommandos nebst kommentierten Beispielen bietet.


 

Start AVR-KursAn den Seitenbeginnnicht verfügbar