Les 89: Gebruik van 'n Deurlopende of 360-servomotor | Arduino Stap-vir-Stap-kursus
In hierdie projek gaan ons 'n beheerstelsel vir 'n 360-grade servo bou deur net drie drukknoppies te gebruik. U sal die servo kan beveel om kloksgewys, antikloksgewys te draai, of op enige oomblik te stop. Hierdie gids sal u deur die bedrading lei, die gebruikerskonfigureerbare dele van die kode verduidelik, en 'n lewendige demonstrasie van die stelsel in werking wys.
Hier is 'n paar praktiese idees vir die gebruik van 'n deurlopende servo in u eie projekte:
- Bou 'n klein tweewiel-robot: Gebruik twee deurlopende servos om die wiele aan te dryf, wat vorentoe, agtertoe en draaibewegings moontlik maak.
- Skep 'n pan-en-tilt kameramontage: Gebruik een deurlopende servo vir stadige, eindelose pan van 'n sekuriteits- of natuurlewe-kamera.
- Outomatiseer 'n vervoerband: Beheer 'n klein vervoerstelsel vir die sorteer of uitdeel van items.
- Ontwerp 'n roterende uitstalstaander: Wys 'n 3D-model of produk op 'n platform wat deurlopend draai.
Hardeware Benodig
- Arduino-bord (Uno, Nano, ens.)
- Deurlopende (360-grade) servo motor (bv. FS90R, DS04-NFC)
- 3x Drukknoppies
- Springdrade
- Broodbord
Bedradingsgids
Die bedrading vir hierdie projek is eenvoudig. Die servo motor het drie drade: gewoonlik 'n donker een vir grond (GND), 'n middelste een (dikwels rooi) vir krag (5V), en 'n ligter een (oranje, geel of wit) vir die sein. Soos in die video getoon, word die servo soos volg aan die Arduino bedraad:
- Servo Grond (donker draad): Verbind aan Arduino GND.
- Servo Krag (middelste/rooi draad): Verbind aan Arduino 5V.
- Servo Sein (ligte draad): Verbind aan Arduino pen 9.
Vir die drie drukknoppies het elke knoppie twee kante. Een kant van alle knoppies word saam verbind en dan aan die Arduino GND. Die ander kant van elke knoppie word aan 'n aparte digitale pen verbind, soos hieronder beskryf (in video by 03:40):
- Kloksgewys (CW) knoppie: Verbind aan Arduino pen 2.
- Stop knoppie: Verbind aan Arduino pen 3.
- Antikloksgewys (CCW) knoppie: Verbind aan Arduino pen 4.

