Darasi na 92: Sarrafa servo da yawa kowanne da potentiometer | Arduino Kwas ɗin Mataki-mataki
A cikin wannan aikin, za ka koyi yadda ake gina mai sarrafa servo mai tashoshi da yawa mai zaman kansa ta amfani da Arduino Uno da potentiometers guda biyu. Maimakon servo guda ɗaya ya bi ƙulli ɗaya, wannan jagorar ta nuna maka yadda za ka ba kowane servo nasa shigar analog ɗin, wanda zai ba ka damar sarrafa servo biyu—har zuwa shida—cikin zaman kansu kuma a lokaci ɗaya. Wannan muhimmin tubali ne na gini ga kowane aikin da ke buƙatar sarrafawa na hannu daidai, na sassa masu motsi da yawa.

Wannan saitin yana da amfani sosai. Ga wasu hanyoyi masu amfani da za ka iya amfani da shi:
- Robotics: Sarrafa karkata da karkata na gimbal na kamara ko tushe da haɗin hannu na ƙaramin mutum-mutumi.
- Animatronics: Ƙirƙirar motsi masu kama da rai don ɗan tsana ko halayen animatronic ta hanyar sarrafa kansa da idanunsa cikin zaman kansu.
- Sarrafa Model: Gina mai sarrafawa na al'ada don motocin RC ko jiragen sama na model don daidaita flaps da ailerons daidai.
- Automation: Ƙirƙirar tashar gyara ta hannu don mai bin hasken rana ko jig na matsayi mai axis da yawa.
Kayan Aiki Da Ake Bukata
- Arduino Uno (ko kowane allo mai jituwa)
- Motocin Servo 2x (ana amfani da servos na 180-digiri na yau da kullun anan)
- Potentiometers 2x (10kΩ zaɓi ne na gama gari)
- Breadboard da wayoyi masu haɗawa
- Wutar lantarki ta waje 5V (ana ba da shawarar don servos da yawa)
Jagorar Haɗin Waya
Wannan aikin yana buƙatar ƙarin wayoyi fiye da saitin servo guda ɗaya, musamman saboda kana buƙatar rarraba wutar lantarki da ƙasa zuwa abubuwa da yawa. Mabuɗin shine amfani da rails na wutar lantarki na breadboard don ƙirƙirar bus na 5V da GND gama gari. Zane na wayoyi yana da mahimmanci ga wannan ginin.

