Inhoudsopgave:
2025 Auteur: John Day | [email protected]. Laatst gewijzigd: 2025-01-13 06:57
In deze Instructable zal ik een 28-BYJ-48 stappenmotor besturen, met een UNL2003 darlington array-bord, soms x113647 genoemd, zonder een microcontroller.
Het heeft start/stop, vooruit/achteruit en snelheidsregeling.
De motor is een unipolaire stappenmotor met 2048 stappen per omwenteling in volledige stapmodus. De datasheet voor de motor is te vinden op
De twee apparaten kunnen samen bij verschillende leveranciers worden gekocht. Ik heb de mijne van kjell.com
Bing het of google het om een leverancier bij jou in de buurt te vinden.
Ik zal eerst enkele stappen en onderdelen doorlopen die nodig zijn om het draaiende te krijgen, en dan enkele stappen en onderdelen toevoegen voor wat meer controle.
U moet worden gewaarschuwd dat de onderdelen die ik gebruik, die zijn die ik toevallig in mijn schatkist heb, en niet noodzakelijk de onderdelen die het meest geschikt zijn voor het doel.
U moet ook worden gewaarschuwd, dat dit mijn eerste Instructable is en dat ik vrij nieuw ben in elektronica.
Voeg opmerkingen toe als je denkt dat ik iets heb gedaan dat ik niet zou moeten doen, of als je suggesties hebt voor verbeteringen of suggesties voor beter passende onderdelen.
Stap 1: Onderdelenlijst
De onderdelen die voor dit project worden gebruikt zijn:
- Breadboard
- Stappenmotor 28byj-48
- Darlington transistorarray ULN2003 bord (x113647)
- 74HC595 schuifregister
- 74HC393 binaire rimpelteller
- DS1809-100 Dallastat digitale potentiometer
- 74HC241 octale buffer
- 3 × tactiele knoppen
- 3 × 10kΩ weerstanden
- 2 × 0,1 µF keramische condensatoren
- 1 × 0,01 µF keramische condensator
- Aansluitdraden
- 5V voeding
Stap 2: De belangrijkste onderdelen
Het 74HC595 schuifregister
De motor wordt bewogen door herhaaldelijk de vier invoerpinnen van het UNL2003-bord deze volgorde te geven:
1100-0110-0011-1001
Dit zal de motor aandrijven in de zogenaamde volledige stapmodus. Het patroon 1100 wordt herhaaldelijk naar rechts verschoven. Dit suggereert een schuifregister. Zoals een schuifregister werkt, verschuiven de bits in het register bij elke klokcyclus één plaats naar rechts, waarbij het meest linkse bit wordt vervangen door de waarde van de invoerpen op dat moment. Daarom moet het worden gevoed met twee klokcycli van 1 en vervolgens twee klokcycli van 0 om het patroon voor het duiken met de motor te genereren.
Om de kloksignalen te genereren, is een oscillator nodig, die een constante reeks pulsen genereert, bij voorkeur een schone blokgolf. Dit vormt de basis van het verschuivende patroon van signalen naar de motor.
Om de "twee cycli van één en vervolgens twee cycli van 0" te genereren, worden flip-flops gebruikt.
Ik heb een 74HC595 schuifregister. Dit is een zeer populaire chip, die wordt beschreven in tal van Instructables en YouTube-video's.
Het gegevensblad is te vinden op
Een mooie Instructable is 74HC595-Shift-Register-Demistified door bweaver6, Het schuifregister 74HC595 werkt zo dat bij elke klokcyclus de gegevens in het 8-bits register naar rechts worden verschoven en de waarde van de invoerpen op de meest linkse positie verschuift. Daarom moet het worden gevoed met twee klokcycli van 1 en vervolgens met twee klokcycli van 0.
De gegevens worden verschoven bij de stijgende flank van de klokpuls. Daarom moet de flip-flop schakelen bij de dalende flank van de klok, zodat de 74HC595 stabiele gegevensinvoer heeft bij de stijgende klokflank.
De 74HC595 in kan als volgt worden bedraad:
Pin 8 (GND) -> GND
Pin 16 (VCC) -> 5V Pin 14 (SER) -> Data in Pin 12 (RCLK) -> Klokingang Pin 11 (SRCLK) -> Klokingang Pin 13 (OE) -> GND Pin 10 (SRCRL) -> 5V pinnen 15 en 1-3 zullen het patroon uitvoeren om de motor aan te drijven.
Het aansluiten van RCLK en SRCLK zorgt ervoor dat het chipdataregister altijd synchroon loopt met het uitgangsregister. Door Pin 13 op massa te zetten, is de inhoud van het uitgangsregister direct zichtbaar voor de uitgangspinnen (Q0 - Q7).
De 555-timer
Voor het genereren van de klokpuls kan de 555 timerchip worden gebruikt. Dit is ook een zeer populaire chip, en wordt zelfs meer beschreven en besproken dan het schuifregister. Wikipedia heeft een mooi artikel op
Het gegevensblad is hier:
Deze chip kan onder meer blokgolfklokpulsen genereren. Externe weerstanden en condensatoren worden gebruikt om de frequentie en duty cycle (on-fractie) te regelen.
Wanneer ingesteld om herhaaldelijk pulsen te genereren, zou de 555-chip zich in de astabiele modus bevinden. Dit wordt gedaan door het te bedraden zoals in de bovenstaande afbeelding. (foto door jjbeard [Public domain], via Wikimedia Commons):
Pin 1 -> GND
Pin 2 -> R1 (10kΩ) -> Pin 7 Pin 2 -> Pin 6 Pin 3 is de uitgang Pin 4 (reset) -> 5V Pin 5 -> 0.01µF -> GND Pin 6 -> 0.1µF -> GND Pin 7 -> R2 (10kΩ) -> 5V Pin 8 -> 5V
De uitgang van pin 3 wordt verbonden met de ingangsklokpinnen (pin 11 en pin 12) van het schuifregister 74HC595.
De frequentie van het uitgangssignaal (en dus de snelheid van de stappenmotor) wordt bepaald door de waarden van de weerstanden R1 en R2 en de waarde van de condensator C.
De cyclustijd T zal ln(2) C (R1 + 2 R2) of ongeveer 0,7 C (R1 + 2 R2) zijn. De frequentie is 1/T.
De duty cycle, de fractie van de cyclustijd dat het signaal hoog is, is (R1 + R2) / (R1 + 2R2). De duty cycle is niet erg belangrijk voor dit project.
Ik gebruik 10kΩ, voor zowel R1 als R2, en C = 0.1µF.
Dit geeft een frequentie van ongeveer 480 Hz en ligt in de buurt van de maximale frequentie die ik heb gevonden dat de stappenmotor aankan zonder af te slaan.
Om het 1100 verschoven, herhaalde patroon van de 74HC595 te genereren, moet pin 14 (SER) twee klokcycli hoog worden gehouden en vervolgens twee klokcycli herhaaldelijk laag. Dat wil zeggen, de pin moet oscilleren met de helft van de frequentie van de klok.
De 74HC393 dubbele binaire rimpelteller
De 74HC393 telt binair, en dat betekent ook dat het kan worden gebruikt om pulsfrequenties te delen door machten van twee, Het gegevensblad is hier:
De 74HC393 is dubbel, hij heeft aan elke kant een 4-bits teller.
Bij de dalende flank van de klokpuls schakelt de eerste uitgangspen aan en uit. Daarom zal uitgangspen één oscilleren met de helft van de frequentie van de ingangsklok. Bij de dalende rand van uitgangspen één schakelt uitgangspen twee in en uit. En zo verder voor alle vier de uitgangspinnen. Telkens wanneer pin n wordt uitgeschakeld, schakelt pin n+1 om.
Pin n+1 verandert half zo vaak als pin n. Dit is binair tellen. De teller kan tot 15 tellen (alle vier bits 1) voordat hij weer op nul begint. Als de laatste uitgangspen van teller 1 als klok is aangesloten op teller 2, telt deze mogelijk tot 255 (8 bits).
Om een puls te creëren met de helft van de frequentie van de ingangsklok, is alleen uitgangspen 1 nodig. Dat wil zeggen, alleen tellen van nul tot één.
Dus als het tellen wordt gedaan door de klokpuls van de 555, zal de pin op de 74HC393-teller die bit 2 vertegenwoordigt, oscilleren met de helft van de frequentie van de klok. Dit kan dus worden aangesloten op de SER-pin van het 74HC595-schuifregister, om dit het gewenste patroon te laten genereren.
De bedrading van de 74HC393 binaire teller moet zijn:
Pin 1 (1CLK) -> 74HC595 Pin 11, 12 en 555 Pin 3
Pin 2 (1CLR) -> GND Pin 4 (1QB) -> 74HC595 Pin 14 Pin 7 (GND) -> GND Pin 14 (VCC) -> 5V Pin 13 (2CLK) -> GND (niet gebruikt) Pin 12 (2CLR) -> 5V (niet gebruikt)
Stap 3: Laat het draaien
We kunnen nu de motor laten draaien, als pinnen 0-3 van de 74HC595 respectievelijk zijn aangesloten op pinnen 1-4 van het ULN2003-bord.
Vervang voorlopig de 0.1µF condensator op pin 6 van de 555 timer door een 10µF. Hierdoor wordt de klokcyclus honderd keer langer en kan men zien wat er aan de hand is.
Hiervoor kunnen de LED's op de ULN2003-kaarten worden gebruikt. Koppel de motor los van de ULN2003-kaart. Sluit pinnen 1 t/m 4 van het bord aan op de uitgang QA-QD (pinnen 7, 9, 10 en 11) van de 74HC595. Sluit de - en + van het ULN2003-bord aan op aarde en 5V. Als de stroom is ingeschakeld, zou u het gewenste patroon op de LED's moeten zien.
Als u wilt zien wat er in de 74HC393 binaire teller gebeurt, sluit u in plaats daarvan aan op pinnen 3-6 van die teller.
Als het patroon goed lijkt, zet u de stroom uit, vervangt u de condensator opnieuw door de 0,1 µF, sluit u de ingangspennen 1 - 4 van het ULN2003-bord aan op de uitgangspennen QA - QD van de 74HC595 en sluit u de motor opnieuw aan.
Als de stroom is ingeschakeld, moet de motor nu draaien.
Stap 4: Snelheidsregeling
De snelheid van de stappenmotor wordt bepaald door de frequentie van de uitgang van de 555 timer. Ook dit wordt bepaald door de waarden van de weerstanden R1 en R2 en de daarop aangesloten condensator C1. Door een 100kΩ potentiometer in serie te schakelen met R2 kan de frequentie tussen de 480Hz en 63Hz liggen. De stappen pr. tweede van de motor, zal de helft van de 555 timerfrequentie zijn.
Ik gebruikte een DS1809-100 digitale potentiometer, die is gemaakt voor gebruik met drukknoppen. Drukknoppen die pin 2 (UC) en pin 7 (DC) verbinden met 5V zorgen ervoor dat de weerstand tussen de RH (Pin 1) of RL (Pin 4) terminals en de wiper Pin 6 (RW) toeneemt/verlaagt. Als u een knop langer dan een seconde ingedrukt houdt, wordt de knop automatisch herhaald.
De datasheet is hier te vinden:
De bedrading is als volgt:
Pin 1 (RH) ongebruikt
Pin 2 (UC) -> tactiele knop 1 Pin 3 (STR) -> GND Pin 4 (RL) -> 555 Pin 2 Pin 5 -> GND Pin 6 (RW) -> 10kΩ -> 555 pin 7 Pin 7 (DC) -> tactiele knop 2 Pin 8 -> 5V
De bedrading voor tactiele knop 1:
Pen 1/2 -> DS1809 Pen 2
Pen 3/4 -> 5V
De bedrading voor tactiele knop 2:
Pen 1/2 -> DS1809 Pen 7
Pen 3/4 -> 5V
Nu kan de snelheid worden geregeld.
Stap 5: Start / Stop
Om de stappenmotor te starten en te stoppen, kan pin 4 (de reset-pin) van de 555-timer worden gebruikt. Als deze laag wordt getrokken, zijn er geen uitgangspulsen van pin 3.
Een tactiele knop wordt gebruikt om te schakelen tussen start en stop. Als u eenmaal op de knop drukt, zou de motor moeten starten, en nogmaals op de knop, zou deze moeten stoppen. Om dit gedrag te krijgen, is een flip-flop nodig. Maar de 74HC393 die er al is, kan ook gebruikt worden. De 74HC393 bestaat uit twee delen en slechts één helft wordt gebruikt als frequentiedeler voor de klokpuls.
Aangezien de binaire teller eigenlijk slechts een reeks in serie geschakelde flip-flops is, kan de eerste flip-flop van het andere deel worden gebruikt. Door een tactiele knop zo aan te sluiten dat pin 13 (2CLK) laag is wanneer de knop wordt ingedrukt en hoog als dat niet het geval is, schakelt pin 12 elk laag in. Door pin 12 aan te sluiten op pin 4 van de 555, wordt de uitvoer gestart en gestopt, en dus de motor.
Tactiele knoppen zijn een beetje lastig, omdat ze mechanisch zijn. Ze kunnen 'stuiteren', dat wil zeggen dat ze bij elke druk meerdere signalen kunnen sturen. Door een condensator van 0,1 µF over de knop aan te sluiten, voorkomt u dit.
Dus een tactiele knop (knop 3 is toegevoegd, en de verbinding met Pin 4 van de 555 is gewijzigd.
De bedrading van de knop:
Pen 1/2 -> 10kΩ -> 5V
Pin 1/2 -> 0.1µF -> Pin Pin 3/4 -> 74HC393 Pin 13 (2CLK)
De volgende wijzigingen zijn aangebracht aan de 555:
Pin 4 (Reset) -> 74HC393 Pin 11 (2QA)
Knop 3 zou nu moeten werken als een start/stop-schakelaar.
Merk op dat een motor die op deze manier stopt, nog steeds stroom verbruikt.
Stap 6: Richtingscontrole
Om de richting van de motor te regelen, is nog een drukknop nodig, en dan nog een flip-flop. Ik zal echter vals spelen door de volgende flip-flop van de 74HC393 te gebruiken, na de aan/uit-flip-flop en de aan/uit-knop.
Wanneer de richtingspin (Pin 2QA) laag gaat, wordt de volgende pin (Pin 2QB) omgeschakeld. Vandaar dat herhaaldelijk op de drukknop drukken resulteert in UIT - AAN VOORUIT - UIT - AAN ACHTERUIT - UIT - AAN VOORUIT enz.
Om de motor achteruit te laten lopen, moet het patroon dat naar de ULN2003 wordt gevoerd, worden omgekeerd. Dat kan met een bidirectioneel schuifregister, maar die heb ik niet. De 74HC595 is niet bidirectioneel.
Ik ontdekte echter dat ik mijn 74HC241 octale buffer kon gebruiken. Deze buffer heeft twee 4 bits delen, met aparte OE (output enable) pinnen. De eerste OE-pin bestuurt de vier eerste uitgangspinnen en de tweede de laatste vier uitgangspinnen. Wanneer de OE op de uitgangspinnen staat, hebben ze dezelfde waarde als de corresponderende ingangspinnen, en wanneer deze uit staat, bevinden de uitgangspinnen zich in een hoge impedantiestatus, alsof ze niet zijn aangesloten. Verder is een van de OE-pinnen actief laag en de andere is actief hoog, dus wanneer ze met elkaar worden verbonden, is slechts de helft van de buffer op dat moment actief.
Dus voor dezelfde invoer kan de ene helft van de buffer de motor naar voren en de andere helft naar achteren drijven. Welke helft actief is, hangt af van de waarde van de OE-pinnen.
Het gegevensblad voor de 74HC241 is te vinden op
De bedrading zou als volgt kunnen zijn:
Pin 1 (1OE) -> 74HC293 Pin 10 (2QB)
Pin 2 (1A1) -> 74HC595 Pin 15 Pin 3 (1Y4) -> ULN2003 Pin 1 Pin 4 (1A2) -> 74HC595 Pin 1 Pin 5 (1Y3) -> ULN2003 Pin 2 Pin 6 (1A3) -> 74HC595 Pin 2 Pin 7 (1Y2) -> ULN2003 Pin 3 Pin 8 (1A4) -> 74HC595 Pin 3 Pin 9 (1Y1) -> ULN2003 Pin 4 Pin 10 (GND) -> Massa Pin 11 (2A1) -> Pin 2 (1A1) Pin 12 (1Y4) -> Pin 9 (2Y1) Pin 13 (2A2) -> Pin 4 (1A2) Pin 14 (1Y3) -> Pin 7 (2Y2) Pin 15 (2A3) -> Pin 6 (1A3) Pin 16 (1Y2) -> Pin 5 (2Y3) Pin 17 (2A3) -> Pin 8 (1A4) Pin 18 (1Y2) -> Pin 3 (2Y4) Pin 19 (2OE) -> Pin 1 (1OE) Pin 20 (VCC) -> 5V
Nu moet de bedrading worden voltooid door gewoon op te starten met 5V. Zorg ervoor dat de voeding voldoende stroom kan leveren om zowel de motor als de circuits aan te drijven.
Stap 7: Conclusies
De stappenmotor kan worden bestuurd zonder microcontroller.
De IC's die hier werden gebruikt, waren enkele die ik eerder had. De meeste zijn hiervoor niet optimaal en er kunnen verschillende alternatieven worden gebruikt.
- Om de pulsen te genereren, is de 555-timerchip een goede keuze, maar er zijn verschillende alternatieven, bijvoorbeeld degene die wordt beschreven in deze Instructable.
- Voor de snelheidsregeling kan elke potentiometer worden gebruikt, niet alleen een digitale. Als je een potentiometer van 10kΩ hebt in plaats van een 100kΩ, kunnen de weerstanden van 10kΩ worden vervangen door 1KΩ en de condensator van 0,1 µF door een condensator van 1µF (verdeel alle weerstanden en vermenigvuldig de condensator met hetzelfde nummer om de timing te behouden).
- Met behulp van een bidirectioneel schuifregister, b.v. de 74HC194 zou de richtingscontrole gemakkelijker maken.
- Voor knopbediening zou de 74HC393 kunnen worden vervangen door een flip-flop, b.v. 74HC73. De 555 kan ook worden bedraad om als schakelaar te fungeren.