【沁恒RISC-V内核 CH582】定时器PWM 驱动舵机 https://bbs.eeworld.com.cn/thread-1197629-1-1.html
【沁恒RISC-V内核 CH582】CH582 用固态继电器控制取暖器发热管可行性 https://bbs.eeworld.com.cn/thread-1197474-1-1.html
【沁恒RISC-V内核 CH582】微信小程序控制点灯 https://bbs.eeworld.com.cn/thread-1197168-1-1.html
【沁恒RISC-V内核 CH582】BLE 点灯 https://bbs.eeworld.com.cn/thread-1195457-1-1.html
【前言】我评测准备的作品是制作一款手机APP控制取暖器的题目,经过一段时间的练习,包括CH582的PWM、定时器、蓝牙等的学习,还有微信小程序的制作,都是为今天的这个综合控制的做的铺垫。我的思路主要是:
1、CH582作为主控设备,启用定时器,500ms进一次中断,进行计数,5秒钟为一个控制电热丝加热的过程,在这个时间断里,固态继电器工作一次,这样保证继电器的寿命得到保障。
2、蓝牙监听手机APP的指令,接收到指领后更新加热的计数周期。
3、定时器中断里面根据加热计数周期,决定输出高低电平控制继电器的开关。
【主要步聚】
1、定时器0,根据定时器例程,我将就抄了例子,对定时器进行初始:
GPIOB_SetBits(GPIO_Pin_15); //开机设置低电平,以免误开电热管
GPIOB_ModeCfg(GPIO_Pin_15, GPIO_ModeOut_PP_20mA); //输出一定要选择20mA要不驱动不了继电器
TMR0_TimerInit(FREQ_SYS/2); // 设置定时时间500ms
TMR0_ITCfg(ENABLE, TMR0_3_IT_CYC_END); // 开启中断
PFIC_EnableIRQ(TMR0_IRQn);
2、定义几个函数,用来判断继电器的通断:
uint8_t thisHeartTime; //用于定时器计算当前时间
uint32_t heatingTime; //用于保存 APP发送过来的计数时间
#define allHeartTime 9 //用于来计算工作周期,0-9 刚好是5秒。
3、定时器中断函数
void TMR0_IRQHandler(void) // TMR0 定时中断
{
if(TMR0_GetITFlag(TMR0_3_IT_CYC_END))
{
TMR0_ClearITFlag(TMR0_3_IT_CYC_END); // 清除中断标志
//500ms进中断一次
GPIOB_InverseBits(GPIO_Pin_15);
if (heatingTime == 0) //0为APP发过来关的指令
{
GPIOB_ResetBits(GPIO_Pin_15);
}
else if(heatingTime == allHeartTime) //如果发过来的指令等计数周期,则为全开的指令
{
GPIOB_SetBits(GPIO_Pin_15);
}
//用周期时间减出当前时间,来决定是否开启继电器
else if ((allHeartTime - thisHeartTime)>= heatingTime) {
GPIOB_ResetBits(GPIO_Pin_15);
}
else {
GPIOB_SetBits(GPIO_Pin_15);
}
//计数器自增与周期归零
thisHeartTime ++;
if (thisHeartTime == allHeartTime) {
thisHeartTime = 0;
}
}
}
4、接收回调函数的处理:
static void simpleProfileChangeCB(uint8_t paramID, uint8_t *pValue, uint16_t len)
{
switch(paramID)
{
case SIMPLEPROFILE_CHAR1:
{
uint8_t newValue[SIMPLEPROFILE_CHAR1_LEN];
tmos_memcpy(newValue, pValue, len);
PRINT("profile ChangeCB CHAR1.. %s\n",newValue);
heatingTime = pValue[0]-'0'; //由于上位机发过来的是字符0-9,所以要减去‘0’
break;
}
5、继电器与开发板接线原理图:
6、开发板工作电源 :从某鱼上淘回来的220转5V的电源:
7、固态继续电器也是从某鱼淘回来的250V/10A。大约也就10元那样子。这个是最贵的一个零件了。
8、取暖器,早上准备拆自己的取暖器的,结果下楼寄快递时刚好捡到一个领居丢的取暖器。本来想是捡他的电源线用一下的,拆开来看,他用的MOS管开路了,电热丝还是好的,所以就拿他的来改装了。
9、手机APP,我设计了5档如下图:
电源接通后,开发板用220转5V的电源工作,给开发板通电。由于开机heatingTime初始化是0,所以继电器为关闭状态,这也就避免因为停电后,后面来电会自己开启。开机后手机搜索蓝牙,连接后就可以按1-3档,从低到高的温度,或者是全开。1-3档是加热一会关一会,全开是一直是通的。附件我上传的视频。
【思考】
1、差不多一个月对这款开发板的学习,从蓝牙、定时器、spi、USB的学习操作,感觉沁恒的产品非常容易操作的,RISC-V相比ARM操作要简单,只要有基础的,仔细阅读一下例程,基本上就可操作这款芯片。
2、对于制作遥控取暖器,我原来家里也是因为家里的取暖器经常会因为烧开关等丢掉了好多,就象今天我捡到的这个。还有就是取暖器放在桌子下面,操作也不是很方便,手伸下去,不一定一下就可以摸到开关,有些取暖器也就两档,有时要么太热,或者低一档又不够热。所以如果用蓝牙的APP来操控舒适性会相对好一些。再有用固态继电器来间接开关电热丝,优于用二极管来降低发热管的导通。
3、当然这个作品还需要继续改善,比如价格相对来说要比几块钱的开关或者MOS开关要贵,还有固态继电器的寿命还有待考证。
【下一步打算】
1、用NTC来实测环境温度,上报给手机APP,可以实时了解温度情况,以便更加精准的控制温度。
2、美化手机APP,界面看起来更美观。绑定设备后,可以打开小程序,自动连接蓝牙模块。减少手工搜索的步聚。
3、如果有支持画板的,能否自己打个板回来,这样作品就更加完美。
当然对这款开发板的评测还有很多需要去熟悉、掌握,只要有时间,再继续跟坛友分享。如有错误之处,还请各位网友热心的指出,以便我更进一步的成长。谢谢您!
引用: Jacktang 发表于 2022-3-25 07:44 固态继电器确实比几块钱的开关或者MOS开关贵,寿命应该也不如MOS电子开关,可能实现的功率会较大,各有优势 ...
我刚刚去看了一下双向可挂硅+光耦的成本确实便宜很多。
引用: freebsder 发表于 2022-3-25 22:01 你这个220->5感觉随时要boom的样子。
没事的,我用在其他的电器上工作一年了,还没有BOOM!
引用: freebsder 发表于 2022-3-25 22:01 你这个220->5感觉随时要boom的样子。
做工用料很杂实啦,应该是从其他板子上分割出来的,自己完还可以,商用肯定不行啦。
今天又捡到一个坏了取暖器,希望来个新的开发板来救活他!
引用: kit7828 发表于 2022-4-20 09:53 极致的成本啊
对呀,我原来用ESP32改装的取暖器,超经用,以前的取暖器,一年得换好几个。