硬汉嵌入式论坛

 找回密码
 立即注册
查看: 1411|回复: 7
收起左侧

[有问必答] 风扇转速测量及监测好坏探讨方案

[复制链接]

3

主题

10

回帖

19

积分

新手上路

积分
19
发表于 2024-12-18 11:14:16 | 显示全部楼层 |阅读模式
总共12个风扇,需要进行测速,风扇有转速反馈信号线FG信号,输出的是200Hz~1KHz的方波,目前想到的有两个方案:
1、利用stm32的三个定时器共12个输入捕获通道进行捕获。
这种方案有几个弊端:
A、单片机会一直不停的进入中断,比较耗费软件资源,于是想到利用一个定时器设定标志位,共设置12个标志位,标志位置1时再去分时进行输入捕获,但是测试时发现也还是会偶尔出现数据出错的情况
B、不方便进行风扇好坏及堵转监测,风扇不转时,理论上FG信号是没有的,考虑的是通过外部中断来实时监控,设定为上升沿产生中断,如果没有中断则表示风扇不转了,但是这就涉及到需要将输入捕获同时设置为外部中断引脚,风扇数量又多,程序不好处理

2、利用stm32的一个定时器的一个输入捕获通道,通过多路复用器来分时复用采集12个风扇的FG信号,这个方案有几个优点,就是不知道是否可行?
A、大大节约了软件资源,省去了stm32的引脚IO使用
B、监测风扇好坏,转不转时可以额外使用12个普通IO口配置为外部中断模式,设置好中断优先级
C、或者额外使用AD功能来分时复用监测风扇电流

还请各位大佬帮忙看看,第二个方案是否可行?或者有没更好的方案来实现这个功能?万分感激!特别是监测风扇好坏时是否还有更好的方法?
回复

使用道具 举报

5

主题

162

回帖

177

积分

初级会员

积分
177
发表于 2024-12-18 11:50:16 | 显示全部楼层
直接使用TIM-UP事件定时1KHZ开启DMA循环双缓冲,在每个TIM-UP事件触发DMA读取GPIO->IDR的数据进行计算就行了,一次性读取12路,再分别计算
回复

使用道具 举报

3

主题

10

回帖

19

积分

新手上路

积分
19
 楼主| 发表于 2024-12-18 11:58:52 | 显示全部楼层
2859932063 发表于 2024-12-18 11:50
直接使用TIM-UP事件定时1KHZ开启DMA循环双缓冲,在每个TIM-UP事件触发DMA读取GPIO->IDR的数据进行计算就行 ...

这方法好!
那好坏监测是不是没有up事件就判定为坏了?
感谢大佬啊!
回复

使用道具 举报

3

主题

10

回帖

19

积分

新手上路

积分
19
 楼主| 发表于 2024-12-18 13:46:56 | 显示全部楼层
2859932063 发表于 2024-12-18 11:50
直接使用TIM-UP事件定时1KHZ开启DMA循环双缓冲,在每个TIM-UP事件触发DMA读取GPIO->IDR的数据进行计算就行 ...

大佬,请教下您:您提到的这个方案,用最基本的STM32F103FC8T6是否能实现?我没用过这种方案,也不太了解,另外我还需要将AD采集温度和串口发送数据到上位机,这些都需要用到DMA,是否会跟这个产生冲突?本人也是初学者,对stm32不甚了解,还请见谅!所以只能多问问,忘多多指教,不甚感激!您说的这个方案是否有类似的可以参考学习下?
回复

使用道具 举报

6

主题

306

回帖

324

积分

高级会员

积分
324
发表于 2024-12-18 15:18:28 | 显示全部楼层
滤波后,接模拟量,一般单片机12通道模拟量还是很简单的吧,
回复

使用道具 举报

3

主题

10

回帖

19

积分

新手上路

积分
19
 楼主| 发表于 2024-12-18 17:17:57 | 显示全部楼层
fxyc87 发表于 2024-12-18 15:18
滤波后,接模拟量,一般单片机12通道模拟量还是很简单的吧,

您意思是用AD来采集电流信号判断好坏是么?
回复

使用道具 举报

5

主题

162

回帖

177

积分

初级会员

积分
177
发表于 2024-12-18 22:56:30 | 显示全部楼层
Tacking 发表于 2024-12-18 13:46
大佬,请教下您:您提到的这个方案,用最基本的STM32F103FC8T6是否能实现?我没用过这种方案,也不太了解 ...

使用能够触发DMA的定时器,选择对应的触发通道,设置方向为外设到内存,然后将IDR的寄存值通过定时器每次溢出的事件触发DMA读取。比如设定1khz的周期,那一秒之后就能读取到1千次IDR的高低电平,通过对高低电平的处理就知道大概的频率了
回复

使用道具 举报

3

主题

10

回帖

19

积分

新手上路

积分
19
 楼主| 发表于 2024-12-19 09:42:27 | 显示全部楼层
2859932063 发表于 2024-12-18 22:56
使用能够触发DMA的定时器,选择对应的触发通道,设置方向为外设到内存,然后将IDR的寄存值通过定时器每次 ...

明白了,大佬!谢谢您
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

QQ|小黑屋|Archiver|手机版|硬汉嵌入式论坛

GMT+8, 2025-8-12 02:47 , Processed in 0.042333 second(s), 23 queries .

Powered by Discuz! X3.4 Licensed

Copyright © 2001-2023, Tencent Cloud.

快速回复 返回顶部 返回列表