资料包:
实物照片:
功能及说明 - 两路直流电机驱动,可调速和正反转控制。
- 两路正交编码器接口,可用于电机速度反馈。
- 1路USB转串口,用于电路的参数设定。
- 6轴运动处理器件MPU6050,可用于平衡小车的开发。
- 蓝牙4.0接口模块,可通过手机上的app(TTC-BLE)对电机进行加速、减速、正反转控制。
- DC12V供电。
- 1个USB指示灯、1个蓝牙模块指示灯、2个用户指示灯(用户程序控制)。
- 1个轻触开关,供用户程序使用。
本模块采用DC12V供电,供电接口有2针2.54端子,并配有船型手动电源开关。 2、USB接口: USB接口为USB转串口,选择的芯片为CH340E,串口连接到单片机的USART0口,供用户程序使用,并带有LED指示灯。 3、单片机调试口和boot设定: GD32F330CBT6单片机采用的SWD调试口,开发环境MDK或IAR,开发工具为ST-LINK V2,资料中的程序两种开发环境都支持。电路中将BOOT0脚引出,可通过跳线开关去选择单片机的启动程序地址,可通过跳线选择BOOT0脚后,用USART0对用户程序进行升级,具体操作参见单片机的数据手册。 4、电机驱动电路 本电路中具有2路电机驱动接口,同时可以接2路正交编码器,可对电机转速和方向实时反馈;驱动芯片采用RZ7889,一款 DC 双向马达驱动电路,它适用于玩具等类的电机驱动、自动阀门电机驱动、电磁门锁驱动等。它有两个逻辑输入端子用来控制电机前进、后退及制动。该电路具有良好的抗干扰性,微小的待机电流、低的输出内阻,同时,他还具有内置二极管能释放感性负载的反向冲击电流。工作电压3-15V。电机驱动用到单片机的TIMER15和TIMER16,编码器检测用到单片机的TIMER1和TIMER2,具体操作参见程序。 5、6轴运动传感器电路 MPU-6050是世界上第一款集成 6 轴MotionTracking设备。它集成了3轴MEMS陀螺仪,3轴MEMS加速度计。 MPU-6050也可以通过其I2C接口连接非惯性的数字传感器,比如压力传感器。MPU-6050对陀螺仪和加速度计分别用了三个16位的ADC,将其测量的模拟量转化为可输出的数字量。为了精确跟踪快速和慢速的运动,传感器的测量范围都是用户可控的,陀螺仪可测范围为±250, ±500, ±1000, ±2000°/秒( dps),加速度计可测范围为±2, ±4,±8, ±16g。 可以采用本电路中的6轴运动传感器和2路直流电机控制做两轮平衡小车的开发。 6、蓝牙接口 蓝牙接口采用的是深圳市昇润科技有限公司的HY-254101 V1蓝牙4.0模块。使用简单,无需任何蓝牙协议栈应用经验。支持蓝牙主机、蓝牙从机、蓝牙主从一体,共 3 种版本。用户接口使用通用串口设计,全双工双向通讯,最低波特率支持 9600bps。通过AT命令对模块进行控制,再配上手机端的TCC-BLE软件可以和模块进行实时通信控制。模块的详细资料参照附件中资料。 7、状态指示: 本模块供有4个LED指示灯,分别是2个用户程序控制用指示灯、CH340E驱动指示灯、蓝牙模块指示灯。
单片机源程序如下:
- #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;
- /************************************************************************
- ** 函 数 名: main
- ** 功能描述: 主函数
- ** 输入参数: 无
- ** 输出参数: 无
- ** 返 回 值: 无
- ** 作 者: 王超
- ** 日 期: 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);
- }
- /************************************************************************
- ** 函 数 名: UserGpio_Config
- ** 功能描述: IO口初始化
- ** 输入参数: 无
- ** 输出参数: 无
- ** 返 回 值: 无
- ** 作 者: 王超
- ** 日 期: 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 互补PWM 死区
- 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);
- }
- /************************************************************************
- ** 函 数 名: main
- ** 功能描述: 主函数
- ** 输入参数: 无
- ** 输出参数: 无
- ** 返 回 值: 无
- ** 作 者: 王超
- ** 日 期: 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();
- }
- }
- /************************************************************************
- ** 函 数 名: Delay_us
- ** 功能描述: us级延时
- ** 输入参数: us 延时时间
- ** 输出参数: 无
- ** 返 回 值: 无
- ……………………
- …………限于本文篇幅 余下代码请从51黑下载附件…………
复制代码
所有资料51hei提供下载(内含原理图与pcb及gd32单片机源码等全套开发资料):
蓝牙接口的2路直流电机驱动板.zip
(14.85 MB, 下载次数: 71)
|