• 欢迎访问开心洋葱网站,在线教程,推荐使用最新版火狐浏览器和Chrome浏览器访问本网站,欢迎加入开心洋葱 QQ群
  • 为方便开心洋葱网用户,开心洋葱官网已经开启复制功能!
  • 欢迎访问开心洋葱网站,手机也能访问哦~欢迎加入开心洋葱多维思维学习平台 QQ群
  • 如果您觉得本站非常有看点,那么赶紧使用Ctrl+D 收藏开心洋葱吧~~~~~~~~~~~~~!
  • 由于近期流量激增,小站的ECS没能经的起亲们的访问,本站依然没有盈利,如果各位看如果觉着文字不错,还请看官给小站打个赏~~~~~~~~~~~~~!

SLAM+语音机器人DIY系列:(四)差分底盘设计——1.stm32主控硬件设计

人工智能 小虎哥哥爱学习 1149次浏览 0个评论

摘要

运动底盘是移动机器人的重要组成部分,不像激光雷达、IMU、麦克风、音响、摄像头这些通用部件可以直接买到,很难买到通用的底盘。一方面是因为底盘的尺寸结构和参数是要与具体机器人匹配的;另一方面是因为底盘包含软硬件整套解决方案,是很多机器人公司的核心技术,一般不会随便公开。出于强烈的求知欲与学习热情,我想自己DIY一整套两轮差分底盘,并且将完整的设计过程公开出去供大家学习。说干就干,本章节主要内容: 1.stm32主控硬件设计 2.stm32主控软件设计 3.底盘通信协议 4.底盘ROS驱动开发 5.底盘PID控制参数整定 6.底盘里程计标


1.stm32主控硬件设计

完整的stm32主控硬件包括:带霍尔编码器的直流减速电机、电机驱动、stm32单片机开发板等配件。  

1.1.带霍尔编码器的直流减速电机

  SLAM+语音机器人DIY系列:(四)差分底盘设计——1.stm32主控硬件设计

电路(图1)带霍尔编码器的直流减速电机

  要制作一台机器人底盘,需要一套完整的电机部件,就如图1中看到的一样,需要有轮胎、联轴器、减速箱、电机和编码器,具体选型可以参考这几个方面的因素:   轮胎:直径越大,小车的越障能力越好,但会降低小车爬坡的马力; 联轴器:选择跟轮胎与电机输出轴尺寸相匹配的型号; 减速箱:减速比决定电机输出轴的扭矩,减速比越大,输出轴扭矩越大,但输出轴转速越慢; 电机:一般是12V的电机,直流有刷简单易控制; 编码器:一般为增量式正交编码器,编码线数根据实际需要精度进行选择。   SLAM+语音机器人DIY系列:(四)差分底盘设计——1.stm32主控硬件设计

(图2)电机接线端口

  如图2,可以清楚的看到电机的接线端口,其实电路板上也是有丝印标注的。接线分为两类,一类是电机控制(电机线+、电机线-),另一类是编码器(编码器5V、编码器A相、编码器B相、编码器GND)。  

1.2.电机驱动电路

  SLAM+语音机器人DIY系列:(四)差分底盘设计——1.stm32主控硬件设计

(图3)TB6612FNG电机驱动

  了解了电机的构造知识后,就来介绍一下如何将电机驱动起来。如图3所示,TB6612FNG是很流行的一款电机驱动芯片,相比于传统的L298N效率上提升很多,而且体积大幅减小。TB6612FNG是双驱动,也就是可以驱动两个电机;TB6612FNG每通道输出最高1.2 A的连续驱动电流,启动峰值电流达2A/3.2 A(连续脉冲/单脉冲);4种电机控制模式:正转/反转/制动/停止;PWM支持频率高达100 kHz。   SLAM+语音机器人DIY系列:(四)差分底盘设计——1.stm32主控硬件设计