Bari mu fayyace haɗin, kamar yadda aka bayyana a cikin bidiyon (a bidiyo a 02:23). Da farko, saita rails na wutar lantarki: haɗa fil ɗin 5V na Arduino zuwa rail mai kyau na breadboard da fil ɗin GND zuwa rail mara kyau. Wannan yana ba ka damar samun wutar lantarki cikin sauƙi ga duk abubuwan ka.
Potentiometers: Kowane potentiometer yana aiki azaman mai raba wutar lantarki. Haɗa fil ɗin dama na kowane pot zuwa rail ɗin 5V da fil ɗin hagu zuwa rail ɗin GND. Fil ɗin tsakiya shine "wiper" kuma yana ba da wutar lantarki mai canzawa. Haɗa fil ɗin tsakiya na potentiometer na farko zuwa shigar analog A0, da fil ɗin tsakiya na na biyu zuwa A1 (a bidiyo a 03:22).
Motocin Servo: Kowane servo yana da wayoyi uku. Haɗa wayar mai launin duhu (yawanci baƙar fata ko launin ruwan kasa) zuwa rail ɗin GND. Haɗa wayar tsakiya (yawanci ja) zuwa rail ɗin 5V. A ƙarshe, haɗa wayar sigina (yawanci orange ko rawaya) zuwa fil ɗin da ke da PWM akan Arduino. Wayar sigina ta servo na farko tana zuwa fil 3, kuma wayar sigina ta servo na biyu tana zuwa fil 5 (a bidiyo a 04:01). Ka tuna, dole ne ka yi amfani da fil ɗin da ke da PWM (masu alamar tilde "~" akan Uno) don sarrafa servo.
Bayanin Code
Code ɗin ya dogara ne akan misalin "Knob" na yau da kullun daga Arduino IDE amma an canza shi don sarrafa servos biyu. Dabaru a bayyane suke: karanta ƙimar analog daga potentiometer, tsara shi zuwa kusurwa, kuma umurci servo ya motsa zuwa wannan kusurwar. Sashen daidaitawa a saman code ɗin shine inda za ka yi duk gyare-gyarenka.
Ga sashen da mai amfani zai iya daidaitawa wanda ke bayyana fil ɗin da kuma ƙirƙirar abubuwan servo:
#include <Servo.h>
//**** saitunan servo 1
Servo servo1;
const int servo1PotPin = A0;
const int servo1Pin = 3;// Dole ne a yi amfani da fil ɗin PWM
int servo1Value;
//**** Ƙarshen saitunan servo 1
//**** saitunan servo 2
Servo servo2;
const int servo2PotPin = A1;
const int servo2Pin = 5;// Dole ne a yi amfani da fil ɗin PWM
int servo2Value;
//**** Ƙarshen saitunan servo 1
Wannan shine tushen daidaitawa. Don ƙara servo na uku, za ka kwafi toshe ɗin "saitunan servo 2", canza duk "2" zuwa "3", sanya sabon fil ɗin analog (misali, A2) da sabon fil ɗin PWM (misali, 9). Ajin Servo yana cikin Arduino IDE, don haka babu buƙatar ƙarin libraries.
A cikin aikin setup(), umarnin servo.attach(pin) yana gaya wa Arduino wane fil ɗin aka haɗa da wayar sigina ta kowane servo. Dole ne ka sami layi ɗaya ga kowane servo da kake amfani da shi.
void setup() {
//Robojax.com multiple servo
servo1.attach(servo1Pin);
servo2.attach(servo2Pin);
}
A cikin loop(), code ɗin yana karanta ƙimar potentiometer, tsara shi zuwa kewayon 0-180 digiri, kuma ya rubuta wannan kusurwar zuwa servo. delay(5) a ƙarshe shine siga na daidaitawa. Kamar yadda aka nuna a cikin bidiyon, rage wannan ƙimar daga 15 zuwa 5 milliseconds yana sa motsin servo ya zama mai santsi sosai kuma yana kawar da girgiza (a bidiyo a 12:00).
Nunin Aikin Kai Tsaye
Da zarar ka haɗa kewaye kuma ka loda code ɗin, nunin yana nan take. Lokacin da ka kunna Arduino, kowane servo zai motsa zuwa matsayi wanda potentiometer ɗin da ya dace ya ƙayyade. Yayin da kake juya ƙulli, servo ɗinsa zai bi motsin cikin santsi. Bidiyon yana nuna cewa servos biyu suna aiki gaba ɗaya cikin zaman kansu, wanda ke ba da damar motsi masu rikitarwa, na lokaci ɗaya. Idan ka lura da wani girgiza ko rawar jiki, daidaita ƙimar delay() a cikin loop shine abu na farko da za ka gwada.
Babuka
- [00:00] Gabatarwa da Bayanin Aikin
- [00:56] Fahimtar Motocin Servo
- [02:23] Tsarin Wayar don Servos Biyu da Potentiometers
- [04:15] Cikakken Bayanin Tsarin Wayar
- [06:49] Bayanin Lambar: Tsari da Saitawa
- [09:15] Bayanin Lambar: Dabaru na Sarrafawa da Taswira
- [11:15] Nunin Aiki Kai Tsaye da Daidaitawa
/*
* Control two or more servo motors
* using potentiometers.
* Modified by Ahmad Shamshiri on Oct 17, 2019 at 20:13
* in Ajax, Ontario, Canada . www.Robojax.com
* This code on robojax https://robojax.com/RJT766
*
* Original code from Arduino IDE: File->Examples->Servo->knob
*
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
* Get this code and other Arduino codes from Robojax.com
* * 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 download 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 1 settings
Servo servo1;
const int servo1PotPin =A0;
const int servo1Pin = 3;// Must use PWM enabled pin
int servo1Value;
//**** servo 1 settings END
//**** servo 2 settings
Servo servo2;
const int servo2PotPin =A1;
const int servo2Pin = 5;// Must use PWM enabled pin
int servo2Value;
//**** servo 1 settings END
void setup() {
//Robojax.com multiple servo
servo1.attach(servo1Pin);
servo2.attach(servo2Pin);
}
void loop() {
//Robojax.com multiple servo
servo1Value = analogRead(servo1PotPin);
servo1Value = map(servo1Value, 0, 1023, 0, 180);
servo1.write(servo1Value);
servo2Value = analogRead(servo2PotPin);
servo2Value = map(servo2Value, 0, 1023, 0, 180);
servo2.write(servo2Value);
delay(5);
//Robojax.com multiple servo
}// loop end
Abin da zaka iya bukata
-
Amazon
-
Amazon
-
eBay
-
AliExpressPurchase SG90 servo motor 180 or 360 from AliExpresss.click.aliexpress.com
Albarkatun da kuma shafukan da za a duba
Babu kayan aiki tukuna.
Fayiloli📁
Sauran fayiloli
-
SG90 Seroo motar datasheet
robojax-servo-SG90_datasheet.pdf0.12 MB