Dr.Godfried-Willem Raes

Kursus Experimentele Muziek: Boekdeel 2: Live electronics

Hogeschool Gent - Departement Muziek en Drama


<Naar inhoudstafel kursus>

2121

Toepassingsvoorbeeld:

2-digit 7-segment display

Wie zich met live-komputermuziek inlaat, en deze bedrijvigheid ook in kombinatie wil brengen met welkdanige vorm ook van live-performance (musici/uitvoerders, lichttechniekers, akteurs...) zal vroeg of laat gekonfronteerd worden met kommunikatieproblemen: het is heel eenvoudig allerlei berichten op het komputerscherm te laten verschijnen, maar deze zijn door spelers niet op enige afstand te lezen. Het opstellen van meerdere schermen op het podium gaat gepaard met oeverloze problemen, o.m. omdat het erg moeilijk is een komputer op meerdere monitors aan te sluiten. Bovendien zijn extra monitors en extra grafische kaarten in de komputer een erg dure en vooral volumineuze aangelegenheid.

Als mogelijke oplossing voor dit kommunikatieprobleem kwam eigenlijk alleen hardware als redelijk uit de bus: een minimaal en goed leesbaar display dat vanuit een op elke komputer beschikbare poort aan te sturen is. Omwille van de eenvoud, kozen we hiervoor de printerpoort. In live-musiceersituaties wordt deze poort immers nooit gebruikt.

Het konkrete praktische probleem waarvoor we deze schakeling ontwierpen stelde zich in 'A Book of Moves', waar de lichttechnieker voor elke muzikale sektie van het stuk een andere belichting dient in te stellen, terwijl er meestal niet voldoende repetietijd beschikbaar is om deze technieker de verschillende sekties te leren herkennen. Via een goed leesbaar display slaagden we erin de verschillende belichtingen via een numerieke kode op het goede moment op het display te brengen. Omdat technici vaak verstrooid blijken te zijn, voorzagen we het ontwerp van een soort 'oranje' knipperlicht, dat wordt ingeschakeld enkele sekonden voor er een nummerverandering op het display (en dus een andere belichting) zichtbaar zal worden.

Wie de details van de volledige implementatie wil analyzeren, verwijs ik naar de volledige kode-listing voor 'A Book of Moves' elders in deze syllabus.

Hardware:

Het schema werd getekend via het programma Orcad (Draft) en bestaat in vogelvlucht uit volgende stappen:

- de data worden aangeboden aan een latch (74HCT573) waarin ze worden opgeslagen wanneer de strobe puls (bit 0 van het bazisadres + 2) naar 0 gaat. De Latch verwacht een positieve puls, en dus werd een NPN (BC107) transistor hier als inverter gebruikt.

- aan de uitgang van de latch, wordt het data-byte gesplitst in twee nibbles: MSB en LSB die elk naar een BCD-to-7-segment decoder (74LS247) met open kollektor-uitgang worden gestuurd.

- Deze dekoderuitgangen zijn logisch omgekeerd, omdat deze chip eigenlijk werd ontworpen voor gebruik in kombinatie met common-anode displays. Wij wilden common-cathode displays gebruiken (alleen maar omdat we dit type in stock hadden...) en dus moesten alle uitgangen geinverteerd worden. Hiervoor gebruikten we in totaal 14 PNP transistoren (BC177).

- De overige transistoren werden gebruikt voor het aansturen van de decimale punten op de displays en van één knipperende LED op de print (bruikbaar als waarschuwingssignaal).

- Omwille van de leesbaarheid op grote afstand (koncertzalen) gebruikten we heel grote 7-segment displays. Deze hebben echter niet genoeg aan een voedingsspanning van 5V. Elk segment is intern opgebouwd uit 4 rode LED's. Over een brandende LED staat een spanningsval van ongeveer 2.2Volt terwijl de segmentstroom 10mA dient te bedragen. De minimaal nodige spanning is dus 8.8Volt + 1.2V spanningsval over de PNP-transistoren, of, 10Volt.

Merk op dat dit niet geldt voor de decimale punten en de knipperled, die immers uit slechts 1 enkele LED zijn opgebouwd. Deze elementen worden dan ook gevoed uit de 5Volt spanning die via een regulator (78L05) uit de voedingsspanning wordt gewonnen.

Opgemerkt moet worden dat dit ontwerp heel wat eenvoudiger zou zijn geweest, wanneer we gebruik hadden gemaakt van common anode displays: alle PNP-inverters zouden we hebben kunnen laten vallen. Probeer zelf maar eens het ontwerp aan te passen voor gebruik met dit type display.

Een afbeelding van onze realisatie daarvan -dit keer op een vertikaal georienteerde eurokaart print- zie je hier:

Bom99 display

Schema:

[to be inserted: Orcad file]

Printontwerp (koperzijde):


Software:

De wijze van aansturing van dit display in Basic wordt duidelijk uit volgende procedure kode:

COMMON SHARED Lptadr%
DECLARE SUB Display (b%,dot1%,dot2%,dot3%)
De variabele Lptadr% bevat het bazisadres van de printerpoort van de te gebruiken PC. (Meestal is dit &H378, het juiste adres staat in de manuals van de PC, of, wordt tijdens de boot-procedure op het scherm getoond.) De display-kaart wordt aangesloten op de printeruitgang van de komputer.
SUB Display (b%, dot1%, dot2%, dot3%) STATIC
in de variabele b% staat het te tonen cijfer. de variabelen dot1% en dot2% doen de decimale punten oplichten.dot3% is bit3 van lptadr%+2 en kan worden gebruikt om de knipperled op de print in te schakelen.
cijfer% = byt% MOD 256: ' beveiliging tegen getallen groter dan 8 bits
' willen we 'rare' tekens vermijden op het MSB display, dan moeten we begrenzen alsvolgt:
cijfer% = byte% MOD 100
c = &HA
] = &HB (omgekeerde kleine c)
u = &HC
_C= &HD (onherkenbaar teken)
t = &HE
blank = &HF
rechterpunt% = (dot1% MOD 2) * 2: ' binair
linkerpunt% = dot2% MOD 2: ' binair
knipperpunt% = (dot3% MOD 2) * 8: ' binair
' bit2 is geinverteerd op de printerkaart, dus:
IF dot2% = 0 THEN linkerpunt% = 4 ELSE linkerpunt% = 0
lownibble% = cijfer% MOD 10
highnibble% = cijfer% \ 10
strobehigh% = 88 + knipperpunt% + linkerpunt% + rechterpunt%
strobelow% = strobehigh% + 1
IF highnibble% = 0 THEN highnibble% = 15
IF highnibble% = 15 AND lownibble% = 0 THEN lownibble% = 15
OUT Lptadr%, (highnibble% * 16) + lownibble%
OUT Lptadr% + 2, strobelow%
' op 80486- 50Mhz of snellere machines kan de zo opgewekte Strobe-puls te kort zijn! Volgens de data-sheet van de 74HCT573 moet de puls voor de latch 500ns lang zijn. De maximale transmissiesnelheid is hierdoor beperkt tot 1MHz. Je kan deze puls verlengen door hier een 'tijdverlies' instruktie op te nemen, ofwel door in de hardware via een RC-netwerkje de puls wat te verlengen.
OUT Lptadr% + 2, strobehigh%
END SUB
 

NIEUW: In de <GMT> software zijn procedures ingebouwd voor de aansturing van allerlei zelfbouw displays. De kode werd daarbij uiteraard aangepast aan de vereisten van een multitasking omgeving.


last updated: 2002-02-24

<Naar inhoudstafel kursus>

Naar homepage dr.Godfried-Willem RAES