Luka Code

Lisolo 18/31: Kosalela Servo Motor na Arduino Kit ya SunFounder

Lisolo 18/31: Kosalela Servo Motor na Arduino Kit ya SunFounder

Ba moteur ya servo ezali mosaleli monene na misala mingi ya robotique mpe ya contrôle à distance, epesaka contrôle ya angle ya précision mpo na biloko nyonso kobanda na ba mécanismes ya direction kino na ba bras ya robotique. Boyokani oyo, oyo ezwami na Lesson 18 ya cours ya SunFounder Arduino Kit, ekotambwisa yo na ba fondements ya kosalela moteur ya servo na Arduino. Okoyekola ndenge ya kokangisa matériel mpe kokamba esika ya moteur na ba méthodes mibale ya kokesene: mouvement ya balabala mpe esika oyo ezwami na bouton. Boyebi oyo ozwi awa ezali na utilité mingi mpe ekoki kosalelama na misala mingi, na ndenge oyo:

  • Kotonga loboko ya robotique oyo ekoki kosimba mpe komema biloko na précision.
  • Kosala motuka to bwato oyo ezwami na contrôle à distance mpe na servo mpo na direction.
  • Kokola tracker ya soleil oyo elandaka mwese mpo na kokitisa koleka ya énergie.
  • Kotonga support ya caméra oyo ekoki kopivota mpe kotengama mpo na surveillance to photographie.
  • Kosalisa automatiquement ba surfaces ya contrôle ya modèle ya avion, lokola rudder to ailerons.

Bokengi ya Matériel

Liboso ya kokota na code, esengeli kososola moteur ya servo moko moko. Lokola emonisami na vidéo, moteur ya servo epivolaka te na libela lokola moteur ya DC ya standard. Na esika yango, epivolaka na esika ya angle ya spécifique, mingi mpe kati na 0 mpe 180 degrés. Oyo esalaka ete ezala malamu mpo na misala oyo esengaka mouvement ya précision. Vidéo emonisaka ba ndakisa mingi, kobanda na direction ya RC car kino na contrôle ya ba joints ya complexe ya loboko ya robotique (na vidéo na 00:06).

Ba servo eyebanaka na ba tailles ndenge na ndenge, mpe taille ya physique mpe torque oyo ezali na yango ekesenisaka prix mpe application na yango. Micro servo moke ezali malamu mpo na ba modèles ya kilo moke, kasi servo monene mpe ya puissance mingi esengeli mpo na misala ya kilo koleka lokola direction ya "moteur ya makasi to ya monene" (na vidéo na 01:59).

Bakisa ya ba servo ya hobby mingi bazali na ba fils misato oyo ezali na connecteur ya standard. Vidéo elimbisaka choix ya mayele: fil ya kati ezalaka ntango nyonso fil ya puissance (VCC), mingi mpe 5V. Oyo ezali caractéristique ya sécurité oyo ebatelaka appareil na polarité ya mabe soki connecteur ekangami na ndenge ya mabe (na vidéo na 03:27). Ba fils misusu mibale ezali mpo na terre (GND) mpe signal ya contrôle.

Bokengi ya Bokangami

Servo-wiring_bb
Servo-pot_wiring

Kokangisa servo na Arduino na yo ezali pete. Vidéo epesaka ndakisa ya pole ya ba connexions (na vidéo na 04:48). Ba pins misato na connecteur ya servo ekangami na Arduino na ndenge oyo:

  • Fil ya Signal (mbala mingi orange to jaune): Kanga yango na pin ya PWM ya digitale na Arduino. Ndakisa esalelaka pin 9.
  • Fil ya Puissance (mbala mingi motane): Kanga yango na pin ya 5V na Arduino.
  • Fil ya Terre (mbala mingi marron to noir): Kanga yango na moko ya ba pins ya GND na Arduino.

Na vidéo, moto oyo azali kolakisa asalelaka ba fils ya DuPont ya mobali na mobali mpo na kokangisa connecteur ya mwasi na servo na ba pin headers ya Arduino (na vidéo na 05:23).

Programme 1: Kokamba Moteur ya Servo (Sweep)

Programme ya liboso oyo ezali ndakisa ya "sweep" ya classique. Ebongisami mpo na kolakisa mobimba ya mouvement ya servo na komema yango na libanda mpe na sima kati na 0 mpe 180 degrés. Oyo ezali ndenge ya malamu mpo na komeka soki bokangami na yo ezali malamu mpe mpo na komona servo na yo ezali kosala. Vidéo emonisaka kotia code oyo mpe kotala servo ezali kosala sweep na libanda mpe na sima (na vidéo na 09:21).

