[HowTo] Stappenmotoren![]() Laatst bijgewerkt op donderdag 23 oktober 2003 Inhoudsopgave
Waarom deze HowTo? De laatste tijd ben ik, met een niet al te grote electronica kennis, bezig geweest met het aansluiten van een stappenmotor op de parallelle poort. Ik merkte dat er genoeg informatie over te vinden was maar dat deze informatie vaak niet op 1 plek stond, niet in het nederlands was of alleen op oude besturingssystemen werkt. Aangezien er waarschijnlijk wel meer mensen zijn met hetzelfde probleem heb ik geprobeerd de benodigde informatie samen te vatten in een artikel. Voor mijn project heb ik een stappenmotor uit een oude printer gehaald. De totale kosten voor het aansluiten kwamen zo op 1 euro 50 Wat is een stappenmotor? De kracht van een stappenmotor zit hem in het feit dat hij zeer nauwkeurig gepositioneerd kan worden. Veel stappenmotoren kunnen tot op de graden nauwkeurig gedraaid worden. Hierdoor zijn ze bijvoorbeeld uitermate geschikt voor gebruik in robots. Disclaimer Zoals hierboven al vermeld: ik ben zelf ook geen groot kenner van stappenmotoren. Ik probeer alleen de informatie die ik opgezocht heb duidelijk bij elkaar te zetten. Hierdoor is het mogelijk dat bepaalde informatie niet geheel correct is. Kom je fouten tegen of heb je aanvulling? Post ze dan in dit topic, ze zijn meer dan welkom. Het aansluiten van je parallelle poort is niet geheel zonder risico's. Als je er teveel spanning op zet of kortsluiting maakt kun je je parallelle poort opblazen. Ben je dus niet zeker van wat je doet kun je het beter uitproberen op een oude computer. Vanzelfsprekend ben ik niet aansprakelijk voor schade aan je moederbord, voeding of stappenmotor. Wat voor stappenmotor heb ik?
![]() ![]() Je hebt vier aansluitingen van je parallelle poort nodig om 1 motor aan te sluiten. Het is het makkelijkste om aan de kant van je computer (male) de behuizing van de printerkabel te halen, je kunt dan namelijk zien welke pin welke kleur heeft. Aan de andere kant kun je de hele connector eraf halen/knippen. Ik gebruik voor mijn stappenmotor pin 6 t/m 9.
Hoe sluit ik alles aan? Eerst moet je de pinnen kiezen die je wilt gaan gebruiken, in mijn geval dus 6 t/m 9. Daarna kijk je welke kleur draad er aan de pinnen zit die je wilt gebruiken. Deze vier draden moeten nu vastgemaakt worden aan je ULN2003. Hiervoor gebruik ik het volgende schema: ![]() Aan de tegenovergestelde kant van de ULN maak je de (meestal) gekleurde draad van een spoel vast. Het enige wat je nu nog moet doen is de stroomvoorziening regelen. De 5v (of 12v, afhankelijk van je motor) moet bij de ULN verbonden worden met pin 9. Ook moet het verbonden worden met de voedingsdra(a)d(en) van je stappenmotor, meestal zijn dit de zwarte draden. Pin 8 van de ULN moet dubbel geaard worden, namelijk aan de voeding die je gebruikt én aan de aardedraad van je parallelle poort. Laatstgenoemde is meestal makkelijk te herkennen omdat er geen omhulling omheen zit. Alles zou nu moeten werken! Ja maar, hoe stuur ik dat dan aan? Vroeger, met Windows 95 en Windows 98 was het nog vrij eenvoudig om de parallelle poort direct aan te sturen, maar met de op Windows 2000 gebaseerde besturingssystemen is dit niet meer mogelijk. Windows kent namelijk bepaalde rechten toe aan programma’s, en gewone programma’s hebben niet het recht om de parallelle poort te benaderen. Door middel van een dll is de poort echter wel vanuit elke programmeertaal te benaderen. Bij mij werkte inpout32.dll het beste, die hier te downloaden is. In deze zipfile zitten ook al wat code voorbeelden. Vanzelfsprekend moet de dll in de windows/system map geplaatst worden. Ik zal een voorbeeld geven hoe de parallelle poort aangestuurd kan worden vanuit Visual Basic: Maak een module aan en zet daar het volgende in: Visual Basic .NET:
De acht datapoorten van de parallelle poort zijn aan te sturen dmv van 8 bits. Stel bijvoorbeeld dat we datapoort 3 (dat is eigenlijk de 4e datapoort en pin 5) aan willen zetten, we moeten dan het volgende uitsturen: 0000 1000. We mogen echter niet de binaire waarde uitsturen, maar deze moet omgezet worden naar een decimale waarde. Enkele voorbeelden: Visual Basic .NET:
Deze binaire waarde moet dus omgezet worden in een decimale. Informatie over binair tellen is te vinden in How Bits and Bytes Work. Voor het omzetten kun je ook deze functie gebruiken: Visual Basic .NET:
Als je de stappenmotor rond wilt laten draaien moet je weten in welke volgorde je spanning op de spoelen moet zetten. Om achter deze volgorde te komen kun je het beste steeds even een andere pin aanzetten en kijken naar welke kant je stappenmotor een stap maakt. Als je achter deze volgorde bent kun je een programma schrijven die de stappenmotor laat draaien. Maak in het formulier een timer aan (tmrStep), zet de interval op 50 en ‘Enabled’ op False. Maak ook drie knoppen aan (cmdTurnL, cmdTurnR, cmdStop). De code: Visual Basic .NET:
Bij “Eerste stap”, “Tweede stap” enz moet dus de decimale waarde van de pin ingevuld worden. Ook moet hier rekening gehouden worden met de volgorde die je zelf hebtmoeten uitzoeken. Bij mij is de volgorde dus 32, 64, 16, 8. Voor de andere programmeertalen kun je veel via google vinden. Nog enkele linkjes:
Op deze manier kun je drie stappenmotoren aansturen, 2 op de datapoorten en 1 op de statuspoorten. Indien je er meer aan wilt sluiten kun je er een andere IC tussen zetten, zoals de SAA1027. Je hoeft dan alleen nog maar step en richting te sturen waardoor je er veel meer aan kunt sluiten. Deze ic's kosten echter wel veel meer dan de ULN2003. Zoals hierboven al vermeld kun je ook de 5804 gebruiken. Dit is de pinout van dit IC: ![]() Zie ook: Parallelle poort FAQ: Hoe kom ik aan meer in en uitgangen?. Waar vind ik meer informatie?
|
[ Voor 255% gewijzigd door Anoniem: 44568 op 02-12-2004 18:13 . Reden: forumisdown + tweakers debugged ]