香橙派5 使用pwm给风扇调速

如果你的风扇没有pwm调速的线我建议就不要折腾了

一、物料

香橙派5 、一个带pwm调速功能的风扇(我这里是自己手焊的mos)

二、给风扇焊个mos用于调速

我用的si2302,nmos,淘宝很便宜。nmos接在风扇负极。
请添加图片描述

三、pwm生成

这个参考香橙派给的手册就行了。
在这里插入图片描述
下面是手册中写的怎么配置

在 linux 系统中,26pin 中的 pwm 默认都是关闭的,需要手动打开才能使用。
在/boot/orangepiEnv.txt 中加入下面红色字体部分的配置,然后重启 Linux 系统就
可以同时打开 pwm0、pwm13、pwm14 和 pwm15,如果只需要打开一个,那么就
填写一个即可。

orangepi@orangepi:~$ sudo vim /boot/orangepiEnv.txt
overlays=pwm0-m1 pwm13-m2 pwm14-m1 pwm15-m2

选择 pwm1_m1 的设置如下所示,pwm1-m1 和 pwm1-m2 请不要同时打开:

orangepi@orangepi:~$ sudo vim /boot/orangepiEnv.txt
overlays=pwm1-m1

选择 pwm1_m2 的设置如下所示:

orangepi@orangepi:~$ sudo vim /boot/orangepiEnv.txt
overlays=pwm1-m2

选择 pwm3_m0 的设置如下所示,pwm3-m0 和 pwm3-m2 请不要同时打开:

orangepi@orangepi:~$ sudo vim /boot/orangepiEnv.txt
overlays=pwm3-m0

选择 pwm3_m2 的设置如下所示:

orangepi@orangepi:~$ sudo vim /boot/orangepiEnv.txt
overlays=pwm3-m2

我这里要用pwm13-m2。

sudo nano /boot/orangepiEnv.txt

在文件里面加上

overlays=pwm3-m2

然后重启!!!

2、配置频率,占空比,等参数

当打开一个 pwm 后,在/sys/class/pwm/中就会多出一个 pwmchipX(X 为具体的
的数字),比如打开 pwm13 后,查看/sys/class/pwm/下的 pwmchipX 会由两个变成了三个
在这里插入图片描述
之前只有pwmchip0 pwmchip1。
上面哪个 pwmchip 对应 pwm13呢,我们先查看下 ls /sys/class/pwm/ -l 命令的输出,如下所示:
在这里插入图片描述

  1. 然后由之前的表可知,pwm15 寄存器的基地址为 febf0010,再看 ls /sys/class/pwm/ -l
    命令的输出,可以看到 pwmchip2 中链接到了 febf0010.pwm,所以 pwm13 对应
    pwmchip 为 pwmchip2。

下面开始输出pwm,pwm时钟的频率为1000000000hz,也就是1ns。
我这里输出1000hz,我也想输出20khz让人耳听不见,但是看看这个mos的手册的导通时间就懂了,基本不太可能输出20khz。

输入下面第一行后 会生成一个pwm0的文件,后面就是在pwm0上面炒作了

echo 0 > /sys/class/pwm/pwmchip2/export
echo 1000000 > /sys/class/pwm/pwmchip2/pwm0/period/*设置频率1khz*/
echo 100000 > /sys/class/pwm/pwmchip2/pwm0/duty_cycle//占空比10%
echo 1 > /sys/class/pwm/pwmchip2/pwm0/enable//启动

他默认的极性是高电平,下面这行给他换成低电平
/sys/class/pwm/pwmchip2/pwm0# echo normal >polarity

应该用三极管的,三极管频率响应高
最后用chatgpt生成了一个脚本可以自由的调占空比10-100之前,占空比10以下有时候转有时候不转。0为不转
如图
在这里插入图片描述
脚本:

#!/bin/bash

PWM_PATH="/sys/class/pwm/pwmchip2/pwm0"

# 检查文件是否存在
if [ -e "$PWM_PATH" ]; then
    echo "PWM 文件已存在,无需导出"
else
    # 文件不存在,导出 PWM 通道
    echo 0 > /sys/class/pwm/pwmchip2/export
    sleep 1
    echo "normal" > /sys/class/pwm/pwmchip2/pwm0/polarity
    echo "PWM 通道已导出"
fi

# 通过命令行参数获取用户输入
user_input="$1"
temp=0
# 如果未提供参数,或者小于 10,将其设为默认值 10
if [ -z "$user_input" ] || [ "$user_input" -lt 10 ]; then
    temp=10
else
    temp="$user_input"
fi

# 如果输入为 0,则 var0;否则,计算 var 的值,并乘以 10
if [ "$user_input" -eq 0 ]; then
    temp=0
fi

var=$((temp * 10 * 10000))


