奥鲲电子文档中心

PWM使用
更新时间: 2024-03-29 13:24:29 人气: 45

PWM的使用

概述

PWMPulse Width Modulation)简称脉宽调制,是利用微处理器的数字输出来对模拟电路进行控制的一种非常有效的技术, 广泛应用在测量、通信、工控等方面。其中有几个术语需要注意:PWM的频率、占空比

1、频率:1秒钟内,信号从高电平到低电平再回到高电平的次数,单位Hz

2、占空比:是一个脉冲周期内,高电平的时间与整个周期时间的比例,单位是% (0%-100%)

DTS驱动配置

板级使能pwm-fan,配置位置:arch/arm64/boot/dts/rockchip/aukun-utx-rk3568jt.dtsi

aukun_run: board-run{
status = "okay";
fan: pwm-fan {
compatible = "pwm-fan";
cooling-min-state = ;
cooling-max-state = ;
#cooling-cells = ;
pwms = ;
cooling-levels = ;
    };
};


实验调用

本次实验通过PWM来控制风扇的转速,风扇的GPIO3_B6固定输出电压为5V,即通过调节PWM占空比可以输出任意不大于最大电压值5V的模拟电压。

首先添加设备树,使能驱动然后重新编译烧录。

PWM设备文件

1、查看PWM

ls /sys/class/pwm/
 
cat /sys/kernel/debug/pwm


以下为刚刚添加的设备

 

2、文件属性

 

duty_cyclePWM的占空比的周期

periodPWM周期

polarityPWM极性,为有效电平的电平状态

 

3、设置PWM

进入到 /sys/class/pwm/pwmchip3目录下

 

#将pwm3导出到用户空间
echo 0 > export
 
#设置pwm周期 单位为ns
echo 1000000 > pwm0/period
 
#设置占空比
echo 500000 > pwm0/duty_cycle
 
#设置pwm极性
echo "normal" > pwm0/polarity
 
#使能pwm
echo 1 > pwm0/enable


PWM的测试

以下通过检测CPU的温度来改变PWM的占空比,以改变风扇的转速,shell脚本如下:

#! /bin/bash
while true
do
 vol_raw=$(cat /sys/class/thermal/thermal_zone1/temp)
 if [ "$vol_raw" -gt "30000" ]; then
  echo 300000 > pwm0/duty_cycle
 elif [ "$vol_raw" -gt "50000" ]; then
  echo 500000 > pwm0/duty_cycle
 elif [ "$vol_raw" -gt "60000" ]; then
  echo 600000 > pwm0/duty_cycle
 elif [ "$vol_raw" -gt "70000" ]; then
  echo 900000 > pwm0/duty_cycle
 fi
done


此时可以观察到风扇会随着CPU温度变化而改变


  • 本页导读

    Copyright © 2022-2030 aukun.cn 合肥奥鲲电子科技版权所有  皖ICP备2023002494号-1