AGV底层项目总结

研一入学后刚好赶上实验室的AGV项目,主要负责AGV车体的驱动和上层ROS端的指令数据交互。断断续续做了将近4个月(别问我为什么是陆陆续续——甲方的需求就是陆陆续续提的),涉及车体驱动器的驱动、底层硬件平台PCB的绘制、软件代码的编写。个人感觉收获甚多。现在来从芯片的使用和代码设计技巧两方面对项目进行总结。

芯片的使用

项目中所用的核心芯片采用STM32F103ZET6;通信芯片采用CAN、RS485、RS232;电路保护芯片采用运放LM358、光耦TLP521-4。

  1. CAN
    CAN通信数据的成帧处理功能的实现需要满足两个条件:CAN控制器与CAN收发器。
    CAN控制器用于将欲收发的信息(报文)转换为符合CAN规范的CAN 帧,通过CAN收发器,在CAN-BUS上作信息的交互,实现CAN总线的协议底层以及数据链路层。CAN发送过程中进行位填充、添加CRC校验、应答检测等操作;CAN接收过程中进行收发比对、去位填充、执行CRC校验等操作,此外还需要进行冲突判断、错误处理等诸多任务。CAN控制器芯片可分为两类:独立的控制器芯片(如SJA100)与结合微处理器的控制器芯片(如STM32芯片),这里选择第二种。
    CAN收发器是CAN控制器和物理总线之间的接口,将CAN控制器的逻辑电平转换为CAN总线的差分电平,在两条有差分电压的总线电缆上传输数据。这里采用的是philips公司生产的高速TJA1050芯片。
    TJA1050是CAN协议控制器和物理总线之间的接口,最初是应用在波特率范围在60K波特到1M波特的高速自动化应用中。TJA1050可以为总线提供不同的发送性能,为CAN控制器提供不同的接受性能,而且它与"ISO 11898"标准完全兼容。TJA1050芯片原理图与引脚功能如下图所示:
    在这里插入图片描述
  2. LM358运放
    LM358是双运算放大器,常用来做电压信号采集的前端电压跟随器,同时起到增加输入阻抗的作用,避免影响被测量的电压值。需要注意的是:LM358当工作在单电源5V供电时,当IN+从0—5V输入,其输出电压OUT只能从0—3.7V,而不是0—5V,换句话说,当IN+输入0—3.7V时,电压可以跟随到OUT,当输入大于3.7V时,输出会保持在3.7V。下图所示是两种LM358运放引脚图,两者只有通道数量的差异。
    在这里插入图片描述
  3. 继电器
    继电器接法如下图所示:1、3是继电器的线圈引脚可以接到控制这个继电器动作的电源上(接多少伏电压具体看继电器上有标);2是公共端,也就是2、5是常闭触点;2、4是常开触点。
    在这里插入图片描述
    需要注意的是一般继电器吸合一定的电流来实现,这就是说需要继电器前级输出要达到一定的电流(数十毫安即可),若采用单片机作为继电器前级的话,为避免单片机电流驱动能力不足需要在继电器前端做一个放大电路,只要前级输出电压达到要求就可以触发。具体如下图所示:
    在这里插入图片描述
  4. RS485
    RS-485是一种基于差分信号传送的串行通信链路层协议,由于它使用一对双绞线传送差分信号,属半双工通信的范畴。TTL电平到RS485电平的转换多采用SP3485芯片实现,具体电路图如下图所示。
    RS485电平标准:
    逻辑1的电平为+2swV,逻辑0的电平为-2~-6V。
    特点:
    双向传输,半双工通讯, 最高传输速率10Mbps
    最大传输距离约为1200m
    RS-485接口是采用平衡驱动器和差分接收器的组合,抗共模干能力增强,即抗噪声干扰性好。
    在这里插入图片描述
  5. RS232
    RS232是一种电平规范,当单片机与电脑串行通讯时,要用专用芯片进行电平转换,实现在TTL电平和RS232电平的相互转换。专用芯片选型5V的一般是MAX232或SP232,3.3V的一般是MAX3232或SP3232。具体电路图如下图所示。
    RS232电平标准:
    逻辑1的电平为-3~-15V,
    逻辑0的电平为+3~+15V,注意:电平的定义反相了一次。
    特点:
    (1) 接口的信号电平值较高,易损坏接口电路的芯片,又因为与TTL 电平不兼容故需使用电平转换电路方能与TTL电路连接。
    (2) RS232 可做到双向传输,全双工通讯 最高传输速率 20kbps。
    (3) 接口使用一根信号线和一根信号返回线而构成共地的传输形式, 这种共地传输容易产生共模干扰,所以抗噪声干扰性弱。
    (4) 传输距离有限,最大传输距离15米。
    在这里插入图片描述引脚功能
    Pin1-RO-接收器输出。 
    Pin2-RE-接收器输出使能(低电平有效)。 
    Pin3-DE-驱动器输出使能(高电平有效)。 
    Pin4-DI-驱动器输入。
    Pin5-GND-连接地。 
    Pin6-A-驱动器输出/接收器输入(同相)。 
    Pin7-B-驱动器输出/接收器输入(反相)。 
    Pin8-Vcc
  6. CH340G
    CH340 提供常用的MODEM联络信号,用于为计算机扩展异步串口,或者将普通的串口设备直接升级到USB 总线。CH340G芯片具体电路图如下所示。
    在这里插入图片描述
  7. TTL电平与COMS电平
    上边已经介绍了常见RS485电平、RS232电平,接下来介绍下TTL电平与CMOS电平吧。
    TTL电平标准:
    输出 L: <0.8V ; H:>2.4V。
    输入 L: <1.2V ; H:>2.0V
    TTL器件输出低电平要小于0.8V,高电平要大于2.4V。输入,低于1.2V就认为是0,高于2.0就认为是1。于是TTL电平的输入低电平的噪声容限就只有(0.8-0)/2=0.4V,高电平的噪声容限为(5-2.4)/2=1.3V。
    CMOS电平标准:
    输出 L: <0.1Vcc ; H:>0.9Vcc。
    输入 L: <0.3Vcc ; H:>0.7Vcc.
    由于CMOS电源采用12V,则输入低于3.6V为低电平,噪声容限为1.8V,高于3.5V为高电平,噪声容限高为1.8V。比TTL有更高的噪声容限。
    TTL电平与CMOS电平的相互转换
    CMOS电平能驱动TTL电平;TTL电平不能驱动CMOS电平,需加上拉电阻。
  8. 光耦TLP521-4
    光耦合器(opticalcoupler equipment,英文缩写为OCEP)亦称光电隔离器或光电耦合器,简称光耦。耦合器以光为媒介传输电信号。对输入、输出电信号起隔离作用,又由于光耦合器的输入端属于电流型工作的低阻元件,因而具有很强的共模抑制能力。
    光耦合器的主要优点是单向传输信号,输入端与输出端完全实现了电气隔离,抗干扰能力强,使用寿命长,传输效率高。它广泛用于电平转换、信号隔离、级间隔离、开关电路、远距离信号传输、脉冲放大、固态继电器(SSR)、仪器仪表、通信设备及微机接口中。具体引脚与电路图如下图所示。
    在这里插入图片描述实际项目中八路光耦隔离电路如下图所示:
    在这里插入图片描述

代码设计技巧

原创文章 7 获赞 3 访问量 2346

猜你喜欢

转载自blog.csdn.net/programmer_guan/article/details/84789511