切换到宽版
  • 45777阅读
  • 214回复

[家电]无刷直流外转子风扇制作过程 [复制链接]

上一主题 下一主题
离线guansm
 

发帖
507
M币
5662
专家
14
粉丝
93
— 本帖被 發騷友 设置为精华,作者+3000M币+5专家(2018-04-10) —
清明放假三天,奈何单身汪一个,没有地方可以去浪、于是整理最近弄的外转子风扇控制板。由于个人文案能力有限,各位将就看看,若有独到见解,望不吝赐教!



距离上次用硬件搭建的PWM发生器已经有大半年了,在这期间风扇使用使用没有什么大的问题,但是还是有一些小问题影响使用体验:
1.该控制器没有硬件开关,每次使用完后都要拔掉电源适配器,有点麻烦;
2.该控制器采用可调电阻设定一个固定电平与运放产生的三角波做比较,从而产生可调PWM信号,可调电阻最小旋转刻度决定PWM信号的精度。由于我用的可调电阻精度比较高,量程比较大(从0%到100%要旋转10圈),每次都要转半天才能调到我需要的风扇转速,并且每次都是来回调速,不能越变,调速不灵活,比较影响体验。
3.由于调速电阻绑在床头固定位置,在半夜睡冷后都要迷迷糊糊摸过去调小风扇转速,影响睡眠质量。

这是上次折腾的帖子:
http://bbs.mydigit.cn/read.php?tid=2135337
俗话说懒堕使人进步,针对这版控制器硬件出现的影响体验问题,对于稍有强迫症的单身狗来说不能忍。于是开始这次的折腾之旅。

目录
硬件搭建
物料选型
画板制样
样板焊接
程序调试
成品展示
成本核算
后记

硬件搭建

针对上版硬件发生PWM控制板调速不灵活的问题,这次要用单片机解决,单片机采用编程方式能很灵活调整发出去的PWM信号,风扇调速方便,并且还可以加入OLED显示屏,方便显示当前PWM占空比数值。另外,调速采用旋转编码开关来控制,这样调速步进可以自己设置。还有这次要加上红外遥控的功能,用遥控器控制器风扇调速关机,不用半夜摸起来调小风扇转速,比较灵活方便。
那好吧,硬件框架就这么确定了。


物料选型

1、单片机选型
本着够用就好的原则,单片机采用8位的STC15F104W。该单片机基于51内核,寄存器不多,容易理解。该单片机采用5v供电,有6个IO,基本能满足需求。
具体参数如下。






2、旋转编码开关选型
编码器选型没什么重要的要求,一般旋转360°输出20或30个脉冲都行,另外,编码开关需要带按钮开关功能,方便实现开停机功能。
(插入编码开关图片与原理图)



3、红外接收头选型
红外接收头选用38k载波的,型号是HS0038BD。




4、OLED屏选型
OLED屏选用0.96英寸的IIC通信屏就可以了。





画板制样

物料选型好了以后就画出相关器件原理图logic,核实后转换成layout,再发外打样。
初次画的原理图如下:




额,感觉好像少了点什么。。。。
对了,红外接收头部分都没有画上去。好吧,再从新加上去。。。。。
咦,怎么单片机没有空余的IO口了????
好吧,原来是我选单片机的时候没有数清楚需要用到的IO口数量,导致少算了一个IO口。其实我计划是旋转编码器用掉两个IO,OLED屏IIC通信用掉两个IO,红外接收头用掉一个IO,单片机输出PWM信号用掉一个IO口,刚好6个IO口够用。忘记算旋转编码开关需要用到三个IO口,导致欠一个IO口。
好吧,IO口不够怎么办???旋转编码开关只能用两个IO,不用开关功能???还是不用OLED屏显示功能???还是换单片机型号,改用多引脚单片机???
后来想了一下,还是将IO口复用,将红外接收头信号和旋转编码开关按钮信号共用一个IO口,然后用程序识别。

