
暖手宝宝&恒温水杯台
简介
冬天手冷吗(手动滑稽),因此我使用CW32L010单片机,结合PID温控和蓝牙控制,制作了一个小巧暖手宝&恒温水杯台(PCB,加热铝基板可以通过嘉立创领劵免费打样以及3D外壳设计工程文件均在工程内)
简介:冬天手冷吗(手动滑稽),因此我使用CW32L010单片机,结合PID温控和蓝牙控制,制作了一个小巧暖手宝&恒温水杯台(PCB,加热铝基板可以通过嘉立创领劵免费打样以及3D外壳设计工程文件均在工程内)开源协议
:GPL 3.0
描述
项目简介
冬天手冷吗(手动滑稽),因此我使用CW32L010单片机,结合PID温控和蓝牙控制,制作了一个小巧暖手宝&恒温水杯台
项目功能
本设计是基于CW32L010低功耗单片机设计暖手宝宝;设置有两个独立按键和蓝牙控制功能(如果不使用蓝牙功能可以不焊接),按键功能分别为切换界面、加/减,能实现PID自动温控,且根据人体低温烫伤温度区间将温度上限定额到43度,同时也可以通过蓝牙来控制目标温度加减和界面切换,并且可以通过蓝牙来切换屏幕旋转方向和接收单片机采样的数据,切换界面一共有五个,上电自动进入界面一,该界面显示单片机采集的各种数据和运行时间,通过模式切换按键来依次切换界面,界面二主要显示目标温度曲线和电池电压,界面界面三和四分别是控制目标温度加减界面,通过加/减按键来增大或者减小目标温度,界面五则是显示两个DS18B20温度值和调光界面,调光可以调节lcd屏幕的亮度;
更新功能:
增加了低电压关闭加热铝基板供电和屏幕低电压提示功能
屏幕主界面运行时间只显示铝基板正常运行时间,如果电池电压低于3.4V则会停止计时并且保持当前计时时间,当电池电压高于3.4V则继续计时并且恢复铝基板加热功能
项目参数冬天手冷吗(手动滑稽),因此我使用CW32L010单片机,结合PID温控和蓝牙控制,制作了一个小巧暖手宝&恒温水杯台
- 本设计采用IP2312U三元铁锂电池充电管理芯片,可以最高5V3A对设备进行15W快速充电,充电红灯,充满绿灯;
- 本设计采用0.96寸LCD彩色屏幕显示,使用五个界面来具体显示;
- 选用两个全数字型温度传感器DS18B20,具有较宽的温度测量范围,可以满足一般需求;
- 当设备蓝牙和手机连接后,板载绿灯亮起,断开连接绿灯熄灭;
- 使用TLV62569DBVR降压芯片把输入电压降为3.3V给单片机和周围用电模块供电,可提供2A大电流带载能力;
- 采用ams1117 ldo稳压精准的3.3V电压给单片机供电,从而使得单片机参考电压更加稳定,采样的电压数据更准确;
- 使用嘉立创的免费铝基板工艺免费打样了五块铝基加热板,加热效果很理想
- 采用FP6296XR升压芯片来将电池电压升压到12V给加热板铝基板供电加热
- 采用INA199A1电流采样芯片配合电压采样来估算设备运行时候功率大小,直观感受pid温控过程;
- 屏幕采样驱动芯片为st7735的0.96寸 lcd 8pin插接长排线屏幕,使用驱动芯片为st7735s的程序也支持,但是需要更改一下,我会将两份源码放到压缩包,解决购买错屏幕导致反色和偏移问题(购买链接:https://e.tb.cn/h.Tk5TCYcvctoIEEW?tk=mrauedDgjdp)
本次更新增加了3D打印外壳,在PCB工程里面,目前已验证
软件代码
//用于初始化pid参数的函数
void PID_Init(PID *pid, float p, float i, float d, float maxI, float maxOut)
{
pid->kp = p;
pid->ki = i;
pid->kd = d;
pid->maxIntegral = maxI;
pid->maxOutput = maxOut;
}
//进行一次pid计算
//参数为(pid结构体,目标值,反馈值),计算结果放在pid结构体的output成员中
void PID_Calc(PID *pid, float reference, float feedback)
{
//更新数据
pid->lastError = pid->error; //将旧error存起来
pid->error = reference - feedback; //计算新error
//计算微分
float dout = (pid->error - pid->lastError) * pid->kd;
//计算比例
float pout = pid->error * pid->kp;
//计算积分
pid->integral += pid->error * pid->ki;
//积分限幅
if(pid->integral > pid->maxIntegral) pid->integral = pid->maxIntegral;
else if(pid->integral < -pid->maxIntegral) pid->integral = -pid->maxIntegral;
//计算输出
if(reference>(feedback-1)) ////测量值距离目标值较远时只使用PD控制
{
pid->output = pout+dout;
}
if(reference<(feedback-1)) ////测量值距离目标值非常近时加入积分控制
{
pid->output = pout+dout + pid->integral;
}
// pid->output = pout+dout + pid->integral;
//输出限幅
if(pid->output > pid->maxOutput) pid->output = pid->maxOutput;
else if(pid->output < -pid->maxOutput) pid->output = -pid->maxOutput;
}
这是代码中一部分,也是PID温控核心代码。
注意事项
*注意点
- 修改后PCB增加一个拨动开关用于单面加热和双面加热开关控制
- 支撑用塑料支撑,开孔大小是M3孔,4个长度21mm的的六角尼龙单通塑料柱和4个长度8mm的双通六角塑料尼龙柱,以及8个长度8mm的M3螺栓
- 需要将两个ds18b20温度传感器分别固定到上下两块加热铝基板丝印面
实物图
图1:开机界面
图2:切换界面一
图3:切换界面二
图4:切换界面三,按下加/减按键会增加设定温度
图5:切换界面四,按下加/减按键会减小设定温度
图8:连接上蓝牙的主界面浅蓝色分割线变绿,此时板载绿灯亮起
图9:低电压主界面分割线变成红色
图10:手机蓝牙APP进行控制
烧录方法有两种
1.一种就是使用KEIL5软件进行编译使用DAPLINK/STLINK等烧录器从板子上的烧录口SDO,SCLK,GND(连接三根线就行了,此时需要将右边开关拨到最右侧才能烧录,切记),同市面上ARM单片机烧录工程一样
2.另外一种则是使用官方的烧录软件通过KEIL5编译生成的hex文件将程序烧录到设备中,丢一个链接,该链接有使用CH340和官方软件进行程序烧录
https://makerworld.com/zh/models/782870#profileId-720190
使用反馈:使用单片铝基板加热功率大概35W左右,可以插充电器(比如小米充电器),电路设计了取电自动切换电路,没有充电时候采用电池供电,充电时候使用输入的充电器供电,如果串联功率会较低,因为铝基加热板内阻增大,根据Q-I^2RT可知电流越小发热率越低,单面加热时候功率大概有35W,双面加热功率大概有20W,初代板子问题目前已经解决,打样验证成功
设计图

BOM


评论