Materiel

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!

Vergelijkbare items

Laat een reactie achter

Uw e-mailadres wordt niet gepubliceerd. Verplichte velden zijn gemarkeerd met *

Terug naar boven knop