標(biāo)題: GD32單片機(jī)藍(lán)牙接口的2路直流電機(jī)驅(qū)動板設(shè)計(jì) 含pcb源碼等全套資料 [打印本頁]
作者: 孤城12 時(shí)間: 2018-8-1 10:31
標(biāo)題: GD32單片機(jī)藍(lán)牙接口的2路直流電機(jī)驅(qū)動板設(shè)計(jì) 含pcb源碼等全套資料
資料包:
0.png (46.28 KB, 下載次數(shù): 66)
下載附件
2018-8-2 01:07 上傳
實(shí)物照片:
0.jpg (69.93 KB, 下載次數(shù): 75)
下載附件
2018-8-2 01:08 上傳
0.jpg (23.51 KB, 下載次數(shù): 55)
下載附件
2018-8-2 01:08 上傳
功能及說明
- 兩路直流電機(jī)驅(qū)動,可調(diào)速和正反轉(zhuǎn)控制。
- 兩路正交編碼器接口,可用于電機(jī)速度反饋。
- 1路USB轉(zhuǎn)串口,用于電路的參數(shù)設(shè)定。
- 6軸運(yùn)動處理器件MPU6050,可用于平衡小車的開發(fā)。
- 藍(lán)牙4.0接口模塊,可通過手機(jī)上的app(TTC-BLE)對電機(jī)進(jìn)行加速、減速、正反轉(zhuǎn)控制。
- DC12V供電。
- 1個(gè)USB指示燈、1個(gè)藍(lán)牙模塊指示燈、2個(gè)用戶指示燈(用戶程序控制)。
- 1個(gè)輕觸開關(guān),供用戶程序使用。
本模塊采用DC12V供電,供電接口有2針2.54端子,并配有船型手動電源開關(guān)。
2、USB接口:
USB接口為USB轉(zhuǎn)串口,選擇的芯片為CH340E,串口連接到單片機(jī)的USART0口,供用戶程序使用,并帶有LED指示燈。
3、單片機(jī)調(diào)試口和boot設(shè)定:
GD32F330CBT6單片機(jī)采用的SWD調(diào)試口,開發(fā)環(huán)境MDK或IAR,開發(fā)工具為ST-LINK V2,資料中的程序兩種開發(fā)環(huán)境都支持。電路中將BOOT0腳引出,可通過跳線開關(guān)去選擇單片機(jī)的啟動程序地址,可通過跳線選擇BOOT0腳后,用USART0對用戶程序進(jìn)行升級,具體操作參見單片機(jī)的數(shù)據(jù)手冊。
4、電機(jī)驅(qū)動電路
本電路中具有2路電機(jī)驅(qū)動接口,同時(shí)可以接2路正交編碼器,可對電機(jī)轉(zhuǎn)速和方向?qū)崟r(shí)反饋;驅(qū)動芯片采用RZ7889,一款 DC 雙向馬達(dá)驅(qū)動電路,它適用于玩具等類的電機(jī)驅(qū)動、自動閥門電機(jī)驅(qū)動、電磁門鎖驅(qū)動等。它有兩個(gè)邏輯輸入端子用來控制電機(jī)前進(jìn)、后退及制動。該電路具有良好的抗干擾性,微小的待機(jī)電流、低的輸出內(nèi)阻,同時(shí),他還具有內(nèi)置二極管能釋放感性負(fù)載的反向沖擊電流。工作電壓3-15V。電機(jī)驅(qū)動用到單片機(jī)的TIMER15和TIMER16,編碼器檢測用到單片機(jī)的TIMER1和TIMER2,具體操作參見程序。
5、6軸運(yùn)動傳感器電路
MPU-6050是世界上第一款集成 6 軸MotionTracking設(shè)備。它集成了3軸MEMS陀螺儀,3軸MEMS加速度計(jì)。 MPU-6050也可以通過其I2C接口連接非慣性的數(shù)字傳感器,比如壓力傳感器。MPU-6050對陀螺儀和加速度計(jì)分別用了三個(gè)16位的ADC,將其測量的模擬量轉(zhuǎn)化為可輸出的數(shù)字量。為了精確跟蹤快速和慢速的運(yùn)動,傳感器的測量范圍都是用戶可控的,陀螺儀可測范圍為±250, ±500, ±1000, ±2000°/秒( dps),加速度計(jì)可測范圍為±2, ±4,±8, ±16g。
可以采用本電路中的6軸運(yùn)動傳感器和2路直流電機(jī)控制做兩輪平衡小車的開發(fā)。
6、藍(lán)牙接口
藍(lán)牙接口采用的是深圳市昇潤科技有限公司的HY-254101 V1藍(lán)牙4.0模塊。使用簡單,無需任何藍(lán)牙協(xié)議棧應(yīng)用經(jīng)驗(yàn)。支持藍(lán)牙主機(jī)、藍(lán)牙從機(jī)、藍(lán)牙主從一體,共 3 種版本。用戶接口使用通用串口設(shè)計(jì),全雙工雙向通訊,最低波特率支持 9600bps。通過AT命令對模塊進(jìn)行控制,再配上手機(jī)端的TCC-BLE軟件可以和模塊進(jìn)行實(shí)時(shí)通信控制。模塊的詳細(xì)資料參照附件中資料。
7、狀態(tài)指示:
本模塊供有4個(gè)LED指示燈,分別是2個(gè)用戶程序控制用指示燈、CH340E驅(qū)動指示燈、藍(lán)牙模塊指示燈。
單片機(jī)源程序如下:
- #include "gd32f3x0.h"
- #include "systick.h"
- #include <stdio.h>
- #include "config.h"
- unsigned char rtemp[6] = {'1','2','3','4','5','6'};
- unsigned char pbuf[20];
- signed short temper;
- signed short ax,ay,az;
- signed short gx,gy,gz;
- /************************************************************************
- ** 函 數(shù) 名: main
- ** 功能描述: 主函數(shù)
- ** 輸入?yún)?shù): 無
- ** 輸出參數(shù): 無
- ** 返 回 值: 無
- ** 作 者: 王超
- ** 日 期: 2018.4
- **------------------------------------------------------------------------
- ** 修 改:
- ** 修改日期:
- *************************************************************************/
- void Rcu_Periph_Clk_Init(void)
- {
- rcu_periph_clock_enable(RCU_GPIOA);
- rcu_periph_clock_enable(RCU_GPIOB);
- rcu_periph_clock_enable(RCU_GPIOC);
- rcu_periph_clock_enable(RCU_GPIOD);
- rcu_periph_clock_enable(RCU_GPIOF);
- rcu_periph_clock_enable(RCU_USART0);
- rcu_periph_clock_enable(RCU_USART1);
- rcu_periph_clock_enable(RCU_TIMER15);
- rcu_periph_clock_enable(RCU_TIMER16);
- rcu_periph_clock_enable(RCU_TIMER1);
- rcu_periph_clock_enable(RCU_TIMER2);
- rcu_periph_clock_enable(RCU_TIMER5);
- }
- /************************************************************************
- ** 函 數(shù) 名: UserGpio_Config
- ** 功能描述: IO口初始化
- ** 輸入?yún)?shù): 無
- ** 輸出參數(shù): 無
- ** 返 回 值: 無
- ** 作 者: 王超
- ** 日 期: 2018.4
- **------------------------------------------------------------------------
- ** 修 改:
- ** 修改日期:
- *************************************************************************/
- void UserGpio_Config(void)
- {
- gpio_mode_set(GPIOA, GPIO_MODE_INPUT, GPIO_PUPD_NONE, GPIO_PIN_4);//KEY
- gpio_mode_set(GPIOA, GPIO_MODE_OUTPUT, GPIO_PUPD_NONE, GPIO_PIN_5);//STA2 LED
- gpio_output_options_set(GPIOA, GPIO_OTYPE_PP, GPIO_OSPEED_50MHZ, GPIO_PIN_5);
- gpio_mode_set(GPIOA, GPIO_MODE_OUTPUT, GPIO_PUPD_NONE, GPIO_PIN_6);//STA1 LED
- gpio_output_options_set(GPIOA, GPIO_OTYPE_PP, GPIO_OSPEED_50MHZ, GPIO_PIN_6);
-
- //MOTO 互補(bǔ)PWM 死區(qū)
- gpio_af_set(GPIOB, GPIO_AF_2, GPIO_PIN_6);
- gpio_af_set(GPIOB, GPIO_AF_2, GPIO_PIN_7);
- gpio_af_set(GPIOB, GPIO_AF_2, GPIO_PIN_8);
- gpio_af_set(GPIOB, GPIO_AF_2, GPIO_PIN_9);
- gpio_mode_set(GPIOB, GPIO_MODE_AF, GPIO_PUPD_NONE, GPIO_PIN_6);
- gpio_output_options_set(GPIOB, GPIO_OTYPE_PP, GPIO_OSPEED_50MHZ,GPIO_PIN_6);
- gpio_mode_set(GPIOB, GPIO_MODE_AF, GPIO_PUPD_NONE, GPIO_PIN_7);
- gpio_output_options_set(GPIOB, GPIO_OTYPE_PP, GPIO_OSPEED_50MHZ,GPIO_PIN_7);
- gpio_mode_set(GPIOB, GPIO_MODE_AF, GPIO_PUPD_NONE, GPIO_PIN_8);
- gpio_output_options_set(GPIOB, GPIO_OTYPE_PP, GPIO_OSPEED_50MHZ,GPIO_PIN_8);
- gpio_mode_set(GPIOB, GPIO_MODE_AF, GPIO_PUPD_NONE, GPIO_PIN_9);
- gpio_output_options_set(GPIOB, GPIO_OTYPE_PP, GPIO_OSPEED_50MHZ,GPIO_PIN_9);
- //MOTO 編碼器
- gpio_af_set(GPIOB, GPIO_AF_1, GPIO_PIN_4);
- gpio_af_set(GPIOB, GPIO_AF_1, GPIO_PIN_5);
- gpio_af_set(GPIOB, GPIO_AF_2, GPIO_PIN_3);
- gpio_af_set(GPIOA, GPIO_AF_2, GPIO_PIN_15);
- gpio_mode_set(GPIOA, GPIO_MODE_AF, GPIO_PUPD_NONE, GPIO_PIN_15);
- gpio_mode_set(GPIOB, GPIO_MODE_AF, GPIO_PUPD_NONE, GPIO_PIN_3);
- gpio_mode_set(GPIOB, GPIO_MODE_AF, GPIO_PUPD_NONE, GPIO_PIN_4);
- gpio_mode_set(GPIOB, GPIO_MODE_AF, GPIO_PUPD_NONE, GPIO_PIN_5);
- }
- /************************************************************************
- ** 函 數(shù) 名: main
- ** 功能描述: 主函數(shù)
- ** 輸入?yún)?shù): 無
- ** 輸出參數(shù): 無
- ** 返 回 值: 無
- ** 作 者: 王超
- ** 日 期: 2018.4
- **------------------------------------------------------------------------
- ** 修 改:
- ** 修改日期:
- *************************************************************************/
- int main(void)
- {
- systick_config();
- Rcu_Periph_Clk_Init();
-
- UserGpio_Config();
- // Usart0_Init();//USART0初始化
- // printf("USART0 Init successfully!");
-
- MotoCtrlPwmInit();
- Encoder_M1_Init();
- Encoder_M2_Init();
- Timer5_Init();
-
- MPU_Init();
- delay_1ms(20);
- temper = MPU_Get_Temperature();
-
- Bluetooth_Init();
- //BluetoothATCmdSend("AT\r\n");
-
- while(1)
- {
-
- //MPU_Get_Accelerometer(&ax,&ay,&az);
- //MPU_Get_Gyroscope(&gx,&gy,&gz);
- //temper = TIMER_CNT(TIMER2);
- //temper = MPU_Get_Temperature();
- }
- }
- /************************************************************************
- ** 函 數(shù) 名: Delay_us
- ** 功能描述: us級延時(shí)
- ** 輸入?yún)?shù): us 延時(shí)時(shí)間
- ** 輸出參數(shù): 無
- ** 返 回 值: 無
- ……………………
- …………限于本文篇幅 余下代碼請從51黑下載附件…………
復(fù)制代碼
所有資料51hei提供下載(內(nèi)含原理圖與pcb及gd32單片機(jī)源碼等全套開發(fā)資料):
藍(lán)牙接口的2路直流電機(jī)驅(qū)動板.zip
(14.85 MB, 下載次數(shù): 71)
2018-8-1 10:30 上傳
點(diǎn)擊文件名下載附件
下載積分: 黑幣 -5
作者: suzhe1020 時(shí)間: 2019-10-12 10:39
很好的資料 求教程
歡迎光臨 (http://www.torrancerestoration.com/bbs/) |
Powered by Discuz! X3.1 |