修改后原理图如下:
(截图分辨率有点低,大家将就看看就好了)




原理图画好后把PCB板画出来,检查没有问题就发外做样了。

PCB板尺寸为62mm*32mm

PCB样品打回来了。






样板焊接

拿到样板后简单检查一下PCB板质量,没有大问题后把元器件都焊上去。

渣渣焊工,别介意(表情)





与旧版控制器比较



go on
[ 此帖被guansm在2018-04-10 22:57重新编辑 ]
本文内容包含图片或附件,获取更多资讯,请 登录 后查看;或者 注册 成为会员获得更多权限
本帖最近打赏记录:共24条打赏M币+450专家+3
zzy_85569381 M币 +11 謝謝分享 08-29
much3721 M币 +30 原創內容 谢谢分享,搞一套试试 07-25
heweikeng M币 +30 从0开始,绝对牛人 07-04
toopoo M币 +30 原創內容 06-14
arexing M币 +30 - 04-28
风间尘 M币 +9 謝謝分享 04-16
吴鹏930 M币 +3 優秀文章 04-13
benten163 M币 +8 謝謝分享 04-12
msi12 M币 +20 認真發帖 04-12
小河冰 M币 +8 優秀文章 04-11
离线guansm

发帖
507
M币
5662
专家
14
粉丝
93
只看该作者 1楼 发表于: 04-07
其实在程序调试这部分没必要写出来,因为懂的人不会看,不懂的人也看不懂。后来想想,还是贴出来吧,毕竟是自己一步一步调出来的,还是有点价值的。
(程序调试部分有兴趣的同学可以看看,大神自动忽略哈)

程序调试

程序调试真是一个大挑战,对于我这种编程门外汉来说。不过控制板都焊好了,现在放弃有点亏额。那好吧,那就一边摸索一边弄吧。将程序分解,一步步来应该能将功能实现的。。。
从做软件的角度来说,需要考虑一些问题?
1、第一步,这个控制板有什么用,要实现什么功能?原理是什么?
这个控制板原理主要是控制外转子风扇驱动,通过调节转速占空比从而改变外转风扇转速。
那说白了就是控制占空比信号。
由于这个单片机没有PWM模块。只能通过定时器中断来产生PWM波,虽然精度低一点,应该能满足控制要求。

相关程序参考STC例程。

/*---------------------------------------------------------------------*/
/* --- STC MCU Limited------------------------------------------------*/
/* --- STC15F4K60S4 系列 定时器软件模拟PWM举例-------------------------*/
/* --- Mobile: (86)13922805190----------------------------------------*/
/* --- Fax:86-0513-55012956,55012947,55012969 ------------------------*/
/* --- Tel:86-0513-55012928,55012929,55012966-------------------------*/
/* --- Web: www.STCMCU.com--------------------------------------------*/
/* --- Web: www.GXWMCU.com --------------------------------------------*/
/* 如果要在程序中使用此代码,请在程序中注明使用了STC的资料及程序        */
/* 如果要在文章中应用此代码,请在文章中注明使用了STC的资料及程序        */
/*---------------------------------------------------------------------*/

//本示例在Keil开发环境下请选择Intel的8058芯片型号进行编译
//若无特别说明,工作频率一般为11.0592MHz


#include "reg51.h"

//#define PWM6BIT   64              //6-bit PWM 周期数
#define PWM8BIT     256             //8-bit PWM 周期数
//#define PWM10BIT  1024            //10-bit PWM 周期数
//#define PWM16BIT  65536           //16-bit PWM 周期数

#define HIGHDUTY 64                 //高电平周期数(占空比64/256=25%)
#define LOWDUTY  (PWM8BIT-HIGHDUTY) //低电平周期数

