llyymm 发表于 2023-7-9 15:41:17

CAN与PWM的共用问题。已解决。

本帖最后由 芯LYS 于 2023-8-16 11:13 编辑

使用STC32G单片机,PWM控制了两个舵机,另外连接两个IO口控制了一个步进驱动器,上电启动后直接发送CAN命令可以被执行,但是为了保证舵机臂的位置不引起干涉,上电后会使用CAN命令控制PWM让舵机转动到避让位置,但是奇怪的问题出现了,使用CAN命令启动PWM让舵机转动后,再使用CAN命令控制其它动作,不管发送什么指令,都是在第四次时才会有反应,之后就正常了!补充说明:CAN网络下有8块这样的模块连接在一起,想不出哪里的问题

乘风飞扬 发表于 2023-7-10 10:24:04

"使用CAN命令控制"PWM或者其它动作,MCU是接收外部发过来的CAN总线数据吗?
另外,CAN总线通信是使用STC32G实验箱或者屠龙刀最新版本例程包里面的CAN总线收发测试例子吗?

芯LYS 发表于 2023-7-10 11:43:48


STC32G实验箱 例程资料:

屠龙刀最新版本例程包:

llyymm 发表于 2023-7-10 15:51:36

嗯嗯,是的,使用的时屠龙刀的例程做的修改,CAN指令是从外部上位机发送到单片机的,使用的是官方推荐的TJA1050芯片,CAN网络共有8块板这样的板子,每块控制一部分动作,分工执行,当时单块测试所有都没问题,但是8块连城网络就出现这个问题,怀疑网络有干扰,做了屏蔽处理,现在最奇怪的是有舵机控制的三块板出现这个问题,其它5块板就没事,从现象看应该就是干扰造成的!?但是连续发送几次一但执行就没事了,我记得CAN网络有异常关闭的功能,是不是舵机的频率干扰导致本体的CAN网络自动关闭或屏蔽,过一段时间又自动恢复??如果是这个问题,我是否可以在舵机动作时先屏蔽CAN,等执行完再开启?当然这只是应急,找到真正原因是关键,我这几天都是在这里头盲目寻找原因,真的是有点头大!

电子DIY小家 发表于 2023-7-12 13:33:33

你的电源线是怎么连接的,八块板子用的同一个电源吗?

llyymm 发表于 2023-7-13 13:46:34

电子DIY小家 发表于 2023-7-12 13:33
你的电源线是怎么连接的,八块板子用的同一个电源吗?

版主你好,八块板使用同一个电源,设备是金属柜体,体积2m*1.5m*1.8m 很多动作机构分成八组,使用STC单片机进行控制,我目前使用的是星型拓扑方式,线缆总长度约12米,这几天我也在查看CAN网络拓扑的相关资料,设备开机初始化时,几组舵机动作后,会出现CAN网络无反应,但是如果恢复后CAN数据一切正常,目前初步估计是干扰造成的,还在查找具体原因中。

电子DIY小家 发表于 2023-7-14 10:25:07

llyymm 发表于 2023-7-13 13:46
版主你好,八块板使用同一个电源,设备是金属柜体,体积2m*1.5m*1.8m 很多动作机构分成八组,使用STC单片 ...

每块板子独立供电看看,我怀疑是舵机运动的时候电流过大导致的干扰,

llyymm 发表于 2023-7-15 21:22:09

本帖最后由 llyymm 于 2023-7-15 21:27 编辑

电子DIY小家 发表于 2023-7-14 10:25
每块板子独立供电看看,我怀疑是舵机运动的时候电流过大导致的干扰,
嗯嗯,感谢提醒,手上没有示波器,否则查问题就方便多了,调用了CAN的ISR/IACK和RXERR\TXERR寄存器值,发现错误几乎为零,我特意把CAN网络虚接,错误值马上就上来了,说明没有干扰或几乎可以忽略,难道是时序问题?采用的是一对一答的方式,不应该啊?

llyymm 发表于 2023-7-17 19:16:04

电子DIY小家 发表于 2023-7-14 10:25
每块板子独立供电看看,我怀疑是舵机运动的时候电流过大导致的干扰,

感谢版主的用心提醒,问题找到了,舵机动作后,有一个供电电源正极与柜体搭接短路了,但是搭接短路的电阻相对较大,没有造成烧保险,只拉低了控制板的供电电压,导致MCU处于正常工作的边缘,处理这个问题后问题消失,前后查找问题花费了将近一周时间,如果有检测工具早就发现问题了,还好,经过此事,已经下单入手了一台示波器!{:4_165:}{:4_167:}

神农鼎 发表于 2023-7-17 19:33:12

https://nwzimg.wezhan.cn/contents/sitefiles2057/10287325/images/37942079.jpg
页: [1]
查看完整版本: CAN与PWM的共用问题。已解决。