Picproje Elektronik Sitesi

DERLEYİCİLER => CCS C => Konuyu başlatan: Atima - 19 Ekim 2021, 14:28:09

Başlık: CCS ile servo
Gönderen: Atima - 19 Ekim 2021, 14:28:09
Pot ile servo motor sürmek istiyorum. 16f877a ve ccs diliyle.
denediğim kod aşağıdadır.

#include<16f877a.h>
#device adc=8
#use delay(clock=4m)
#fuses XT


int8 i,data;
int deger;

#int_timer0
void timer0()
{
   i++;
   if(i==0)
   output_high(pin_c1);
   if(i==data)
   output_low(pin_c1);
   SET_TIMER0(238);
   }
   
void main()
{
   setup_timer_0(RTCC_INTERNAL | RTCC_DIV_4);
   SET_TIMER0(238);
   enable_interrupts(INT_TIMER0);
   enable_interrupts(GLOBAL);
   SETUP_ADC(ADC_CLOCK_INTERNAL);
   SETUP_ADC_PORTS(ALL_ANALOG);
   output_low(pin_c1);
   data=0;

   


while(true)
{
   SET_ADC_CHANNEL(0);
   delay_us(20);
   deger=read_adc();
   data=30.0*deger/255.0;

 }
   
 }

pottan değeri okuyup timer0 ile pwm üretiyorum, fakat her açı değerini elde edemiyorum.
yardımcı olabilecek var mıdır ?
Başlık: Ynt: CCS ile servo
Gönderen: ertuğrul54 - 19 Ekim 2021, 18:29:21
neden yazılımsal pwm üretiyorsun ki 877de pwm çıkışı var onları kullanman daha iyi olmaz mı?
Başlık: Ynt: CCS ile servo
Gönderen: Atima - 20 Ekim 2021, 10:15:00
Daha önce kullanmadım araştırayım, elinizde örnek varsa paylaşabilir misiniz?
Başlık: Ynt: CCS ile servo
Gönderen: tacettin - 20 Ekim 2021, 10:54:54
servo motor kullanımı için 50Hz lik pwm sinyal gereklidir. Bu 50 Hz sinyalin peryodu da 20ms yapar. Bu 20ms peryodun da duty si 1ms ile 2ms arasında olmalıdırki servo çalışsın. sizin timer kesmesi ile oluşturduğunuz pwm in çözünürlüğü az olduğundan her açıyı yakalayamamanız normal. picin donanımsal olarak 50Hz lik sinyal oluşturabilmeniz için kristal değerini 1MHz in altında kullanmanız gerekir.
Başlık: Ynt: CCS ile servo
Gönderen: Atima - 21 Ekim 2021, 14:09:25
Pwm çıkışını ayrı kullanabiliyorum, pottan aldığım analog veriyi ayrı okuyabiliyorum. Fakat ikisini birleştiremedim. Analog veriyi okuyup pwm olarak servoya iletme konusunda yetersizim.
Başlık: Ynt: CCS ile servo
Gönderen: ertuğrul54 - 21 Ekim 2021, 15:22:59
set_pwm_duty1(değer); //  adc den geler "değer"
Başlık: Ynt: CCS ile servo
Gönderen: Atima - 22 Ekim 2021, 09:39:43
Alıntı yapılan: ertuğrul54 - 21 Ekim 2021, 15:22:59set_pwm_duty1(değer); //  adc den geler "değer"
Ama yinede hassas sekilde hareket etmiyor. +90 -90 +36 -73 gibi degerlerde hareket ediyor.
Başlık: Ynt: CCS ile servo
Gönderen: Atima - 04 Kasım 2021, 15:01:42
Alıntı yapılan: Atima - 22 Ekim 2021, 09:39:43Ama yinede hassas sekilde hareket etmiyor. +90 -90 +36 -73 gibi degerlerde hareket ediyor.

?
Başlık: Ynt: CCS ile servo
Gönderen: fide - 04 Kasım 2021, 21:28:40
Potdan gelen ADC bilgisi 10 bit yani 0-1024 arası. Pwm 8 bit yani 0-255 arası. Potdan okunan değeri 4e bölüp yazmayı deneyin