色哟哟视频在线观看-色哟哟视频在线-色哟哟欧美15最新在线-色哟哟免费在线观看-国产l精品国产亚洲区在线观看-国产l精品国产亚洲区久久

聚豐項目 > 智能遙控小車

智能遙控小車

小車是電子大賽常用的裝備,采用舵機轉向,兩個電機調速驅動的四輪小車,以前都是用ti’或stm32f1的板子做的,用RISC-V架構的芯片做一個小車的控制器應該沒問題。這里利用AB32VG1開發板做核心控制元件,用無線串口通信,實現小車的遙控。

OK起飛蕪湖 OK起飛蕪湖

分享
1 喜歡這個項目
團隊介紹

OK起飛蕪湖 OK起飛蕪湖

團隊成員

OK起飛蕪湖 學生

分享
項目簡介
小車是電子大賽常用的裝備,采用舵機轉向,兩個電機調速驅動的四輪小車,以前都是用ti’或stm32f1的板子做的,用RISC-V架構的芯片做一個小車的控制器應該沒問題。這里利用AB32VG1開發板做核心控制元件,用無線串口通信,實現小車的遙控。
硬件說明

硬件部分主要包括以下三部分:

(1) 主控裝置AB32VG1開發板

(2) 驅動裝置:四路(兩路)電機驅動模塊

3遙控通信HC-HID


軟件說明

1.AB32VG1開發板

1)開發平臺:RT-Thread Studio

2)組態配置

比例閥主要是采用PWM電流驅動,采用閉環控制可以提高控制精度,所以組態配置中使能PWM信號和ADC0通道。此外,在PWM信號上疊加震顫能提高比例閥的動態響應,降低滯環,所以使能了硬件定時器timer。

 

3)主要代碼 

①舵機控制

?? int sg(int argc, char *argv[])

{

 

 

    period1 = 10000000;   /* 周期為10ms,單位為納秒ns */

    pulse1 = 0;          /* PWM脈沖寬度值,單位為納秒ns */

 

    /* 設置LED引腳腳模式為輸出 */

    rt_pin_mode(SG_PIN_NUM, PIN_MODE_OUTPUT);

    /* 拉高LED引腳 */

    rt_pin_write(SG_PIN_NUM, PIN_HIGH);

 

    /* 查找設備 */

    pwm_dev = (struct rt_device_pwm *)rt_device_find(PWM_DEV_NAME);

    if (pwm_dev == RT_NULL)

    {

        rt_kprintf("steering gear control run failed! can't find %s device!\n", PWM_DEV_NAME);

        return RT_ERROR;

    }

 

    /* 設置PWM周期和脈沖寬度默認值 */

    rt_pwm_set(pwm_dev, PWM_DEV_CHANNEL, period1, pulse1);

    /* 使能設備 */

    rt_pwm_enable(pwm_dev, PWM_DEV_CHANNEL);

 

 

    if(argc <2)

    {

        /* 0度到180度,然后由180度到0度,循環運行5個周期 */

        t1 = 50;

        while (--t1)

        {

            rt_thread_mdelay(1000);

            rt_pwm_set(pwm_dev, PWM_DEV_CHANNEL, period1, period1-500000);

            rt_thread_mdelay(5000);

            rt_pwm_set(pwm_dev, PWM_DEV_CHANNEL, period1, period1-2500000);

        }

    }

    else

    {

        /*msh輸入的字符轉換為數值*/

        pulse1 = Ascii2Hex(argv[1],strlen(argv[1]));

 

        /* 計算舵機目標位置所需要的高電平脈沖寬度 */

        t1 = 2000000/180*pulse1;

        pulse1 = period1-500000-t1; //pwm設定的占空比為低電平寬度,舵機控制使用高電平寬度控制旋轉角度

 

        /* 設置PWM周期和脈沖寬度 */

        rt_pwm_set(pwm_dev, PWM_DEV_CHANNEL, period1, pulse1);

    }

}

 

void set_ang(uint8_t ang)  //period-500000 對應,  period-2500000 對應180°90°對中,

{static rt_uint32_t ang_pulse;

    ang_pulse=1500000+ang/90*100000;

    pulse1=period1-ang_pulse;

    rt_pwm_set(pwm_dev, PWM_DEV_CHANNEL, period1, pulse1);

 

}

