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.
Hoe om 'n Kontinu 360° Servo met Arduino te gebruik
In hierdie tutorial sal ons leer hoe om 'n deurlopende 360° servo te beheer met 'n Arduino. Anders as standaard servos, kan deurlopende servos onbeperkt in enige rigting draai, wat veelsydige toepassings moontlik maak. Om egter hul posisie te beheer, vereis dit om die opdragte wat aan hulle gestuur word te verstaan en 'n bietjie eksperimenteer om die regte stopwaardes te vind.
Ons sal 'n program ontwikkel wat ons in staat stel om opdragte via die Serial Monitor te stuur om die servo links, regs of te stop. Die kode sal die nodige logika insluit om die ASCII-waardes van die opdragte wat ons invoer, te interpreteer. Vir verduideliking oor die kodering proses, maak seker om die video te kyk (in video om 12:30).
Hardeware verduidelik
Om hierdie projek te implementeer, sal jy 'n deurlopende 360° servo, 'n Arduino-bord en 'n kragbron nodig hê wat voldoende stroom kan verskaf (ten minste 500mA). Die servo ontvang beheersignale van die Arduino, wat pulsbreedtemodulasie (PWM) gebruik om die rigting en spoed van rotasie te bepaal.
Die servo-motor self het drie drade: krag, grond en beheer. Die kragdraad verbind met die kragbron, die gronddraad verbind met beide die kragbron en die Arduino-grond, en die beheerdraad verbind met 'n aangewese pen op die Arduino vir seintransmissie.
Datasheet Besonderhede
| Fabrikant | Generies |
|---|---|
| Onderdeel nommer | Deurlopende 360° Servo |
| Logika/IO spanning | 5 V |
| Voorsienings spanning | 4.8-6 V |
| Uitsetstroom (per kanaal) | 500 mA |
| Piekstroom (per kanaal) | 1 'n maksimum |
| PWM frekwensie riglyne | 50 Hz |
| Invoer logika drempels | Hoog: >2.5 V, Laag: <0.8 V |
| Spanningstoename / RDS(on)/ versadiging | - |
| Termiese perke | - |
| Pakket | Standaard servo behuising |
| Notas / variante | Beskikbaar in verskeie groottes |
- Verseker 'n gemeenskaplike grond tussen die Arduino en die kragbron.
- Gebruik 'n eksterne kragbron vir die servo om oorlaai van die Arduino te vermy.
- Eksperimenteer met stopwaardes om die beste prestasie vir jou servo te vind.
- Monitor die servo-temperatuur tydens werking om oorverhitting te voorkom.
- Gebruik 'n PWM sein om die spoed en rigting van die servo te beheer.
Draadinstruksies
Om jou deurlopende 360° servo aan die Arduino te koppel, begin deur die servo se kragdraad aan 'n eksterne kragbron te verbind wat 5V verskaf. Die gronddraad van die servo moet aan die grond (GND) pen op die Arduino gekoppel word, wat verseker dat die kragbron en Arduino 'n gemeenskaplike grond deel. Die beheerdraad van die servo sal na pen 9 op die Arduino gaan, waar die PWM sein gestuur sal word.
Dubbelcheck dat jou verbindings veilig is, aangesien los verbindings kan lei tot onreëlmatige servo gedrag. As jou servo van 'n tipe is wat direk van die Arduino van krag voorsien kan word, kan jy die kragdraad aan die Arduino se 5V pen koppel, maar verseker dat die totale stroom nie oorskry wat die Arduino kan voorsien nie.
Kode Voorbeelde & Staproete
Die volgende uittreksel demonstreer hoe om die servo op te stel en opdragte van die Serial Monitor te lees:
#include
Servo myservo; // create servo object to control a servo
int incomingByte = 0; // for incoming serial data
void setup() {
Serial.begin(9600);
myservo.attach(9); // attaches the servo on pin 9 to the servo object
}
In hierdie kode-snippet sluit ons die Servo-biblioteek in en skep 'n servo-objek genaamdmyservoOns het ook die seriële kommunikasie op 9600 baud opgestel en die servo aan pen 9 geheg.
Volgende het ons die hooflus waar ons inkomende seriële data lees en die servo beheer op grond van die opdragte:
void loop() {
if (Serial.available() > 0) {
incomingByte = Serial.read();
if (incomingByte == 108) { // 'L' command
myservo.write(0); // rotate clockwise
} else if (incomingByte == 114) { // 'R' command
myservo.write(180); // rotate counterclockwise
} else if (incomingByte == 60) { // stop command
myservo.write(60); // stop servo
}
}
}
Hierdie kode kyk of daar enige data beskikbaar is in die seriële buffer. Afhangende van die ASCII-waarde van die invoer (bv.,108om 'L' met die klok te draai,114vir 'R' om teen die klok in te draai), stuur dit die ooreenstemmende opdrag na die servo.
Vir volledige kode en addisionele besonderhede, verwys asseblief na die volledige program wat hieronder die artikel gelaai is.
Demonstraasie / Wat om te verwag
Wanneer jy die kode op laai en die Serial Monitor oopmaak, kan jy 'L' invoer om die servo links te draai, 'R' om dit regs te draai, of ander waardes om te eksperimenteer met die stop van die servo. Verwacht om verskillende stopwaardes te vind, aangesien die servo se gedrag kan wissel op grond van sy kwaliteit en ontwerp (in die video om 18:45).
Wees versigtig oor hoe die servo op die opdragte reageer; as dit nie stop soos verwag nie, probeer verskillende waardes totdat jy die optimale stopopdrag vind. Dit mag 'n bietjie eksperimenteer vereis, veral om te verhoed dat die servo oorverhit.
Hoofstukke
- Inleiding (0:00)
- Hardeware verduidelik (1:30)
- Draadinstruksies (3:45)
- Kode Deurloop (5:15)
- Demonstraasie (18:00)
Hulpbronne
- Arduino Servo Biblioteek Dokumentasie
- Deurlopende Servo vervaardiger datasheets
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
- Arduino Servo Motor Beheer met 'n Potensiometer
- 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
- Arduino Code and Video for PCA9685 16-Channel 12-Bit Servo Controller V1
- Build an Arduino Servo Toggle Switch with a Push Button
/*
*
* Demonstration of Controlling Continuous Servo (360 servo)
* This code allows you to control a 360-degree servo by a command from the Serial Monitor.
* this 350 servo motor is a just for fun. it can't be used for real application where you need exact positioning. get stepper motor or expensive servo motor.
*
* Modified by Ahmad Shamshiri for Robojax.com
* on Sunday, July 1, 2018, at 11:09 AM in Ajax, Ontario, Canada
* Watch a video instruction of this project: https://youtu.be/b_xvu6wWafA
* Get this code from Robojax.com
*
Original code by BARRAGAN <http://barraganstudio.com>
This example code is in the public domain.
Modified 8 Nov 2013
by Scott Fitzgerald
http://www.arduino.cc/en/Tutorial/Sweep
*/
#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
int incomingByte = 0; // for incoming serial data
void setup() {
Serial.begin(9600);
myservo.attach(9); // attaches the servo on pin 9 to the servo object
}
void loop() {
// send data only when you receive data:
if (Serial.available() > 0) {
// read the incoming byte:
incomingByte = Serial.read();
// say what you got:
Serial.print("received: ");
Serial.print (incomingByte);
if(incomingByte == 108){
Serial.println(" sent 0 Rotating CW ");
myservo.write(0);
}else if(incomingByte == 114){
Serial.println(" sent 180 Rotating CCW ");
myservo.write(180);
}else if(incomingByte == 60){
Serial.println(" sent Stopped ");
myservo.write(60);
}else{
Serial.println(" moving Randomly");
myservo.write(incomingByte);
}
}
}
Hulpbronne en verwysings
Geen hulpbronne nog.
Lêers📁
Geen lêers beskikbaar.