找回密码
 立即注册

QQ登录

只需一步,快速开始

搜索
查看: 5271|回复: 1
打印 上一主题 下一主题
收起左侧

GD32单片机蓝牙接口的2路直流电机驱动板设计 含pcb源码等全套资料

[复制链接]
跳转到指定楼层
楼主
资料包:


实物照片:


功能及说明
  • 基本功能
  • 两路直流电机驱动,可调速和正反转控制。
  • 两路正交编码器接口,可用于电机速度反馈。
  • 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,具体操作参见程序。
56轴运动传感器电路
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驱动指示灯、蓝牙模块指示灯。

单片机源程序如下:

  1. #include "gd32f3x0.h"
  2. #include "systick.h"
  3. #include <stdio.h>
  4. #include "config.h"



  5. unsigned char rtemp[6] = {'1','2','3','4','5','6'};
  6. unsigned char pbuf[20];
  7. signed short temper;
  8. signed short ax,ay,az;
  9. signed short gx,gy,gz;

  10. /************************************************************************
  11. ** 函 数 名:   main
  12. ** 功能描述:   主函数
  13. ** 输入参数:   无
  14. ** 输出参数:   无
  15. ** 返 回 值:   无        
  16. ** 作    者:   王超
  17. ** 日    期:   2018.4
  18. **------------------------------------------------------------------------
  19. ** 修    改:
  20. ** 修改日期:
  21. *************************************************************************/
  22. void Rcu_Periph_Clk_Init(void)
  23. {
  24.   rcu_periph_clock_enable(RCU_GPIOA);
  25.   rcu_periph_clock_enable(RCU_GPIOB);
  26.   rcu_periph_clock_enable(RCU_GPIOC);
  27.   rcu_periph_clock_enable(RCU_GPIOD);
  28.   rcu_periph_clock_enable(RCU_GPIOF);
  29.   rcu_periph_clock_enable(RCU_USART0);
  30.   rcu_periph_clock_enable(RCU_USART1);
  31.   rcu_periph_clock_enable(RCU_TIMER15);
  32.   rcu_periph_clock_enable(RCU_TIMER16);
  33.   rcu_periph_clock_enable(RCU_TIMER1);
  34.   rcu_periph_clock_enable(RCU_TIMER2);
  35.   rcu_periph_clock_enable(RCU_TIMER5);
  36. }
  37. /************************************************************************
  38. ** 函 数 名:   UserGpio_Config
  39. ** 功能描述:   IO口初始化
  40. ** 输入参数:   无
  41. ** 输出参数:   无
  42. ** 返 回 值:   无        
  43. ** 作    者:   王超
  44. ** 日    期:   2018.4
  45. **------------------------------------------------------------------------
  46. ** 修    改:
  47. ** 修改日期:
  48. *************************************************************************/
  49. void UserGpio_Config(void)
  50. {
  51.   gpio_mode_set(GPIOA, GPIO_MODE_INPUT, GPIO_PUPD_NONE, GPIO_PIN_4);//KEY  
  52.   gpio_mode_set(GPIOA, GPIO_MODE_OUTPUT, GPIO_PUPD_NONE, GPIO_PIN_5);//STA2 LED
  53.   gpio_output_options_set(GPIOA, GPIO_OTYPE_PP, GPIO_OSPEED_50MHZ, GPIO_PIN_5);
  54.   gpio_mode_set(GPIOA, GPIO_MODE_OUTPUT, GPIO_PUPD_NONE, GPIO_PIN_6);//STA1 LED
  55.   gpio_output_options_set(GPIOA, GPIO_OTYPE_PP, GPIO_OSPEED_50MHZ, GPIO_PIN_6);
  56.   
  57.   //MOTO 互补PWM 死区
  58.   gpio_af_set(GPIOB, GPIO_AF_2, GPIO_PIN_6);
  59.   gpio_af_set(GPIOB, GPIO_AF_2, GPIO_PIN_7);
  60.   gpio_af_set(GPIOB, GPIO_AF_2, GPIO_PIN_8);
  61.   gpio_af_set(GPIOB, GPIO_AF_2, GPIO_PIN_9);   
  62.   gpio_mode_set(GPIOB, GPIO_MODE_AF, GPIO_PUPD_NONE, GPIO_PIN_6);
  63.   gpio_output_options_set(GPIOB, GPIO_OTYPE_PP, GPIO_OSPEED_50MHZ,GPIO_PIN_6);
  64.   gpio_mode_set(GPIOB, GPIO_MODE_AF, GPIO_PUPD_NONE, GPIO_PIN_7);
  65.   gpio_output_options_set(GPIOB, GPIO_OTYPE_PP, GPIO_OSPEED_50MHZ,GPIO_PIN_7);
  66.   gpio_mode_set(GPIOB, GPIO_MODE_AF, GPIO_PUPD_NONE, GPIO_PIN_8);
  67.   gpio_output_options_set(GPIOB, GPIO_OTYPE_PP, GPIO_OSPEED_50MHZ,GPIO_PIN_8);
  68.   gpio_mode_set(GPIOB, GPIO_MODE_AF, GPIO_PUPD_NONE, GPIO_PIN_9);
  69.   gpio_output_options_set(GPIOB, GPIO_OTYPE_PP, GPIO_OSPEED_50MHZ,GPIO_PIN_9);
  70.   //MOTO 编码器
  71.   gpio_af_set(GPIOB, GPIO_AF_1, GPIO_PIN_4);
  72.   gpio_af_set(GPIOB, GPIO_AF_1, GPIO_PIN_5);
  73.   gpio_af_set(GPIOB, GPIO_AF_2, GPIO_PIN_3);
  74.   gpio_af_set(GPIOA, GPIO_AF_2, GPIO_PIN_15);
  75.   gpio_mode_set(GPIOA, GPIO_MODE_AF, GPIO_PUPD_NONE, GPIO_PIN_15);
  76.   gpio_mode_set(GPIOB, GPIO_MODE_AF, GPIO_PUPD_NONE, GPIO_PIN_3);
  77.   gpio_mode_set(GPIOB, GPIO_MODE_AF, GPIO_PUPD_NONE, GPIO_PIN_4);
  78.   gpio_mode_set(GPIOB, GPIO_MODE_AF, GPIO_PUPD_NONE, GPIO_PIN_5);
  79. }
  80. /************************************************************************
  81. ** 函 数 名:   main
  82. ** 功能描述:   主函数
  83. ** 输入参数:   无
  84. ** 输出参数:   无
  85. ** 返 回 值:   无        
  86. ** 作    者:   王超
  87. ** 日    期:   2018.4
  88. **------------------------------------------------------------------------
  89. ** 修    改:
  90. ** 修改日期:
  91. *************************************************************************/
  92. int main(void)
  93. {  
  94.   systick_config();
  95.   Rcu_Periph_Clk_Init();
  96.   
  97.   UserGpio_Config();
  98. //  Usart0_Init();//USART0初始化  
  99. //  printf("USART0 Init successfully!");
  100.   
  101.   MotoCtrlPwmInit();
  102.   Encoder_M1_Init();
  103.   Encoder_M2_Init();
  104.   Timer5_Init();
  105.   
  106.   MPU_Init();
  107.   delay_1ms(20);
  108.   temper = MPU_Get_Temperature();
  109.   
  110.   Bluetooth_Init();
  111.   //BluetoothATCmdSend("AT\r\n");
  112.         
  113.   while(1)
  114.   {
  115.         
  116.     //MPU_Get_Accelerometer(&ax,&ay,&az);
  117.     //MPU_Get_Gyroscope(&gx,&gy,&gz);
  118.     //temper = TIMER_CNT(TIMER2);
  119.     //temper = MPU_Get_Temperature();
  120.   }
  121. }
  122. /************************************************************************
  123. ** 函 数 名:   Delay_us
  124. ** 功能描述:   us级延时
  125. ** 输入参数:   us 延时时间
  126. ** 输出参数:   无
  127. ** 返 回 值:   无        
  128. ……………………

  129. …………限于本文篇幅 余下代码请从51黑下载附件…………
复制代码

所有资料51hei提供下载(内含原理图与pcb及gd32单片机源码等全套开发资料):
蓝牙接口的2路直流电机驱动板.zip (14.85 MB, 下载次数: 71)



评分

参与人数 1黑币 +100 收起 理由
admin + 100 共享资料的黑币奖励!

查看全部评分

分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏1 分享淘帖 顶 踩
回复

使用道具 举报

沙发
ID:401247 发表于 2019-10-12 10:39 | 只看该作者
很好的资料    求教程
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

手机版|小黑屋|51黑电子论坛 |51黑电子论坛6群 QQ 管理员QQ:125739409;技术交流QQ群281945664

Powered by 单片机教程网

快速回复 返回顶部 返回列表