Dr.Godfried-Willem RAES
Kursus Experimentele Muziek: Boekdeel 2: Live electronics
Hogeschool Gent - Departement Muziek en Drama
< Naar inhoudstafel>
[ref.:11/96]
16 channel / 14 bit ADC Card:
Ten behoeve van de studenten installeerden we in de klaskomputer een goedkope maar flexibel toepasbare 16 kanaals ADC-kaart. Een bruikbare Basic funktie om via deze 14-bits kaart gegevens uit de analoge wereld binnen te halen, kan gekodeerd worden alsvolgt:
' industrial ADC card 14-bit - Zeno workstation ' *********************************************
' Experimentele Muziek Klas
CONST port% = &H160 dit is het adres waarop de kaart in ingesteld
DECLARE FUNCTION ADC% (k%)
toepassingsvoorbeeld:
FOR kanaal% = 0 TO 15
LOCATE 3 + kanaal%, 10
PRINT "Kanaal "; kanaal%; " = "; ADC%(kanaal%); " ";
NEXT kanaal%
de eigenlijke funktie:
FUNCTION ADC% (kanaal%)
OUT port%, kanaal%
OUT port% + 1, 0: ' clear register
FOR il% = 1 TO 8
dummy% = INP(port% + &HC)
NEXT il%
FOR il% = 1 TO 8
dummy% = INP(port% + &HA)
NEXT il%
msb% = (INP(port% + 3)) AND 63
lsb$ = HEX$(INP(port% + 2))
SELECT CASE LEN(lsb$)
CASE 0
lsb$ = "00"
CASE 1
lsb$ = "0" + lsb$
END SELECT
' return 14-bit value:
ADC% = VAL("&H" + HEX$(msb%) + lsb$)
END FUNCTION
16-channel / 12bit short ISA Card:
Dezelfde Taiwanese fabrikant levert ook erg goedkope korte ADC kaarten (ca. 2500,-) die echter niet zo flexibel te gebruiken zijn als de vorige kaart. De specs van dit exemplaar zijn: analoog ingangsbereik: 0 tot +9V unipolair ofwel -9 tot +9 V bipolair (instelbaar via een jumper op de kaart). De konversiesnelheid is 60 microsekonden per kanaal. Er zijn 16 kanalen (single ended) beschikbaar. Willen we dus alle 16 kanalen sekwentieel en periodiek samplen dan is onze hoogst haalbare 16-kanaals sampling rate 1ms per cyclus. De resolutie van deze kaart is 12 bits. De kode voor het gebruik ziet eruit alsvolgt:
[ref.:ADDA12B.BAS - 1996]
DECLARE FUNCTION ADC% (channel%)
' industrial ADC card 12-bit
' **************************
' specs: 16 x 12bit ADC conversion time: 60microsec./channel
' -> 960mic.s/16 channels-> ca 1ms
' input range: 0-9V unipolar or -9 to +9 V bipolar
CONST port% = &H278: ' &H278-&H27F - kan ook &H2F8-&H2FF zijn
DO
FOR k% = 0 TO 15
LOCATE 5 + k%, 10:
PRINT "Kanaal="; k%; " ADC-read="; ADC%(k%); " ";
NEXT k%
LOOP UNTIL INKEY$ <> ""
FUNCTION ADC% (channel%)
OUT port% + 3, 0
OUT port% + 0, channel%
FOR i% = 1 TO 5
dummy% = INP(port% + 4)
NEXT i%
FOR i% = 1 TO 9
dummy% = INP(port% + 5)
NEXT i%
msb% = (INP(port% + 2) AND &HF)
lsb% = INP(port% + 1)
ADC% = (msb% * 256) + lsb%
END FUNCTION
Of het euvel zich voordoet bij alle kaarten van dit type weten we niet, maar in elk geval vertoonde ons exemplaar een hardware bug die potentieel erg desastreuse gevolgen kan hebben: de massa-aansluiting van de DB25 konnektor was verbonden met de +5 komputervoeding, waardoor de kaart vanzodra je ze in het komputerchassis plaatst en vastschroeft, deze de komputervoeding volledig kortsluit...
Het volstaat op de kaart het betreffende printspoortje weg te krabben om het ding perfekt de erin gestelde verwachtingen te laten inlossen. In elk geval eerst even nakijken dus!
Naar inhoudstafel
Naar homepage dr.Godfried-Willem Raes