[原创]
【涂鸦TYDE3.0开发板试用体验】智慧鱼塘之水温自动控制
物联网
2555 人阅读
|
0 人回复
|
2018-03-02
TA的每日心情 | 开心 2019-7-8 08:48 |
|---|
签到天数: 48 天 连续签到: 1 天 [LV.5]常住居民I
进士
- 积分
- 1213
|
本帖最后由 airsky 于 2018-3-2 19:07 编辑
今天使用涂鸦开发板为我的鱼缸增加了温度自动控制系统,以便在温度过低时自动增温
首先采购了一些硅胶贴片式的加热片
供电需要12V的,每片35W
采用IRF520驱动供电
水温采集采用不锈钢头的DS18B20传感器
涂鸦模块连线示意图
核心代码- /*****************************************************************************
- 函数名称 : ds18b20_read
- 功能描述 : ds18b20温度读取
- 输入参数 : 无
- 返回参数 : 当前温度
- 使用说明 : 无
- *****************************************************************************/
- unsigned short ds18b20_read(void)
- {
- unsigned char TemperatureL,TemperatureH;
- unsigned int Temperature;
- DisableINT();
- ResetDS18B20();
- DS18B20WriteByte(SkipROM);
- DS18B20WriteByte(ReadScratchpad);
- TemperatureL=DS18B20ReadByte();
- TemperatureH=DS18B20ReadByte();
- ResetDS18B20();
- EnableINT();
- if(TemperatureH & 0x80)
- {
- TemperatureH=(~TemperatureH) | 0x08;
- TemperatureL=~TemperatureL+1;
- if(TemperatureL==0)
- TemperatureH+=1;
- }
- TemperatureH=(TemperatureH<<4)+((TemperatureL&0xf0)>>4);
- TemperatureL=TempX_TAB[TemperatureL&0x0f];
- //bit0-bit7为小数位,bit8-bit14为整数位,bit15为正负位
- Temperature=TemperatureH;
- Temperature=(Temperature<<8) | TemperatureL;
- DS18B20StartConvert();
- return Temperature;
- }
复制代码
- /*****************************************************************************
- 函数名称 : GetTemp
- 功能描述 : 读取水温
- 输入参数 : 无
- 返回参数 : 无
- 使用说明 : 无
- *****************************************************************************/
- void GetTemp()
- {
- //获取水箱温度
- uint8_t temperature;
- ds18b20_start();
- temperature = ds18b20_read();
- //温度低于20度,自动打开加热开关,超过25度关闭加热,借助LED2显示是否处于加热状态
- if(temperature<20)
- SW_HOT_ON();
- LED2_ON();
- if(temperature>25)
- SW_HOT_OFF();
- LED2_OFF();
- //上报温度
- mcu_dp_value_update(DPID_SW_HOT,FlashBuffer.temperature);
-
- }
- }
复制代码 运行效果
手机APP界面展示
|
|
|
|
|
|
|
|
|