sfr P0M1 = 0x93;
sfr P0M0 = 0x94;
sfr P1M1 = 0x91;
sfr P1M0 = 0x92;
sfr P2M1 = 0x95;
sfr P2M0 = 0x96;
sfr P3M1 = 0xb1;
sfr P3M0 = 0xb2;
sfr P4M1 = 0xb3;
sfr P4M0 = 0xb4;
sfr P5M1 = 0xC9;
sfr P5M0 = 0xCA;
sfr P6M1 = 0xCB;
sfr P6M0 = 0xCC;
sfr P7M1 = 0xE1;
sfr P7M0 = 0xE2;

sfr AUXR      = 0x8e;               //辅助寄存器
sfr INT_CLKO  = 0x8f;               //时钟输出控制寄存器
sbit T0CLKO   = P3^5;               //定时器0的时钟输出口

bit flag;

//定时器0中断服务程序
void tm0() interrupt 1
{
   flag = !flag;                   //反转PWM的输出标志
   if (flag)
    {
       TL0 = (65536-HIGHDUTY);     //准备高电平的重载值
       TH0 = (65536-HIGHDUTY) >> 8;
    }
   else
    {
       TL0 = (65536-LOWDUTY);      //准备低电平的重载值
       TH0 = (65536-LOWDUTY) >> 8;
    }
}

void main()
{
   P0M0 = 0x00;
   P0M1 = 0x00;
   P1M0 = 0x00;
   P1M1 = 0x00;
   P2M0 = 0x00;
   P2M1 = 0x00;
   P3M0 = 0x00;
   P3M1 = 0x00;
   P4M0 = 0x00;
   P4M1 = 0x00;
   P5M0 = 0x00;
   P5M1 = 0x00;
   P6M0 = 0x00;
   P6M1 = 0x00;
   P7M0 = 0x00;
   P7M1 = 0x00;

   AUXR = 0x80;                    //定时器0为1T模式
   INT_CLKO = 0x01;                //使能定时器0的时钟输出功能
   TMOD &= 0xf0;                  //设置定时器0为模式0(16位自动重装载)
   TL0 = (65536-LOWDUTY);          //初始化定时器初值和重装值
   TH0 = (65536-LOWDUTY) >> 8;
   T0CLKO = 1;                     //初始化时钟输出脚(软PWM口)
   flag = 0;                       //初始化标志位
   TR0 = 1;                        //定时器0开始计时
   ET0 = 1;                        //使能定时器0中断
   EA = 1;
   while (1);
}

程序说明:
这个程序主要通过进入定时器中断后来回给定时器T0赋值,就能产生占空比一定的PWM波。
所以结合这段例程,要产生可调PWM波只需要调节HIGHDUTY的值就行了,输出频率应该改PWM8BIT值。
有这个方向后自己研究应该能实现PWM波输出。


2、这个控制板输入信号是什么,怎么处理?
这块控制板输入信号有旋钮编码开关输入和红外信号输入。

1>  编码开关原理
常用的旋转编码开关有3个输出端子,如果A下跳沿时,B为低则表示顺时针旋转;如果A下跳沿时,B为高电平则表示逆时针旋转。与CPU的连接方法:将A端口接CPU的外部中断管脚(下跳沿触发),将B端口接CPU的输入IO。


关于编码开关转向识别问题,网上例程非常多。这里我贴出我自己写的程序:


程序说明:
编码开关转向识别我这里写的比较简单,用外部中断int0和int2来实现,int0和int2上升沿和下降沿都能触发中断,当int0先触发,当两个信号都达到一致的时候, 编码开关正转,反之,int2先触发,当两个信号都达到一致的时候, 编码开关反转。这段程序没有考虑软件消抖的问题,消抖用硬件解决。

2>  红外遥控原理
红外遥控器是利用一个红外发光二极管,以红外光为载体来将按键信息传递给接收端的设备,目前通常采用的编码格式是NEC编码格式,NEC编码信号前面包括引导吗和用户码。引导码格式是:9ms 的载波+4.5ms 的空闲。用户码格式由比特值“0”: 560us 的载波+560us 的空和比特值“1”: 560us 的载波+1.68ms 的空闲组成。


