Haberler:

Forum kuralları güncellendi LÜTFEN  okuyunuz:  https://bit.ly/2IjR3ME

Ana Menü

18f2431 Açı kontrolü

Başlatan vardal57, 16 Eylül 2018, 15:35:49

vardal57

Arkadaşlar merhaba 18f2431 ile blcd kontrolü yapmak istiyorum kodum aşağıdaki gibi fakat 3 faz arası açıyı nasıl ayarlayabılırım hangi register bunu ayarlamamı sağlıyor ?

#include <18F2431.h> // Kullanılacak denetleyicinin başlık dosyası tanıtılıyor.
#device adc=10;
 
//#define OSC_8MHZ
//#use delay(clock=20000000)
 
  #fuses H4,NOWDT,NOMCLR //Frequency = Fosc / (4 * (period+1) *prescale)
#use delay(clock=40000000) 
 
 
 
 /*
 
unsigned int16 sin_tabletbir[26]={10, 28, 45, 62, 78, 94, 107, 120, 131, 140, 147, 153, 156, 157, 156, 153, 147, 140, 131, 120, 107, 94, 78, 62, 45, 28};
 
unsigned int16 sin_tabletiki[26]={10, 28, 45, 62, 78, 94, 107, 120, 131, 140, 147, 153, 156, 157, 156, 153, 147, 140, 131, 120, 107, 94, 78, 62, 45, 28};
 
unsigned int16 sin_tabletuc[26]={10, 28, 45, 62, 78, 94, 107, 120, 131, 140, 147, 153, 156, 157, 156, 153, 147, 140, 131, 120, 107, 94, 78, 62, 45, 28};

 */
 
int8 bir = 0;
int8 iki = 0;
int8 uc  = 0;
int16 zaman = 0;

void main () 
{
 
 
 
 
 
//setup_power_pwm_pins(PWM_FREE_RUN ,PWM_OFF,PWM_OFF,PWM_OFF);
//setup_power_pwm(PWM_CLOCK_DIV_128|PWM_FREE_RUN,1,0,200,0,1,0); 
//setup_power_pwm_pins(PWM_OFF,PWM_OFF,PWM_COMPLEMENTARY,PWM_OFF);

 
 setup_power_pwm_pins(PWM_COMPLEMENTARY,PWM_COMPLEMENTARY,PWM_COMPLEMENTARY);
 

setup_power_pwm(PWM_CLOCK_DIV_128|PWM_FREE_RUN| PWM_DEAD_CLOCK_DIV_16,1,0,40,0,1,60);
 
 

 
  //set_power_pwm0_duty(159);   //8 başla 159 cihazda 26 tablo var
 
 
//setup_timer_0(T0_INTERNAL  |T0_DIV_1);
//enable_interrupts(INT_TIMER0); // int_timer0 kesmesini aktif yaparl

 setup_timer_1(T1_INTERNAL  |T1_DIV_BY_1);
 enable_interrupts(INT_TIMER1); // int_timer0 kesmesini aktif yaparl
enable_interrupts(GLOBAL); // Aktif edilen kesmelere izin ver
 
set_tris_a(0b00000000); // RA0 ucu giriş olarak ayarlandı.
set_tris_b(0b00000000); // RB0 portu tümüyle çıkış olarak ayarlandı.
set_tris_c(0b00000000); // RB0 portu tümüyle çıkış olarak ayarlandı.
 
 
 
 
 
output_b(0x00);
output_c(0x00);
 
delay_ms(100);





basla:
 
 
 
 
 
goto basla;
}

 

#INT_TIMER1
void timer0_kesme () // Kesme fonksiyonu ismi
{
set_timer1(60000);//64820
 set_power_pwm0_duty(85);   //3100
set_power_pwm2_duty(85);   //3100
set_power_pwm4_duty(85);   //3100

 /*
 set_power_pwm0_duty(sin_tabletbir[bir]);   //3100
  set_power_pwm2_duty(sin_tabletiki[iki]);   //3100
 set_power_pwm4_duty(sin_tabletuc[uc]);   //3100
 
 bir++;
if(bir>25)
{
bir=0;
}
 
iki++;
if(iki>25)
{
iki=0;
}

uc++;
if(uc>25)
{
uc=0;
}
 
 */

}
 

apsis

Motorun sensörlü mü? sensörsüz mü?
Yazılımla kafana göre açı ayarlayamazsın. Datasheet 197.sayfaya bakarsan sensörlerden ya da BEMF'den gelen sinyalleri nasıl okuyup çıkışları nasıl yönlendireceğini tablolarla göstermiş.
OVDCOND ve OVDCONS ile halledilebilir.
18F2431 için bunların kullanılmadığını yazıyor ama ben sanki kullandığımı haztırlıyorum. Eve geçince bir daha bakarım.
"Makineye Beyin" MEKATRONİK

vardal57

Motorumda sensör yok dırek bır adc okutarak frekansı ayarlamak ıstıyorum

apsis

Sensor yoksa sensorless kontrol yapısını bakman lazım(BEMF). BEMF ile aldığın komutasyonlara göre bahsettiğim register ile çıkış komutasyonlarını ayarlayabilisin. Yani kafadan açı ayarlamazsın
Sensörsüz kontrol için linke bak güzelce anlatmış adam.
http://www.avislab.com/blog/brushless04/
"Makineye Beyin" MEKATRONİK

vardal57

Açıkcası sunu anlayamadım register le ayarlamadan dırek olarak faz farkını nasıl yapıyorlar

setup_power_pwm(PWM_CLOCK_DIV_64|PWM_FREE_RUN| PWM_DEAD_CLOCK_DIV_2,1,10000,40,10000,1,50);

buradaki 10000 değeri mi bu farkı yapıyor acaba ?

elektronik

linkte arduino ile yapılmış sensörsüz bldc motor sürücü devresi var. size fikir verebilir.

https://simple-circuit.com/arduino-sensorless-bldc-motor-controller-esc

apsis

ovdcons registerine hangi fonksiyonun erişiyorsa onunla yapılıyor. Ben CCS C bilmiyorum. Sadece genel mantığından bahsettim sana. O fonksiyonun argüman tanımlarını yazabilirsen belki yardımcı olabilirim.
"Makineye Beyin" MEKATRONİK