|
|
Taal:
|
|
Schakeling: (De A/D-conversie)
Analoog-Digitaal omzetting vindt plaats door de te meten spanning te vergelijken met een deelspanning afgeleid van een referentie, dit is een nauwkeurige en constante spanningsbron (U7)., De deelspanning wordt gemaakt door een netwerk van weerstanden, die zodanige waardes hebben, dat 256 spanningsstapjes gemaakt kunnen worden. De vergelijking vindt bit voor bit plaats te beginnen met de meest significante bit en uiteindelijk wordt de waarde gevonden, die minder dan de minst
significante bit de te meten spanning benadert. De sequentie van de wel of niet ingestelde referentiespannings delen leveren een byte-waarde op, die zo goed als mogelijk de digitale waarde voorstelt van de aangeboden te meten spanning.
Uiteraard is het belangrijk, dat de referentiespanning (U7) goed bekend is en volgens specificatie mag deze nog variëren van 1,20 tot 1,25 Volt. Het meetbereik van de A/D-conversie is twee keer deze waarde, dus 2,40 tot 2,50 Volt en de mogelijke fout in het meetbereik is groter dan de meetspanning van de A/D-conversie. Daarom moet de referentiespanning bij voorkeur vooraf door meting bepaald worden, Dit kan het door meting over de aansluitpinnen van U7 of wellicht gemakkelijker tussen pinnen 17 (Vref) en 15 (analoog ground) van U6 (AD 7575), Bij aflevering van de ADC8 wordt de exacte referentiespanning op een etiketje op de print vermeld in mV. Gebruik deze waarde bij de programmering op de plaats
van Vref.
Hoe te programmeren:
Bit O en 1 van de data-in worden gebruikt voor de aansturing van de A/D conversie (resp. READ en Chip Select). De conversie wordt gestart door beide waardes van 1 naar 0 te brengen en 5 microseconden later is de digitale waarde van de op de tulp-ingang aangesloten spanning beschikbaar op de digitale uitgang van U6 ‘AD 7575). Dit 8 bits getal wordt automatisch ingeklokt in de latch U4 en blijft hierin behouden tot de volgende waarde uitgelezen worden op de data-uit lijnen na adressering van de print. De bits 2 t/m 7 van de data-in worden gebruikt voor aansturing van de digitale uitgangen. Bij het bedienen hiervan moet men er steeds rekening mee houden, dat meeveranderen van bit O en 1 kan leiden tot A/D-conversie, wellicht ongewild. Een met een 1 aangestuurde uitgangspoort krijgt de waarde +5 Volt via de driver U8 en kan dus geen stroom leveren t‚o.v. de voedingsspanning. Daarvoor moet een 0 uitgestuurd worden.
Start de programmering van de ADCB-print door alle digitale uitgangen op 5 Volt te brengen door:
OUT X,255: OUT X+1,adres
De A/D-conversie wordt gestart door bit O0 en 1 op nul te brengen:
OUT X,252: A%=INP(X): SP=A%*Vref/255: PRINT SP: ‘print spanning
De waarde van de te meten spanning wordt als een getal ingelezen in A% en hieruit berekend rekening houdend met de waarde van de referentie-spanning Vref.
Indien men dít BASIC-programma vertaalt in machinetaal, moet tussen het starten van de conversie en het uitlezen van de waarde een wachtlus ingebouwd worden van ca. 10 mieroseconden lang zijnde de tijd, die nodig is om de conversie uit te voeren en de waarde in te klokken in de betreffende latch. BASIC is zodanig traag dat een wachtlus niet nodig is,
Het bedienen van de digitale uitgangen gebeurt door de betreffende uitgangen op O te brengen. Als er geen A/D-conversie nodig is, geldt:
OUT X,255-2^N
N is de gewenste uitgangsbit (2 t/m 7) Resumerend:
OUT X,252-2^4-2^7 stuurt de conversie aan en de outputpoorten overeenkomend met bit 4 en 7. OUT X,108 is hetzelfde.
Subroutines: (voorbeeld middels een programma)
Dit programma is geschreven voor Personal Computers (PC's XT of AT).
Door het veranderen van de variabelen 'DB' (databus) en 'AB' (adresbus) in overeenkomstige waardes voor P2000 en MSX zal het ook op deze types werken.
Als kaartnummer is 32 genomen (het inverteren gebeurt in het programma). Het eerste programma is voor alleen het ADC-gedeelte, het tweede voor alleen het Driver-gedeelte en tenslotte het laatste voor beide.
10 | ’ Voorbeeldprogramma aansturen ADCB (ADC-gedeelte) Voor Personal Computers |
20 | ' Aansturing databus op adres 784 (DB=784) |
30 | ‘ UNIFACE kaartnummer is 32 (KA=32) |
40 | ' Door D.Kroonenberg d.d, 29-10-’90 |
50 | ' |
60 | ' |
70 | ' |
80 | DB=784 |
90 | AB=785 |
100 | KA=32 |
110 | ' |
120 | ‘ Invoeren referentiespanning (staat op ADC8 kaart) |
130 | ' |
140 | INPUT "TYPE IN: PRECIESE WAARDE REFERENTIESFPANNING:"; VR |
150 | ' |
160 | GOSUB 250: ' roep bedieningsroutine aan |
170 | PRINT "DE GEMETEN WAARDE = "; A% |
180 | PRINT "DIT KOMT OVEREEN MET :"; VR*A%/255;"V." |
190 | INPUT “OPNIEUW ? TYPE J/N";J$ |
200 | IF J$="J" OR J$="j" then 160 |
210 | END |
220 | ' |
230 | ' Bedieningsroutine |
240 | ' |
250 | OUT DB, 252: ' zet startbitpatroon voor ADC op databus |
260 | OUT AB, 255-KA: ' klok in op kaart (start ADC) |
270 | A%=INP (DB): ' lees gemeten waarde en geef aan A% |
280 | OUT DB, 255: ’ zet databus |
290 | OUT AB,0: ’ zet adresbus terug |
300 | RETURN |
10 | ’ Voorbeeldprogramma aansturen ADC (Driver-gedeelte) |
20 | ' Voor Personal Computers |
30 | ’ Aansturing databus pp adres 784 (DB=784) |
40 | ' Aansturing adresbus op adres 785 (AB=785) |
50 | ’ UNIFACE kaartnummer is 32 (KA=32) |
60 | ' Door D.Kroonenberg d.d, 05-11-'90 |
70 | ' |
80 | DB=784 |
90 | AB=785 |
100 | KA=32 |
110 | ' |
120 | ' Invoeren aanstuurgetal |
130 | ' |
140 | INPUT "TYPE IN: AANSTUURGETAL:"; DR |
150 | IF DR<0 OR DR>63 THEN 140 |
160 | ' |
170 | GOSUB 240: ’ roep bedieningsroutine aan |
180 | INPUT "OPNIEUW ? TYPE J/N’; H$ |
190 | IF H$="J" OR H$="j" THEN 110 |
200 | END |
210 | ' |
220 | ' bedieningsroutine |
230 | ' |
240 | OUT DB, 255- (DR*4): . ' get gecorrigeerd drivergetal op databus |
250 | OUT AB,(255-KA): ’ klok in ADC8-kaart (drivers aan) |
260 | OUT AB,0: ' zet adresbus terug |
270 | RETURN |
10 | 'Voorbeeldprogramma aansturen ADC (ADC en Driver-gedeelte) |
20 | 'Voor Personal Computers |
30 | 'Aansturing databus op adres 784 (DB=784) |
40 | 'Aansturing adresbus op adres 785 (AB=785) |
50 | 'UNIFACE kaartnummer is 32 (KA=32) |
60 | 'Door D. Kroonenberg d.d. 04-02-’91 |
70 | ' |
80 | DB=784: |
90 | AB=785: |
100 | KA=32: |
110 | ' |
120 | 'Invoeren referentiespanning (staat op ADC8-kaart) |
130 | ' |
140 | INPUT "TYPE IN: PRECIESE WAARDE REFERENTIESPANNING:"; VR |
150 | ' |
160 | ’ invoeren aanstuurgetal |
170 | ' |
180 | INPUT "TYPE IN: DRIVER AANSTUURGETAL:"; DR |
190 | IF DR<0 OR DR>63 THEN 180 |
200 | ' |
210 | GOSUB 320; ' roep bedieningsroutine aan |
220 | PRINT "DE 6 DRIVERS VAN DE ADC8-KAART ZIJN INGESTELD OP GETAL: ";DR |
230 | PRINT "DE GEMETEN WAARDE = ";A% |
240 | PRINT “DIT KOMT OVEREEN MET:”;: PRINT USING "+##, ###"; VR*A%/255;: PRINT "Volt” |
250 | |
260 | INPUT "OPNIEUW ? TYPE J/N"; H$ |
270 | IF H$="J" OR H$="j" THEN CLS: GOTO 180 |
280 | END |
290 | ' |
300 | ’ bedieningsroutine |
310 | ' |
320 | OUT DB, 255- (DR*4) -3: 'samenvoegen ADC en Drivergetal |
330 | OUT AB, 255-KA: 'start conversie en drivers aan |
340 | A%=INP (DB): ' lees gemeten waarde en geef aan A% |
350 | OUT DB, 255- (DR*4) : 'zet ADC terug (drivers blijven aan) |
360 | 360 OUT AB, 0: 'zet adresbus terug |
370 | RETURN |