
Merhaba arkadaşlar,
Bu yazımızda, MekatronikLAB firmasının üretmiş olduğu PIC mikrodenetleyiciler ile proje geliştirme kiti PIC|ULAK ile joystick ile servo motor kontrolünü gerçekleştirdik.
Hobi servolar, girişine uyguladığımız darbenin genişliğine göre 0-180 derece arasında dönme açısını değiştirilebildiğimiz motorlardır. Hobi servomuzu kontrol etmek için bir kare dalga işaretinin darbe genişliğini belirli sınırlar içerisinde değiştiririz, yani ismini koymak gerekirse darbe-genişlik modülasyonu yaparız. Servomuzda kahverengi:-, kırmızı:+, turuncu:data ucudur.
Servo Motorlarda bulunan kontrol ucuna vereceğimiz sinyal ile motorumuzu 0°-180° arasında istediğimiz dereceye ulaşana kadar döndürebileceğiz.
Dönmenin gerçekleşebilmesi için kontrol sinyalimizin frekansı 50Hz olmalıdır. Periyodumuz ise 20ms olacaktır.
Malzemeler
- pic|ulak
- servo motor
- joystick
- 1k direnç
Bağlantı Şeması
CCS C kodları
[php]
#include <18f2550.h>
#device adc=10 // 10 bitlik adc kullanılıyor.
#use delay(clock=4M) // osilatör frekansı
#fuses HS, NOWDT, NOLVP, NOPROTECT // sigorta ayarları
#use fast_io(c) // C portunun kullanılacağı belirtiliyor
unsigned long int bilgi; // bilgi adında işaretsiz tam sayı değişkeni tanımlanıyor.
void main()
{
setup_adc(adc_clock_div_32); // ADC clock frekansı fosc/32
setup_adc_ports(AN0); // A0 pini analog giriş olarak ayarlanıyor.
set_adc_channel(0); // A0 pini adc işlemine tabi tutuluyor.
delay_ms(20); // gecikme veriliyor.
set_tris_c(0x00); // c portu çıkış olarak ayarlanıyor.
while(1)
{
bilgi=read_adc(); // okunan değer bilgi değişkenine aktarılıyor.
bilgi=bilgi*1.9+1000; // bilgi değişkeninin değeri ayarlanıyor.
output_high(PIN_c1);
delay_us(bilgi);
output_low(PIN_c1);
delay_us(25000-bilgi);
}
}
[/php]
Devrenin Çalışma Videosu
Ozgur
26 Aralık 2017 at 17:22
Kodları da paylaştığınız için teşekkür ederim