在线观看www成人影院-在线观看www日本免费网站-在线观看www视频-在线观看操-欧美18在线-欧美1级

聚豐項目 > 基于AB32VG1的自平衡自行車

基于AB32VG1的自平衡自行車

基于AB32VG1開發板設計的自平衡自行車機器人,具有一定的觀賞性。車體姿態通過串口陀螺儀WT931獲取,由S3010舵機控制前輪轉向,使用RS-385電機和絕對值編碼器實現后輪速度閉環控制,使用直流減速電機驅動動量輪。硬件部分測試穩定,利用STM32裸機平臺完成了整機控制。現階段軟件控制部分利用RTT Studio完成了串口陀螺儀角度數據獲取,單極性電機驅動控制。對于RTT了解還不夠深入,有待后續積累經驗。

zhuyshuang zhuyshuang

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

zhuyshuang zhuyshuang

團隊成員

zhuyshuang 學生

分享
項目簡介
基于AB32VG1開發板設計的自平衡自行車機器人,具有一定的觀賞性。車體姿態通過串口陀螺儀WT931獲取,由S3010舵機控制前輪轉向,使用RS-385電機和絕對值編碼器實現后輪速度閉環控制,使用直流減速電機驅動動量輪。硬件部分測試穩定,利用STM32裸機平臺完成了整機控制。現階段軟件控制部分利用RTT Studio完成了串口陀螺儀角度數據獲取,單極性電機驅動控制。對于RTT了解還不夠深入,有待后續積累經驗。
硬件說明
  1. 電源模塊

    1. 電池:電池采用3300mah 2s航模電池,該類型電池具有高效的利用率和穩定的性能,一直被作為各種航模、電動車等的供電設備

    2. 穩6V電源模塊:使用TI公司開關電源TPS5430降壓到6V供舵機使用。電路原理圖如圖所示。

    3. 穩5V電源模塊:TPS7350是TI公司生產的高性能線性穩壓芯片,其使用方便,電路的設計原理如圖所示。

    2.電機驅動模塊:本設計的驅動電路由4片mos管構成H橋。通過控制4個MOS管的導通和關斷來實現正反轉,并通過控制輸入的PWM波的占空比來調節電機兩端的平均電壓,達到控制電機的轉速的目的,具體電路圖如圖所示

    3.陀螺儀:陀螺儀使用維特智能的WT931串口陀螺儀模塊,模塊集成高精度的陀螺儀、加速度計、地磁場傳感器,采用高性能的微處理器和先進 的動力學解算與卡爾曼動態濾波算法,能夠快速求解出模塊當前的實時運動姿態。



