Arduino və servo motor

Salam dostlar. Bu məşğələdə servo motorla tanış olacağıq və servonu Arduino Mega ilə idarə edəcəyik. Məşğələdə istifadə etdiyimiz servo sabit 5 voltla işləyir. Bu servonun bir neçə üstün cəhətləri var. Onu rəqəmsal siqnallarla idarə etmək mümkündür. Bu səbəbdən müxtəlif rəqəmsal proyektlərdə tətbiq etmək olar. Aşağıdakı şəkildədə gördüyünüz kimi servo motorun 3 bağlantı kabeli var; Ground (torpaq), 5 VDC və Signal. Ground və 5 VDC bağlantıları ilə servo enerji ilə təmin olunur. Signal bağlantısı ilə servoya müxtəlif idarəetmə siqnalları verilir. Servolar 180 dərəcə və ya 360 dərəcə dönən olmaqla iki cür olur.

WP_001213

Bundan başqa servo motorların yüksək torku olur. Buda robot proyektlərində çox istifadə olunmasına səbəbdir.

ardu servo

İndi isə servonu arduino ilə idarə edək. Əvvəlcə birinci üsul.

Bu üsulda sadəcə servoya müxtəlif dərəcələrdə pozisya seçirik və servo o pozisyaya hərəkət edir.

Dövrə aşağıdakı kimi qurulur. Qara kabel grounda, qırmızı kabel 5 volta, sarı kabel isə 22 ci pinə. Bundan sonra arduinonu USB ilə komputerə qoşub aşağıdakı kodları yükləyirik.

#include <Servo.h>;

Servo myservo;
int pos = 90; // ilk başda servonun pozisyasını 90 dərəcə olaraq göstəririk
void setup()
{
myservo.attach(22); // 22 ci pin servo üçün siqnal verir
}

void loop()
{
myservo.write(pos=90); // bu komandalar isə pozisyaları dərəcə ilə göstərir.
delay (1500); // milli saniyə ilə gözləmə müddəti
myservo.write(pos=0);
delay (1500);
myservo.write(pos=180);
delay (1500);
}

Təcrübəni aşağıdakı videodan izləyə bilərsiniz.

İkinci üsulda dövrə olduğu kimi qalır. Bu dəfə kodlar dəyişəcək. Hərəkət isə belə olacaq, 0 dərcədən 180 dərəcəyə 1 dərcələrlə hərəkət edəcək, sonra 180 dərəcədən 0 cı dərəcəyə qədər qayıdacaq.

#include <Servo.h>

Servo myservo;

int pos = 0; // servonun ilk pozisyası sıfır

void setup()
{
myservo.attach(22); // siqnal 22 ci pindən veriləcək
}

void loop()
{
for(pos = 0; pos < 180; pos += 1) &nbsp;// 180 dən kiçi oldugu müddətcə pos bir dərəcələrlə artacaq
{
myservo.write(pos); // pos a uyğun olaraq servo hərəkət edəcək
delay(15); // 15 milli saniyə aralıqlarla artacaq dərəcələr
}
for(pos = 180; pos>=1; pos-=1) // burda isə tərsinə
{
myservo.write(pos);
delay(15);
}
}

Növbəti, 3-cü üsul biraz fərqli və daha maraqlıdır. Burada potensiometrdən istifadə edəcəyik. Pot-la daxil etdiyimiz dəyərə görə sevro hərəkət edəcək. pot servo

Kodlar aşağıdakı kimidir.

#include <Servo.h>
Servo myservo;

int potpin = 0; // potensiometrin orta pini arduinonu 0 pininə qoşulur
int val;

void setup()
{
myservo.attach(22);
}

void loop()
{
val = analogRead(potpin); // potpin yəni 0 pinindən analog dəyər oxunur
val = map(val, 0, 1023, 0, 179); // oxunan dəyər bu şəkildə dərəcəyə çevrilir
myservo.write(val); // və servo val qədər hərəkət edir.
delay(10); // gözləmə vaxtı, milli saniyə
}

WP_001211

Məşğələlərin davamı olacaq. Suallarınızı şərh bölməsində yaxud forumda bildirməyi unutmayın.

Elgün Həsənov

Advertisements

Bir cavab yazın

Sistemə daxil olmaq üçün məlumatlarınızı daxil edin və ya ikonlardan birinə tıklayın:

WordPress.com Loqosu

WordPress.com hesabınızdan istifadə edərək şərh edirsinz. Çıxış /  Dəyişdir )

Google photo

Google hesabınızdan istifadə edərək şərh edirsinz. Çıxış /  Dəyişdir )

Twitter rəsmi

Twitter hesabınızdan istifadə edərək şərh edirsinz. Çıxış /  Dəyişdir )

Facebook fotosu

Facebook hesabınızdan istifadə edərək şərh edirsinz. Çıxış /  Dəyişdir )

%s qoşulma