Previous Page Table Of Contents Next Page


Bitte beachte die Copyrighthinweise.

La09-ww1

AD-Kartenprojekt PG812

1 Aufgabenstellung

· Zwei Messwerte (0...2V) sollen synchron abgetastet werden (Sample-Hold!). Es sind 2000 Messwerte so schnell als möglich zu protokollieren und in einer Datei zu speichern.

2 Messwerterfassung

Da die Messwerte möglichst gleichzeitig zu erfassen sind und auf der AD-Wandlerkarte die Eingänge auf einen Sample/Hold-Verstärker multiplext wird, wurde die Differenz zwischen den beiden Eingängen ermittelt.

2.1 Differenzmessung

Hierzu wurde das Programm wurde im Wesentlichen um die Ermittlung der max. positiven bzw. negativen Abweichungen zwischen den Messwerten beider Kanäle erweitert.

PG812_3.c

/*************************************************************************

/* Editor: Florian Rosenauer @ HTBLA Karlstein, Austria-3830 Waidhofen/Th.

/* Datum: 28/Nov/1997 Klasse/Gruppe/Kat.Nr : V-EA/-/--

/*************************************************************************

/* Sprache : ANSI C

/* Programm Nr. : VEA Labor 9

/* Kurzbeschreibung : PG812 Ansteuerung

/*

/*************************************************************************

*/

const float VERSION = 0.30;

/************************************************************************/

#include<stdio.h>

#include<conio.h>

#include<dos.h>

const BASE=0x220;

unsigned char AD0l,AD0h,AD1l,AD1h;

int i,j;

float ob,un,r,s,t;

char ch;

void main ()

{ /* Initialisieren der Karte */

outportb(BASE+9,0x00); /* Verstrkung auf 1 */

outportb(BASE+11,0x01); /* Mode Control Register */

outportb(BASE+13,1); /* Sample */

clrscr();

printf("DIGITALWERT: ");

gotoxy(1,3);

printf("Das entspricht einer Spannung am Kanal 0 von ");

gotoxy(1,4);

printf("und einer Spannung am Kanal 1 von ");

gotoxy(1,5);

printf("Spannungsdifferenz von ");

while (ch != 27)

{ outportb(BASE+13,0); /* HOLD */

outportb(BASE+10,0); /* Multiplexer Kanal 0 */

outportb(BASE+12,0); /* startet Wandler */

while (inportb(BASE+5) > 15); /* warte bis Wandler fertig DRDY=0 */

AD0h=inportb(BASE+5) & 0x0f;

AD0l=inportb(BASE+4);

outportb(BASE+10,1); /* Multiplexer Kanal 1 */

outportb(BASE+12,0); /* startet Wandler */

while (inportb(BASE+5) > 15); /* warte bis Wandler fertig DRDY=0 */

AD1h=inportb(BASE+5) & 0x0f;

AD1l=inportb(BASE+4);

outportb(BASE+13,1); /* SAMPLE /*

/* AUSGABE AUF BILDSCHIRM */

gotoxy(15,1);

printf("Kanal 0= $%02X%02X und Kanal 1= $%02X%02X",AD0h,AD0l,AD1h,AD1l);

i=(AD0h*256) + AD0l;

j=(AD1h*256) + AD1l;

s=i;

s=((s/4096)*10-5);

t=j;

t=((t/4096)*10-5);

gotoxy(46,3);

printf("%.3f V",s);

gotoxy(35,4);

printf("%.3f V",t);

r=t-s;

gotoxy(24,5);

printf("%.3f V",r);

if (r<un) un=r;

if (r>ob) ob=r;

gotoxy(1,7);

printf("Maximal positive Abweichung %.3f V",ob);

gotoxy(1,8);

printf("Maximal negative Abweichung %.3f V",un);

/*ch=getch();*/

putch('\n');

}

}

Statt dieser Seite Struktogramm einfügen!

Mit dem Frequenzgenerator G1 wurde auf beiden Analogeingängen AD0 und AD1 ein Dreiecksignal mit ±5V angelegt, um die Unterschiede zwischen den Kanälen erkennen zu können. Bei unterschiedlichen Frequenzen wurde die Differenz im Programm ausgewertet:

Nach einer gewissen Zeit waren keine Änderungen mehr an den Werten zu erkennen und das Messergebnis wurde notiert.

Bemerkenswert ist, dass sowohl positive als auch negative Unterschiede auftraten.

2.2 Sample/Hold-Verstärker

Aus obiger Messung ist ersichtlich, dass ein Sample/Hold-Verstärker notwendig ist.

Es wurde eine Schaltung mit einem LF398N aufgebaut, es blieb jedoch nicht mehr genug Zeit, diese mit der Karte anzusteuern (vgl. nächste Übung).

3 Interpretation der Messergebnisse

Mit steigender Frequenz des Dreiecks nahmen die Abweichungen logischerweise (fast) linear zu. Die positiven und negativen Abweichungen erklären sich dadurch, dass es bei dem Dreiecksignal Flanken in beiden Richtungen gibt.


Creative Commons Lizenzvertrag
Dieses Werk ist lizenziert unter einer Creative Commons Namensnennung - Weitergabe unter gleichen Bedingungen 3.0 Österreich Lizenz.
[http://www.FLR.at/]
Letztes Update vom 25. Jul. 1999 von Florian Rosenauer

Previous PageTop Of Page Next Page

Powered by Transit