Inhoudsopgave:
Video: Hoekige positionele besturing van 28BYJ-48 stappenmotor met Arduino en analoge joystick - Ajarnpa
2024 Auteur: John Day | [email protected]. Laatst gewijzigd: 2024-01-30 11:16
Dit is een besturingsschema voor de 28BYJ-48 stappenmotor die ik heb ontwikkeld om te gebruiken als onderdeel van mijn afstudeerproject. Ik heb dit nog niet eerder gezien, dus ik dacht dat ik zou uploaden wat ik ontdekte. Hopelijk helpt dit iemand anders!
Met de code kan een stappenmotor in feite de hoekpositie van een analoge joystick "kopiëren", dat wil zeggen dat als u de joystick naar voren duwt, de motor naar het "noorden" wijst. duw de joystick naar het westen, de motor draait om in dezelfde richting te wijzen.
Voor mijn implementatie vereiste ik dat als de joystick wordt losgelaten, d.w.z. geen hoekpositie heeft, de motor terugkeert naar de "thuis" -richting. De thuisrichting is naar het oosten gericht en de motor (of in ieder geval welke aanwijzer / apparaat je ook aan de uitgaande as hebt bevestigd!) Moet ook in deze richting wijzen wanneer hij wordt ingeschakeld.
Benodigdheden
Arduino Uno of vergelijkbaar
breadboard & selectie van jumperdraden (man naar man, man naar vrouw)
5V voeding
Analoge joystickmodule (idealiter met een kortstondige drukknopfunctie, dit maakt het gemakkelijker om de "thuis" -positie te laten rusten
28BYJ-48 stappenmotor en ULN2003 stappenmotor
Pen, papier en blu-tac (of een ander aanwijsapparaat om aan de motor te bevestigen!)
Stap 1: Stap 1: Instellen
Sluit de stappenmotor aan op de stappenmotor en sluit de pinnen als volgt aan:
IN1 - Arduino-pin 8
IN2 - Arduino-pen 9
IN3 - Arduino-pin 10
IN4 - Arduino-pin 11
Sluit uw 5v-voeding aan op de voedingsrails op uw breadboard en sluit de ULN2003 5v-ingangen aan op de voedingsrails. verbind de grondrail met de grond op je Arduino.
voor de joystick, sluit als volgt aan:
Schakel pin - Arduino pin 2
X-as - Arduino A0 (analoog in 0)
Y-as - Arduino A1
+5V - Arduino 5V-uitgang
GND - Arduino GND
Verbind tenslotte de aarde van je breadboard met de andere Arduino GND-pin
Stap 2: Stap 2: De code uitleggen
Ik heb de volledige Arduino-code bijgevoegd die u kunt downloaden en gebruiken. Maar zal mijn best doen om de relevante delen hier uit te leggen.
De theorie achter deze code is dat de ruimte die door de joystick wordt ingenomen, wordt opgesplitst in een grafiek, met 0, 0 in het midden. de joystick-ingangen rusten echter op (ongeveer) 512 in het midden, dus om dit te verhelpen worden twee functies gebruikt om de waarde die wordt afgelezen van de X- en Y-as op nul te zetten. afhankelijk van de voeding die u gebruikt, moet u mogelijk de waarden in de functies ZeroX en ZeroY wijzigen, zodat uw joystick een betrouwbare waarde van 0 geeft tijdens het rusten.
Wanneer de X-, Y-waarden worden gelezen, worden ze eerst geconverteerd naar radialen met behulp van de functie atan2() in de math.h-bibliotheek. Het uitleggen van deze functie valt buiten het bestek van deze instructable, maar ga het alsjeblieft opzoeken - het is een vrij eenvoudige truc van geometrie!
Ten slotte, om het leven van degenen onder ons die vroeger in graden werkten in plaats van in rads het leven gemakkelijker te maken, wordt de rad-waarde berekend door atan2() omgezet in graden.
Bovenaan de lus bevindt zich een klein stukje code waarmee u op de tijdelijke knop op de joystick kunt klikken om de "thuis"-locatie te verplaatsen. Dit was ongelooflijk handig tijdens het testen van de code, maar ik heb het erin gelaten omdat ik kan zien hoe het in sommige gevallen nuttig kan zijn.
Nu op naar het grootste deel van de code! we beginnen met het lezen van de joystick X, Y-coördinaten twee keer gescheiden door een vertraging van 10 ms en controleren dan of ze hetzelfde zijn - ik ontdekte dat de joystick af en toe sporadische metingen uitvoerde, en deze kleine vertraging was genoeg om de motor te stoppen met draaien op basis van deze. Het is ook een vertraging die zo kort is dat het niet lijkt te interfereren met opzettelijke invoer.
De rest van de code is vrij duidelijk en ik heb mijn best gedaan om het te documenteren; Een reeks IF-instructies vergelijkt de huidige joystickhoek met de motorhoek en verplaatst de motor naar die hoek. De 28BYJ-48 heeft 5.689 stappen per graad, dus daarom vermenigvuldigen we de benodigde beweging met dit schijnbaar oneven getal!
Het enige deel van de code dat de meeste uitleg vereist, is wat ik de "omhullende zaak" heb genoemd. In het zelfs dat de joystick & motor op b.v. +175 °, en de joystick bewoog vervolgens naar -175° (een beweging van slechts 10 ° op de joystick, van net noordwest naar net zuidwest), de motor zou 350° IN DE VERKEERDE RICHTING bewegen! om hiervoor rekening te houden is het speciale geval geschreven.
De omhullende zaak begint door te controleren of de motor en joystick tegengestelde tekens hebben, d.w.z. de motor is positief en de joystick negatief, of omgekeerd. Het controleert ook of de som van de absolute (d.w.z. positieve waarden) van de joystick en motor hoger zijn dan 180°.
Als beide beweringen waar zijn, controleert de functie of de motor met de klok mee moet bewegen (de motorwaarde is negatief) of tegen de klok in (als de motorwaarde positief is).
De absolute waarden van de motorhoek en joystickhoek worden opgeteld en afgetrokken van 360° om de te verplaatsen afstand te bepalen. Ten slotte wordt de motorhoek (die nu de joystickhoek weerspiegelt) als zodanig bijgewerkt.
Stap 3: KLAAR
U hoeft dus alleen nog maar de code naar uw Arduino te uploaden en deze uit te voeren! Zie de video hierboven voor een goed idee van hoe het project functioneert. Dit zou handig zijn voor camera-gimbals, robotarmen en vele andere toepassingen!
Als je de code gebruikt, laat het me dan weten. Als je ziet waar de code kan worden verbeterd, hoor ik graag je feedback.
Aanbevolen:
Bedien uw computer met een stappenmotor! 9 stappen (met afbeeldingen) Antwoorden op al uw "Hoe?"
Bedien je computer met een stappenmotor!: In een van mijn vorige Instructables heb ik je laten zien hoe je een stappenmotor kunt gebruiken als een roterende encoder. Laten we in deze Instructable leren hoe we het kunnen gebruiken om onze computer te besturen. Dus zonder verder oponthoud, laten we aan de slag gaan
Stappenmotor met D Flip Flops en 555 Timer; het eerste deel van het circuit de 555 Timer: 3 stappen
Stappenmotor met D-flip-flops en 555-timer; het eerste deel van het circuit de 555-timer: de stappenmotor is een gelijkstroommotor die in discrete stappen beweegt. Het wordt vaak gebruikt in printers en zelfs robotica. Ik zal dit circuit in stappen uitleggen. Het eerste deel van het circuit is een 555 tijdopnemer. Het is de eerste afbeelding (zie hierboven) met een 555-chip met
Een stappenmotor en driver selecteren voor een Arduino geautomatiseerd schaduwschermproject: 12 stappen (met afbeeldingen)
Een stappenmotor en stuurprogramma selecteren voor een Arduino geautomatiseerd schaduwschermproject: in deze Instructable zal ik de stappen doorlopen die ik heb genomen om een stappenmotor en stuurprogramma te selecteren voor een prototype van een geautomatiseerd schaduwschermproject. De schaduwschermen zijn de populaire en goedkope Coolaroo-handgezwenkte modellen, en ik wilde t
Nummers afspelen met stappenmotor !! 11 stappen (met afbeeldingen) Antwoorden op al uw "Hoe?"
Speel nummers af met behulp van stappenmotor!!: Dit project gaat over het ontwerpen van een eenvoudige dynamische interface, die het mogelijk maakt om op twee verschillende manieren met een stappenmotor te communiceren. De eerste interface regelt de richting en snelheid van de stappenmotor door het gebruik van een eenvoudige GUI, die h
Erfgoed - Keramiek in de context van digitale en analoge technieken 2015: 3 stappen (met afbeeldingen)
Erfgoed - Keramiek in de context van digitale en analoge technieken 2015: Tot nu toe was keramiek een ambacht dat weinig digitale invloed had. Om deze reden was het spannend om dit vaartuig te koppelen aan een nieuwe technologie. Het uitgangspunt was een oude vorm en een CNC Styrocutter.DESIGNBOOM