嘉立创产业服务站群
发作品签到
专业版

CH32V003_简易3路独立温控风扇调速器

工程标签

687
0
0
4

简介

基于单片机CH32V003F4P6的一个菜鸡温控风扇调速器,里面还有一些小bug,还有提升空间,但基本不影响功能,我就懒得改了,有心的小伙伴可以自己再改进一下~

简介:基于单片机CH32V003F4P6的一个菜鸡温控风扇调速器,里面还有一些小bug,还有提升空间,但基本不影响功能,我就懒得改了,有心的小伙伴可以自己再改进一下~
开源新人首创挑战活动
复刻成本:3

开源协议

GPL 3.0

(未经作者授权,禁止转载)
创建时间:2024-12-23 02:18:03更新时间:2024-12-23 03:30:41

描述

项目整体介绍

基于单片机CH32V003F4P6的三路独立检测控制的温控风扇调速器,设计有开窗,可以埋铜加锡以适配部分暴力风扇。

项目已经打样焊接测试,有一些小bug,不影响正常使用,介意的话可以看bug详情解释部分,按需修改。打样成本应该在3块钱以下,需要的多也可以自己手动拼板多打几块(有点擦边,狗头保命)。

所有电容电阻的封装均为0805(除了DC输入滤波电容为1210,但可以不焊接),理论上可以直接焊接0603,小伙伴可以根据自己手头的物料自行选择,也可以重新绘制0603封装版本来画更小的PCB。

风扇和热敏电阻接口均为XH2.54插针,也适配2510的风扇插针,可以根据需要选择适当的风扇。DC输入为5.5-2.1mm接口。代码设计上热敏电阻是按照100K,3950的NTC电阻来设计的,如果用别的类型的热敏电阻,需要适当修改代码以及分压电阻的阻值,详情请看ADC采样部分介绍。

下载调试使用WCH_LINK的三线调试(玩沁恒单片机多一点的建议搞一个,挺方便),我直接用公线手动插在孔里下载,所以外壳没留插针接口,有需要可以自己再开窗。

项目配套有风扇调速器的3D外壳,使用立创EDA专业版自带的设计器设计,经过多次微调打样,目前效果不错,当然建模水平强大的小伙伴也欢迎自己修改适配更好看的外壳。

调速器尺寸33*27mm,如果使用2510插针会占据空间导致总体略微长一些,大约3-4mm左右。

目前设计温度与速度范围为20-80度一共八档,详细请看代码解释部分。

MCU部分及代码简介

MCU使用沁恒的CH32V003F4P6,主要是因为便宜,某宝大概8毛左右一片,为了项目通用性买了不少F4P6,引脚有不少浪费,但是F4P6和引脚少的版本价格差不多,所以就这样了。

内部程序通过TIM1定时采样ADC中断,中断间隔1ms,更新频率为1HZ,可以修改代码来增加频率。

PWM输出频率为25kHZ,符合风扇控制PWM频率标准,使用TIM2作为PWM输出控制器(理论上TIM2能同时控制以及输出4路,但是TIM2CH4与RESET引脚共用,我还没怎么研究怎么设置屏蔽RESET,而且也用不到这么多路,所以就设计为3路了)。

温度范围以及PWM逻辑:温度为20-80度一共8档,其中20度以下关闭风扇,20-30度转速15%,30-40度转速30%,依次类推,70-80度转速90%,80度以上为100%速度。需要注意,因为电路结构设计,PWM输出为高电平时,风扇的控制电平为低,所以单片机的PWM的占空比值为100%时,风扇应该是关闭状态(部分风扇在占空比最大的时候依然会低速旋转),而PWM的占空比值为0%时,风扇为慢速状态,修改代码逻辑时需要注意。

其它代码在附件中,基本都有注释,有疑问也可以在评论留言,我有空会解答。

ADC采样部分介绍

采样通过一个分压电阻以及一个XH2.54插针外接的热敏电阻来完成,原设计为100K3950NTC电阻,如果选用别的电阻,需要手动计算相应温度的电压,以及ADC值,来调整代码逻辑。

NTC热敏电阻的变化曲线如下:

根据曲线可以看出,如果温度变化范围选取的过于大,可能会导致在温度较高的时候,ADC的误差变大,因此应当尽量选取合适的温度范围。如果3路风扇所需要的温度范围均不一样,应当为每一路风扇都选择合适的分压电阻,并相应的修改代码逻辑,以提升控制效果。

分压电阻的选取和电阻在所选的温度区间内变化有关,为了尽量让温度采集的准确,应选取合适的分压电阻,使得热敏电阻在相应温度区间阻值变化所带来的ADC采样点的电压变化范围最大,以减少ADC采集精度对结果的影响(虽然分档控制不需要这么高的精度,但是我因为好奇推导了一下发现是可以算出来的,在此分享一下,对推导不感兴趣的小伙伴可以直接看结论,若有错误的地方欢迎指出,理论上只要分压电阻选的不要太大或者太小,对ADC的采样都不会有太大的影响)。

首先说出结论:假设热敏电阻在目标温度区间内的最小电阻为R,最大电阻为tR(t>1),则最佳分压电阻为,总电压变化为

接下来是推导过程(高中学过导数就能看懂):

采样电压的最大值为:,最小值为。(欧姆定律)

则电压变化量为:

其中除了分压电阻阻值为变量之外,其它量都在选取热敏电阻以及温度变化区间后为固定值,可以视为常量。为了使得电压变化量最大,则使得Δt的分母部分最小(因为变量都在分母),对其分母部分求导,求导变量为R分压电阻,可得:,由此可以看出,当R分压小于根号t倍的R热敏时,分母单调递减,反之单调递增,则最小值点为R分压等于根号下t倍的R热敏。代回可得,最大电压变化值为

 

BUG部分介绍

1、LED原设计有点过于亮了,可以串联个更大的电阻来避免这个问题

2、在插入调试插针3.3V的时候,12V的LED竟然也会亮,貌似AMS1117并不能防止倒灌,所以尽量不要同时接着DC电源和调试器,可能有烧坏的风险。

3、在焊接2510插针的时候,R7,R8,R9会把底座顶起来一些,导致容易焊歪,布局的时候没注意这事,只能新的版本里面再改了。

4、风扇输出1,2,3的位置和热敏电阻的位置顺序相反,布局的时候粗心了,代码里面顺序已经修改了能对应了,丝印还没更新,如果发现输出不正常的话可以先检查一下。

5、3D外壳设计目前是按照焊接2510插针后的长度来设计的,如果只焊接XH2.54插针,板子会在外壳里晃动,可以加一点热熔胶填充或者修改外壳尺寸来减少晃动。

后续发现别的bug也会更新。

 

最后附上测试视频以及代码,欢迎感兴趣的小伙伴指出问题,以及对本工程的改造升级。

设计图

未生成预览图,请在编辑器重新保存一次

BOM

暂无BOM

附件

序号文件名称下载次数
1
测试视频.mp4
12
2
CH32FAN_Temp_ADJ.zip
58
克隆工程
添加到专辑
0
0
分享
侵权投诉

评论

全部评论(1)
按时间排序|按热度排序
粉丝0|获赞0
相关工程
暂无相关工程

底部导航