HC165读取8路接近开关转速信号,时钟选择多少频率合适
mcu是STM32f1xx系列(项目要求只能使用hc165扩展IO使用)8路接近开关信号是电机转速信号;最高转速是2.5万/分钟.
要求实时采集到接近开关输出的转速信号通过hc165给mcu
8路电机转速正常的时候;都是一起升高和降低;各路转速误差不大.(故障时候:会速度变低,或者停止)实测hc165端口上面信号同一个时刻不可能都是信号高电平;
也就是需要读取8次hc165信号,进行组合运算才能得到完整8路信号
(硬件上面;接近开关完全可以正确采集信号)
现在;考虑是HC165时钟信号,需要多高频率才能实时监测转速的满足要求;
原理图见:
转速脉冲信号宽度见图标识
本帖最后由 Himem 于 2023-12-18 16:29 编辑
1 / 450e-6 * 8 至少18khz ?看具体转速精度要求
不过挂spi上用dma异步处理其实还好 2.5w转速要求误差低于1%
这样MCU要1us中断一次
其他事情基本上干不了.
够呛. Himem 发表于 2023-12-18 16:26
1 / 450e-6 * 8 至少18khz ?看具体转速精度要求
不过挂spi上用dma异步处理其实还好 ...
(引用自2楼)
谢谢回复{:victory:}
spi带DMA倒是一个很好的思路
本帖最后由 Himem 于 2023-12-18 17:03 编辑
lb0857 发表于 2023-12-18 16:33
2.5w转速要求误差低于1%
这样MCU要1us中断一次
其他事情基本上干不了.
(引用自3楼)
25000rpm下±0.5%是对应 24us时间差
1 / 24e-6 * 8 ≈ 333khz
dma的话为了发送load信号,时钟要再翻倍? 除非支持9bit收发 Himem 发表于 2023-12-18 16:51
25000rpm下±0.5%是对应 24us时间差
1 / 24e-6 * 8 ≈ 333khz
(引用自5楼)
就是按照是这样思路进行
低端103芯片不带3个SPI;(读取3路HC165)
打算1us中断一次生成读取HC165的时钟脉冲
这要累死了我的MCU了 {:lol:} {:tongue:} 本帖最后由 Himem 于 2023-12-18 18:47 编辑
lb0857 发表于 2023-12-18 17:05
就是按照是这样思路进行
低端103芯片不带3个SPI;(读取3路HC165)
打算1us中断一次生成读取HC165的时钟脉 ...
(引用自6楼)
按最低能接受(/显示)的rpm对应周期时间为间隔,来轮询三路信号,而不是并行处理呢
反正转速不会突变增{:lol:} lb0857 发表于 2023-12-18 16:33
2.5w转速要求误差低于1%
这样MCU要1us中断一次
其他事情基本上干不了.
(引用自3楼)
你这是通过测周期的方式测转速吗 modbus 发表于 2023-12-18 17:41
你这是通过测周期的方式测转速吗
(引用自8楼)
先付读取165数据之后,后续再看情况采取何种有效方法得到频率 Himem 发表于 2023-12-18 17:12
按最低能接受(/显示)的rpm对应周期时间为间隔,来轮询三路信号,而不是并行处理呢
反正转速不会突变{:lol ...
(引用自7楼)
最先期产品是步进电机,
遇见突变的传送带卡阻时候,
有可能会突变
这样也是检测异常的一个功能 本帖最后由 Himem 于 2023-12-19 00:19 编辑
lb0857 发表于 2023-12-18 18:34
最先期产品是步进电机,
遇见突变的传送带卡阻时候,
有可能会突变
(引用自10楼)
速度回升时间极短的话 的确就不适合轮询了 我用4只165级联做输入,时钟4兆验证是可靠的 ibmx311 发表于 2023-12-19 06:29
我用4只165级联做输入,时钟4兆验证是可靠的
(引用自12楼)
时钟是定时器产生的吗?
我处理起来够呛
有啥技巧呢 感觉问题不大啊。~
采样周期比T2快就行吧。按照400us采样,2.5KHz的采样率。
搞个定时器,2.5KHz中断,中断里SPI采集一次数据,找上升沿计数就可以判断转速了。SPI的时钟楼上大佬说的4M,我觉得还是保守了,可以用示波器测测波形试试更快的。~ 天下乌鸦一般黑 发表于 2023-12-19 08:30
感觉问题不大啊。~
采样周期比T2快就行吧。按照400us采样,2.5KHz的采样率。
搞个定时器,2.5KHz中断,中断 ...
(引用自14楼)
嗯嗯
但是要考虑的因素是: 8路转速信号是同频(正常的时候)但是不同相位;在一个周期之内,有可能是第一路信号和另外一路信号相差1.6ms.
程序是一直发时钟进行读,才能保证每一如信号都能够读取到. lb0857 发表于 2023-12-19 09:05
嗯嗯
但是要考虑的因素是: 8路转速信号是同频(正常的时候)但是不同相位;在一个周期之内,有可能是第一路 ...
(引用自15楼)
你这又不测8路信号的相位关系吧,4MHz时钟的话2us就能采集8路信号,采用测频率方式,100us的采样周期采样8路频率没压力 modbus 发表于 2023-12-19 10:45
你这又不测8路信号的相位关系吧,4MHz时钟的话2us就能采集8路信号,采用测频率方式,100us的采样周期采样 ...
(引用自16楼)
最差情况是:二路之间相差1.6ms左右,4M时钟2US采集完整8路如何进行。
ms卡壳在这里了,麻烦说一下思路。 lb0857 发表于 2023-12-19 19:08
最差情况是:二路之间相差1.6ms左右,4M时钟2US采集完整8路如何进行。
ms卡壳在这里了,麻烦说一下思路。 ...
(引用自17楼)
对每路信号分别进行上升沿检测并计数,各路互不影响 最低保证450uS的信号有3次采样,需要65KHz左右,10次就是200K出头,所以用500KHz以上,应该是没有什么问题了。 rainbow 发表于 2023-12-19 21:34
最低保证450uS的信号有3次采样,需要65KHz左右,10次就是200K出头,所以用500KHz以上,应该是没有什么问题 ...
(引用自19楼)
谢谢老陈
mcu使用500k中断累的够呛{:lol:}
页:
[1]