軟件說明
  1. QQ截圖20211215212648.png

  2. 車模速度控制:車模速度采用PID控制,P為比例參數,I為積分參數,D為微分參數,P項使輸出隨誤差大小變化,I項消除由于摩擦力等因素導致的速度的穩態誤差,使得實際速度始終跟隨目標速度,提高車模運行速度的穩定性,D項提高速度的動態響應能力及降低超調,使速度響應及時且平順。

  3. 車模姿態獲取:

    參考WT931的操作手冊寫串口定長數據接收處理即可,以下為與上位機通信代碼,用于實際調試。

  4. void SCI_Send_Datas()
    {
        static unsigned short int send_data[3][4] = { { 0 }, { 0 }, { 0 } };
        short int checksum=0;
        unsigned char xorsum=0,high,low;

        send_data[0][0] = (unsigned short int)(Roll);
        send_data[0][1] = (unsigned short int)(90);
        send_data[0][2] = (unsigned short int)(0);
        send_data[0][3] = (unsigned short int)(0);

        send_data[1][0] = (unsigned short int)(output);
        send_data[1][1] = (unsigned short int)(0);
        send_data[1][2] = (unsigned short int)(0);
        send_data[1][3] = (unsigned short int)(0);

        send_data[2][0] = (unsigned short int)(0);
        send_data[2][1] = (unsigned short int)(0);
        send_data[2][2] = (unsigned short int)(0);
        send_data[2][3] = (unsigned short int)(0);

        rt_sprintf(tx_buf0, "%c",0x53);
        rt_device_write(serial, 0, tx_buf0, (sizeof(tx_buf0)) );
        rt_sprintf(tx_buf0, "%c",0x54);
        rt_device_write(serial, 0, tx_buf0, (sizeof(tx_buf0)) );

        for (int i = 0; i < 3; i++)
        for (int j = 0; j < 4; j++)
        {
          low=(unsigned char)(send_data[i][j] & 0x00ff);
          high=(unsigned char)(send_data[i][j] >> 8u);

          rt_sprintf(tx_buf0, "%c",low);
          rt_device_write(serial, 0, tx_buf0, (sizeof(tx_buf0)) );
          rt_sprintf(tx_buf0, "%c",high);
          rt_device_write(serial, 0, tx_buf0, (sizeof(tx_buf0)) );

          checksum+=low; checksum+=high;
          xorsum^=low; xorsum^= high;
        }

        rt_sprintf(tx_buf0, "%c",(unsigned char)(checksum & 0x00ff));
        rt_device_write(serial, 0, tx_buf0, (sizeof(tx_buf0)) );
        rt_sprintf(tx_buf0, "%c",xorsum);
        rt_device_write(serial, 0, tx_buf0, (sizeof(tx_buf0)) );
    }

  5. 車模平衡控制:簡單的考慮是,不考慮舵機轉向和后輪電機速度對于單車平衡的影響,類比于兩輪平衡小車直立環、速度環和方向環的三環控制,單車采用角速度環和角度環串級作為直立環,直立環以動量輪為執行器,由舵機控制轉向,后輪電機提供動力。

    如果不考慮動量輪的作用,單車的運動控制此時是一個欠驅動系統。按照單車的運動模型,后輪電機速度對單車的直立環也會產生影響,速度越快,則向心力越大,所以不同速度下單車傾角所對應的前輪舵機打角也不同。假設在勻速狀態下的參數正好適合,我們想到可以配合加減速來輔助直立環,在單車過彎道時減速,過彎后及時加速使單車回正,這樣的策略可以讓單車在過彎時起到壓彎的效果。

    實際情況是舵機與兩個電機相互耦合作用,值得深入研究研究。

    通過動量輪實現單車平衡控制算法:

        

        void balance_pid(float turn)
        {
             float idata  servo_bias,gyro_bias;
             static float idata last_output=0,last_g_output=0;
             static float  servo_bias_last,gyro_bias_last;
             static float  servo_integration;
             static float gyro_integration;
             float actual;
             //角度環
             servo_bias = Roll- pid.balance_init0-turn;
             servo_integration+=servo_bias;

             if(servo_integration>600)//外環積分限幅
               servo_integration=600;
             else if(servo_integration<-600)
               servo_integration=-600;

             pid.output= pid.balance_P * servo_bias + pid.balance_I * servo_integration  + pid.balance_D * ((float)gyro[0]/16.4);//+center.result;

             //角速度環
              gyro_bias = pid.output -  ((float)gyro[0]/16.4);

    
             gyro_integration+=gyro_bias;
             if(gyro_integration>1000)//內環積分限幅
                  gyro_integration=1000;
             else if(gyro_integration<-1000)
                  gyro_integration=-1000;
             key.servo_pwm =pid.outside_P * gyro_bias +pid.outside_I*gyro_integration+ pid.outside_D * (gyro_bias - gyro_bias_last);
             gyro_bias_last = gyro_bias;
             servo_duty((unsigned short)((short)key.servo_pwm+970));//輸出到動量輪電機

}



演示效果

車模姿態的獲取

附件

(11.06 MB)下載

評論區(0 )
主站蜘蛛池模板: 狠狠操天天操视频| 狠狠操狠狠插| 国产乱码免费卡1卡二卡3卡四 | 操久久| 高清视频免费观看| 日韩黄色成人| 日日噜噜爽爽狠狠视频| 日本黄色小视频在线观看| 欧美日韩视频综合一区无弹窗| 免费在线色| 成人综合色站| 婷婷爱五月天| 黑人又大又粗又长又深受不了 | 国产手机在线| 一区在线观看| 老司机狠狠k免费毛片| 1024手机看片国产旧版你懂的 | 成熟女性毛茸茸xx免费视频 | 手机在线免费视频| 国产精品久久久福利| 天天草综合网| 可以在线看黄的网站| 亚洲mm8成为人影院| 午夜影音| 五月婷婷婷婷婷| 欧美一级高清片欧美国产欧美| 鲁老汉精品视频在线观看| 成人免费视频一区| 视频福利网| 欧美交片| 37pao强力打造免费高速高清| 老师办公室高h文小说| 四虎最新地址| 精品国产欧美一区二区最新| 三级网站视频| 久久精品9| 午夜毛片免费看| 在线观看黄的网站| 99久热只有精品视频免费观看17| 色综合中文字幕| 手机在线观看毛片|