找回密码
 立即注册

QQ登录

只需一步,快速开始

搜索
查看: 4384|回复: 12
收起左侧

DIY加湿器

[复制链接]
ID:377210 发表于 2021-6-5 14:52 | 显示全部楼层 |阅读模式
参考了这个贴:http://www.51hei.com/bbs/dpj-198071-1.html驱动电路一样,自己再稍微修改一下。

刚开始一直在想怎么固定雾化片,还有用什么容器。忽然看到桌子上的饮料瓶,把雾化片放进瓶盖,刚好卡紧。出雾量少或者不出雾还可以旋动瓶盖调整,简直完美

IMG_20210605_144149.jpg
IMG_20210605_144200.jpg
IMG_20210605_143145.jpg
IMG_20210605_143150.jpg
IMG_20210605_143230.jpg
IMG_20210605_143236.jpg
IMG_20210605_143413.jpg
IMG_20210605_143439.jpg

评分

参与人数 2黑币 +65 收起 理由
lyxxzrb + 15
admin + 50 共享资料的黑币奖励!

查看全部评分

回复

使用道具 举报

ID:377210 发表于 2021-6-5 14:57 | 显示全部楼层
雾化片位置打了点热熔胶,防止雾化片松动。5V供电,可以用移动电源供电。工作时主要发热的是电感,6*8的,估计有60℃吧,用大一号的电感温度应该会低很多
回复

使用道具 举报

ID:284488 发表于 2021-6-5 17:21 | 显示全部楼层
感谢楼主分享!楼主修改的部份可否分享下?
回复

使用道具 举报

ID:377210 发表于 2021-6-5 19:06 | 显示全部楼层
lon7085 发表于 2021-6-5 17:21
感谢楼主分享!楼主修改的部份可否分享下?

驱动部分一样的,修改部分增加了输入电压检测,因为用到移动电源。还有增加了一路输出,可以驱动水泵或者风扇,实际没有使用(用这个雾化片工作好久,一瓶水也没用多少)。
有时间的话,可以自己增加一个水量检测,水不够时就停止工作。
电路图在审核,迟一些上传。
回复

使用道具 举报

ID:377210 发表于 2021-6-5 19:20 | 显示全部楼层
代码如下,比较乱,请自行根据实际使用情况修改:
#include <STC8G.h>
#include <intrins.h>
#include<math.h>  
#define ulong unsigned long
#define uint unsigned int
#define uchar unsigned char
typedef unsigned char U8;
typedef unsigned int U16;
typedef unsigned long U32;
sfr INT_CLKO = 0x8f;   

sbit an1 =P3^0;     //按键1
sbit an2 =P3^1;     //按键2没有使用
sbit Y0  =P3^2;            //雾化片驱动
sbit Y1  =P3^3;            
sbit LED =P5^4;     //指示灯
sbit ADC_VIN=P5^5;  //输入电压检测

bit standby;
U16 num,num0,num1,*BGV,adcvref,adcvin;

