Dr.Godfried-Willem RAES

Kursus Experimentele Muziek: Boekdeel 2: Live electronics

Hogeschool Gent - Departement Muziek en Drama


< Naar inhoudstafel>

 

2084:

Industrial ADC-cards  

[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