Robotik Kodlama

Robotik Kodlama
Ana Sayfa

İLGİNİZİ ÇEKEBİLECEK LİNKLER :

4 Mayıs 2021 Salı

Servo Motor Nasıl Çalışır ve Arduino

 Servo Motor Nasıl Çalışır ve Arduino

Arduino projenize hareket eklemek ister misiniz? O zaman servo motorlar sizin için sağlam bir başlangıç ​​noktası olabilir.DC motorların aksine, bu motorların konumunu hassas bir şekilde kontrol edebilirsiniz. Onlara hangi yöne ne kadar hareket edeceklerini söyleyin, onlar sizin için yapacaklar.Bir RC modelinde ön tekerlekleri döndürmek veya robotik bir araca bakmak için bir sensörü döndürmek gibi birçok robotik projede kullanışlıdırlar.


Servo nedir?
Servo, kapalı döngü kontrol sistemi için genel bir terimdir .Kapalı döngü sistemi, istenen sonucu elde etmek için motorun hızını ve yönünü ayarlamak için geri bildirim sinyalini kullanır.
servo motor kapalı çevrim sistem blok şeması

RC servo motor aynı prensipte çalışır. Çıkış miline dişliler aracılığıyla bağlanan küçük bir DC motor içerir.

Çıkış mili bir servo kolu tahrik eder ve ayrıca bir potansiyometreye (pota) bağlıdır.

servo motor iç yapısı çizimi

Potansiyometre, motorun mevcut konumunun hedef konumla karşılaştırıldığı yerde servo kontrol ünitesine konum geri bildirimi sağlar.

Hataya göre, kontrol ünitesi, motorun gerçek konumunu, hedef konumla eşleşecek şekilde düzeltir.



Servo Motorlar Nasıl Çalışır?

Sinyal hattına bir dizi darbe göndererek servo motoru kontrol edebilirsiniz Geleneksel bir analog servo motor, kabaca her 20 milisaniyede bir darbe almayı bekler (yani sinyal 50Hz olmalıdır).

Darbenin uzunluğu servo motorun konumunu belirler.

servo motor çalışma zamanlama diyagramı
  • Darbe 1 ms için yüksekse, servo açısı sıfır olacaktır.
  • Darbe 1.5 ms için yüksekse, servo merkez konumunda olacaktır.
  • Darbe 2 ms için yüksekse, servo 180 derecede olacaktır.
  • 1 ms ile 2 ms arasında değişen darbeler, servo milini hareketinin 180 derecesinin tamamı boyunca hareket ettirecektir.

Darbelerin süresi bazen farklı markalara göre değişebilir ve 0 derece için 0,5 ms, 180 derece için 2,5 ms olabilir.

Servo Motor Pin Çıkışı

Servo motorlar tipik olarak üç bağlantıya sahiptir ve aşağıdaki gibidir:



GND hem motor hem de mantık için ortak bir zemindir.

5V Power servoya güç veren pozitif bir voltajdır.

Signal Kontrol kontrol sistemi için giriştir.

Tellerin rengi servo motorlara göre değişir, ancak kırmızı kablo her zaman 5V'dur ve GND siyah veya kahverengi olacaktır. Kontrol teli genellikle turuncu veya sarıdır.

Servo Motorun Arduino UNO'ya Kablolanması

Servo motoru Arduino ya bağlayalım.

Örneğin SG90 Micro Servo Motor kullanalım. 4.8-6VDC (5V Tipik) ile çalışır ve yaklaşık 180 derece (her yönde 90) dönebilir.

Boşta yaklaşık 10mA ve hareket halindeyken 100mA ila 250mA tüketir, böylece Arduino'daki 5 voltluk çıkışla onu çalıştırabiliriz.

250mA'dan fazla tüketen bir servonuz varsa, servonuz için ayrı bir güç kaynağı kullanmayı düşünün.

Kırmızı kabloyu Arduino'daki (veya DC jakındaki) 5V'ye ve Siyah / Kahverengi kabloyu toprağa bağlayın. Son olarak Turuncu / Sarı kabloyu PWM etkin pim 9'a bağlayın.

servo motorun arduino uno süpürme koduna bağlanması

Arduino Kodu - Tarama

İlk Arduino taslağımız için, Arduino IDE ile birlikte gelen yerleşik örneklerden birini kullanacağız.

Örnekler alt menüsüne gidin. Servo'yu seçin ve Süpürme çizimini yükleyin.

servo süpürme örneği

Devam edin ve çizimi yükleyin. Motorun bir yönde hareket ettiğini ve sonra başka bir yönde geri döndüğünü hemen göreceksiniz.

#include <Servo.h>

int servoPin = 9;
Servo servo;
int angle = 0; // servo position in degrees

void setup() {
servo.attach(servoPin);
}

void loop() {

// scan from 0 to 180 degrees
for(angle = 0; angle < 180; angle++) {
servo.write(angle);
delay(15);
}
// now scan back from 180 to 0 degrees
for(angle = 180; angle > 0; angle--) {
servo.write(angle);
delay(15);
}
}

Açıklama:

Servoları kontrol etmek kolay bir iş değil, ama neyse ki bizim için Arduino IDE zaten Servo adında çok güzel bir kitaplık içeriyor Servoya belirli bir açıya dönmesi için hızlı bir şekilde talimat verebilmeniz için basit komutlar içerir.

Bu komutları kullanacaksanız, Arduino IDE'ye bu komutla kütüphaneyi kullandığınızı söylemeniz gerekir:

#include <Servo.h>

Bundan sonra yapacağımız şey, servo motorun kontrol piminin bağlı olduğu Arduino pinini ilan etmektir.

