Hoe programmeer je een servomotor met Arduino om complexe projecten te maken? Stap voor stap handleiding
Een servomotor programmeren met Arduino is geen moeilijke taak, als je alle paragrafen in dit artikel aandachtig leest. We zullen je laten zien hoe complexe projecten maken zonder fouten.
U moet weten wat een servomotor is en waar deze hardwarecomponenten voor dienen. . We zullen ook het gebruik van deze apparaten uitleggen en hoe een servomotor te programmeren met Arduino .
Maar dat is niet alles wat je zult zien, je kunt er ook de beste projecten vinden Arduino met een servomotor die je zelf snel en gemakkelijk kunt oefenen. Uitchecken.
Wat is een servomotor en waarvoor dienen deze hardwareontwikkelingscomponenten?
Un servomotor is een speciaal type motor dat wordt gekenmerkt door precieze bewegingen bij een bepaalde paar. De belangrijkste functie is om de positie van de as in een robotactie te behouden.
Het is samengesteld uit een plastic behuizing die een bevat arduino bord , waaraan een . wordt toegevoegd gelijkstroom-type motor, un potentiometer en versnellingssysteem: . Er zijn 2 soorten servomotoren. Er zijn er met beperkte rotatie, die tot 180 ° kunnen draaien, en servomotoren met volledige of continue rotatie. Deze kunnen een volledige 360 ° rotatie hebben.
Toepassingen van een servomotor In welke soorten apparaten kunnen we ze gebruiken?
de gebruik van een servomotor is zeer breed vanwege de belangrijkste functie die het biedt in robotica, namelijk het roteren van een onderdeel om dezelfde as.
Daarom is het gebruikelijk om een servomotor te vinden in:
- Radiografisch bestuurbare auto's in verschillende soorten speelgoed en in kinderrobots.
- radars verwerkt in verschillende objecten.
- In L ' automatisering van productieprocessen . Deze robots zijn vooral betrokken bij assemblageprocessen, autobouw en andere vormen van automatische fabricage op industrieel niveau.
- de servomotoren is ook te vinden in liften .
- In de informatica is het gebruikelijk om een servomotor in de dvd-diskspelers .
Leer stap voor stap hoe u vanaf het begin een servomotor met Arduino programmeert voor uw projecten
Als je een servomotor met Arduino wilt programmeren, moet je de stappen volgen die we je hieronder laten zien:
Sluit alle fysieke componenten aan
De eerste stap om te doen is om monteer alle componenten op het Arduino-bord . Om dit te doen, moet u drie soorten kabels aansluiten op de mockup, de ene zal naar de grond gaan, de andere naar de 5 volt-voeding en de laatste naar de PWM-pin. Als je eenmaal hebt deze schakeling aangesloten, je moet neem de servomotor op en als je wilt kun je weerstanden toevoegen.
Programmeer de motorrotatie:
Wat u nu moet doen is: voer de in Arduino IDE en schrijf de volgende opdrachten zodat de motor onder drie soorten hoeken kan draaien.
De codes zijn:
#inclusief Servo-servomotor; ongeldige instelling () { begin (9600); stropdas (9); } lege lus () {
U moet nu de beweging in de 0º-positie configureren, daarvoor moet u het volgende invoeren:
schrijf (0); vertraging (1000); U zult hetzelfde moeten doen met de 90°-stand en met de 180°-stand: schrijf (90); vertraging (1000); schrijf (180); vertraging (1000); }
Draai de motor stap voor stap
In deze stap moet u: bewegingen opnemen zodat de actuator kan veeg alle graden van 0 tot 180 .
Om dit te doen, moet u het volgende invoeren:
#inclusief Servo-servomotor; ongeldige instelling () {
Vervolgens moet u de seriële monitor starten:
begin (9600);
Vervolgens moet u de servomotor programmeren om vanaf het begin te werken met pin 9:
stropdas (9); schrijf (0); }
Maak lussen
Op dit punt moet u 2 lussen genereren, een negatieve en een in een positieve richting:
lege lus () { voor (int i = 0; i <= 180; i ++) {
Ga dan naar de juiste hoek:
schrijf (ik); vertraging (25); }
“UPDATE ✅ Wil je Arduino gebruiken om een servomotor te programmeren en te gebruiken in je projecten? ⭐ VOER HIER IN ⭐ en leer alles vanaf het begin! ”
U moet hetzelfde doen voor de negatieve richting:
voor (int i = 179; i> 0; i--) { schrijf (ik); vertraging (25); } }
Beste Arduino-projecten met servomotor die u zelf kunt maken
Als je het werken met een servomotor op een Arduino-bord wilt oefenen, moet je aan deze projecten denken:
Prullenbak met bewegingsmelder
Dit project kunt u een prullenbak openen dankzij een bewegingsdetector. Je hebt een Micro Arduino-bord nodig , een generieke ultrasone sensor type HC-SR04, een servomotor en een vuilnisbak.
Voor het programmeren moet u deze codes invoeren:
#inclusief Servo-mijnservo; const int servo_pin = 2; const int trig_pin = 3; const int echo_pin = 4; const int tussen_tijd = 200; int-tijd = 0; lege parameter () { Serieel. begin (9600); mijnservo. hechten (servo_pin, 500, 2400); mijnservo. schrijf (90); pinMode (trig_pin, UITGANG); pinModus (echo_pin, INPUT); vertraging (3000); } lege lus () { drijftijd, afstand; digitalWrite (trig_pin, HOOG); vertragingMicroseconden (1000); digitalWrite (trig_pin, LAAG); duur = pulseIn (echo_pin, HOOG); afstand = (duur / 2) / 29; Serieel. afdrukken (afstand); Serieel. println ("cm"); tijd = tijd + tussentijd; vertraging (tussentijds); als (afstand <10) { voor (int i = 1500; i> = 1100; i- = 25) { schrijven Microseconden (i); println ("2"); vertraging (100); } vertraging (1000); voor (int i = 1100; ik <= 1500; ik + = 25) { mijnservo. schrijven Microseconden (i); Serieel. println ("1"); vertraging (100); } } }
Robotarm
Wat heb je nodig om deze robotarm te bouwen a Arduino UNO-bord , 3 SparkFun Servo, 1 Twee-assige joystickmodule van een PlayStation2-console en een voeding. Je hebt ook nodig kabels, een koellichaam, een keramische condensator en een elektrolytische condensator.
De codes waarmee u moet werken zijn:
#include "AnalogReader.h" #include AnalogReader::AnalogReader(const int pin): m_pin(pin) {} /** Lees de analoge waarde van de ADC-kaart: * / int AnalogReader :: lezen () { retour analoogRead (m_pin); } #include "Knop.h" #include Knop :: Knop (const int pin): m_pin (pin) { } Void :: init () knop { pinModus (m_pin, INPUT);
Om de startstatus in te stellen, moet u schrijven:
m_lastButtonState = lezen (); } // lees de status van de knop. Booleaanse knop :: lezen () { retour digitalRead (m_pin); }
Als de knop niet is ingedrukt, is het zal terugkeren naar LAAG (0), maar indien ingeschakeld, zal het de waarde geven HOOG (1).
Hiervoor moet u invullen:
Booleaanse knop :: onChange () { // lees de status van de knop. "1" wordt ingedrukt, "0" wordt niet ingedrukt. booleaans lezen = lezen (); // Als de schakelaar is gewijzigd, hetzij vanwege het geluid of door op te drukken: if (lees! = m_lastButtonState) { // reset de debounce-timer m_lastDebounceTime = millis(); m_pressFlag = 1; } if ((millis () - m_lastDebounceTime)> m_debounceDelay) { // wat de lezing ook is, het is er al langer // als de debounce-vertraging, neem het dan als de huidige huidige status: // als de status van de knop is veranderd: if (m_pressFlag) {// lees! = m_lastButtonState) { // update de status van de knop m_pressFlag = 0; // sla de lezing op. Volgende keer in de lus, m_lastButtonState = lezen; 1 terug; } } m_lastButtonState = lezen; 0 terug; } Booleaanse knop :: aanDruk op () { // lees de status van de knop. "1" wordt ingedrukt, "0" wordt niet ingedrukt. booleaans lezen = lezen (); // Als de schakelaar is gewijzigd, hetzij vanwege het geluid of door op te drukken: if (lees == HOOG && m_lastButtonState == LAAG) { // reset de debounce-timer m_lastDebounceTime = millis(); m_pressFlag = 1; } if ((millis () - m_lastDebounceTime)> m_debounceDelay) { als (m_pressFlag) {
Daarna zullen we het via de lus moeten doen:
m_pressFlag = 0; m_lastButtonState = lezen; 1 terug; } } m_lastButtonState = lezen; 0 terug; } Booleaanse knop :: onRelease () { // lees de status van de knop. "1" wordt ingedrukt, "0" wordt niet ingedrukt. booleaans lezen = lezen (); // Als de schakelaar is gewijzigd, hetzij vanwege het geluid of door op te drukken: if (lees == LAAG && m_lastButtonState == HOOG) { // reset de debounce-timer m_lastDebounceTime = millis(); m_pressFlag = 1; } if ((millis () - m_lastDebounceTime)> m_debounceDelay) { // wat de lezing ook is, het is er al langer // als de debounce-vertraging, neem het dan als de huidige huidige status: // als de status van de knop is veranderd: if (m_pressFlag) {// read == LAAG && m_lastButtonState == HOOG) { // sla de lezing op. Volgende keer in de lus, m_lastButtonState = lezen; m_pressFlag = 0; 1 terug; } } m_lastButtonState = lezen; 0 terug; } #ifndef _BUTTON_H_ #define_BUTTON_H_ // knop klasse: Klasse knop { Openbaar: Knop (const int-pin); // initialiseer de knopinstantie ongeldige init (); // Lees de status van de knop - zonder debounce booleaans lezen (); // return True op beide knopgebeurtenissen, druk op of laat los booleaans onChange (); // geeft alleen True terug bij Druk op boolean onDruk op (); // return True alleen bij afsluiten booleaans onRelease (); privaat: const int m_pin; bool m_lastButtonState; // toestandsvariabelen lang m_lastDebounceTime = 0; const int m_debounceDelay = 50; boolean m_pressFlag = 0; }; #endif // _BUTTON_H_
Insect
Voor dit project heb je nodig: een 3,3V 8MHz Arduino-bord, een servomotor, een schakelaar, een 1000mAh lithiumbatterij, kabels, draden en lijm. De montage moet worden gedaan met: alle elementen ook zo stevig mogelijk met behulp van draden en lijm.
Dan moet je deze codes in de IDE invoeren:
#inclusief int VOORZIJDE = 4; int TERUG = 5; Servo voorbenen, achterbenen; lege parameter () { pinMode (13, UITGANG); stropdas (VOOR); hechten (RETURN); schrijf (90); schrijf (90); vertraging (5000); } lege lus () { digitalWrite (13, BOVEN); schrijf (70); schrijf (70); digitalWrite (13, LAAG); vertraging (200); schrijf (110); vertraging (200); schrijf (110); }
Als je vragen hebt, laat ze dan achter in de reacties, we nemen zo snel mogelijk contact met je op en het zal ook een grote hulp zijn voor meer communityleden. Bedankt!