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.


 1. HARDWARE AANPAK

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