②行走電機驅動

int main(void)

{

    uint8_t pin = rt_pin_get("PE.1");

 

    rt_pin_mode(pin, PIN_MODE_OUTPUT);

 

    uint8_t pin_dir1 = rt_pin_get("PA.0");  //電機方向控制

    uint8_t pin_dir2 = rt_pin_get("PA.1");  //電機方向控制

    rt_pin_mode(pin_dir1, PIN_MODE_OUTPUT);

    rt_pin_mode(pin_dir2, PIN_MODE_OUTPUT);

 

    rt_kprintf("Hello, world\n");

    thread_serial1();

    while (1)

    {

        rt_pin_write(pin, PIN_LOW);

        rt_thread_mdelay(500);

        rt_pin_write(pin, PIN_HIGH);

        rt_thread_mdelay(500);

        sg(0,"100000");

        rt_thread_mdelay(1000);

        tr(0,"2500000");

 

        if(rec_ok==1) //收到命令

            {

             rec_ok=0;

             if(rec_buf[1]=='L')// 左轉角度

                 {ang_l=(rec_buf[2]-0x30)*10 +(rec_buf[3]-0x30);}

             rt_kprintf("ang_l%d",ang_l);

             if(rec_buf[4]=='R')// 右轉角度

                 {ang_r=(rec_buf[5]-0x30)*10+(rec_buf[6]-0x30);}

             rt_kprintf("ang_r%d",ang_r);

             if(rec_buf[7]=='F')// 前進

                 {

                 rt_pin_write(pin_dir1, PIN_LOW);

                 rt_pin_write(pin_dir2, PIN_LOW);

                 }

             if(rec_buf[7]=='N')// 空擋

                 {

                 rt_pin_write(pin_dir1, PIN_HIGH);

                 rt_pin_write(pin_dir2, PIN_HIGH);

                  }

             if(rec_buf[7]=='R')// 后退

                 {

                 rt_pin_write(pin_dir1, PIN_LOW);

                 rt_pin_write(pin_dir2, PIN_HIGH);

                  }

             if(rec_buf[7]=='T')// 剎車

                 {speed=0;

                 rt_pin_write(pin_dir1, PIN_HIGH);

                 rt_pin_write(pin_dir2, PIN_LOW);

                 }

             speed=(rec_buf[8]-0x30)*10+(rec_buf[9]-0x30);

             rt_kprintf("apeedl%d",speed);

             clear_buf();

pwm_out(speed,speed);

             if (ang_l>ang_r)

                 set_ang(-ang_l);

             else {

                 set_ang(-ang_r);

                   }

            }

    }

}

圖片3.png

演示效果

通過串口調試助手發送小車控制命令,小車能實現前進、后退、左轉、右轉動作,也能控制小車的速度。


附件

(0.36 MB)下載

評論區(0 )
主站蜘蛛池模板: 亚洲第一免费播放区| 69国产精品成人无码视频| 亚洲AV香蕉一区区二区三区蜜桃| aa级毛片毛片免费观看久| 精品视频久久久久| 熟女久久久久久久久久久| 成人国产精品免费网站| 女人高潮时一吸一夹| 2021全国精品卡一卡二| 久久热在线视频精品1| 又硬又粗又大一区二区三区视频| 饥渴的新婚女教师| 亚洲一在线| 久久777国产线看观看精品卜| 亚洲免费在线视频| 精品夜夜澡人妻无码AV| 一道本av免费不卡播放| 久久精品国产亚洲AV麻豆欧美玲| 亚洲精品久久久午夜福利电影网 | 国产AV视频二区在线观看 | 午夜免费小视频| 黄色a一级视频| gayxxxxgay呻吟受日本| 亚洲AV无码国产精品色午夜情| 玖玖热视频一区二区人妻| 国产成人免费不卡在线观看| 玉林天天论坛| 婷婷开心激情综合五月天 | 在线精彩视频在线观看免费| 日韩亚洲不卡在线视频| 九色PORNY真实丨首页| 白百合在线观看| 伊人成综合网伊人222| 乳液全集电影在线观看 | 2020精品国产视| 婷婷亚洲AV色香蕉蜜桃| 97精品国偷拍自产在线| 国产亚洲精品精华液| 中文字幕AV在线一二三区| 青青草色青伊人| 国产人妻久久久精品麻豆 |