Mpo na kokamba servo, code ebandi na kosangisa bibliothèque ya Servo.h oyo ezwami na kati, oyo ekitisaka mpasi ya kosala ba signaux ya contrôle oyo esengeli. Na sima, osala objet ya servo mpe opesa yango kombo, lokola myservo. Na fonction setup(), okangisa objet oyo na pin ya spécifique na kosalela myservo.attach(9), mpe olobaka na Arduino ete fil ya signal ya servo ekangami na pin 9.

Makambo ya minene esalemaka na fonction loop(), oyo esalelaka ba boucles mibale ya for mpo na komema servo. Boucle ya liboso ebakisaka variable ya esika pos kobanda na 0 kino na 180, mpe ememaka servo na degré moko na moko. Boucle ya mibale esalaka kati na yango, mpe ekitisaka pos kobanda na 180 kino na 0. Eloko ya ntina mingi ezali delay(15) na suka ya boucle nyonso. Pemi oyo epesaka servo ntina ya koleka mpo na komema nzoto na yango na esika ya sika liboso ya commande oyo elandi. Soki pemi oyo ezali te, servo ekokaki te kolanda mpe ekokaki kotelema to koningana (na vidéo na 12:31).

Ndakisa oyo ezali malamu mpo na koyekola, kasi na application ya solo, okolinga solo kotia servo na angle ya spécifique. Lokola emonisami na vidéo, okoki kobongola code na kotika ba boucles ya for mpe kosalela commande moko lokola myservo.write(90) mpo na komema servo na 90 degrés mpe kosimba yango wana (na vidéo na 10:09).

Programme 2: Kokamba Moteur ya Servo (Knob)

Programme ya mibale oyo ememaka contrôle ya servo na etape mosusu na kotia potentiomètre (bouton) mpo na kopesa contrôle ya réel temps mpe ya maboko na esika ya servo. Oyo ezali ndenge ya kitoko mpo na kososola ndenge oyo entrée ya analogique ekoki kobongwana na mouvement ya physique ya précision.

Litele oyo etongoli na oyo ya liboso na kobakisa potentiomètre. Potentiomètre ezali résistance oyo ebongwanaka oyo ezali kosala lokola diviseur ya tension analogique. Ntango okotika moko ya yango, ebongolaka tension na esika oyo ebimisaka yango. Arduino atangaka tension oyo na kati na convertisseur analogique na numérique (ADC) oyo ezali na kati na ba pins na yango ya analogique, mpe abongolaka yango na valeur kati na 0 mpe 1023.

Mokonzi ya litomba ya programɛ oyo ezali fonction map(). Fonction oyo ekokisaka motángo moko longwa na eteni moko tii na mosusu. Na likambo oyo, esalelamaka mpo na kobongola valeur ya potentiomètre (0 tii 1023) na valeur oyo ekoki mpo na servo (0 tii 180 degré). Code yango etangaka valeur ya potentiomètre na analogRead(potpin), abongolaka yango na map(val, 0, 1023, 0, 180), mpe sima atindaka valeur oyo ebongolami na servo na myservo.write(val). Oyo esalelaka boyokani ya semba epai wapi kokotola moko ya yango na katikati na yango ekotia servo na degré 90, mpe bongo na bongo.

Mokano oyo ya kotambwisa ezali ya pole mpe ezali moboko mpo na ba interfaces ebele kati na moto mpe masini, longwa na ba télécommandes ya pete tii na ba contrôleurs ya robotique ya makasi.

Démonstration ya Projet na Bomoi

Vidéo oyo epesaka démonstration ya bomoi ya ba programmes mibale oyo na misala. Mpo na programme ya sweep, okoki komona loboko ya servo etambolaka na pete longwa na 0 tii na 180 degré mpe ezongaka lisusu. Moteyi alakisaka mpe ndenge nini kobongola monene ya pas na boucle for (na ndakisa, longwa na degré 1 tii na degré 20) mpe ntango ya retard ebongolaka ezaleli ya servo, mpe esalaka ete mobembo ezala mbangu mingi kasi ezala pete te (na vidéo na 11:19).

