This tutorial is part of: Servomotoare
Toate videoclipurile legate de servomotoarele conexe sunt listate aici. Linkuri către alte videoclipuri sunt sub acest articol.
Controlul motorului servo Arduino folosind un potentiometru
În acest tutorial, vom explora cum să controlăm un motor servo folosind un potențiometru cu un Arduino. Scopul este de a crea un circuit simplu în care poziția servo-ului este ajustată în funcție de rotația potențiometrului. La finalul acestui proiect, veți avea un model funcțional care variază lin unghiul servo-ului de la 0 la 180 de grade pe măsură ce rotiți potențiometrul. Aceasta este o modalitate excelentă de a înțelege bazele intrării analogice și controlului servo în Arduino.
Pentru a realiza acest lucru, vom folosi o placă Arduino, un motor servo și un potențiometru. Potențiometrul acționează ca un rezistor variabil, oferind o intrare analogică plăcii Arduino, care va determina apoi poziția motorului servo în consecință. Acest proiect nu este doar distractiv, ci și educativ, deoarece demonstrează concepte cheie în electronică și programare. Pentru o explicație mai detaliată, asigurați-vă că verificați videoclipul (în videoclip la 00:00).
Hardware explicat
În acest proiect, componentele principale sunt placa Arduino, motorul servo și potentiometrul. Arduino este creierul operațiunii, procesând intrările și controlând ieșirile. Motorul servo este ceea ce se va mișca fizic în funcție de comenzile primite de la Arduino. Potentiometrul poate fi de 1k ohm până la 1M ohm, permițând utilizatorilor să ofere o intrare variabilă care se traduce în mișcarea servo.
Motorul servo funcționează prin primirea unui semnal PWM (Modulație în Lățime de Puls) care indică poziția dorită. Potentiometrul, atunci când este rotit, își schimbă rezistența, care este citită de Arduino ca o tensiune analogică. Motorul servo funcționează cu 5V. Nu funcționează cu 3.3V. Această tensiune este apoi mapată la intervalul de mișcare al motorului servo, permițând o mișcare lină de la 0 grade la 180 de grade.
Detalii fișă tehnică pentru motorul servo SG90
| Producător | Paralaxă |
|---|---|
| Număr de parte | SG90 |
| Tensiune logică/IO | 5 V |
| Tensiune de alimentare | 4.8-6 V |
| Curent de ieșire (pe canal) | ~500 mA |
| Curent de vârf (pe canal) | 1 A |
| Ghid pentru frecvența PWM | 50 Hz |
| Praguri logici de intrare | 0,5 V (scăzut), 2,5 V (ridicat) |
| Cădere de tensiune / RDS(on)/ saturație | 0,5 V la 500 mA |
| Limite termice | 0°C până la 60°C |
| Pachet | Servo standard de 9g |
| Note / variante | Utilizat frecvent în aplicații RC |
- Asigurați-vă că servomotorul nu depășește valoarea maximă a curentului său.
- Folosiți un radiator dacă servomotorul funcționează continuu la sarcini mari.
- Conectează potentiometrul la un pin analogic pentru citiri precise.
- Fii atent la sincronizarea semnalului PWM pentru controlul servo.
- Verifica intervalul de mișcare al servo-ului pentru a evita obstrucțiile fizice.
Instrucțiuni de cablare


Pentru această configurație, va trebui să conectați componentele astfel:
Conectează pinul din mijloc al potentiometrului (wiper) la pinul analogic al Arduino-ului.A0Celelalte două pini ale potentiometrului ar trebui să fie conectate la5VșiGNDpe Arduino. Pentru motorul servo, conectați firul roșu la5V, firul negru laGND, iar firul galben sau alb la pinul digital9pe Arduino. Această aranjare permite potentiometrului să ofere o intrare analogică către Arduino, care va controla poziția motorului servo pe baza acelei intrări.
Asigurați-vă că verificați toate conexiunile și că servomotorul nu este obstrucționat în intervalul său de mișcare. Dacă folosiți un model Arduino diferit, confirmați că atribuirea pinilor pentru intrarea analogică și ieșirea servomotorului sunt compatibile.
Exemple de cod și ghiduri
Mai jos este un extras din codul care inițializează servomotorul și citește valoarea potentiometrului:
#include
Servo myservo; // create servo object to control a servo
int pos = 0; // variable to store the servo position
void setup() {
myservo.attach(9); // attaches the servo on pin 9 to the servo object
}
În acest cod, includem biblioteca Servo și creăm un obiect servo numitmyservo. Servomotorul este atașat la pin9, care ne permite să-l controlăm folosind acest pin.
void loop() {
int sensorValue = analogRead(A0); // read the potentiometer
pos = map(sensorValue, 0, 1023, 0, 180); // map to servo position
myservo.write(pos); // move servo to position
delay(15); // waits 15ms for the servo to reach the position
}
În funcția loop, citim valoarea potentiometrului de pe pin.A0și îl mapăm de la intervalul său (0-1023) la intervalul servomotorului (0-180 grade).myservo.write(pos)comanda apoi mută servomotorul în poziția dorită pe baza rotației potentiometrului.
Demonstrație / Ce să aștepți
Când rulați acest program, ar trebui să vedeți motorul servo mișcându-se lin de la 0 la 180 de grade pe măsură ce rotiți potentiometrul. Dacă servo-ul nu se mișcă așa cum era de așteptat, verificați cablajul și asigurați-vă că potentiometrul funcționează corect. De asemenea, asigurați-vă că Arduino este alimentat corespunzător și că codul este încărcat fără erori. Puteți aștepta să vedeți servo-ul reflectând poziția potentiometrului în timp real (în video la 02:00).
Marcaje temporal video
- 00:00- Introducere în proiect
- 01:30- Explicație a configurării hardware
- 03:45- Instrucțiuni de cablare
- 05:00- Prezentare cod
- 07:30- Demonstrarea proiectului finalizat
This tutorial is part of: Servomotoare
- Controlling a Servo with Push Buttons Using Arduino
- Control a Servo Motor with a Push Button: Move Servo and Return SPB-1
- Control a Servo Motor with a Push Button: Move Servo in One Direction SPB-2
- Controlling a Servo Motor with a Push Button: Move Servo While Button Is Pressed (SPB-3)
- Controlling a Servo with a Potentiometer Using Arduino
- Controlling a Servo with Potentiometer and LCD1602 using Arduino
- Controlling Servo Motors Using an Infrared Remote with Arduino
- Controlul poziției servo cu gesturi de mână pentru Arduino
- Controlling Two or More Servos with Potentiometers Using an Arduino
- How to Control a 360° Servo with Three Push-Button Switches
- How to Use Continuous 360° Servo with Arduino
- Arduino Code and Video for PCA9685 16-Channel 12-Bit Servo Controller V1
- Build an Arduino Servo Toggle Switch with a Push Button
/**
*Original source: Arduino IDE
* Arduino Project: Controlling the servo position
* This code is used with a video tutorial for Robojax.com
* Published on April 24, 2017, from Ajax, ON, Canada.
* Written/Edited by Ahmad Shamshiri
* Watch the video on YouTube: https://youtu.be/kZ9b31gVemc
* View tutorial page for this code https://robojax.com/RJT8
* Controlling a servo position using a potentiometer (variable resistor)
*/
#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 15ms 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 15ms for the servo to reach the position
}
}
Resurse și referințe
Încă nu sunt resurse.
Fișiere📁
Fișă tehnică (pdf)
-
sg90_serveo_motor_datasheet
sg90_serveo_motor_datasheet.pdf0.13 MB