基于AVR64DD32的恒温自动控制系统
基于AVR64DD32的恒温自动控制系统基于AVR64DD32的恒温自动控制系统
标签
嵌入式系统
Funpack活动
显示
接口
llka
更新2023-04-25
中国计量大学
506

在本次活动中,我选择的是基于AVR64DD32单片机的恒温自动控制系统。

项目简介

IO扩展板上有一处加温电阻,将加热区域用物体(纸巾等)包裹起来,通过电流给电阻加热,并通过温度传感器感知板上温度的变化,测温以及在LCD屏上的温度显示。
要求:使用按键设定目标温度,并且通过程序控制加热功率,使得温度尽快尽量稳定的维持在目标温度。温度偏离设定温度±3°C彩灯变为红色。(注意,加热电阻满占空比开启后温度较高)

实现思路

首先熟悉本任务中的各个模块:

主控单元:AVR64DD32,Microchip公司近期推出的高性能24MHz,丰富片上外设的8位单片机。
温度传感器:NST112,纳芯微电子推出一款低功耗高精度数字温度传感器。适用于负温度系数和正温度系数热敏电阻的替换。NST112具有可兼容I2C和SMBus的接口,可通过I2C总线连接到AVR64DD32上。
LCD显示模块:1.44彩色LCD,基于ST7735,SPI接口,方便与AVR64DD32单片机连接。
RGB彩灯:R, G, B三色灯分别连接到AVR64DD32不同的GPIO引脚。
目标温度设定按键:使用到是Curiosity Nano板子上连接到PF6引脚的板载按键,设定好按键中断后,即可在中断服务程序中对目标温度进行更改。

根据任务要求,我在项目设计中先实现了LCD屏幕驱动设计,这里采用的GPIO模拟SPI方式,详见第一节。完成这一节后,可以正常在屏幕上显示各种文字或者数值。
温度传感器NST112的温度值通过I2C接口发送到AVR64DD32,可以把采集到的温度数据显示在LCD屏幕上。
目标温度的设定是通过连接到PF6的按键来调节,每次按键按下后,温度先逐步增高0.5°,最大可以到40度。

软件流程

FipNRZ3H_KqG5bDnwTjGwazwQ_Xg

实现过程

  1. LCD 屏幕点亮

Fvwsb1U03sMwtiEJHCOOfu2GMDUB

这里需要引出 5 根线,通过MCC进行配置,自动生成代码。这里使用的屏幕非常常见,所以可以直接使用 TFT 屏幕驱动进行显示。

2. 温度读取

温度模块采用 NST112。这个模块有 P2P 替代芯片,可以获取到详细的芯片手册。

这里把 PA2 与 PA3 和 NST112 的 I2C 接口相连,芯片地址为 0x48。

void NST112_Read (uint16_t *pData)
{
    uint8_t *pDataTemp = (uint8_t *)pData;
    uint16_t temp = 0;
    TWI0_Read(0x48, pDataTemp, 2);
    do { TWI0_Tasks(); } while (TWI0_IsBusy());
    if(TWI0_ErrorGet() == I2C_ERROR_NONE)
    {
        temp = pDataTemp[0] + pDataTemp[1];
        pDataTemp[1] = temp - pDataTemp[1];
        pDataTemp[0] = temp - pDataTemp[1];
    }
}

3. 目标温度调节

这里通过注册 PF6 的中断回调,在中断中设置目标温度。只要按下就自动加上 0.5。

void PF6_DefaultInterruptHandler(void)
{
    TargetTemperatureValue += 0.5;
}

4. LED 灯控

判断温度差值,如果大于等于 3,那么就亮起红灯。

if (fabs(TargetTemperatureValue - TemperatureValue) >= 3) {
    IO_PD1_SetLow();
} else {
    IO_PD1_SetHigh();
}

项目演示

(电压不够,导致屏幕对比度不够高,凑近点可以看到)

1. 图中所显示的 PWM 为 0,当前温度为 25 度,目标温度为 25 度,符合温度稳定要求。

FsawZKBRB_bpGxBAapMCKrW6NbfL

2. 图中显示的 PWM 为 20%,当前温度为 34.62 度,目标温度为 38.5 度。温差大于 3 度,红灯亮起。(LED 灯所要消耗的电量有点大,导致屏幕电压被拉低)

FsA3z2oyxvzZOQEx3ots58pKAOiH

项目总结

非常感谢硬禾学堂举办的活动,这次活动让我深度体验了 AVR 单片机便捷的图形化编程方式,同时也学习了 SPI、IIC、TCA0 等重要外设的使用。通过活动的实践,我成功实现了加热温度的控制,使实际温度尽量稳定在目标温度上浮动。

最后,我希望硬禾学堂能够不断举办更多类似的活动,让更多的人有机会学习硬件开发,并能够切实地将知识应用到实际项目中。

团队介绍
中国计量大学
团队成员
llka
评论
0 / 100
查看更多
目录
硬禾服务号
关注最新动态
0512-67862536
info@eetree.cn
江苏省苏州市苏州工业园区新平街388号腾飞创新园A2幢815室
苏州硬禾信息科技有限公司
Copyright © 2023 苏州硬禾信息科技有限公司 All Rights Reserved 苏ICP备19040198号