int servoPin = 9;

Aşağıdaki çizgi bir servo nesnesi oluşturur.

Servo servo;

Aslında bu şekilde sekize kadar servo tanımlayabilirsiniz, örneğin iki servomuz olsaydı, o zaman şöyle bir şey yazabilirdik:

Servo servo1;
Servo servo2;

Değişken angle, servonun mevcut açısını derece cinsinden saklamak için kullanılır.

int angle = 0;

Kurulum işlevinde, servobu komutu kullanarak nesneyi servoyu kontrol edecek pime bağlarız:

servo.attach(servoPin);

Döngü işlevi aslında iki for döngüsü içerir. İlk döngü, açıyı bir yönde ve ikincisi ters yönde artırır.

Aşağıdaki komut, servoya konumunu belirtilen açıya göre güncellemesini söyler.

servo.write(angle);

Sorun giderme

Doğrudan Arduino'dan çalıştırmaya karar verirseniz bazen servonuz hatalı davranabilir. Bunun nedeni servonun özellikle başlatma sırasında hatırı sayılır bir güç çekmesidir ve bu Arduino kartının sıfırlanmasına neden olabilir.

Bu olursa, genellikle bunu GND ve 5V arasına oldukça büyük bir elektrolitik kapasitör (470uF - 1000uF) yerleştirerek düzeltebilirsiniz.

Kondansatör, bir elektrik deposu görevi görür, böylece motor başladığında, kondansatörün yanı sıra Arduino beslemesinden de şarj alır.

Kapasitörün daha uzun ucu 5V'a ve negatif ucu GND'ye bağlanmalıdır.

servo motorun kondansatör ile arduino uno'ya bağlanması

Servo'nun Potansiyometre ile Kontrol Edilmesi

Bir sonraki adımımız, topuzu çevirerek servonun konumunu kontrol edebilmemiz için bir potansiyometre eklemektir.

Servoya bağlı bir sensörün pan ve eğimini kontrol etmek istediğinizde bu proje çok faydalı olabilir.

Kablolama

Bağlantı şemasının gösterdiği gibi bir potansiyometreye ihtiyacınız olacak, 10k'dan itibaren herhangi bir değer uygun olacaktır. Potun bir ucunu toprağa, diğer ucunu Arduino 5V'ye ve sileceği A0 analog girişine bağlayın.

potansiyometre kontrolü için servo motorun arduino uno'ya bağlanması

Arduino Kodu

Servoyu, topuzun konumunu takip ettirecek kod, onu süpürmekten daha basittir.

#include <Servo.h>

int potPin = 0;
int servoPin = 9;
Servo servo;

void setup() {
servo.attach(servoPin);
}

void loop() {
int reading = analogRead(potPin);
int angle = map(reading, 0, 1023, 0, 180);
servo.write(angle);
}

Şimdi adında yeni bir değişken olduğuna dikkat edin potPin.

Döngü fonksiyonunda, A0 analog pininden değeri okuyarak başlarız.

int reading = analogRead(potPin);

Bu bize 0 ile 1023 arasında bir değer verir. Fakat onu küçültmemiz gerekir çünkü servo yalnızca 180 derece dönebilir.

Bunu yapmanın bir yolu, bir sayıyı bir aralıktan diğerine yeniden eşleyen Arduino map () İşlevini kullanmaktır Bu nedenle, alt çizgi, 0 ile 180 derece arasındaki açıyı temsil edecek şekilde okumayı değiştirir.

int angle = map(reading, 0, 1023, 0, 180);

Son olarak, write()servoya pozisyonunu potansiyometre tarafından seçilen açıya göre güncellemesini söyleyen komutu kullanıyoruz .

servo.write(angle);

ANA SAYFAYA DÖN

Bahadır ÖZGEN
Electronic Robotic Coding Research and Development 1975 - ∞
Learn Forever
If you want, let's learn together...
https://roboticcode2020.blogspot.com/
bahadirozgen1975@gmail.com
facebook    robotic.code
instagram    @roboticcode


Sayfalarımı ziyaret ettiğiniz için teşekkür ederim.Bu sitede mevcut olan içerikler kendi oluşturduğum projeler yazı,resim ve videolardan oluşmaktadır.İçerik oluşturmak çok uzun sürdüğü için bazı projelerde yurtdışı kaynaklardan faydalandım.Buradaki amacım ticari değildir.Kaynağı belli olan ve bizim kaynağına ulaşabildiğimiz materyal (yazı, fotoğraf, resim, video v.b.) için ilgili konularda fotoğraflarda logo varsa v.b. not olarak gösterilecektir.Sitemizde yayınlanan tüm içerik, bizim tarafımızdan ve internet üzerinden youtube, facebook ve blog gibi paylaşıma sunulmuş kaynak sitelerden alındığı için, sitemiz yasal yükümlülüğe tabi tutulamaz. Sitemizde telif haklarının size ait olduğu bir içerik varsa ve bunu kaldırmamızı isterseniz, iletişim sayfamızdan bizimle iletişime geçtiğiniz takdirde içerik yayından kaldırılacaktır.Bu konu ve modüller ile uğraşarak, ileride çok güzel makine ve elektronik aletler yapabilirsiniz.

Hiç yorum yok:

Yorum Gönder

Yorum yazdığınız ve üye olduğunuz için Size teşekkür ederim.Burada olduğunuza göre hepimizin ilgi alanı Elektronik ve Programlama sonsuz bir dünyadayız.Hepimize Başarılar...

Not: Yalnızca bu blogun üyesi yorum gönderebilir.