(图4)TB6612FNG引脚定义

  TB6612FNG的引脚定义,如图4所示,引脚分为电源脚、控制输入脚、控制输出脚。   VM:为电机驱动电压,根据实际电机额定电压选择,推荐使用12V供电; VCC:逻辑电源供电,推荐使用5V供电; STBY:待机/工作状态切换,低电平待机,高电平工作;   PWMA:A端口电机PWM调速信号输入; AIN1和AIN2:A电机转向控制信号输入; PWMB:B端口电机PWM调速信号输入; BIN1和BIN2:B电机转向控制信号输入;   AO1和AO2:A端口电机驱动信号输出; BO1和BO2:B端口电机驱动信号输出。   SLAM+语音机器人DIY系列:(四)差分底盘设计——1.stm32主控硬件设计

(图5)TB6612FNG控制信号真值表

  最后,我们来看一下控制信号的逻辑真值表,如图5,输入由单片机IO口给定,再结合PWM信号,便可以实现对电机的正/反转和调速控制了。由于两路电机控制是一模一样的,所以另一路控制信号的逻辑真值表就不重复赘述了。  

1.3.霍尔正交编码器原理

  SLAM+语音机器人DIY系列:(四)差分底盘设计——1.stm32主控硬件设计

(图6)霍尔正交编码器原理

  如果两个信号相位相差90度,则这两个信号称为正交。由于两个信号相位相差90度,因此可以根据两个信号哪个先哪个后来判断方向。利用单片机的IO口对编码器的A、B相进行捕获,很容易得到电机的转速和转向。霍尔正交编码器原理,如图6。  

1.4.stm32单片机最小系统

stm32单片机常用的型号是stm32f103,根据具体需求的Flash容量、RAM容量、IO口数量进行选择,下面是常用的一些型号参数对比,如图7。   SLAM+语音机器人DIY系列:(四)差分底盘设计——1.stm32主控硬件设计

(图7)stm32f103系列单片机参数对比

  考虑到stm32主控只是用于两个电机的控制,资源开销不算大,需要用到的IO口也不是很多,定时器资源也不多,出于性价比考虑推荐stm32f103c8t6这个型号。   SLAM+语音机器人DIY系列:(四)差分底盘设计——1.stm32主控硬件设计

(图8)stm32f103f103c8t6最小系统板

  如图8所示,stm32f103c8t6最小系统板比较简洁,控制两个电动机,只需要用两个IO口输出2路PWM分别给两个电机调速,用4个IO口分别控制两个电机的方向,另外4个IO口分别接两个电机的正交编码器输入,UART1与UART2跟上位机连接分别用于程序debug与上层指令控制。  

1.5.stm32主控硬件整体框图

第一个版本的硬件电路是用飞线连接的各个模块,电路稳定性很差,而且外观极其丑陋。痛定思痛,决心老老实实设计电路板,把各模块集成到一个板子上,经过两次改板打样,终于成功了。如图9,板子简洁美观,而且接插端子布局合理,符合我一向严苛的标准。

  SLAM+语音机器人DIY系列:(四)差分底盘设计——1.stm32主控硬件设计

(图9)stm32主控电路板

  好了,有了这个电路板就好办多了。针对这个电路板,讲讲我的设计思路吧。首先需要设计一个电源系统,用于单片机供电、电机供电、外部设备供电,同时还要考虑电源反接、过压、短路等保护;然后需要设计一个stm32单片机最小系统电路;最后围绕stm32最小系统,需要设计电机驱动、UART转USB、编码器信号捕获这些外围电路,同时还要考虑电机堵转保护、电机对系统电源干扰等问题。逐一采坑之后,差不多就完成设计了。stm32主控硬件整体框图,如图10。   SLAM+语音机器人DIY系列:(四)差分底盘设计——1.stm32主控硬件设计 (图10)stm32主控硬件整体框图  


开心洋葱 , 版权所有丨如未注明 , 均为原创丨未经授权请勿修改 , 转载请注明SLAM+语音机器人DIY系列:(四)差分底盘设计——1.stm32主控硬件设计
喜欢 (0)

您必须 登录 才能发表评论!

加载中……