# 设置 PWM 周期
echo 10000000 > "$PWM_PATH/period"

# 设置 PWM 占空比
echo $var > "$PWM_PATH/duty_cycle"

# 启用 PWM
echo 1 > "$PWM_PATH/enable"

echo "PWM 已配置,值为: $var"

<think>嗯,用户想了解如何在香橙上点亮MIPI屏幕。我需要先确认用户使用的具体型号,比如香橙Zero 2W还是其他型号,因为不同型号的配置可能不同。然后,用户提到的MIPI屏幕,需要知道是DSI接口的LCD屏,比如常见的5寸或7寸屏,不同屏幕的驱动可能不一样。 首先,硬件连接方面,要确保MIPI排线正确连接到香橙的DSI接口,注意方向不要插反。还要检查供电,有些屏幕需要额外供电,可能需要通过GPIO或USB供电。 接下来是软件配置。香橙通常使用Linux系统,比如Armbian或Orange Pi自己的镜像。需要确认内核是否支持对应的MIPI驱动,可能需要更新内核或配置设备树。用户可能需要修改dtb文件,启用DSI和对应的屏幕参数,比如分辨率、时序等。 然后,安装显示相关的软件,比如xserver-xorg、libdrm等。可能需要配置显示输出,指定使用MIPI屏幕为主显示器或扩展屏。如果使用Wayland,配置方式可能不同。 常见问题排查,比如检查连接是否稳固,是否有内核日志报错(dmesg),确认设备树是否正确加载,屏幕背光是否开启。有些屏幕需要加载特定的Overlay或模块。 最后,可能需要参考社区资源,比如香橙论坛或GitHub上的项目,有些用户可能已经分享了配置文件和步骤,直接应用可以节省时间。提醒用户注意型号匹配,避免配置错误导致无法启动。</think>好的,我将分步骤为您介绍如何点亮香橙(Orange Pi)的MIPI屏幕。以下是详细操作指南: --- ### **一、硬件准备** 1. **确认型号兼容性** - 香橙型号:需支持MIPI-DSI接口(如Orange Pi Zero 2W、Orange Pi 3 LTS等) - MIPI屏幕:需匹配开发板DSI接口协议(常见如5寸/7寸MIPI LCD屏) 2. **物理连接** - 使用MIPI排线连接开发板的DSI接口(注意防反插设计) - 部分屏幕需额外供电(通过GPIO或USB接口) --- ### **二、软件配置** #### **步骤1:系统镜像选择** - 推荐使用Armbian或Orange Pi官方Linux镜像(需包含MIPI驱动支持) - 下载地址:Orange Pi官网或Armbian社区 #### **步骤2:设备树配置** 1. 编辑设备树文件(.dts或.dtsi): ```bash sudo nano /boot/dtb/allwinner/overlay/sun50i-h6-mipi-dsi.dts ``` 2. 添加屏幕参数(示例): ```dts panel: panel { compatible = "panel-dsi"; reg = <0>; reset-gpios = <&pio 6 10 GPIO_ACTIVE_LOW>; // GPIO_PG10 backlight = <&pwm_bl>; width-mm = <68>; height-mm = <121>; // 屏幕时序参数需根据具体型号填写 }; ``` #### **步骤3:启用设备树覆盖** 1. 在`/boot/armbianEnv.txt`中添加: ```text overlays=mipi-dsi param_mipi_dsi=width=720,height=1280 ``` #### **步骤4:安装显示驱动** ```bash sudo apt update sudo apt install xserver-xorg-core libdrm2 libdrm-test ``` --- ### **三、测试与调试** 1. **检查设备识别** ```bash dmesg | grep -i dsi # 查看MIPI-DSI驱动加载情况 ``` 正常输出应包含类似: ```text [ 2.350000] dsi-phy: DSI PHY initialized ``` 2. **手动点亮测试** ```bash echo 1 > /sys/class/backlight/panel/brightness ``` --- ### **四、常见问题解决** | 问题现象 | 排查方法 | |--------------------------|-----------------------------------| | 屏幕无显示 | 检查排线接触、供电、设备树配置 | | 花屏/闪屏 | 核对时序参数(hbp/hfp/vbp/vfp) | | 系统无法启动 | 检查设备树语法错误 | --- ### **五、参考资源** 1. **官方文档** - Orange Pi Wiki: http://www.orangepi.org/html/hardWare/computerAndMicrocontrollers/details/Orange-Pi-Zero-2W.html 2. **社区案例** - GitHub开源项目:https://github.com/orangepi-xunlong/orangepi-build --- ### **注意事项** - 不同型号香橙GPIO引脚定义可能不同,需核对原理图 - MIPI屏幕的初始化代码(`init_sequence`)需根据屏幕手册编写 如有具体型号需求,请提供开发板和屏幕型号,可进一步提供定制化配置!
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值