新聞中心

        EEPW首頁 > 嵌入式系統 > 設計應用 > AVR與L298進行直流電機控制

        AVR與L298進行直流電機控制

        作者: 時間:2016-11-26 來源:網絡 收藏
        軟件環境:icc+avrstudio

        打開motor.h更改以下內容即可。

        //PD4,PD5 電機方向控制
        #define moto_en1 PORTD |= 0x10
        #define moto_en2 PORTD |= 0x20
        #define moto_uen1 PORTD &=~ 0x10
        #define moto_uen2 PORTD &=~ 0x20

        軟件核心介紹:

        通過控制電機的IN1和IN2改變方向, pwm控制速度。
        IN1和IN2不同時,電機轉動;
        IN1和IN2相同時,電機急停。

        硬件連接電路圖


        avr+N298控制電機輸入信號與電機工作方式


        N298電機控制芯片引腳圖


        電機控制資料包括 所有電機控制例子源程序,L298數據手冊,連接電路圖。

        今天有人反映,程序有點小問題

        程序中這里的IO初始化

        void port_init(void)
        {
        PORTA = 0x00;
        DDRA = 0x00;
        PORTB = 0x00;
        DDRB = 0x00;
        PORTC = 0x00;
        DDRC = 0x00;
        PORTD = 0x00;
        // DDRD = 0x80; // D7 PWM //參考芯片手冊
        //這里修改
        DDRD =0xB0; //PD4 PD5 PD7 OUT
        }

        另外注意如果,啟動時的PWM占空比太低 電機是轉不起來的,

        void main(void)
        {


        //初始工作

        init_devices();

        while(1)
        {
        for_ward(0); //默認速度運轉 正
        Delay1s(5); //延時5s
        motor_stop(); //停止
        Delay1s(5); //延時5s
        back_ward(0); //默認速度運轉 反
        Delay1s(5); //延時5s
        speed_add(20); //加速
        Delay1s(5); //延時5s
        speed_subtract(20); //減速
        Delay1s(5); //延時5s
        }

        }

        及這里的for_ward(0); //默認速度運轉 正
        如果改為for_ward(5);電機轉不起來


        評論


        技術專區

        關閉
        主站蜘蛛池模板: 隆尧县| 吐鲁番市| 闽清县| 莱芜市| 温州市| 蒲城县| 平原县| 陆川县| 赤峰市| 济阳县| 安宁市| 沙湾县| 巍山| 稷山县| 龙江县| 于都县| 清丰县| 怀宁县| 民权县| 方城县| 五原县| 略阳县| 龙陵县| 毕节市| 洛阳市| 连江县| 白朗县| 永仁县| 广东省| 东辽县| 云南省| 开平市| 台北县| 新泰市| 广平县| 南昌市| 蓝田县| 府谷县| 梁河县| 本溪| 昔阳县|