Messdatenerfassung mit dem Computer • Einführung - C.Zeitnitz • Beispiel Programme – M.Fuidl • Kleines digitales Interface für den Druckerport Signalverarbeitung mit dem Computer - Hardware ► Signale, die verarbeitet werden ⃟ digitale Signale (TTL/CMOS Signale) - zählen von Pulsen - starten/stoppen von Timern ⃟ analoge Signale (müssen erst digitalisiert werden) → Analog zu Digital-Converter ADC wird benötigt ► Ausgabe von Signalen ⃟ digitale Signale (TTL/CMOS) - schalten von Relais - LED ansteuern - weitere Elektronik ansteuern ⃟ analoge Signalformen → Digital zu Analog Converter DAC wird benötigt Signalgenerierung per DAC ist sehr viel einfacher als Digitalisierung !! ► Digital zu Analog Converter ⃟ einfachste Version per R-2R Widerstandsnetzwerk Ausgangsspannung Tietze, Schenk Halbleiterschaltungstechnik 4-Stellen Binärzahl ⃟ Annahme: - jedes Bit liefert die gleiche Spannung Uref (1) der Masse (0) - Lastwiderstand sollte etwa 2R entsprechen (jedenfalls nicht zu klein sein!) ⃟ Wie kommt die Ausgangsspannung zu Stande ? Widerstand zur Masse beträgt 2R Spannung 1/3 U1 Widerstand zur Masse beträgt 2R ⃟ Jede Spannung Ui´ ergibt sich zu 1/3 von Ui (für gesetztes Bit i) ⃟ U3´ fällt direkt am Ausgang ab ⃟ U2´ erscheint halbiert am Ausgang ⃟ U1´ erscheint halbiert am Punkt U2´ und damit mit Gewicht ¼ am Ausgang 1 1 1 1 ⃟ Insgesamt ergibt sich U a (U 3 U 2 U1 U 0 ) 3 2 4 8 ► Analog zu Digital Converter (ADC) ⃟ Sehr viel komplizierter als ein DAC !! ⃟ Verschiedene Verfahren vorhanden • • • Zählverfahren Addiere eine Referenzspannung, bis Eingangsspannung erreicht Sehr langsames Verfahren, aber einfach realisierbar Wägeverfahren Beginnend beim höchstwertigen Bit, teste ob Eingangsspannung ober- oder unterhalb der Wertigkeit des Bits liegt. Anzahl der Schritte entspricht der Bitbreite des ADC Bis ca. 1Ms einsetzbar Parallelverfahren Binärzahl wird in einem Schritt gebildet, indem jeweils ein OP nachprüft welcher der 2n Werte der Eingangsspannung entspricht Sehr schnell, aber extrem aufwendig, da für n-Bits 2n-1 OPs benötigt werden ► Parallelverfahren (auch Flash-ADC genannt) OP mit Open-Loop Verstärkung 8-Bit ADC Widerstandsnetzwerk zur Einstellung der Schwellen Register zum zwischenspeichern der Konversion 8 auf 3 Decoder Tietze, Schenk Halbleiterschaltungstechnik ► Einige ADCs kombinieren verschiedene Verfahren, um die Anzahl der OPs akzeptabel klein zu halten ► Oft ist die genaue Signalform nicht von Interesse. Es reicht z.B. die Amplitude eines Pulses zu bestimmen ⃟ Sample und Hold Schaltung vor den ADC + Ue + - C - Ua ⃟ Ausgangsspannung folgt der Eingangsspannung solange diese höher ist als die auf dem Kondensator gespeicherte ⃟ Wenn das Maximum des Pulses überschritten wird (Ue fällt ab) bleibt die Ausgangsspannung stabil ⃟ Amplitude kann mit langsamen ADC gemessen werden ! ► Welche Digitalisierungsmöglichkeiten bieten sich an? ⃟ Multimeter mit RS-232 Schnittstelle - für quasi-statische Signale - z.B. Temperaturmessfühler - elektrostatische Messungen - Anpassung des Arbeitsbereichs durch Messverstärker - Software: z.B. DMMProfilab ⃟ Externe Digitalisierungsgeräte mit Parallelport, RS-232 oder USB Anschluss - CASSY: analoge und digitale Signale, aber nicht sehr flexibel auf der Softwareseite ! - PCS-64: 2-Kanal Speicheroszilloskop von CONRAD (Preis: ca. 260 €) mit 64Ms Universell einsetzbar, aber kein Zugriff auf Werte in eigenen Programmen! - Digitaloszillograf mit RS-232 oder Ethernetanschluss ⃟ Eigenbau: - Selbstbauprojekt aus der Zeitschrift MNU 54/6 (Sept. 2001) 8-Bit 10ks ADC an serieller Schnittstelle Platine kann beim Autor bestellt werden digitaler Eingang analoger Eingang Serielle Schnittstelle R.-J. Brandenburg MNU 54/6 Sept. 2001 8-Bit ADC mit seriellem Ausgang ► Einige Anmerkungen zu moderner Messtechnik ⃟ Moderne Elektronik sieht so aus: Xilinx FPGA (Field-Programmable Gate Array) 6 x 40MHz ADC mit Differentiellen Eingängen CAN-Bus Interface ⃟ Lässt sich noch mit der Hand löten, aber nicht einfach! ⃟ 4-Lagen Platine notwendig, um stabilen Betrieb zu erhalten ► Was ist tut das Board? ⃟ Die digitalisierten Signale werden mit 40MHz in den FPGA Baustein übernommen und dort durch einen digitalen Bandpass geschickt ⃟ Die Amplitude der Signale wird bestimmt ⃟ Bei genügend hoher Amplitude wird das Datum in ein Histogramm im externen Speicher geschrieben ⃟ Nach einer voreingestellten Zahl von genommenen Pulsen wird der am CAN-Bus angeschlossene Rechner darüber informiert, dass die Datennahme abgeschlossen ist ⃟ Der Computer liest das Histogramm aus und analysiert es ► CAN-Bus ⃟ Controller-Area-Network: von Bosch für Autos entwickelt ⃟ Extrem zuverlässiges Bus-System, aber nicht sehr schnell (1Mb/s). Sinnvoll in Bereichen, wo man nur selten rankommt. ► Programmierung eines FPGA (großer Bruder von PAL und GAL) ⃟ Spezielle Compiler notwendig (Spezialsoftware des Herstellers) Signalverarbeitung mit dem Computer - Software ► Spezielle Software, die mit Hardware geliefert wird ⃟ Oft nicht sehr flexibel ⃟ Selten Dokumentation über die Verwendung der Hardware in eigenen Programmen ► Eigenbauprojekte ⃟ Software muss selbst geschrieben, oder vom Autor geliefert werden ⃟ Vorteil: meist liegt der Quelltext der Programme vor d.h. Verwendung in eigenen Softwareprojekten ist einfach ► Programmiersprachen ⃟ Höhere Programmiersprachen PASCAL, BASIC, C (C++) Nachteil: oft erheblicher Aufwand für gut bedienbare Programme ⃟ Grafische Programmierung (schnell und einfach) z.B. DMMProfilab LabView von National Instruments ► Anforderungen ⃟ Konfigurierbar an eigene Anforderungen ⃟ Grafische Darstellung der Messreihen (Histogramme, xy- oder yt-Diagramme) ⃟ Möglichkeit der statistischen Auswertung - Mittelwertbildung, Streubreite - Bestimmung einer Ausgleichsgeraden für Eichzwecke … ► Probleme bei Selbstbauprojekten ⃟ Aufwand oft recht groß ⃟ Freier Zugriff auf Parallele und serielle Schnittstelle nur unter DOS, Win 95/98/ME möglich ⃟ Windows NT/2000/XP benötigen spezielle Treiber hierfür z.B. Freeware Bibliothek DLPORTIO ► Beispiel LabView ⃟ Rein grafische Programmierung ⃟ Extrem schnelle Erstellung von gut aussehenden Benutzeroberflächen ⃟ Allerdings sehr teuer !! Sollten die Kultusministerien zentral beschaffen ! Einfaches digitales Interface für den Druckerport 2 x BC547 Masse „Busy“ und „Paper Empty“ als Eingang 4 Datenbits als Ausgang Centronics Buchse Schutzschaltung aus Widerstand (2x 1k) und Zenerdiode 5,1V Alle Widerstände: 1kΩ Alle Z-Dioden: 5V1 Schutz der Ausgänge: 1k 1k 5V1 Max. Spannung: 5.1V Min. Spannung: ca. -0.7V Schutz der Eingänge und der „Open-Collector“ Treiber: Max. Spannung: 5.1V Min. Spannung: ca. -0.7V 5V1 100k 1k ► Wie wird’s programmiert? ⃟ Unter DOS, Win95/98/ME - Schreiben der 8 Datenbits des Druckerports auf Adresse 378Hex (im Bios nachsehen, welche Adresse eingestellt ist!) - Lesen des Statusregisters auf Adresse 378Hex+1 outport(0x378,0); // setze alle Bits zu 0 status=inport(0x379); ⃟ Unter Win NT/2000/XP sind spezielle „Kernel Device Treiber“ notwendig. Z.B. DLPORTIO, sonst genauso wie oben! ► Zu beachten: ⃟ „Paper Empty“ Signale wird invertiert gelesen ! d.h. bei anliegender „0“ wird „1“ beim lesen des Statusregisters zurückgegeben und umgekehrt Datenausgänge D0-D3 Schreiben auf port 0x378 (für LPT1) Busy auf Pin11 (invertiert!) Paper Empty auf Pin12 Lesen auf 0x379 (für LPT1)