因为要控制多个步进电机(10个以上),开始的时候考虑到电机数量还不是很确定且电机互相间运动较复
杂,所以采取了以下结构,看图:
主机和子机用14线扁平排线连接,还通过其中的两根线给子机供电,连接长度大概在20CM到50CM间。主
从机间通讯口IO都有10K上拉电阻。每个子机再通过光耦控制2片电机控制IC来驱动2个步进电机。 发送大致过程是:首先主机让R/_W=0,D/_A=0,意思是写地址。此时D0~D7广播电机ID,各子机扫描到“写
地址”且地址符合,则等待“写指令”准备接受指令,不符合则跳出。稍后主机让R/_W=0,D/_A=1,意思
是写指令。依次发送指令字节(包括速度,步数,方向等指令参数),各字节间用CLOCK通知子机更新。 在电路装机调试后,发现广播电机ID的时候经常出现子机错误接受的情况,例如本来是2号电机动作的,
结果5号电机也同时以同样的指令参数动作,又或者是通知3号电机动作的,但是却没有任何一个电机动
作。这些错误的情况大概每发送20~30次发生一次。在一开始的构想中,是有指令校验反馈的。主机指令
字节的最后一个字节是其他指令字节(包括地址字节)的1的个数。子机接收后再计算指令字节的1的个数
与指令的最后一个字节对比,符合则D0~D7=子机ID,不符合则D0~D7=0xfe,然后让R/_W=1,D/_A=1,意思
是“子机反馈”,主机判断反馈,是“子机ID”则返回,是“0xfe”则再次重发。在现在的调试中,这
样的指令校验反馈还没有加上。 加上了指令校验反馈相信可以大大改善子机接受错误的情况。但是,现在这样频繁的出现错误,相信我
的电路也是很不好的,为了产品的稳定可靠,咱应该软硬兼施,对吧,所以,想问问该怎么改善电路 |