红外识别程序网上也挺多的。这里贴出我自己写的程序



程序说明:
这段程序主要是将红外接收头发过来的信号进行处理,并解析出字节存到数组里面。

好吧,实在是写不下去了。。。。。。

附上程序调试完后PWM波形






成品展示

终于到这步了-----居然有美帝的logo,这是什么硅       M!dea









视频稍后补上。。。。。。。


卤族。怎么占空比字体显示这么小,能不能弄大一点。
这个主要是这个单片机只有4K flash,目前程序已经占了99%。没有空间咯
若是真的要弄,把美帝logo去掉,应该能空出2K空间。






该风扇运行是功耗情况如下(我采用的是光猫12v1a电源供电)

占空比待机10%15%20%25%30%35%40%45%50%55%60%65%70%75%80%
功耗(w)1.11.71.92.12.22.42.73.13.53.94.55.15.978.310.1







成本核算

是时候来算一下物料成本了
nidec无刷直流外转字子电机(15.8元淘宝货)+控制板(25 元)+扇叶(10元包邮)+电源适配器(借用光猫路由器适配器)+遥控器(手机红外遥控或空调遥控器) =  50.8元

只要50.8元你就能体验到高大上的直流变频风扇了。当然了,你要会弄支架才行。。。
优点:高效节能、无极调速、舒适方便、无线遥控。
我不敢说媲美小米巴慕达之类,但我感觉我这套控制板能达到其90%的体验,完爆300块钱 以下落地扇。
相对小米699价格来说,我敢说其物料成本不超100。
至于卖这么贵,可能工业设计算一方面,另外,我感觉更多的是品牌溢价和运营成本及高额的利润。
直流变频风扇真的没有什么技术含量。根本卖不到这么贵!!!
所以我感觉我弄这个控制板也是推动直流变频风扇普及。
想起街边卖的交流小夹扇都要30来块钱,我这个50.8元的直流变频风扇真心不贵。。。
所以这套控制板性价比真的很高很高。。。


控制板参数

1、控制板采用12v-24v直流电源供电。可以使用路由器光猫电源或笔记本电源适配器供电。
2、控制板能发出10KHz占空比可调的PWM波。
3、控制板能设别大力空调遥控器信号,能通过遥控信号调整PWM占空比(范围是5%-95%)。并且实现开关机。
4、通过旋转编码开关可以实现PWM信号占空比调节,步进是2%。按下按钮实现开关机。
5、OLED屏能显示当前转速占空比。
6、上电后控制器输出高电平(默认5V可设置其它值),当按下开关后才输出PWM信号。(反向功能,主要是电机那边高电平停止,低电平最高转速运行)
7、该控制板能记录上次停电时刻的占空比,再次上电后按下开关能按上次占空比运行。

该控制板一般都能兼容低压外转子电机调速。比如这些
(可能PWM相位会有异常(反相),可能会导致上电电机就启动,增大占空比电机转速减小等情况。这个可以通过改一下软件就能解决)




后记

这控制板基本完成了,从硬件搭建到后面的程序调试前前后后花了大概两个月时间。这应该是外转子直流风扇控制板折腾的终点了。程序方面基本没有什么大问题,需要做的就是OLED显示页面的优化,和加入定时关机功能。

另外,感谢大家能看到这里!!!!

给大家发一下福利(广告)。如果你觉得这个控制器不错,能用的上,我免费送PCB光板(主要是前期申购PCB样板太多,存在浪费),你这边要具备焊接能力及有相关物料就行,可以留言我免费送,邮费自负;(主要是该控制板小贴片太多,一个人焊很累,忙不过来,要不然真的像上次那样焊好了再送)
如果你觉得你没有焊接能力及物料,但是需要这个控制板,我可以给你焊板,25块钱一块(包含焊接辛苦费,望理解)。两块起广东省内包邮,省外加10块钱邮费。量大从优。
甚至你觉得这个可以推广,咱们都可以合作,我这边有生产所有资料(包括控制板原理图及PCB板及源程序)。

