加湿器-⾹薰机的设计⽅案(单⽚机程序+PCB)超声波震荡⽅式原理图
+PCB+源代码+详细设计说明
雾化器库使⽤说明
本⽂档为赛元提供的雾化器库的使⽤说明,雾化器库⽀持1.7M、2.4M和3M频率的雾化⽚,库提供了函数接⼝进⾏设置。其中1.7M雾化⽚适⽤于⼤功率加湿器(功率在15W以上),2.4M、3M雾化⽚适⽤于⼩功率的⾹薰机(功率在6-12W)。雾化器库提供了⾃动追频、功率设置、雾化⼯作、触控检⽔功能。库共提供了11个函数接⼝供⽤户调⽤,实现雾化器功能。
⼀、雾化器库介绍:
雾化器Atomizer⽂件夹中包含:
SC91F832_C.H MCU头⽂件
Atomizer.h 包含雾化器外部调⽤接⼝函数
SOC_Atomizer_lib_V1.3.LIB 雾化器库⽂件
实现雾化器⼯作需要占⽤⼀定的系统资源,雾化器库资源占⽤:
ROM:1.8K DATA: 50BYTE XDATA:60BYTE
定时器:定时器0
PWM: PWM1
ADC:两路ADC
EEPROM: 4byte
Touch Key: 两路
超声波加湿器的⼯作设计流程图
三、雾化器库函数接⼝和接⼝说明``
雾化器库共提供10个函数接⼝和3个全局变量:
变量:bit TrackFreqFlag; 变量说明:追频完成标志0:未完成;1:完成
变量:bit AjustPowerFlag; 变量说明:功率调整完成标志0:未完成;1:完成
变量:bit Water_flag; 变量说明:⽔位检测输出结果 0:缺⽔;1:有⽔
函数:bit SOCAPI_GetTrackFreqStaus(void);
函数功能:获取雾化器追频状态,返回1为已追频,0为未追频
函数:void SOCAPI_SetFreq(void) ;
函数功能:设置雾化器⼯作频率,当得到已追踪过频率可以调⽤该函数设置雾化器的频率
函数:void SOCAPI_Atomizer_Init(INT8U mode);
函数说明:雾化器初始化,设置PWM和定时器0;设置mode为0时雾化器的⼯作频率设置为1.7M;mode为1时为2.4M;mode为2时为3M
函数:void SOCAPI_TrackFreq_Init(void);
函数功能:雾化器追频初始化,设置了追频所需的变量,需要在追频前调⽤
函数:void SOCAPI_TrackFreq(void);
函数功能:雾化器追频,该函数需要在SOCAPI_TrackFreq_Init之后在主程序中⼀直调⽤,直到TrackFreqFlag变量置1,追频完成后进⼊功率调整
函数:void SOCAPI_AtomizerSetPower(INT8U Power);
函数功能:设置雾化器⼯作时最⼤档功率,1.7M:设置范围 15-21W;2.4M、3M:设置范围6-12W
函数:void SOCAPI_AdjustPower(void);
函数功能:进⾏功率调整,将最⼤档功率调制到设定功率,需要在SOCAPI_AtomizerSetPower之后调⽤
函数:void SOCAPI_AtomizerSetGear(INT8U Gear);
函数功能:设置档位,16档可调,0为低档,16为⾼档位,⽤户可以在当中选择任意档位作为⽬标功率
函数:void SOCAPI_AtomizerWork(void);
函数说明:雾化器雾化⼯作,该函数需要在主函数中⽆阻塞调⽤
函数: void SOCAPI_WaterLevelDetectorInit(INT16U Initial_Diff,int ThresholdTmp,INT8U Speed); 函数说明:⽔位检测初始化,设置⽔位检测参数
函数:void SOCAPI_WaterLevelDetector(void);
函数功能:⽔位检测,检测结果由Water_flag输出
四、雾化器库的具体使⽤
雾化器库使⽤准备: 雾化器的检⽔功能需要使⽤到Touch Key,赛元提供触控库帮助⽤户使⽤赛元的触控功能,具体使⽤见触控库的使⽤说明或者联系赛元的⼯程师,在项⽬⼯程中添加触控库;采集TK通道的数据,设置main.h中以下三个参数:
#define CH_INITIAL_DIFF 668
参数说明:检测通道与参考通道的初始⽐例,采样通道⽆⽔时RAWdata/参考通道RAWdata1000
#define WATERThresholdtmp 1300
参数说明:检测通道有⽆⽔差值0.6,如完全覆的差值为2166,则设置为1300。
#define WATERCHECK_SPEED 20
参数说明:⽔位检测的确认次数 ,取值范围10-249 ,确认时间为10*Nms
通过函数SOCAPI_WaterLevelDetectorInit()进⾏设置;
本软件库适⽤于赛元的SC91F831和SC91F832芯⽚,⽤户使⽤时需将Atomizer⽂件夹添加到项⽬⼯程中,并在KEIL项⽬中添加Atomizer⽂件夹中的SOC_Atomizer_lib_V1.3.LIB,
1、在⼯程主⽂件中调⽤雾化器库⽂件
#include “Atomizer\Atomizer.h” //包含雾化器外部调⽤接⼝函数
2、清除EEPROM空间
在主⽂件中加⼊INT8U code EE_Data[4]={0,0,0,0}; //清除EEPROM的空间
设置⼯程配置的BL51 Locate选项卡中的CODE为?CO?MAIN(0X1f00)
3、初始化雾化器⼯作
根据使⽤的雾化⽚频率调⽤函数SOCAPI_Atomizer_Init(0); 对雾化器进⾏初始化
4、⽔位检测初始化
调⽤以下函数对雾化器进⾏初始化,该函数需要在⽔位检测函数调⽤前进⾏设置
SOCAPI_WaterLevelDetectorInit(CH_INITIAL_DIFF,WATERThresholdtmp,WATERCHECK_SPEED);
5、查询是否追频
调⽤函数SOCAPI_GetTrackFreqStaus,返回是否已追踪过频率,若已追频则调⽤函数SOCAPI_SetFreq设置雾化器⼯作的频率,若未追踪过频率则进⾏追频
调⽤函数SOCAPI_AtomizerSetPower设置雾化器⼯作的最⼤档功率,建议加湿器设置为16-21W,⾹薰机设置为6-12W;设置雾化器的功率后调⽤SOCAPI_TrackFreq_Init()对追频进初始化;在主函数中⽆阻塞的调⽤函数SOCAPI_TrackFreq_Init直到TrackFreqFlag变量置1,追频完成后进⼊功率调整
7、功率调整
追频完成后将ADC切换到检测电流的ADC⼝,⽆阻塞调⽤函数 SOCAPI_AdjustPower进⾏功率调整,将最⼤档的功能调整到设定值;由于器件差异,调整后功率误差在正负1W左右;
8、雾化器雾化
在主函数中⽆阻塞的调⽤函数SOCAPI_AtomizerWork()进⾏雾化⼯作,切勿在追频和调整功率过程调⽤该函数
9、档位调整
在雾化器正常雾化过程可以调⽤函数SOCAPI_AtomizerSetGear进⾏设置档位,函数⽀持16吉档位设置,雾化器库将最⼤档均分成16级档位,⽤户可以根据所需的各档位功率选择合适的档位作为实际⼯作的档位。
10、检测⽔位
雾化器库已经在雾化时调⽤了⽔位检测函数,检测结果由Water_flag输出,若⽤户需要在雾化器不正常雾化下检⽔则需要在主函数中调⽤程序段:
if(SOCAPI_TouchKeyStatus&0x80) // Bit7:⼀轮按键扫描是否完成?
{
SOCAPI_TouchKeyStatus&=0x7f; // 清掉 Bit7:⼀轮扫描完成标志
TouchKeyScan(); // 数据算法处理后,读取键值
SOCAPI_WaterLevelDetector(); // ⽔位检测
TouchKeyRestart(); // 启动下⼀轮扫
}
若在使⽤中有任何的疑问请联系赛元的⼯程师!
B:操作步骤:
1、 输⼊电压: 交流220V\直流24V
2、 最⼤档功率: 约20W
3、 指⽰灯状态: 缺⽔: 红灯亮;
正常⼯作:绿灯亮
模式选择:红绿灯交替闪烁
追频: 绿灯闪烁
关机: 红绿灯灭
4、 功率档位: 0~16档可调,每档功率约为20W/16*档位,通过旋钮开关调节,逆时针拧为减⼩功率,顺时针拧为增加功率。
5、 关机:逆时针拧到尽头
6、 追频模式:关机进⼊开机状态时,红绿灯交替闪5秒钟,此为等待是否选择追频模式。5秒钟内由最⼩功率档位拧到最⼤功率档位,再拧到最⼩功率档位并停留在最⼩功率档位,此时会进⼊追频模式,追频过程中绿灯闪烁约5秒种,闪烁完成后绿灯亮进⼊正常⼯作模式。
7、 触控检⽔:检⽔弹⽚,检⽔弹⽚塞在⽔槽中间的圆柱内,当⽔量过低时,会检测到缺⽔状态并亮红灯,需要加⽔后重新开机再进⼊正常⼯作模式。
C:注意事项:
1、 更换雾化⽚后,需要重新追频;
2、 重新烧录程序后,需要重新追频;
3、 触控检⽔的接⼝接线由于是跳线,拆装时容易松动,注意必须要接上并良好接触,不能随意更换线;
⼆、 ⾹薰机样机:
A:图⽰如下:
1、 输⼊电压: 交流220V\直流24V
2、 最⼤档功率: 约10W
3、 指⽰灯状态: 缺⽔: 4个绿灯全亮;
开机: 最左的绿灯亮
减档: 第2个绿灯亮
加档: 第3个绿灯亮
关机: 全灭
追频: 4个绿灯全闪;
4、 功率档位: 0~4档可调,每档功率约为10W/4*档位,开机状态下按下第2个按键为减档,按下第3个按键为加档。
5、 开、关机:按下最左边第1个按键
6、 追频模式:同时按下第2个和第3个按键,进⼊追频模式
7、 触控检⽔:检⽔弹⽚,当⽔量过低时,会检测到缺⽔状态并4个绿灯全亮,加⽔后检测有⽔状态下会进⼊开机模式,此时为0档位
C:注意事项:
1、 更换雾化⽚后,需要重新追频;
2、 重新烧录程序后,需要重新追频;
超声波加湿器 设计参考源代码
/************************************************************
// Copyright © 苏州 GLORY
// ⽂件名称 : Atomizer.c
// 作者 :
// 模块功能 : ⾹薰机
// 局部函数列表:源代码大电影
//*************************************************************
#include “h\SC91F832_C.h”
#include “lib\SensorMethod.h” //包含touchkey外部调⽤接⼝函数
#include “h\data_type.h”
#include “Atomizer\Atomizer.h” //包含雾化器外部调⽤接⼝函数
//#define sif_debug
#ifdef sif_debug
#include “sif\sif_bus.h”
#endif
#define BS(SFR,NUM) (SFR|=(1<<NUM)) //清bit位
#define BC(SFR,NUM) (SFR&=~(1<<NUM)) //bit位置1
#define SET(SFR,NUM) (SFR = NUM)
//宏定义****//
#define WAITMODE 0 //等待模式
#define TRACKFREQ 1 //⾃动追频
#define STRATMODE 2 //⼯作模式
#define STOPMODE 3 //停机模式
#define MAXGEAR 4 //调整功率模式
#define ON 1
#define OFF 0
#define KEYCOUNT 5
#define FAN P36 //风扇
#define LED_COM P27
#define LED1 P35
#define LED2 P34
#define LED3 P32
#define LED4 P31
#define LED1SP (BS(P3CFG1,2),BC(P3CFG1,3))
#define LED2SP (BS(P3CFG1,0),BC(P3CFG1,1))
#define LED3SP (BS(P3CFG0,4),BC(P3CFG0,5))
#define LED4SP (BS(P3CFG0,2),BC(P3CFG0,3))
#define SET_LED_OUT LED1SP;LED2SP;LED3SP;LED4SP
#define KEY1 P35
#define KEY2 P32
#define KEY3 P34
#define KEY1MI (BC(P3CFG1,2),BC(P3CFG1,3),SET(P35,1))
#define KEY2MI (BC(P3CFG0,4),BC(P3CFG0,5),SET(P32,1))
#define KEY3MI (BC(P3CFG1,0),BC(P3CFG1,1),SET(P34,1))
#define SET_KEY_IN KEY1MI;KEY2MI;KEY3MI
INT8U code EE_Data[4]={0,0,0,0}; //清除EEPROM的空间
INT8U WorkMode,Power_Gear=0;
//⽔位检测********//
#define CH_INITIAL_DIFF 888
#define WATERThresholdtmp 800 //1300
#define WATERCHECK_SPEED 10 //⽔位检测的速度,确认次数 ,取值范围30-249 ,若10MS扫描⼀轮则确认时间为500ms
//全局变量********//
INT8U timer1msCount=0;
INT8U timer10msCnt=0;
INT8U timer100msCnt=0;
INT8U Key1Cnt=0;
INT8U Key2Cnt=0;
INT8U Key3Cnt=0;
INT8U KeyBuf=0;
bit LED1Flag=0;
bit LED2Flag=0;
bit LED3Flag=0;
bit LED4Flag=0;
bit btime100ms=0;
bit btimer10ms=0; //10ms标志
bit timer1msFlag=0;
bit Timer1sFlag=0;
bit KeyStaus=0;
bit openflag=0;
/**************************************************
函数名称:void StartWork(void)
函数功能:启动模式
⼊⼝参数:void
出⼝参数:void
/
void StartWork(void)
{
WDTCR |=0x10; // 清狗
if((Water_flag == 0))
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。
发表评论