Ðăng Nhập

View Full Version : điều khiển động cơ brushless


tinnhan247
28-02-2013, 01:11 AM
Chào các bác, em đang viết code để điều khiển động cơ bruchless dùng qua ESC và pic18f4431.
Tần số 50Hz, đồ rộng xung ra là 1-2 ms, chu kì là 20ms.
ĐK từ xa phát tín hiệu từ bé đến lớn ( ga ), RX nhận tín hiệu, em đọc adc từ RX vào PIC
Đây là code của em:

#Include <18F4431.h>
#Device *=16 ADC=10
#FUSES NOWDT //No Watch Dog timer
#FUSES HS //High speed Osc( >4mhz)
#FUSES NOPUT //No Power up Timer
#FUSES NOPROTECT
#FUSES NOLVP
#Use delay(clock=20000000)
#byte portb=0x06
#Include <math.h>
//////////////////////////////////
Void main()
{
Int16 VarADC,VarDuty;
Setup_adc(ADC_CLOCK_INTERNAL);
Setup_adc_ports(1);
Set_ADC_channel(0);
Setup_power_pwm_pins(PWM_BOTH_ON,PWM_OFF, PWM_OFF, PWM_OFF);
Setup_power_pwm(PWM_CLOCK_DIV_128|PWM_FREE_RUN,1,0 ,3124,0,1,0);
Delay_us(20);
While (TRUE)
{
VarADC =Read_adc(ADC_START_AND_READ);
VarDuty = VarADC*22;
Set_power_pwm0_duty(VarDuty);
Set_power_pwm_override(1,false,0);
}
}


Em thắc mắc ở 2 chỗ là hàm Setup_power_pwm(PWM_CLOCK_DIV_128|PWM_FREE_RUN,1,0 ,3124,0,1,0);
và công thức tính toán của em VarDuty = VarADC*x (x là số tỷ lệ thích hợp)

giờ em muốn xung PWM vào ESC có tần số 50 Hz, độ rộng từ 1-2ms chu kì 20s thì thông số phải thế nào ạ, em ko hiểu cách tính toán của các hàm này. Em cảm ơn nhiều ạ.

kicker
28-02-2013, 03:29 PM
xin lỗi cả nhà, nhưng động cơ bruchless là động cơ gì thế ạ?