閲覧総計:11037  (本日:2  昨日:2)


モータの速度を変える

PIC 16F628A内臓のPWM機能を利用し、モータへ掛かる電圧を変えモータの速度を変化させてみよう。  06/10/29

注)16F628Aの場合、PWM信号はRB3から発信される。

関連MikroC関数
void Pwm_Init(unsigned long freq);
void Pwm_Change_Duty(unsigned short duty_ratio);
void Pwm_Start(void);
void Pwm_Stop(void);

P1010192.JPG
/**
* PWM機能でモータの速度を変える
*
* PIC 16F628A
* 発信器:内臓4MHz
* 電源:乾電池4本
* モータドライバIC: TA7291P
* RB3: モータ (CCP出力)
* 
* Device Flags: _BODEN_OFF _BOREN_OFF _CP_OFF _PWRTE_ON _WDT_OFF
*        _LVP_OFF _MCLRE_OFF _INTRC_OSC_NOCLKOUT
*
* 言語 MikroC v6.2
*/
void main(){ //メイン プログラム
    unsigned short int i;

    PORTB = 0b00000000; //PORTBの中身をきれいにする
    TRISB = 0b00000010; //RB1は1:入力、他のPORTBは0:出力に設定
    PWM_Init(5000); //PWMの初期化 (5KHz周期指定)

    do { //doとwhileの間を繰り返す
        PWM_Start(); //PWM機能スタート

        //モータ電圧の変更 (Duty 0-255)
        PWM_Change_Duty(254); //duty:99% モータ電圧3.7V
        Delay_ms(9000); //9秒待つ

        PWM_Change_Duty(205); //duty:80% モータ電圧3.0V
        Delay_ms(9000); //9秒待つ

        PWM_Change_Duty(150); //duty:59% モータ電圧2.0V
        Delay_ms(9000); //9秒待つ
        
        PWM_Change_Duty(125); //duty:49% モータ電圧1.5V
        Delay_ms(9000); //9秒待つ

        PWM_Stop(); //PWMストップ
        Delay_ms(1000); //1秒待つ

    } while(1); //doとwhileの間を繰り返す
} //メイン プログラム終了

★この情報は役に立ちましたか?

選択肢 投票
はい 13  
普通 5  
いいえ 8  

添付ファイル: fileP1010192.JPG 2643件 [詳細]