PIC Vietnam

PIC Vietnam (http://www.picvietnam.com/forum/index.php)
-   Cơ bản về vi điều khiển và PIC (http://www.picvietnam.com/forum/forumdisplay.php?f=8)
-   -   điều khiển động cơ brushless (http://www.picvietnam.com/forum/showthread.php?t=31852)

tinnhan247 28-02-2013 01:11 AM

điều khiển động cơ brushless
 
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ế ạ?


Múi giờ GMT. Hiện tại là 08:28 PM.

Tên diễn đàn: vBulletin Version 3.8.11
Được sáng lập bởi Đoàn Hiệp.
Copyright © PIC Vietnam