Mpo na programme ya moko ya kotikala, démonstration elakisaka ndenge nini kokotola potentiomètre etambwisaka esika ya servo na ntango ya solo. Réaction oyo ya komona ezali malamu mingi mpo na kososola boyokani kati na entrée analogique mpe sortie ya nzoto.

Bibuku

  • [00:00] Bokotisi na ba Moteurs ya Servo
  • [01:07] Ba Aplikasyo ya ba Moteurs ya Servo
  • [02:57] Anatomie ya Moteur ya Servo
  • [04:48] Kokangisa Servo na Arduino
  • [06:06] Kotala Code ya Ndakisa ya Sweep
  • [09:21] Kolakisa Programme ya Sweep
  • [10:04] Kotia Angle ya Servo ya Eteyelo
  • [11:19] Kobongola Mbangu mpe Monene ya Pas ya Sweep
  • [13:15] Ndakisa ya Moteur Mosusu ya Servo

Images

SG90_servo_motor-1
SG90_servo_motor-1
SG90 servo
SG90 servo
Servo-pot_wiring
Servo-pot_wiring
Servo-wiring_bb
Servo-wiring_bb
914-Lesson 18/31: Controlling servo motor (sweep)
Langue: C++
/*
Lesson 18/31: Controlling servo motor (sweep)
Get this code and watch video Download and resource page https://robojax.com/RJT601
YouTube video https://www.youtube.com/watch?v=KAt1WUWpHLQ
 
  
 * This code is "AS IS" without warranty or liability. Free to be used as long as you keep this note intact.* 
 * This code has been download from Robojax.com
    This program is free software: you can redistribute it and/or modify
    it under the terms of the GNU General Public License as published by
    the Free Software Foundation, either version 3 of the License, or
    (at your option) any later version.

    This program is distributed in the hope that it will be useful,
    but WITHOUT ANY WARRANTY; without even the implied warranty of
    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
    GNU General Public License for more details.

    You should have received a copy of the GNU General Public License
    along with this program.  If not, see <https://www.gnu.org/licenses/>.
 */

#include <Servo.h>

Servo myservo;  // create Servo object to control a servo
// twelve Servo objects can be created on most boards

int pos = 0;    // variable to store the servo position

void setup() {
  myservo.attach(9);  // attaches the servo on pin 9 to the Servo object
}

void loop() {
  for (pos = 0; pos <= 180; pos += 1) { // goes from 0 degrees to 180 degrees
    // in steps of 1 degree
    myservo.write(pos);              // tell servo to go to position in variable 'pos'
    delay(15);                       // waits 15 ms for the servo to reach the position
  }
  for (pos = 180; pos >= 0; pos -= 1) { // goes from 180 degrees to 0 degrees
    myservo.write(pos);              // tell servo to go to position in variable 'pos'
    delay(15);                       // waits 15 ms for the servo to reach the position
  }
}
915-Lesson 18/31: Controlling servo motor (knob)
Langue: C++
/*
Lesson 18/31: Controlling servo motor (knob)
Get this code and watch video Download and resource page https://robojax.com/RJT601
YouTube video https://www.youtube.com/watch?v=KAt1WUWpHLQ
 
  
 * This code is "AS IS" without warranty or liability. Free to be used as long as you keep this note intact.* 
 * This code has been download from Robojax.com
    This program is free software: you can redistribute it and/or modify
    it under the terms of the GNU General Public License as published by
    the Free Software Foundation, either version 3 of the License, or
    (at your option) any later version.

    This program is distributed in the hope that it will be useful,
    but WITHOUT ANY WARRANTY; without even the implied warranty of
    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
    GNU General Public License for more details.

    You should have received a copy of the GNU General Public License
    along with this program.  If not, see <https://www.gnu.org/licenses/>.
 */
#include <Servo.h>

Servo myservo;  // create servo object to control a servo

int potpin = 0;  // analog pin used to connect the potentiometer
int val;    // variable to read the value from the analog pin

void setup() {
  myservo.attach(9);  // attaches the servo on pin 9 to the servo object
}

void loop() {
  val = analogRead(potpin);            // reads the value of the potentiometer (value between 0 and 1023)
  val = map(val, 0, 1023, 0, 180);     // scale it to use it with the servo (value between 0 and 180)
  myservo.write(val);                  // sets the servo position according to the scaled value
  delay(15);                           // waits for the servo to get there
}

Mokili na bisika

Fichiers📁

Maktabat ya Arduino (zip)