Dr.Godfried-Willem RAES
Kursus Experimentele Muziek: Boekdeel 2: Live electronics for composers and musicians
Hogeschool Gent: Departement Muziek en Drama
<Naar inhoudstafel> | <Naar frekwentiemeting> | <Naar tijdsmeting/pulsgeneratie> |
2042
DELERS
Toepassingen :
Definities:
Modulo-n deler:
dit is een toestel dat een gegeven ingangsfrekwentie, of een gegeven binair getal, door een instelbare of anderszins variabele 'modulus' n deelt. N kan daarbij eender welke waarde aannemen.
Top-oktaafsynthesizer:
is een elektronische schakeling waarmee uitgaand van een vaste ingangsfrekwentie , op grond van vaste deelfaktoren uit de reeks :
2^(0/12) 2^(1/12) 2^(2/12) ... 2^(12/12)
een voor (inmiddels welhaast antieke) elektronische orgels bruikbare gelijkzwevende stemming voor alle kromatische tonen binnen een oktaaf kan worden opgewekt. Naast een dergelijke schakeling ( een chip uiteraard) zijn dan verder alleen eenvoudige 2-delers nodig om een kompleet elektronisch orgel te bouwen met een volledig klavier. Een intussen wellicht historische chip ontwikkeld door Signetics luisterde naar de naam 50240.
Elektronische orgelregisters:
dit zijn op delers en mixers gebaseerde schakelingen waarmee aan een toon een reeks andere gerelateerde tonen kunnen worden toegevoegd , naar analogie met de registers 2-voet 4- voet etc. op pijporgels.
Oktaafdelers:
dit zijn de eenvoudigste delerschakelingen. Een muzikaal oktaaf komt immers precies overeen met de frekwentiedeling door twee.
Harmonizers:
dit zijn behoorlijk gesofistikeerde toestellen waarmee bij een gegeven muzikaal ingangssignaal, een harmonisch spektrum of een gehele op de traditionele harmonieleer gesteunde akkoordopbouw automatisch kan worden toegevoegd. Hierin worden dan zowel delers als vermenigvuldigers toegepast. Omdat deze laatste een heel stuk moeilijker zijn te bouwen, komt er hierbij vaak nogal wat digitale elektronika tot en met microprocessoren (vooral DSP dan) kijken.
- delers voor clockoscillatoren :
dit zijn delers die een meestal van een kristal afkomstige frekwentie delen door vaste deelfaktoren in funktie van een of andere praktische toepassing. Veel voorkomende toepassingen zijn o.m.: uurwerken, seriele verbindingen tussen komputers, midi-clock generatoren, tuners, komputers ... Zowat alle digitale schakelingen omvatten minstens een dergelijke clockoscillator met bijhorende delerschakeling.
Voorbeeld : diverse diskrete deelschakelingen - modulo-N-deler
Nodige inputsignalen : pulsen
Output : pulsen om de N-pulsen van het ingangssignaal.
Wanneer het ingangssignaal periodiek is, en de variabele N behoort tot een reeks gehele getallen, dan krijgen we aan de uitgang van de schakeling een omgekeerde boventoonreeks te horen.(Subharmonischen reeks). Hoewel het perfekt mogelijk is een komputer te gebruiken als volkomen vrij programmeerbare frekwentiedeler, is het veel efficienter een dergelijke taak aan specifieke hardware toe te vertrouwen. Immers komputers zijn nogal 'monofone' instrumenten, en hen gebruiken als simpele delers zou veel van hun rekenvermogen verkwisten.
We geven hierna enkele uiterst eenvoudig zelf op te bouwen schakelingen waarmee de meest diverse deel-faktoren kunnen worden gerealiseerd.
Het eenvoudigst te implementeren zijn delers door een getal dat een macht is van 2:
Maar door slim uitgangen en ingangen van deze goedkope TTL chips te kombineren, kunnen ook allerlei andere deelfaktoren worden bekomen:
Merk hierbij wel op dat deze deelschakelingen de duty cycle van het ingangssignaal niet behouden na deling!
Een deler voor :5 en, bij uitbreiding, door :25 kan worden opgebouwd door gebruik te maken van een enkele 74390 chip alsvolgt:
Deze schakeling heeft bovendien een 1:1 duty cycle.
Een algemeen bruikbare schakeling voor willekeurige deelfaktor kan met de Exar chip 2240 - die echter heel wat duurder is dan vorige TTL exemplaren, worden opgebouwd:
Bovenstaande schakeling kan, mits toevoeging van een RC kring en een opampbuffer/integrator op de uitgang, zelfs tot goedkope digitaal analoog konvertor worden uitgebreid.
Een voorbeeld van een modulo N deler/ M vermenigvuldiger (waarbij N en M gehele getallen moeten zijn) vinden we terug in de Exar application notes (Nr. AN-07) voor de XR2240 counter- chip, op p.54-55 van het Timer Data Book.
2. MIKROKONTROLLER AANPAK
Ook wanneer we een mikroprocessor willen inschakelen voor het berekenen en genereren van een welbepaalde frekwentie (iets wat sedert het begin van de 21e eeuw gebruikelijk lijkt te zijn geworden) zullen we op een of andere manier steeds van delers moeten gebruiik maken. De programmeerbaarheid van dergelijke delers maakt de klus eenvoudig, maar je moet wel heel goed weten hoe het voor de mikriprocessor die je wil inzetten in zijn werk gaat. Eerst en vooral is de (teoretische) bovengrens van de frekwentie beperkt door de klaokfrekwentie van de processor. Een processor die geklokt wordt met een 10MHz kristal kan zeker nooit pulsen opwekken met de grotere precizie of een kleinere tijdsduur dan 0.1microsekonden. De klokfrekwentie bepaald ook de maximale resolutie van de deler en dus van de ermee opgewekte frekwenties. Erg vaak is de mikroprocessor opgebouwd met een prescaler waarmee de klokfrekwentie 'grof' kan gedeeld worden: bvb. :1, :4, :16, :64 gevolgd door een 16 bits deler. Omdat we vaak mikroprocessoren hebben ingezet bij de bouw en het ontwerp van zowel elektronische als elektroakoestische instrumenten, zijn we vaak gekonfronteerd met het probleem om bvb. voor de noten de gelijkzwevende stemming, de delingfaktoren zo te bepalen dat de gewenste toonhoogtes zo nauwkeurig mogelijk konden bereikt worden. Merk op dat het geheel onmogelijk is dit met een matematische precisie te doen, gewoon omdat de twaalfde-machts-wortel uit twee verhoudingen die we nodig hebben niet door machten van 2 en integer delingen kunnen worden bereikt.
Een voorbeelje van een Basic programma dat de nodige lookup tabellen voor de delers kan berekenen geven we hierna:
' berekening van de deelfaktoren voor de dsPIC's: (bvb dsPIC30F3010-30I/SP)
i = FREEFILE
OPEN "Hurdy_flut.txt" FOR OUTPUT AS #i
klok = 30000000 ' 30MHz
prescaler = 64
div = 32786
PRINT #1, "Klokfrekwentie:"; klok
PRINT #1, "Prescaler :"; prescaler
PRINT #1, "noot freq picfreq prescaler divider error"
FOR noot = 0 TO 127
freq = GrondDo * (2 ^ (noot / 12!))
IF freq > 14.2972 THEN
DO
DECR div
picfreq = (klok / prescaler) / div
LOOP UNTIL picfreq >= freq
' de te kleine waarde was nu :
picfreq0 = (klok/prescaler) / (div +1)
dif1 = freq - picfreq0
dif2 = picfreq - freq
IF dif2 < dif1 THEN
PRINT #i, noot, freq, picfreq, prescaler, div, dif2
ELSE
PRINT #1, noot, freq, picfreq0, prescaler, div, dif1
END IF
IF MIN(dif1,dif2) > 0.05 THEN
prescaler = prescaler /4: div = 32786
END IF
IF prescaler < 1 THEN
EXIT FOR
ELSE
PRINT #i, noot, freq
END IF
NEXT noot
CLOSE #i
De door dit programmatje gegenereerde file is te zien op : http://www.logosfoundation.org/instrum_gwr/hurdy/Hurdy_flut.txt . We gebruikten het zelf bij de bouw van onze automatische draailier (<Hurdy>) voor de elektromagnetische toonopwekking daarvan.
Terug naar inhoudstafel kursus: <Index Kursus>
Naar latches, buffers, geheugens...
Naar homepage dr.Godfried-Willem RAES