Dr.Godfried-Willem RAES
Kursus Experimentele Muziek: Boekdeel 2: live electronics.
Hogeschool Gent - Departement Muziek en Drama
<Naar inhoudstafel kursus>
2110:
Praktische toepassing: Kagel MM51
Een konkrete toepassing voor stappenmotoren in de kontekst van de hedendaagse muziek, vinden we in Mauricio Kagel's stuk MM51, waar een metronoom vanuit een zuiver vertikale beginstand , over een tijd van circa tien minuten geleidelijk aan schuin dient te gaan staan tot het tikken ophoudt. Dit zou theoretisch kunnen gebeuren door een gewone DC motor te gebruiken met een heel zwaar vertragende vertragingskast, maar de tijdsduur zou heel onprecies en vooral onprogrammeerbaar zijn. Omwille van de programmeringsflexibiliteit ligt het hier voor de hand een stappenmotor te gebruiken. In dit toepassingsvoorbeeld gingen we uit van een konkrete stappenmotor (Sanyo Denki) met volgende eigenschappen:
Het bitpatroon dat een dergelijke motor doet ronddraaien met de nominale 360 stappen per omwenteling ziet eruit alsvolt :
stapnr. D3 D2 D1 D0
Het is echter ook mogelijk het aantal stapjes te verdubbelen (men noemt dit 'half-step' bedrijf) door volgende patroon te gebruiken:
stapnr. D3 D2 D1 D0
Deze modus levert een soepeler draaien op, maar gaat wel gepaard met een klein verlies aan koppel.
De draairichting van de motor hangt af van de volgorde waarin we het patroon aflopen. Erg belangrijk is dat de motor geen enkel ander patroon aangeboden mag krijgen dan dat patroon dat ofwel volgt op het vorige ofwel dat eraan voorafging. Zoniet ontstaat er een 'gat' waarin de motor eventjes geen koppel kan ontwikkelingen en dus zijn belasting niet in de hand kan houden. Sommige patronen kunnen zelfs tot oververhitting en uiteindelijk vernieling van de motor leiden : zouden we bvb. het patroon 1 1 1 1 uitsturen, dan zouden de krachten van alle spoelen in de motor elkaar opheffen, waarbij de motor dus geen koppel ontwikkeld, terwijl alle fazen de maximale belastingsstroom zouden trekken. In bovenstaand voorbeeld dus 4 x 1.4 Ampere= 5.2 A. Als gevolg hiervan zal dan ook ofwel de voeding, ofwel de motor zelf, gehuld in rook, naar de eeuwige hemel der elektronische komponenten verhuizen.
Gezien de stevige stroomnood van de hier te benutten motor, lijkt het aangewezen een beroep te doen op de chip met het type L298, die immers een stroom kan leveren van 2 Ampere per motorfaze.
Deze chip biedt ons overigens ook nog de wel erg nuttige mogelijkheid om via twee bits de motorwikkelingen al of niet te bekrachtigen (de 'enable' ingangen). Hierdoor kunnen we op eenvoudige wijze via software de motor in een vrijloop toestand brengen waarin hij helemaal geen stroom opneemt.
Hoewel het mogelijk zou zijn deze chip rechtstreeks op een komputeruitgangspoort aan te sluiten, is dit hier geen goede oplossing, precies vanwege het gevaar dat de motor wel eens het gevaarlijk 1111 patroon zou kunnen krijgen , nml. bij het inschakelen, of wanneer we de motor plus interface zouden inschakelen zonder dat de komputer alles eerst naar 0 kan schakelen. Daarom voorzien we in het te realiseren praktische ontwerp voor het interface, een tussengeheugen (een zogenaamde 'Latch'), waarin het laatst ontvangen byte telkens kan worden opgeslagen en vastgehouden.
De bij een parallel-aansluiting steeds aanwezige 'strobe' lijn kan nu worden gebruikt om de inhoud van het geheugen te veranderen, en daarmee uiteraard de preciese positie van de stappenmotor.
Het volledige hardware schema ziet er dan uit als volgt:
Eens deze klus geklaard, moeten we natuurlijk nog een stukje software schrijven om de motor op de gewenste manier te doen draaien.
Daartoe bepalen we eerst welke elementen van de beweging we variabel willen hebben :
Ook dienen we te weten wat het adres is van de komputeruitgangspoorten die we willen gebruiken voor onze sturing:
Wanneer we een IBM-achtige PC gebruiken , en daarvan de printerpoort als datapoort willen inzetten dan zijn deze adressen afhankelijk van de konfiguratie een van volgende drie mogelijkheden:
Datapoortadres Strobe poort Bitpositie
De respektievelijke bits vinden we terug op de DB25 printerkonnector op de komputer : pin 1 is het strobe bit , pinnen 2 tot en met 9 zijn de databits. Hiervan zullen we de bits D0-D3 (pinnen 2, 3, 4, 5) gebruiken voor het bitpatroon dat de motor doet bewegen , en de bits D4 en D5 als 'enable' signalen. De bits D6 en D7 blijven ongebruikt.
Nu zijn er hierbij twee verschillende mogelijkheden om zo'n programma op te zetten:
We hebben beide mogelijkheden, ter illustratie, iets verder uitgewerkt:
Kode voorbeeld voor Microsoft Basic:
De algoritmische versie (eveneens voor Microsoft Basic) ziet eruit alsvolgt :
Een kode voorrbeeld voor aansturing van deze stappenmotor binnen de programmeeromgeving geboden door <GMT> onder Windows 98, NT of Windows 2000, waarbij de aansturing van de motor als taak binnen de multitasker wordt gedefinieerd ziet eruit alsvolgt:
CASE 64
CASE > 64
Om deze taak nu ook van instrukties te voorzien, kunnen we bvb. een nieuwe taak opzetten als:
Een heel wat meer geavanceerde toepassing van stappenmotoren vinden we in mijn muziekautomaten behorende tot het grote <Slag-Werk> projekt, <Rotomoton>, waar vijf stappenmotoren de toonhoogte van de rototoms bepalen. Details van dit ontwerp zijn de vinden op de logos website. Ook in de robot <Flex> spelen grote stappenmotoren een belangrijke rol. In onze cornet spelende robot <Korn> gebruikten we stappenmotoren voor de beweging van de cornet in twee assen. Low-level stappenmotoren besturingskode maakt deel uit van de GMT- software bibliotheek en ook voor Basic Stamps (PIC controllers) is source kode op onze site weer te vinden.
In meer recente bouwprojekten maken we vooral gebruik van geintegreerde stappenmotor controllers. Details daarvoor zijn te vinden in de bouwbeschrijvingen van muzikale robots zoals <Chi> en <Bug>.
Terug naar de inhoudstafel: Index Kursus
Naar homepage dr.Godfried-Willem RAES