lb0857 发表于 2023-12-18 15:04:51

HC165读取8路接近开关转速信号,时钟选择多少频率合适

mcu是STM32f1xx系列(项目要求只能使用hc165扩展IO使用)
8路接近开关信号是电机转速信号;最高转速是2.5万/分钟.

要求实时采集到接近开关输出的转速信号通过hc165给mcu
8路电机转速正常的时候;都是一起升高和降低;各路转速误差不大.(故障时候:会速度变低,或者停止)实测hc165端口上面信号同一个时刻不可能都是信号高电平;

也就是需要读取8次hc165信号,进行组合运算才能得到完整8路信号
(硬件上面;接近开关完全可以正确采集信号)

现在;考虑是HC165时钟信号,需要多高频率才能实时监测转速的满足要求;

原理图见:


转速脉冲信号宽度见图标识

Himem 发表于 2023-12-18 16:26:32

本帖最后由 Himem 于 2023-12-18 16:29 编辑

1 / 450e-6 * 8 至少18khz ?看具体转速精度要求

不过挂spi上用dma异步处理其实还好

lb0857 发表于 2023-12-18 16:33:15

2.5w转速要求误差低于1%
这样MCU要1us中断一次   
其他事情基本上干不了.
够呛.

lb0857 发表于 2023-12-18 16:34:57

Himem 发表于 2023-12-18 16:26
1 / 450e-6 * 8 至少18khz ?看具体转速精度要求

不过挂spi上用dma异步处理其实还好 ...
(引用自2楼)

谢谢回复{:victory:}
spi带DMA倒是一个很好的思路

Himem 发表于 2023-12-18 16:51:17

本帖最后由 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收发

lb0857 发表于 2023-12-18 17:05:33

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 17:12:32

本帖最后由 Himem 于 2023-12-18 18:47 编辑

lb0857 发表于 2023-12-18 17:05
就是按照是这样思路进行
低端103芯片不带3个SPI;(读取3路HC165)
打算1us中断一次生成读取HC165的时钟脉 ...
(引用自6楼)

按最低能接受(/显示)的rpm对应周期时间为间隔,来轮询三路信号,而不是并行处理呢
反正转速不会突变增{:lol:}

modbus 发表于 2023-12-18 17:41:58

lb0857 发表于 2023-12-18 16:33
2.5w转速要求误差低于1%
这样MCU要1us中断一次   
其他事情基本上干不了.
(引用自3楼)

你这是通过测周期的方式测转速吗

lb0857 发表于 2023-12-18 18:32:53

modbus 发表于 2023-12-18 17:41
你这是通过测周期的方式测转速吗
(引用自8楼)

先付读取165数据之后,后续再看情况采取何种有效方法得到频率

lb0857 发表于 2023-12-18 18:34:09

Himem 发表于 2023-12-18 17:12
按最低能接受(/显示)的rpm对应周期时间为间隔,来轮询三路信号,而不是并行处理呢
反正转速不会突变{:lol ...
(引用自7楼)

最先期产品是步进电机,
遇见突变的传送带卡阻时候,
有可能会突变
这样也是检测异常的一个功能

Himem 发表于 2023-12-18 18:43:19

本帖最后由 Himem 于 2023-12-19 00:19 编辑

lb0857 发表于 2023-12-18 18:34
最先期产品是步进电机,
遇见突变的传送带卡阻时候,
有可能会突变
(引用自10楼)

速度回升时间极短的话 的确就不适合轮询了

ibmx311 发表于 2023-12-19 06:29:02

我用4只165级联做输入,时钟4兆验证是可靠的

lb0857 发表于 2023-12-19 08:20:26

ibmx311 发表于 2023-12-19 06:29
我用4只165级联做输入,时钟4兆验证是可靠的
(引用自12楼)

时钟是定时器产生的吗?
我处理起来够呛
有啥技巧呢

天下乌鸦一般黑 发表于 2023-12-19 08:30:29

感觉问题不大啊。~
采样周期比T2快就行吧。按照400us采样,2.5KHz的采样率。
搞个定时器,2.5KHz中断,中断里SPI采集一次数据,找上升沿计数就可以判断转速了。SPI的时钟楼上大佬说的4M,我觉得还是保守了,可以用示波器测测波形试试更快的。~

lb0857 发表于 2023-12-19 09:05:56

天下乌鸦一般黑 发表于 2023-12-19 08:30
感觉问题不大啊。~
采样周期比T2快就行吧。按照400us采样,2.5KHz的采样率。
搞个定时器,2.5KHz中断,中断 ...
(引用自14楼)

嗯嗯
但是要考虑的因素是: 8路转速信号是同频(正常的时候)但是不同相位;在一个周期之内,有可能是第一路信号和另外一路信号相差1.6ms.
程序是一直发时钟进行读,才能保证每一如信号都能够读取到.

modbus 发表于 2023-12-19 10:45:33

lb0857 发表于 2023-12-19 09:05
嗯嗯
但是要考虑的因素是: 8路转速信号是同频(正常的时候)但是不同相位;在一个周期之内,有可能是第一路 ...
(引用自15楼)

你这又不测8路信号的相位关系吧,4MHz时钟的话2us就能采集8路信号,采用测频率方式,100us的采样周期采样8路频率没压力

lb0857 发表于 2023-12-19 19:08:06

modbus 发表于 2023-12-19 10:45
你这又不测8路信号的相位关系吧,4MHz时钟的话2us就能采集8路信号,采用测频率方式,100us的采样周期采样 ...
(引用自16楼)

最差情况是:二路之间相差1.6ms左右,4M时钟2US采集完整8路如何进行。
ms卡壳在这里了,麻烦说一下思路。

modbus 发表于 2023-12-19 20:16:54

lb0857 发表于 2023-12-19 19:08
最差情况是:二路之间相差1.6ms左右,4M时钟2US采集完整8路如何进行。
ms卡壳在这里了,麻烦说一下思路。 ...
(引用自17楼)

对每路信号分别进行上升沿检测并计数,各路互不影响

rainbow 发表于 2023-12-19 21:34:11

最低保证450uS的信号有3次采样,需要65KHz左右,10次就是200K出头,所以用500KHz以上,应该是没有什么问题了。

lb0857 发表于 2023-12-20 09:45:40

rainbow 发表于 2023-12-19 21:34
最低保证450uS的信号有3次采样,需要65KHz左右,10次就是200K出头,所以用500KHz以上,应该是没有什么问题 ...
(引用自19楼)

谢谢老陈
mcu使用500k中断累的够呛{:lol:}
页: [1]
查看完整版本: HC165读取8路接近开关转速信号,时钟选择多少频率合适