void delay1ms()                //@24.000MHz
{
        unsigned char i, j;

        _nop_();
        i = 32;
        j = 40;
        do
        {
                while (--j);
        } while (--i);
}
void delay10ms()                //@24.000MHz
{
        unsigned char i, j, k;

        i = 2;
        j = 56;
        k = 172;
        do
        {
                do
                {
                        while (--k);
                } while (--j);
        } while (--i);
}
void init1()  //初始化
{
   P3M1=0x00;P3M0=0x0c;         //高阻,23推挽,01准双向口,开漏。
   P5M1=0x20;P5M0=0x10;         //5高阻,4推挽,准双向口,开漏。
   TMOD=0x11;
   TH0=(65536-40000)/256; TL0=(65536-40000)%256;
   TH1=(65536-50000)/256; TL1=(65536-50000)%256;  
   ET0=1;ET1=1;
   TR0=1;TR1=0;  

   BGV = (U16 code *)0x1ff7;        //内部基准电压 STC8G1K08/08A

   num=0;num0=0;num1=0;
   Y0=0;
   Y1=0;
   LED=1;  

   EA=1;         
}
U16 ADCRead() //读取内部基准电压
{
    U16 AD_Date=0;   // 10位AD转换值
    U8 Tmpe;       // 临时变量用于将AD转换出来的2个字节合成一个字节

        ADC_CONTR |= 0x40;         //开始AD转换  
        _nop_();_nop_();_nop_();
    while (!(ADC_CONTR & 0x20)); //查询 ADC 完成标志
    ADC_CONTR &= ~0x20; //清完成标志
    AD_Date = ADC_RES;                // 默认高字节高8位。
    AD_Date <<= 2;
    Tmpe = ADC_RESL;         // 默认低字节低2位。
    Tmpe &= 0x03;            // 屏蔽无关位
    AD_Date |= Tmpe;                // 高低字节拼接成一个10位数。
    return AD_Date;
}
void getadcref()  //内部基准电压
{
   U8 i;
   U16 vref;

   ADC_CONTR =0x80;         //打开AD电源
   delay10ms();         
   ADCTIM = 0x3f;
   ADCCFG = 0x0f;  //设置 ADC 时钟为系统时钟/2/16
   ADC_CONTR = 0x8f; //使能 ADC 模块,并选择第 15 通道

   ADCRead(); ADCRead(); //前两个数据丢弃
         for (i=0; i<16; i++)
              {vref += ADCRead();} //读取 16 次数据
     vref >>= 4; //取平均值
         adcvref = (U16)(1024L* *BGV / vref);         //计算 VCC 管脚电压,即电池电压   //注意,此电压的单位为毫伏(mV)
         ADC_CONTR &= 0x7f;          //关闭AD电源
}
U16 ADchange()  //AD转换
{
   U16 AD_Date=0;   // 10位AD转换值
   U8 Tmpe;       // 临时变量用于将AD转换出来的2个字节合成一个字节

   ADC_RES = 0;      //清除结果寄存器
   ADC_RESL = 0;      //清除结果寄存器
   ADC_CONTR = 0x85;
          TR0=0;
          TR1=0;
        ADC_CONTR |= 0x40;         //开始AD转换  //ADC_CONTR|=0x08;         //开始AD转换
        _nop_();_nop_();
    while (!(ADC_CONTR & 0x20)); //查询 ADC 完成标志
    ADC_CONTR &= ~0x20; //清完成标志
          TR0=1;
          TR1=1;
    AD_Date = ADC_RES;                // 默认高字节高8位。
    AD_Date <<= 2;
    Tmpe = ADC_RESL;         // 默认低字节低2位。
    Tmpe &= 0x03;            // 屏蔽无关位
    AD_Date |= Tmpe;                // 高低字节拼接成一个10位数。
    return AD_Date;
}
void adcscancal()   //AD转换结果计算
{
   U8 jj,yy;
   U16 adcxx=0,max,min,test[18];
   U32 tt=0;

   ADC_CONTR =0x80;  //打开AD电源
   delay1ms();         
   ADCTIM = 0x3f;
   ADCCFG = 0x0f;  //设置 ADC 时钟为系统时钟/2/16
            ADchange();ADchange();         //多次扫描,丢弃前两次取平均值
            for(jj=0;jj<18;jj++)
                {
                   test[jj]        = ADchange();
                   tt += test[jj];
                }
                max=min=test[0];
                for(yy=0;yy<18;yy++)
                {
                   if(min>test[yy]) min=test[yy];  //最小值
                   if(max<test[yy]) max=test[yy];  //最大值
                }
                adcxx=(tt-max-min)/16;        //取平均值
                adcvin=adcvref/1024.0*adcxx*11;

        ADC_CONTR &= 0x7f;          //关闭AD电源
}
void main()
{
   init1();
   getadcref();  //内部1.19V基准电压
   while(1)
   {
        if(an1==0){delay10ms();if(an1==0){standby=~standby;while(!an1);}}         //AN1按键检测
        if(adcvin>4500&&adcvin<5500&&standby==1) //输入电压在4.5~5.5V范围且standby为1时开始工作
        {
                 U8 jj;
                 jj++;
                 _nop_(); _nop_(); _nop_();
                 _nop_(); _nop_(); _nop_();         //频率微调:频率低了减少_nop_();频率高了增加 _nop_();
                 if(jj>2){jj=0;Y1=~Y1;Y0=~Y1;}
                 if(num0>25){num0=0;LED=~LED;}           //工作时指示灯以0.5秒间隔闪烁
        }
         else{Y0=0;Y1=0;LED=1;}        //standby为0时停止工作,指示灯常亮
   }  
}

void T0_time() interrupt 1         //T0
{
   TH0=(65536-40000)/256; TL0=(65536-40000)%256;         //20mS-24M         
   num0++;
   adcscancal();
}
void T1_time() interrupt 3         //T1
{
   TH1=(65536-50000)/256; TL1=(65536-50000)%256;        //25mS 24M
   num1++;
}

评分

参与人数 1黑币 +60 收起 理由
admin + 60 回帖助人的奖励!

查看全部评分

回复

使用道具 举报

ID:377210 发表于 2021-6-5 22:03 | 显示全部楼层
原理图
加湿器SCH.PNG
回复

使用道具 举报

ID:377210 发表于 2021-6-5 22:05 | 显示全部楼层
实际使用时R4焊接的是0.1uF的电容,R5阻值为100K。
回复

使用道具 举报

ID:143767 发表于 2021-6-6 10:23 | 显示全部楼层
不错,手持式超声波雾化美容也应该是这个原理
回复

使用道具 举报

ID:377210 发表于 2021-6-6 22:33 | 显示全部楼层
dj3365191 发表于 2021-6-6 10:23
不错,手持式超声波雾化美容也应该是这个原理

美容的是不是用这样的就不清楚了,小范围使用还可以,也可以用来做简易的湿度测试。200mL的水可以连续出雾12小时以上,500mL的水可以用一天了
回复

使用道具 举报

ID:230742 发表于 2021-6-8 02:46 | 显示全部楼层
淘宝里有一个大雾量的,24付的,一个电源板,一个控制板,才2元。
回复

使用道具 举报

ID:377210 发表于 2021-6-9 19:49 | 显示全部楼层
啤酒瓶子老大 发表于 2021-6-8 02:46
淘宝里有一个大雾量的,24付的,一个电源板,一个控制板,才2元。

我这个就是玩玩,性价比肯定没有公司批量生产的高
回复

使用道具 举报

ID:820198 发表于 2021-7-5 10:24 | 显示全部楼层
这个芯片怎么下载程序啊?直接用ch340可以下载吗
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

手机版|小黑屋|51黑电子论坛 |51黑电子论坛6群 QQ 管理员QQ:125739409;技术交流QQ群281945664

Powered by 单片机教程网

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