源代码及gerber:
http://bbs.mydigit.cn/read.php?tid=2456128

next
本文内容包含图片或附件,获取更多资讯,请 登录 后查看;或者 注册 成为会员获得更多权限
本帖最近打赏记录:共30条打赏M币+410专家+1
w19119 M币 +15 - 08-26
h-bbs M币 +1 - 07-04
mitcher M币 +1 優秀文章 05-29
suchuyimo M币 +15 真的很棒~~ 05-29
astorlia M币 +30 原創內容 05-13
arexing M币 +30 - 04-28
ht0ht M币 +30 原創內容 04-18
用心梁苦 M币 +30 優秀文章,感谢分享 04-17
风间尘 M币 +9 謝謝分享 04-16
simmegz M币 +3 優秀文章 04-15
离线guansm

发帖
507
M币
5662
专家
14
粉丝
93
只看该作者 2楼 发表于: 04-07
视频:http://v.youku.com/v_show/id_XMzUyMTM1NjM0NA==.html?spm=a2hzp.8244740.0.0


还是那句话,我再厚着脸皮说一次。。。
如果你有M,觉得这个帖子写的还行。麻烦鼓励一下,谢谢!!!
如果没人我下次在来!!!

有需要控制板的同学可以加一下我的vx 吧 方便联系!
18163204675
加完vx后需要说明的情况如下问题。
1、要光板还是焊好的板
2、数量
3、收货地址联系人(邮费按实际收取)
4、是否需要带OLED版本的程序
PS:若是要空板,我这边给你将单片机焊上去,烧好程序!免得你们再找烧录工具。至于单片机价格按1.2元一个收吧



源代码及gerber:
http://bbs.mydigit.cn/read.php?tid=2456128
本帖最近打赏记录:共40条打赏M币+348专家+3
anger_liu M币 +8 優秀文章 08-05
limu8333308 M币 +8 - 07-24
wska M币 +13 謝謝分享 07-23
luwuqing M币 +1 - 07-15
mzzmd M币 +22 原創內容+++++ 06-28
390376626 M币 +1 对于技术差的来说,还是卖模块我们组装比较好。。。 06-18
ha2ying M币 +5 優秀文章 06-06
mitcher M币 +1 没有足够的评分能力。怨我 05-29
veryzn M币 +1 優秀文章 05-15
卑鄙马维尔 M币 +8 支架可以找报废的风扇改装嘛,线路板不知道还有吗? 04-20
离线tttlm

发帖
973
M币
1184
专家
1
粉丝
29
只看该作者 3楼 发表于: 04-07
会单片机的都是高手

楼主留言:

囧事。技术一般般

新手学习中…
离线lhp61549

发帖
75
M币
-299
专家
0
粉丝
2
只看该作者 4楼 发表于: 04-07
多谢楼主分享经验!!!!
离线af5498

发帖
3488
M币
3319
专家
7
粉丝
81
只看该作者 5楼 发表于: 04-07
我是来看看有什么福利的

楼主留言:

没有福利,广告就有,哈哈

离线1591208937

发帖
1100
M币
1900
专家
1
粉丝
113
只看该作者 6楼 发表于: 04-07
有多余的板子出售吗
离线毁灭者e5

发帖
1019
M币
209
专家
3
粉丝
34
只看该作者 7楼 发表于: 04-07
哪家做的 3天到手

楼主留言:

这三天只是整理一下资料,

离线pctao

发帖
1476
M币
1674
专家
1
粉丝
25
只看该作者 8楼 发表于: 04-07
有多余的板子出售吗,有的话来二片
离线皮卡皮

发帖
724
M币
1140
专家
4
粉丝
10
只看该作者 9楼 发表于: 04-07
看起来很高级的样子