Servo motor Ichida:
SG90 ( bu yerda ma'lumotlar varag'i ) 9 grammlik servo
motor bo'lib, u taxminan 0,3 soniya (0,1 s/60 daraja) tezlikda 0 - 180
daraja
(taxminan) aylana oladi. SG90 arzon loyihalarda, odatda motorli transport vositalari
va robot qo'llari bilan qo'llaniladi. SG90 ta'lim va prototip yaratish uchun ajoyib
vositadir - chunki u arzon va ishlatish uchun qulay. SG90 Arduino dasturiy ta'minoti
bilan ham mos keladi, bu qo'llanmada servoni aylantirish uchun foydalaniladi, bu
vosita bilan ilovalarda ishlatiladigan kichik shahar dvigatelining uzatmasidan
kattaroq va sekinroq uzatmaga qanday qisqarishini ko'rish uchun. To'liq
Arduino
simlari va kod ko'rsatmalari uchun keyingi bo'limga qarang.
Quyida odatiy SG90 servo motoridagi turli komponentlar tasvirlangan bir
qator fotosuratlar keltirilgan:
Arduino bilan servo simlarni ulash va kodlash asoslari
MG90S yana bir kichik servo motor bo'lib, u SG90 ga o'xshash, ammo
og'irligi biroz ko'proq (14 g) va plastmassa o'rniga metall uzatmalarga ega. MG90S
ham SG90 ga qaraganda bir oz tezroq, bu bu erda nima uchun ishlatilishini yana bir
oqlashdir. MG90S ham, SG90 ham bir xil simga ulangan va o'xshash koddan
foydalanadi. MG90S servolari o'rnatilgan servo kutubxonasi asosida servoni oldinga
va orqaga aylantiradigan Arduino "Servo" kodi bilan ishlaydi. Arduino kutubxonasi
boshlash
uchun ajoyib joy, chunki u haqiqatan ham bir necha qator kodni talab
qiladi. Birinchidan, servo Arduino platasiga ulangan bo'lishi kerak. Arduino Uno
taxtasi quyida qo'llaniladi. MG90S texnik jihatdan 4,8V - 6,0V kuchlanishli kirish
diapazoniga ega, shuning uchun har qanday 5,0V
Arduino impuls kengligi
modulyatsiyasi (PWM) imkoniyatlariga ega bo'lsa, ishlashi kerak.
19
Oldingi bo'limda .gifni takrorlash uchun oddiy kod quyida keltirilgan. Jarayon
quyidagi tartibni amalga oshiradi:
Birinchidan, dvigatelning boshlang'ich nuqtasini aniqlash uchun 0 darajaga
aylantiring
Cheksiz tsikl:
Taxminan 3 soniya ichida 90 darajaga aylantiring, 5 soniya kuting
3 soniyada 180 darajaga aylantiring, 5 soniya kuting
3 soniyada 90 darajaga qayting, 5 soniya kuting
3 soniyada 0 darajaga qayting, 5 soniya kuting
#include
Servo servo_1; // servo kontroller (bir nechta mavjud bo'lishi mumkin)
int servo_pin = 3 ; // Servo boshqaruv uchun PWM pin
int pos = 0 ; // servo boshlang'ich pozitsiyasi
bekor o'rnatish () {
servo_1.attach (servo_pin); // servo boshqaruvni ishga tushirish
}
void loop () {
for (pos = 0 ; pos <= 180 ; pos += 1 ) { // 0 darajadan 180 gradusgacha boradi
// 1 darajali bosqichlarda
servo_1.write(pos); // servoga 'pos'
delay ( 15 ) o'zgaruvchisidagi pozitsiyaga o'tishni ayting; // agar (pos == 90 ){
kechikish ( 5000 ) bo'lsa, servoning kerakli holatga kelishiga ruxsat berish uchun
kechikish
; //90 gradusda bir marta 5 soniya kuting } } kechikish ( 5000 ); // 180 gradusga
yetgandan keyin 5 soniya kuting (pos = 180 ; pos >= 0 ; pos -= 1 ) { // 180 darajadan
0 darajaga o'tadi
servo_1.write(pos); // servoga 'pos'
delay ( 15 ) o'zgaruvchisidagi pozitsiyaga o'tishni ayting;
agar (pos == 90 ) {
kechikish ( 5000 ); // 90 darajaga o'rnatilgandan keyin 5 soniya kuting
}
}
kechikish ( 5000 ); // 0 darajaga qaytgandan keyin 5 soniya kuting
}
Servoni ketma-ket monitordan boshqarish
Endi servo simlarni ulash va kodlash asoslari kiritilgandan so'ng, servolardan
foydalanish va boshqarish bo'yicha yanada ilg'or mavzularni o'rganish mumkin.
Ushbu bo'limda asosiy e'tibor seriyali port yordamida servoni boshqarishga
qaratiladi. Muxtasar qilib aytganda, ketma-ket portga kiritilgan burchak (gradusda)
20
Arduino-ga servoni berilgan holatga aylantirishni aytadi. Ushbu turdagi boshqaruv
robot qo'llari, kamera boshqaruvi yoki burchak ma'lum bo'lgan va
foydalanuvchining bevosita kiritishiga ko'ra o'zgartirilishi kerak bo'lgan har qanday
vaziyat uchun foydali bo'lishi mumkin.
Bu erda qo'llanilgan ba'zi ilovalar avvalgi qo'llanmada ham qo'llanilgan, bu
erda RGB LED Arduino-dagi ketma-ket port yordamida boshqariladi.
Ushbu
qo'llanmani bu erda topish mumkin, u erda Arduino pinlarini boshqarish batafsil
o'rganiladi. Bu erda asosiy e'tibor puls kengligi modulyatsiyasi yordamida servo
motorning burchagini o'zgartirish uchun bitta
Arduino pinini boshqarishga
qaratilgan.
#include
Servo servo_1; // servo kontroller (bir nechta mavjud bo'lishi mumkin)
int servo_pin = 3 ; // Servo boshqaruv uchun PWM pin
int pos = 0 ; // servo boshlang'ich pozitsiyasi
bekor o'rnatish () {
servo_1.attach (servo_pin); // servo boshqaruvni ishga tushirish
Serial.begin( 9600 ); // seriyali monitorni ishga tushirish
servo_1.write(pos); // servoni 0 darajaga
o'tkazing Serial.println( "0 darajaga joylashtirilgan" );
Serial.println( "Istalgan burchakni kiriting va Enter tugmasini bosing" );
}
void loop () {
while (Serial.available()){
String in_char = Serial.readStringUntil( '\n' ); // yangi qatorgacha o'qing
Serial.print( "Ko'chirish: " );
Serial.print(in_char);
Serial.println( "Darajalar" );
servo_1.write(in_char.toInt()); // burchakni o'zgartiring va servo
kechikishini yozing (in_char.toFloat() * ( 10.0 / 6.0 )); // maksimal tezlik uchun
kechikish