Hierdie tutorialie is deel van: Servomotors
Alle video's wat verband hou met servomotors, word hier gelys. Skakels na ander video's is onder hierdie artikel.
Arduino Servo Motor Beheer met 'n Potensiometer
In hierdie tutorial gaan ons ondersoek hoe om 'n servo-motor te beheer met 'n potensiometer met 'n Arduino. Die doel is om 'n eenvoudige stroombaan te skep waar die posisie van die servo aangepas word op grond van die rotasie van die potensiometer. Teen die einde van hierdie projek sal jy 'n werkende model hê wat die servo-hoek glad van 0 tot 180 grade verander soos jy die potensiometer draai. Dit is 'n uitstekende manier om die basiese beginsels van analoog insette en servo-beheer in Arduino te verstaan.
Om dit te bereik, sal ons 'n Arduino-bord, 'n servo-motor en 'n potensio-meter gebruik. Die potensio-meter funksioneer as 'n veranderlike weerstand, wat 'n analoog inset aan die Arduino bied, wat dan die posisie van die servo-motor ooreenkomstig sal bepaal. Hierdie projek is nie net pret nie, maar ook opvoedkundig, aangesien dit sleutelkonsepte in elektronika en programmering demonstreer. Vir 'n meer diepgaande verduideliking, maak seker om die video te kyk (in video by 00:00).
Hardeware verduidelik
In hierdie projek is die hoofkomponente die Arduino-bord, die servo-motor en die potensiometer. Die Arduino is die brein van die operasie, wat insette verwerk en uitsette beheer. Die servo-motor is wat fisies sal beweeg op grond van die opdragte wat dit van die Arduino ontvang. Die potensiometer kan 1k ohm tot 1M ohm wees en stel gebruikers in staat om 'n veranderlike inset te verskaf wat in servo-beweging vertaal.
Die servo-motor werk deur 'n PWM (Pulse Width Modulation) sein te ontvang wat die verlangde posisie aandui. Die potensiometer, wanneer dit gedraai word, verander sy weerstand, wat deur die Arduino as 'n analoog spanning gelees word. Servo-motor werk met 5V. Dit werk nie met 3.3V nie. Hierdie spanning word dan in die bewegingsbereik van die servo-motor gekarteer, wat gladde beweging van 0 grade tot 180 grade moontlik maak.
Datasheet besonderhede vir SG90 servo motor
| Fabrikant | Parallax |
|---|---|
| Onderdeel nommer | SG90 |
| Logika/IO spanning | 5 V |
| Voorsienings spanning | 4.8-6 V |
| Uitsetstroom (per kanaal) | ~500 mA |
| Piekstroom (per kanaal) | 1 A |
| PWM frekwensie riglyne | 50 Hz |
| Invoerlingsdrempels | 0.5 V (laag), 2.5 V (hoog) |
| Spanningstoename / RDS(on)/ versadiging | 0.5 V by 500 mA |
| Termiese perke | 0°C tot 60°C |
| Pakket | Standaard 9g Servo |
| Notas / variante | Gemeenlik gebruik in RC-toepassings |
- Verseker dat die servo nie sy maksimum stroomgrens oorskry nie.
- Gebruik 'n hitte-afvoer as die servo voortdurend by hoë laste werk.
- Koppel die potensiometer aan 'n analoogpen vir akkurate lesings.
- Wees versigtig vir die PWM sein tydsberekening vir die servo beheer.
- Kontroleer die servo se bewegingsbereik om fisiese hindernisse te vermy.
Bedrading Instruksies


Vir hierdie opstelling sal jy die komponente soos volg moet aansluit:
Koppel die middelpen (wiper) van die potensiometer aan die Arduino se analoge pen.A0Die ander twee penne van die potensio-meter moet gekoppel word aan5VenGNDop die Arduino. Vir die servo-motor, koppel die rooi draad aan5V, die swart draad naGND, en die geel of wit draad na digitale pen9op die Arduino. Hierdie rangskikking laat die potensiometer toe om 'n analoog inset aan die Arduino te verskaf, wat die servo-motor se posisie op grond van daardie inset sal beheer.
Maak seker dat jy al die verbindings verifieer en verseker dat die servo nie in sy bewegingsbereik verstop is nie. As jy 'n ander Arduino-model gebruik, bevestig dat die pen toewysings vir die analoog inset en servo-uitset versoenbaar is.
Kode Voorbeelde & Stapsgewijze Uitleg
Hieronder is 'n uittreksel van die kode wat die servo initaliseer en die potensio-meterwaarde lees:
#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
}
In hierdie kode sluit ons die Servo-biblioteek in en skep 'n servo-objek genaamdmyservoDie servo is aan die pen geheg.9, wat ons toelaat om dit te beheer met hierdie pen.
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
}
In die lusfunksie lees ons die potensiaalmeterwaarde van penA0en kaart dit van sy reeks (0-1023) na die servo se reeks (0-180 grade). Diemyservo.write(pos)die opdrag beweeg dan die servo na die gewenste posisie gebaseer op die potensiometer se rotasie.
Demonstraie / Wat om te verwag
Wanneer jy hierdie program uitvoer, behoort jy die servo-motor glad van 0 tot 180 grade te sien beweeg soos jy die potensiometer draai. As die servo nie soos verwag beweeg nie, kyk na die bedrading en verseker dat die potensiometer korrek funksioneer. Boonop, verseker dat die Arduino behoorlik van krag voorsien word en dat die kode sonder foute opgelaai is. Jy kan verwag om die servo in werklike tyd die potensiometer se posisie te sien reflekteer (in video om 02:00).
Video Tydstempels
- 00:00- Inleiding tot die projek
- 01:30- Toerusting opstelling verduideliking
- 03:45- Bedrading instruksies
- 05:00- Kode deurloop
- 07:30- Demonstrasie van die voltooide projek
Hierdie handleiding is deel van: Servomotors
- 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
- Beheer van Servo Posisie met Handgebare vir Arduino
- Controlling Two or More Servos with Potentiometers Using an Arduino
- How to Control a 360° Servo with Three Push-Button Switches
- Hoe om 'n Kontinu 360° Servo met Arduino te gebruik
- 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
}
}
Hulpbronne en verwysings
Geen hulpbronne nog.
Lêers📁
Datasheet (pdf)
-
sg90_serveo_motor_datasheet
sg90_serveo_motor_datasheet.pdf0.13 MB