Kode Verduideliking
Die kode is ontwerp om maklik konfigureerbaar te wees. Die belangrikste deel wat u sal moet aanpas, is die sc[]-skikking, wat die spesifieke PWM-waardes bevat wat na die servo gestuur word om sy aksies te beheer. Hierdie waardes is nie universeel nie en moet vir u spesifieke servo motor gekalibreer word (in video by 12:23).
int sc[]={106, 58, 0};// servo opdragte is in volgorde
//CCW, STOP,CW
Hierdie skikking is die hart van die kalibrasie. Die waardes word in hierdie volgorde gebruik:
- sc[0] = 106: Hierdie waarde word gestuur om die servo antikloksgewys te laat draai.
- sc[1] = 58: Dit is die "stop"-waarde. As gevolg van interne stroombane wissel die presiese waarde wat die motor laat stop. U mag vind dat u servo stadig draai selfs wanneer hierdie opdrag gestuur word, en u sal hierdie nommer effens moet aanpas om die ware "doodstop"-waarde vir u motor te vind.
- sc[2] = 0: Hierdie waarde laat die servo kloksgewys teen maksimum spoed draai.
U kan die waardes in die sc[]-skikking aanpas om die rotasiespoed te verander. Byvoorbeeld, die stel van sc[0] na 70 sal die antikloksgewyse rotasie stadiger maak. Hoe nader 'n waarde aan die "stop"-waarde (58) is, hoe stadiger sal die motor in daardie rigting draai. Waardes verder weg van 58 sal die spoed verhoog tot 'n maksimum limiet.
Daar is ook 'n paar ander sleutelveranderlikes wat u mag moet wysig. Die servoPin is op 9 gestel, wat 'n PWM-geskikte pen op u Arduino moet wees. Die knoppiepenne word aan die bokant van die kode gedefinieer en kan verander word indien nodig.
int servoPin = 9;// hierdie pen moet een van dié met PWM ~ wees
#define STOPpin 3 // drukknoppie pen vir STOP
#define CWpin 2 // drukknoppie vir CW
#define CCWpin 4 // drukknoppie vir CCW
Laastens hou die scText[]-skikking die stringe wat na die Serial Monitor gedruk word vir ontfouting. U kan dit verander as u verskillende boodskappe wil vertoon.
Hoe om die Kode te Gebruik
Laai die verskafde kode na u Arduino-bord op. Maak die Serial Monitor oop (stel op 9600 baud) om die statusboodskappe te sien. U kan nou die servo met die drie knoppies beheer:
- Druk en hou die CW-knoppie: Die servo sal kloksgewys begin draai. Die Serial Monitor sal "CW" en die waarde wat gestuur word, vertoon.
- Druk en hou die CCW-knoppie: Die servo sal antikloksgewys begin draai. Die Serial Monitor sal "CCW" en die waarde wat gestuur word, vertoon.
- Druk die Stop-knoppie: Die servo sal probeer om te stop. Die Serial Monitor sal "Stop" vertoon.
As jou servo nie heeltemal stop wanneer die Stop-knoppie gedruk word nie, sal jy die sc[1]-waarde in die sc[]-skikking moet kalibreer. Probeer om die waarde effens te verander (bv. van 58 na 54 of 52) en laai die kode weer op totdat die motor heeltemal stil bly.
Lewende Demonstrasie
In die video demonstreer die aanbieder die volledige stelsel. Jy kan sien hoe die servo in beide rigtings draai op grond van die knoppie-drukke. Die Serial Monitor-uitset word ook gewys, wat die huidige toestand ("CW", "Stop" of "CCW") en die spesifieke waarde wat na die servo gestuur word, vertoon. Dit is 'n uitstekende hulpmiddel vir ontfouting en om die perfekte kalibrasiewaardes vir jou spesifieke motor te vind. Die demonstrasie wys ook hoe die aanpassing van die waardes in die sc[]-skikking direk die motor se spoed beïnvloed, van 'n stadige kruip tot sy maksimum rotasiespoed.
Gevolgtrekking
Hierdie projek bied 'n eenvoudige en effektiewe manier om 'n deurlopende servomotor te beheer. Deur die kalibrasieproses vir die "stop"-waarde te verstaan, kan jy presiese beheer in jou eie robotika- en outomatiseringsprojekte verseker.
Video-hoofstukke
- [00:05] Inleiding tot die Deurlopende Servomotor
- [02:02] Hardeware-oorsig van die Servo
- [02:40] Bedradingsdiagram en Verbindings
- [05:07] Kode-verduideliking: Veranderlikes en Opstelling
- [08:03] Kode-verduideliking: Hoof-lus-logika
- [09:56] Die servoCommand()-funksie
- [10:54] Lewende Demonstrasie en Serial Monitor-uitset
- [12:23] Kalibrasie van Servospoed en Stopwaardes
++
/*
* S05-13 Servo with 3 push buttons
* Demonstration of Controlling a Continuous Servo (360 servo)
* This code allows you to control a 360-degree servo using push buttons
*
* Modified by Ahmad Shamshiri for Robojax Robojax.com
* on Jan 17, 2019 at 22:42 in Ajax, Ontario, Canada
Watch the video instruction for this sketch: https://youtu.be/hVe4TSRV4ww
Watch Introduction to 360 Servo video with code: https://youtu.be/b_xvu6wWafA
You can get the wiring diagram from my Arduino Course at Udemy.com
Learn Arduino step by step with all libraries, codes, and wiring diagrams all in one place
visit my course now http://robojax.com/L/?id=62
If you found this tutorial helpful, please support me so I can continue creating
content like this.
or make a donation using PayPal http://robojax.com/L/?id=64
Original code by BARRAGAN <http://barraganstudio.com>
*
* Code is available at http://robojax.com/learn/arduino
* 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 downloaded 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 servoPin = 9;// this pin must be one of those with PWM ~
#define STOPpin 3 // push button pin for STOP
#define CWpin 2 // push button for CW
#define CCWpin 4 // push button for CCW
int sc[]={106, 58, 0};// servo commands are in order
//CCW, STOP,CW
String scText[]={"CCW","Stop","CW"};// define texts for 3 actions
int statusText;
int CWBS, CCWBS, SBS;
//CW button status (CWBS)
//CCW button status (CCWBS)
//stop button status (SBS)
void setup() {
Serial.begin(9600);
pinMode(STOPpin,INPUT_PULLUP);// set pin for push button STOP
pinMode(CCWpin,INPUT_PULLUP);// set pin for push button CCW
pinMode(CWpin,INPUT_PULLUP);// set pin for push button CW
myservo.attach(servoPin); // attaches the servo on pin 9 to the servo object
myservo.write(sc[1]);// send STOP command
statusText=1;// initial value is STOP
}
void loop() {
CCWBS = digitalRead(CCWpin);// read status of button CCW
SBS = digitalRead(STOPpin);// read status of button STOP
CWBS = digitalRead(CWpin);// read status of button CW
if(CCWBS ==LOW)
{
servoCommand(0);
}else if(SBS ==LOW)
{
servoCommand(1);
}else if(CWBS ==LOW)
{
servoCommand(2);
}
Serial.println(scText[statusText]);
delay(50);
}// loop
void servoCommand(int n)
{
statusText = n;
myservo.write(sc[n]);
Serial.print("Going to ");
Serial.print(scText[n]);
Serial.print( "(");
Serial.print(sc[n]);
Serial.println(")");
}
Goedere wat jy dalk nodig het
-
Amazon360 Degree Servo motor on Amazonlink.amazon
-
eBay360 Degree Servo motor on eBayebay.us
-
AliExpress360 Degree Servo motor on AliExpresss.click.aliexpress.com
-
AliExpress360 Degree Servo motor on AliExpress-2s.click.aliexpress.com
Hulpbronne en verwysings
-
Internaal
Lêers📁
Ander lêers
-
SG90 Servo motor datasheet
robojax-servo-SG90_datasheet.pdf0.12 MB