em có viết code điều khiển microstep cho dc Bưóc,nên xài các chân PWm1,3,5,7 đê điều khiển nhưng ko bít sao pwm ko chạy theo ý mún.Chương trình cảu em như sau:
Code:
#include <18f4431.h>
#FUSES NOWDT, HS, NOPUT, NOPROTECT,NOLVP
#use delay(clock=20000000)
//int8 duty_cycle;
void main()
{ while(true)
{
setup_power_pwm_pins(PWM_ODD_ON,PWM_ODD_ON,PWM_ODD_ON,PWM_ODD_ON);
setup_power_pwm(PWM_CLOCK_DIV_4|PWM_FREE_RUN,1,0,80,0,1, 0);
set_power_pwm_override(1, false, 0);
set_power_pwm_override(3, false, 0);
set_power_pwm_override(5, false, 0);
set_power_pwm_override(7, false, 0);
set_power_pwm0_duty(200); //motor1
set_power_pwm2_duty(500); //motor2
set_power_pwm4_duty(0); //motor3
set_power_pwm6_duty(1000); //motor4
// setup_power_pwm_pins(PWM_odd_on,PWM_OFF,PWM_OFF,PWM_OFF);
// setup_power_pwm(PWM_CLOCK_DIV_16,1,0,1000,1,0);
// set_power_pwm1_override(1,false,0);
// set_power_pwm0_duty(1000);
}
}
nếu mắc động co thường vào chân PWM1 thì nó vẫn chạy,nhưng ko theo ý mình nghĩa là em set_power_pwm0_duty bằng bao nhiu thì động cơ vẫn chạy ở một vận tốc nhất định.lấy đồng hồ đo thì nó lên 0V.các chân PWm3.5,7 cũng vậy.
Em thử xoá đoạn code set_power_pwm_override(7, false, 0);
set_power_pwm0_duty(200); //motor1
set_power_pwm2_duty(500); //motor2
set_power_pwm4_duty(0); //motor3
set_power_pwm6_duty(1000); //motor4
nhưng nó cũng chạy như chưa từng xoá
chỉ khi em xoá setup_power_pwm(PWM_CLOCK_DIV_4|PWM_FREE_RUN,1,0,8 0,0,1, 0);
thì nó moi dừng
em xài thạch anh 20MHz.Xin Các anh chỉ bảo giúp em
em mò hoài mà ko dc