Er is steeds meer vraag naar elektromotoren, waaronder misschien degenen die met gelijkstroom werken, de meest populaire binnen de projecten van makers met Arduino, omdat ze mobiliteit bieden. Onder hen, hoogtepunt stappenmotoren die worden gebruikt voor meerdere toepassingen, met name voor robotica, zoals actuatoren, enz.
Elektrische auto's, kleine autonome robots, industriële toepassingen voor automatisering, apparaten voor repetitieve bewegingen, enz. De reden dat servomotoren en stappenmotoren zo goed zijn voor deze toepassingen, is dat ze dat kunnen voer langzame of snelle bewegingen uit, maar vooral gecontroleerd. Bovendien zijn de aandrijvingen continu voor toepassingen waarbij veel stops en starts met hoge precisie vereist zijn.
Soorten elektromotoren
binnen elektrische motoren de volgende typen kunnen worden gemarkeerd:
- DC- of DC-motor: Gelijkstroommotoren werken met dit soort stroom, zoals de naam doet vermoeden. Ze kunnen variëren van een paar mW aan vermogen tot een paar MW in de krachtigste en grootste, die worden gebruikt voor industriële toepassingen, voertuigen, liften, transportbanden, ventilatoren, enz. De draaisnelheid (RPM) en het toegepaste koppel kunnen worden geregeld volgens de voeding.
- AC- of AC-motor (asynchrone en gewikkelde rotor): ze werken met wisselstroom, met een zeer specifieke rotor die werkt dankzij de fasen die dit type stroom bijdraagt om de rotatie te genereren door middel van magnetische afstoting van de elektromagneet op een vergelijkbare manier als de gelijkstroom. Ze zijn erg goedkoop en gaan tot enkele kW. Ze zijn in rotatiesnelheid regelbaar, maar de regelelementen zijn duurder dan die van DC. Deze worden vaak gebruikt voor huishoudelijke apparaten.
- Stappenmotor- Ook bekend als steppers, lijken ze in veel opzichten op DC, maar met lage spinsnelheden en vermogens. Wat hier opvalt, is de positionering van de as, dat wil zeggen de precisie om ze in een specifieke positie te plaatsen. Hun rotatiehoek en snelheid kunnen veel worden gecontroleerd, daarom werden ze gebruikt in floppy drives, harde schijven (HDD), robots, procesautomatisering, enz.
- Servomotor: het kan worden gezegd dat het een evolutie is van de stappenmotor, die werkt met kleine vermogens en snelheden die in sommige gevallen oplopen tot 7000 RPM. Deze motor heeft een versnellingsbak en een regelcircuit. Ze hebben dezelfde positioneringsprecisie als steppers en zijn zeer stabiel in termen van toegepast koppel, waardoor ze ideaal zijn voor sommige robots en industriële toepassingen.
Stappenmotoren en servomotoren
Je weet al wat deze twee soorten elektronische motoren zijn, maar ik zou er graag iets over willen zeggen meer over steppers. De bocht die ze maken gebeurt niet continu, maar in kleine stapjes, vandaar hun naam. De rotor (deel dat roteert) heeft de vorm van een tandwiel, terwijl de stator (deel dat niet roteert) is opgebouwd uit doorschoten gepolariseerde elektromagneten. Op deze manier, wanneer iemand wordt "geactiveerd", worden die aan de zijkanten niet geactiveerd, wat de rotortand naar zich toe trekt, waardoor de precieze voortgang mogelijk is waarvoor ze worden gekenmerkt.
Afhankelijk van rotortanden, zal het mogelijk zijn om in de beurt meer of minder vooruit te gaan. Als je meer tanden hebt, zijn er meer stappen nodig om een bocht te maken, maar de stappen zijn korter, dus het zal een nauwkeurigere motor zijn. Als je weinig tanden hebt, zullen de stappen meer abrupte sprongen zijn, zonder zoveel precisie. Daarom zijn de stappen die een stappenmotor moet nemen om een bocht te voltooien, afhankelijk van de hoekstappen.
Die stappen hoekig zijn gestandaardiseerd, hoewel u sommige motoren kunt vinden met een niet-standaard spoed. De hoeken zijn gewoonlijk: 1.8º, 5.625º, 7.5º, 11.25º, 18º, 45º en 90º. Om te berekenen hoeveel stappen een stappenmotor nodig heeft om een volledige draai of draai (360 °) te maken, hoeft u alleen maar te verdelen. Als u bijvoorbeeld een stappenmotor van 45º heeft, heeft u 8 stappen (360/45 = 8).
Binnen deze motoren heb je de unipolaire (meest populaire), met 5 of 6 kabels, of de bipolaire, met 4 kabels. Volgens dit zal het een of het ander worden uitgevoerd polarisatiesequenties stroom door zijn spoelen leiden:
- Polarisatie voor bipolaire:
Paso | terminal A | Terminal B | Klem C | Klem D |
---|---|---|---|---|
1 | +V | -V | +V | -V |
2 | +V | -V | -V | +V |
3 | -V | +V | -V | +V |
4 | -V | +V | +V | -V |
- Voor unipolair:
Paso | Spoel A | Spoel B | Spoel C | Spoel D |
---|---|---|---|---|
1 | +V | +V | 0 | 0 |
2 | 0 | +V | +V | 0 |
3 | 0 | 0 | +V | +V |
4 | +V | 0 | 0 | +V |
De werking is in beide gevallen hetzelfde, waarbij de spoelen worden gepolariseerd om de rotor aan te trekken naar de plaats waar u de as wilt plaatsen. Als jij wilt houd het in één positie, je moet de polarisatie behouden voor die positie en voila. En als je wilt dat hij vooruitgaat, polariseer je de volgende magneet en zal hij nog een stap nemen, enzovoort ...
Als u een servomotor, je weet al dat het in feite een stappenmotor is, dus alles werkt ook voor hen. Het enige dat is inclusief die reductietandwielen om veel meer stappen per draai te krijgen en dus een veel hogere precisie te hebben. Je kunt bijvoorbeeld een motor vinden met 8 stappen per omwenteling die als hij een 1:64 versnellingsbak had, omdat het betekent dat elke stap van die acht is onderverdeeld in 64 kleinere stappen, wat een maximum van 512 stappen per omwenteling zou opleveren. Dat wil zeggen, elke stap zou ongeveer 0.7 ° zijn.
Voeg ook toe dat u wat moet gebruiken controlador waarmee je polarisatie, snelheid, etc. kunt regelen met bijvoorbeeld H-Bridge. Sommige modellen zijn de L293, ULN2003, ULQ2003, etc.
Waar te kopen
U koop het op verschillende online sites of in gespecialiseerde elektronicawinkels. Als je een beginner bent, kun je kits gebruiken die alles bevatten wat je nodig hebt en zelfs de plaat Arduino UNO en handleiding om te beginnen met experimenteren en uw projecten te maken. Deze kits bevatten alles wat je nodig hebt, van de motor zelf, de controllers, boards, breadboard, etc.
- Koop Arduino Starter Kit
- Geen producten gevonden.
- Servomotor kopen
- Geen producten gevonden.
Stappenmotor voorbeeld met Arduino
Laat ten slotte een praktisch voorbeeld met Arduino, met behulp van ULN2003-controller en 28BYJ-48 stappenmotor. Het is heel eenvoudig, maar het is voldoende dat u zich vertrouwd maakt met hoe het werkt, zodat u enkele tests kunt gaan doen en kunt zien hoe het zich gedraagt ...
Zoals gezien in het bedradingsschemazijn de motorspoelen A (IN1), B (IN2), C (IN3) en D (IN4) toegewezen aan respectievelijk aansluitingen 8, 9, 10 en 11 van het Arduino-bord. Aan de andere kant moet de driver- of controllerkaart op zijn 5-12V-pinnen (naar GND en 5V van Arduino) worden gevoed met de juiste spanning, zodat deze op zijn beurt de motor voedt die is aangesloten op de witte plastic connector met deze driver of controller.
Oosten 28BYJ-48-motor Het is een unipolaire stappenmotor met vier spoelen. Om u een idee te geven van hoe het werkt, kunt u daarom HIGH (1) of LOW (0) waarden naar de spoelen van het Arduino-bord sturen als volgt voor de stappen:
Paso | Spoel A | Spoel B | Spoel C | Spoel D |
---|---|---|---|---|
1 | HIGH | HIGH | LOW | LOW |
2 | LOW | HIGH | HIGH | LOW |
3 | LOW | LOW | HIGH | HIGH |
4 | HIGH | LOW | LOW | HIGH |
Wat betreft schets of code die nodig is om uw beweging te programmeren, aangezien het de volgende zou zijn met Arduino IDE (pas het aan en experimenteer om te testen hoe de beweging wordt gewijzigd):
// Definir pines conectados a las bobinas del driver #define IN1 8 #define IN2 9 #define IN3 10 #define IN4 11 // Secuencia de pasos a par máximo del motor. Realmente es una matriz que representa la tabla del unipolar que he mostrado antes int paso [4][4] = { {1, 1, 0, 0}, {0, 1, 1, 0}, {0, 0, 1, 1}, {1, 0, 0, 1} }; void setup() { // Todos los pines se configuran como salida, ya que el motor no enviará señal a Arduino pinMode(IN1, OUTPUT); pinMode(IN2, OUTPUT); pinMode(IN3, OUTPUT); pinMode(IN4, OUTPUT); } // Bucle para hacerlo girar void loop() { for (int i = 0; i < 4; i++) { digitalWrite(IN1, paso[i][0]); digitalWrite(IN2, paso[i][1]); digitalWrite(IN3, paso[i][2]); digitalWrite(IN4, paso[i][3]); delay(10); } }