探索 DRI0023 双步进电机驱动板 XBEE 接口

前言

最近尝试制作自平衡机器人,主要部件如下:

1、Arduino Leonardo控制板

2、42步进电机

3、DRI0023双电机驱动板(支持XBEE接口)

4、WIFI BEE ESP8266

5、A4988 电机驱动

6、90G舵机

7、螺丝杜邦线若干

8、3D打印件

原版平衡机器人名为jjrobots B-Robot ,电机驱动板是一块由jjrobots设计的电路板,如下图

限于PCB制作难度,于是直接采用DRI0023 + WIFIBEE ESP8266 代替,像这样

当万事俱备,开始代码调试时,这块DRI0023 双电机驱动板的致命问题来了,XBEE wifi 模块插上后,代码运行后,XBEE wifi模块不能通过串口接收AT指令……开始以为wifi模块存在问题,后翻阅相关说明文档,找到问题所在,下面逐一解读,供大家讨论分析。

DRI0023 XBEE电路

图一:

图中手绘的黄色线为TX 信号路由,问题的关键就在于 TX 信号到达 U3 后就中断了,开始认为是不是U3坏掉了。原因请看DFROBOT的另一块XBEE扩展板(IO 传感器扩展板 V7.1)的电路

DFR0265 XBEE电路

图二

两张原理图一模一样,可为什么DFR0265 可以通过XBEE发送AT指令,而DRI0023不行呢? 经过反复多次的验证,问题的核心就在于上面两张电路图中的 U3 ,图二中U3为 SN74LVC1G125,而图一中没标,查看驱动板,U3为一块丝印为“C145”的5脚芯片,查询资料后验证该芯片型号为SN74LVC1G14 ,下面深入解释这两块芯片的差异:

SN74LVC1G125针脚定义

SN74LVC1G14针脚定义

可以看到,SN74LVC1G125和SN74LVC1G14都是5脚,它们的外观和针脚定义完全一致。

 

SN74LVC1G125的逻辑真值表

A和OE为输入脚,Y为输出脚。当OE为低电平,A为高电平时,Y输出高电平;当OE为低电平,A为低电平时,Y输出低电平;当OE为高电平,芯片呈高阻态。通常OE都接地,使芯片呈导通状态。

SN74LVC1G14的逻辑真值表

SN74LVC1G14从真值表看出,它实际上是个反向电路,A为输入脚,Y为输出脚。当A输入高电平时,Y输出低电平;当A输入低电平时,Y输出高电平。

两块板子上的 U3 外观相同,电路结构也相同,但U3的内部结构不同,因此反映出的结果也不相同。DRI0023的XBEE接口,当主控板的TX发送信号时,为高电平状态,信号到达U3后信号反向,变为低电平,因此TX信号不能被XBEE 模块接收到,则通信失败。而DFR0265的XBEE接口,当主控板TX发送信号时,为高电平,信号达到U3时,信号没有被反向,因此通信成功。Arduino Leonardo的串口问题这篇文章中的DRI0023是经过简单改造的。

具体怎么改造,让DRI0023的Xbee接口可通过主控实现AT命令控制。我总结有两种方式:1、将DRI0023的U3替换成 SN74LVC1G125 芯片,原位替换不需要做任何电路改动;2、取下U3,直接用飞线连接 A 和 Y 点,取消方向功能。

标签: