查看: 129|回复: 2

[主题月] 【2026电机控制】利民风扇控制和转速监测

[复制链接]
  • TA的每日心情
    开心
    2017-12-26 10:16
  • 签到天数: 1 天

    连续签到: 1 天

    [LV.1]初来乍到

    13

    主题

    249

    帖子

    0

    高级会员

    Rank: 4

    积分
    842
    最后登录
    2026-8-28
    发表于 2026-8-23 23:13:35 | 显示全部楼层 |阅读模式
         好巧不巧,网友也驱动了一个intel 接口风扇。我这里有一个限制的利民散热风扇,9CM标准接口,支持PWM调速和FG测试。一般测试线
    频率不高,可能是一转一个脉冲或2个脉冲。利民这个扇子通电就可以自转了。是一个最低保持转速,静音转速。
           6.png

          FRDM MCXA366有众多的接口,输出PWM是很容易的事情,这里就按风扇的规约,25K脉冲来配置.
          调速:使用CTIMER1的2通道输出,下图代码配置
    1. srcClock_Hz = CTIMER_CLK_FREQ;
    2.      CTIMER_GetDefaultConfig(&pconfig);
    3.     timerClock = srcClock_Hz / (pconfig.prescale + 1);

    4.     CTIMER_Init(CTIMER, &pconfig);

    5.     /* Get the PWM period match value and pulse width match value of 20Khz PWM signal with 20% dutycycle */
    6.     CTIMER_GetPwmPeriodValue(25000, (uint8_t)DUTYCYCLE, timerClock);
    7.     CTIMER_SetupPwmPeriod(CTIMER, CTIMER_MAT_PWM_PERIOD_CHANNEL, CTIMER_MAT_OUT, g_pwmPeriod, g_pulsePeriod, false);
    8.     CTIMER_StartTimer(CTIMER);
    复制代码
        同时写一个函数,可以动态修改寄存器,实现占空比变化,如图。然后修改占空比可观察到风扇加速
           3.png
          测速:综合考虑后使用一个GPIO中断来做。考虑精确性尽可能高,并且数值相对平滑,这里使用测周期方法。配置DWT来记录微妙节拍实现时长统计。如下

    1. void DWT_Init(void)
    2. {
    3.     CoreDebug->DEMCR |= CoreDebug_DEMCR_TRCENA_Msk;
    4.     DWT->CYCCNT  = 0UL;
    5.     DWT->CTRL   |= DWT_CTRL_CYCCNTENA_Msk;
    6. }

    7. static inline uint32_t DWT_GetUS(void)
    8. {
    9.     return DWT->CYCCNT / (CPU_CORE_FREQ / 1000000UL);
    10. }
    复制代码
         配置GPIO1的中断,这里直接使用板载按键配置的引脚。上拉输入可以不配置,实测风扇本身也内置了上拉。开启引脚中断。转取下降沿信号     
    1. GPIO_SetPinInterruptConfig(GPIO1, 7U, kGPIO_InterruptFallingEdge);
    2.     EnableIRQ(GPIO1_IRQn);
    3.     GPIO_PinInit(GPIO1, 7U, &sw_config);
    复制代码
         中断内简单计时
         
    1. void GPIO1_IRQHandler(void)
    2. {
    3.     /* Clear external interrupt flag. */
    4.     GPIO_GpioClearInterruptFlags(GPIO1, 1U << 7U);
    5.     /* Change state of button. */
    6.     g_pulse_us = DWT_GetUS();
    7.     g_new_pulse_flag = 1U;
    8.     SDK_ISR_EXIT_BARRIER;
    9. }
    复制代码
        主循环内轮询标志,进行计算。
          5.png
          为了直观的测试,配置一个图形化界面,表盘空间来显示转速。debug模式下直接修改占空比,然后观察上位机界面数值变化。

           4.png
          风扇的参数是2200rpm最大,最小转速一般会有限制,这款利民扇测试占空比最低20%就失效了,不会停转,最低保持转速在2200*20=440转,但本项目测试的转速在370,当然满速时也没有达到2200。测量误差和风扇性能参数字面效果应该都存在就不深究了。
         测试真相可以看视频
         
          温度闭环用作散热需求场合,本例使用的板载温度计无法方便实现较大的温差变化,不做实际演示了。举个例子:占空比20%是最低限,假设此时容许的温度为25度,当温度升高到50度时开启全速,那么就以k=80/25作为温度和占空比的系数来设计。线性度一般是比较好的。
    哎...今天够累的,签到来了1...
    回复

    使用道具 举报

  • TA的每日心情
    擦汗
    2016-12-2 08:40
  • 签到天数: 3 天

    连续签到: 1 天

    [LV.2]偶尔看看I

    124

    主题

    922

    帖子

    7

    版主

    Rank: 7Rank: 7Rank: 7

    积分
    4640
    最后登录
    2026-9-14
    发表于 2026-8-24 11:08:40 | 显示全部楼层
    考虑结合咱们的eIQ里的TSS,做下风扇积灰 堵转等状态的识别的功能的话,应该fancy中的fancy
    回复 支持 反对

    使用道具 举报

  • TA的每日心情
    开心
    2017-12-26 10:16
  • 签到天数: 1 天

    连续签到: 1 天

    [LV.1]初来乍到

    13

    主题

    249

    帖子

    0

    高级会员

    Rank: 4

    积分
    842
    最后登录
    2026-8-28
     楼主| 发表于 2026-8-24 13:37:02 | 显示全部楼层
    mgn 发表于 2026-8-24 11:08
    考虑结合咱们的eIQ里的TSS,做下风扇积灰 堵转等状态的识别的功能的话,应该fancy中的fancy ...

    eIQ是N系列特色吧。您说的功能中堵转监测电流是可以实现的,积灰在转速闭环条件下可以评估
    哎...今天够累的,签到来了1...
    回复 支持 反对

    使用道具 举报

    您需要登录后才可以回帖 注册/登录

    本版积分规则

    关闭

    站长推荐上一条 /4 下一条

    Archiver|手机版|小黑屋|恩智浦技术社区

    GMT+8, 2026-9-23 02:53 , Processed in 0.098064 second(s), 23 queries , Redis On.

    Powered by Discuz! X3.4

    Copyright © 2001-2024, Tencent Cloud.

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