查看: 1963|回复: 0

[原创] 【涂鸦TYDE3.0开发板试用体验】智慧鱼塘之水温自动控制

[复制链接]
  • TA的每日心情
    开心
    2019-7-8 08:48
  • 签到天数: 48 天

    连续签到: 1 天

    [LV.5]常住居民I

    发表于 2018-3-2 19:05:58 | 显示全部楼层 |阅读模式
    分享到:
    本帖最后由 airsky 于 2018-3-2 19:07 编辑

    今天使用涂鸦开发板为我的鱼缸增加了温度自动控制系统,以便在温度过低时自动增温
    首先采购了一些硅胶贴片式的加热片
    QQ截图20180302184948.jpg
    供电需要12V的,每片35W
    采用IRF520驱动供电
    QQ截图20180302185457.jpg
    水温采集采用不锈钢头的DS18B20传感器
    QQ截图20180302185652.jpg
    涂鸦模块连线示意图
    QQ截图20180302185529.jpg
    核心代码
    1. /*****************************************************************************
    2. 函数名称 : ds18b20_read
    3. 功能描述 : ds18b20温度读取
    4. 输入参数 : 无
    5. 返回参数 : 当前温度
    6. 使用说明 : 无
    7. *****************************************************************************/
    8. unsigned short ds18b20_read(void)
    9. {
    10. unsigned char TemperatureL,TemperatureH;
    11. unsigned int  Temperature;
    12. DisableINT();
    13. ResetDS18B20();
    14. DS18B20WriteByte(SkipROM);
    15. DS18B20WriteByte(ReadScratchpad);
    16. TemperatureL=DS18B20ReadByte();
    17. TemperatureH=DS18B20ReadByte();
    18. ResetDS18B20();
    19. EnableINT();
    20. if(TemperatureH & 0x80)
    21.   {
    22.   TemperatureH=(~TemperatureH) | 0x08;
    23.   TemperatureL=~TemperatureL+1;
    24.   if(TemperatureL==0)
    25.    TemperatureH+=1;
    26.   }
    27. TemperatureH=(TemperatureH<<4)+((TemperatureL&0xf0)>>4);
    28. TemperatureL=TempX_TAB[TemperatureL&0x0f];
    29. //bit0-bit7为小数位,bit8-bit14为整数位,bit15为正负位
    30. Temperature=TemperatureH;
    31. Temperature=(Temperature<<8) | TemperatureL;
    32. DS18B20StartConvert();
    33. return  Temperature;
    34. }
    复制代码

    1. /*****************************************************************************
    2. 函数名称 : GetTemp
    3. 功能描述 : 读取水温
    4. 输入参数 : 无
    5. 返回参数 : 无
    6. 使用说明 : 无
    7. *****************************************************************************/
    8. void GetTemp()
    9. {
    10. //获取水箱温度
    11.   uint8_t temperature;  
    12.   ds18b20_start();
    13.   temperature =  ds18b20_read();  
    14.   //温度低于20度,自动打开加热开关,超过25度关闭加热,借助LED2显示是否处于加热状态
    15.   if(temperature<20)
    16.     SW_HOT_ON();
    17.     LED2_ON();
    18.   if(temperature>25)
    19.     SW_HOT_OFF();
    20.     LED2_OFF();
    21.   //上报温度  
    22.   mcu_dp_value_update(DPID_SW_HOT,FlashBuffer.temperature);
    23.      
    24.   }
    25. }
    复制代码
    运行效果
    QQ截图20180302185544.jpg
    手机APP界面展示
    QQ截图20180302190522.jpg
    回复

    使用道具 举报

    您需要登录后才可以回帖 注册/登录

    本版积分规则



    手机版|小黑屋|与非网

    GMT+8, 2024-4-24 03:47 , Processed in 0.131401 second(s), 16 queries , MemCache On.

    ICP经营许可证 苏B2-20140176  苏ICP备14012660号-2   苏州灵动帧格网络科技有限公司 版权所有.

    苏公网安备 32059002001037号

    Powered by Discuz! X3.4

    Copyright © 2001-2024, Tencent Cloud.