Lis 86: Kokamba esika ya moteur servo na kosalela potentiomètre
Kokanisa makanisi ya kobongola eteni moko ya libanga mpe kotala loboko ya masini ezali kolanda makambo nyonso oyo ozali kosala. Wana nde ezali kitoko ya kosangisa potentiometer na moteur ya servo. Projet oyo, oyo ezali eteni ya cours Arduino Step by Step ya Robojax, ezali kolakisa likanisi ya libula mpe ya ntina mingi na electronique: kobongola entrée analogique na mouvement physique ya sikisiki. Okoyekola ndenge ya kotanga voltage oyo ebongwanaka na potentiometer, kobongola valeur wana na etando ya ba angles, mpe kopesa moteur ya servo mobeko ya kopota na esika yango ya sikisiki. Oyo nde ezali nzela na yo ya kotonga misala ya interactif mpe ya ntina mingi epai contrôle manuel ekutanaka na automatisation.

Ba applications ya likabo oyo ezali mingi mpe ya ntina. Tala kaka ba idée moko ya kopelisa yo:
- Contrôle ya loboko ya robot: Sala potentiometer moko mpo na kopona esika ya loboko na yo moko na moko ya loboko ya robot mpo na misala ya kopona mpe kotia biloko na esika ya sikisiki.
- Système ya camera pan na tilt: Tonga support ya camera oyo ekolandelama na mosika mpo na time-lapses to surveillance, na kopota mpe kotembola na kimia na kobongola moko ya dial.
- Réplika ya gauge analogique: Sala gauge ya tableau ya bord (lokola speedometer to dial ya température) oyo ekotambola kolanda ba données ya capteur, na potentiometer lokola esaleli ya contrôle manuel to ya calibration.
- Ba installations ya art interactif: Sala ba sculptures cinétiques oyo eyanolaka na ba entrées ya bato, epai kobongola dial moko ebongolaka esika ya ba parties oyo ezali kotambola.
- Direction ya véhicule modèle: Contrôle angle ya direction ya modèle ya voiture to bateau na mosika, mpo na kopesa sentiment ya analogique mpe ya sikisiki koleka ba boutons digitaux.
Guide oyo ezwami na vidéo ya mateya Lesson 86: Control position of a servo motor using potentiometer ya Robojax (na vidéo na 00:00). Ezali kotambolisa yo na processus mobimba, longwa na kososola ba connexions kino na kolimbola code oyo ezali kosala ete nyonso esala. Tokende.
Matériel mpe ba Composants
Mpo na kolanda projet oyo, okokende na ba composants oyo:
- Arduino board moko (lokola Uno, Nano)
- Moteur ya servo standard moko (lokola SG90 to MG996R)
- Potentiometer moko (résistance variable, mingi mingi 10kΩ)
- Ba fils ya jumper
- Breadboard moko (optionnel, mpo na ba connexions mpasi te)
Kososola Ba Connexions
Ba connexions ya projet oyo ezali pete. Ntina ezali kopesa ba connexions ya puissance mpe ya signal ya malamu mpo na servo mpe potentiometer. Servo ezali appareil oyo esengaka mingi na puissance, yango wana ezali kozwa puissance na yango moko kaka na pin ya 5V ya Arduino. Potentiometer ezali kosala lokola diviseur ya voltage, mpe tozali kotanga voltage na wiper na yango (pin ya kati) mpo na koyeba esika na yango. (na vidéo na 01:05)
Mokili moko ya mayele oyo projet oyo esalelaka ezali kosala source ya 5V mosusu na pin ya digital mpo na kopesa puissance na potentiometer, mpo ete ba boards mosusu ya Arduino bazali na pin moko kaka ya 5V. Oyo esalemaka na code na kotia pin ya digital (pin 8) na HIGH, oyo ebimisaka 5V. (na vidéo na 00:39)
Tala diagramme ya connexion oyo elobamaki na vidéo:
Tokabola ba connexions:
- Moteur ya Servo:
- Puissance (fil ya motane) → Pin ya 5V ya Arduino
- Mabele (fil ya brun/noir) → Pin ya GND ya Arduino
- Signal (fil ya orange/jaune) → Pin 3 ya Arduino (pin oyo esalelaka PWM)
- Potentiometer:
- Pin ya loboko ya gauche → Pin ya GND ya Arduino
- Pin ya kati (Wiper) → Pin ya analogique A0 ya Arduino
- Pin ya loboko ya droite → Pin 8 ya Arduino (oyo ebengami VCC2 na code)
Lilimboli ya Code
Code ya projet oyo ezali pete mpe ya kitoko. Esalelaka ba fonctions ya Arduino oyo ezali na ntina mingi mpo na kotanga potentiometer mpe kokamba servo. Tokotala ba parties oyo esengeli kobongola mpo na ba projets na yo moko. (na vidéo na 03:00)
Na likolo ya sketch, okokende na kopesa ba pins mpe kosala objet ya servo. Oyo nde ba variables ya liboso oyo okobongola kolanda ba connexions na yo:
#include <Servo.h>
Servo myservo; // sala objet ya servo mpo na kokamba servo
int potpin = A0; // pin ya analogique oyo esalelami mpo na kokangisa potentiometer
int servoPin = 3; // pesa pin ya digital (na PWM) mpo na servo. Okoki kosalela kaka pin 3, 5, 6,9, 10, 11
int VCC2 = 8;// pesa VCC mosusu mpo na potentiometer
int val; // variable mpo na kotanga valeur longwa na pin ya analogique
Tala makambo oyo eteni moko na moko esalaka:
- Servo myservo;: Ligne oyo esalaka objet moko oyo ebengami
myservooyo tokosalela mpo na kokamba moteur ya servo na biso. Okoki kobongola kombo na yango, kasi esengeli kosalela kombo yango moko na code na sima. - int potpin = A0;: Oyo efiniraki pin ya analogique oyo wiper ya potentiometer ekangisami na yango. Soki omemie fil na pin ya analogique mosusu, esengeli kobongola numero oyo.
- int servoPin = 3;: Oyo etie pin ya digital mpo na fil ya signal ya servo. Ezali na ntina mingi kosalela pin oyo esalelaka PWM (mingi mingi ba oyo bazali na symbole '~' na board). Commentaire elobi ba pins oyo ezali malamu mpo na ba Arduino mingi.
- int VCC2 = 8;: Oyo nde pin oyo tozali kosalela lokola source ya 5V ya mibale mpo na potentiometer. Soki board na yo ezali na ba pins ya 5V ebele, okoki kokangisa yango moko mpe kolongola eteni oyo ya code.
Na setup() fonction, code yangengi eza servo mpe ezali ko initier pin ya nguya ya liboso. Fonction myservo.attach(servoPin) ezali na tina mingi mpo ezali koyebisa Arduino nini pin esangani na nsinga ya signal ya servo.
void setup() {
Serial.begin(9600); // setup serial
myservo.attach(servoPin); // attaches the servo on pin 3 to the servo object
pinMode(VCC2, OUTPUT);// set pin 8 as output
digitalWrite(VCC2, HIGH);// set pin 8 HIGH so it acts as 5V pin
}
Logique ya kati ezali na fonction loop(). Ezali kotanga valeur ya potentiomètre, ezali kokomisa yango na angle, mpe ezali kopesa servo ordre ya kotambola. Bifonction mibale ya ntina mingi awa ezali analogRead() mpe map(). (na vidéo na 04:27)
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
Serial.print(val);
Serial.println();
delay(50); // waits for the servo to get there
}
Tala ndenge ezali kosala:
- analogRead(potpin): Fonction oyo ezali kotanga voltage oyo ewuti na wiper ya potentiomètre mpe ezali kozongisa valeur entre 0 (0V) mpe 1023 (5V).
- map(val, 0, 1023, 0, 180): Oyo nde ezali motuya ya projet mobimba. Ezali kozwa valeur ya liboso oyo ewuti na potentiomètre (0 kino 1023) mpe ezali kokomisa yango na angle ya servo (0 kino 180 degré). Na ndakisa, soki potentiomètre etangi 511 (pene na katikati), fonction
map()ekokende na 90, mpe ekotinda servo na esika ya katikati. - myservo.write(val): Fonction oyo ezali kozwa angle oyo esili kokomisama (oyo ezwami na
val) mpe ezali koyebisa servo ete ezongola na esika wana. - delay(50): Oyo ezali kobakisa mwa bopemi moke na suka ya boucle nyonso. Ezali kokamba mbala ya kobongola. Soki delay ezali monene (lokola 200ms), servo ekotambola na biteni, kasi soki ezali moke (lokola 50ms), mouvement ekosalema na pete mingi. Okoki kobongola yango mpo na kobalola mbangu ya réponse. (na vidéo na 07:26)
Bomekeli ya Projet na Bomoi
Na vidéo, okoki komona projet ezali kosala. Ntango okoki kobalola bouton ya potentiomètre, loboko ya moteur ya servo ezali kolanda esika na yango na ndenge ya kokokana. Serial monitor ezali kokoma angle ya sika, mpo na kondima ete mapping ezali kosala malamu. Ntango potentiomètre ezali na esika na yango ya nsé, servo ezali na 0 degré. Ntango okobalola bouton kino na suka, servo ekobaluka na pete kino na 180 degré. (na vidéo na 06:33)
Boucle ya réponse oyo ya tango ya sika ezali kolakisa ndenge capteur ya analogique esangani malamu na acteur ya digitale, mpe ezali kosala système ya contrôle oyo ezali koyanola malamu mpe ya komprenɛrɛ.
Biteni
- [00:00] Introduction mpe Botali ya Projet
- [01:05] Schéma mpe Plan ya Bokatisi ya Nsinga
- [02:07] Bomekeli ya Bokatisi ya Nsinga na Bomoi
- [03:00] Bopesi ndimbola ya Code
- [06:33] Bomekeli mpe Bomeki na Bomoi
- [07:26] Kobongola Mbangu ya Réponse ya Servo
/*
* Lesson 88: Controlling Servo motor a with Potentiometer
* 📚⬇️ Download and resource page https://robojax.com/RJT763
watch full video tutroial: https://www.youtube.com/watch?v=ntRW77mNFFk
Controlling a servo position using a potentiometer (variable resistor)
by Michal Rinott <http://people.interaction-ivrea.it/m.rinott>
modified on 8 Nov 2013
by Scott Fitzgerald
http://www.arduino.cc/en/Tutorial/Knob
Update by Ahmad Shamshiri on Jan 01, 2019 in Ajax, Ontario, Canada
*/
#include <Servo.h>
Servo myservo; // create servo object to control a servo
int potpin = A0; // analog pin used to connect the potentiometer
int servoPin = 3; // define a digital pin (with PWM) for servo. Can use only pin 3, 5, 6,9, 10, 11
int VCC2 = 8;// define extra VCC for potentiometer
int val; // variable to read the value from the analog pin
void setup() {
//
Serial.begin(9600); // setup serial
myservo.attach(servoPin); // attaches the servo on pin 3 to the servo object
pinMode(VCC2, OUTPUT);// set pin 8 as output
digitalWrite(VCC2, HIGH);// set pin 8 HIGH so it acts as 5V pin
}
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
Serial.print(val);
Serial.println();
delay(50); // waits for the servo to get there
}
Nko o na nki.
-
Amazon
-
Amazon
-
eBay
-
AliExpressPurchase SG90 servo motor 180 or 360 from AliExpresss.click.aliexpress.com
Mokili na bisika
Fichiers📁
Mabala a mangwe
-
SG90 Seroo motor datasheet
robojax-servo-SG90_datasheet.pdf0.12 MB