基于AVR64DD32的温度采集显示与恒温控制系统
一、 项目简介:
本次设计主要使用AVR64DD32 Curiosity Nano评估板和硬核学堂的功能扩展板 ,单片机AVR64DD32主要实现信息采集,用户UI显示和逻辑控制相关功能,硬核学堂的功能扩展板实现按键,旋扭控制与指令灯,LCD显示等相关物理功能。
此交项目设计主要完成任务2 实现一个恒温自动控制系统并包含温度曲线显示相关功能,IOBV3功能扩展板上有一处加温电阻,并通过温度传感器感知板上温度的变化,测温以及在LCD屏上的温度显示,使用按键设定目标温度,并且通过程序控制加热功率,使得温度尽快尽量稳定的维持在目标温度。温度偏离设定温度±3°C彩灯变为红色。
二、 硬件组成与方案:
本项目主控为Microchip公司出品的新品AVR单片机AVR64DD32 Curiosity Nano开发板,板载了一个功能非常完善的8位单片机,外设资源也相当丰富。
核心微控制器:
AVR DD系列是Microchip公司AVR单片机产品线中的最新的一员,它的内部结构灵活、性能强大,有着比较丰富的外设和存储资源。该系列采用了最新的不依赖内核的外设,能够以非常低的功耗、在多种电压输入输出之间进行安全的双向通信,事件系统、可配置逻辑CCL、智能模拟外设,比如12位的ADC和过零检测都使得AVR DD系列非常适用于传感、IoT终端节点以及其它需要信号调理及电平转移的应用。运行速度最高 至 24 MHz,并具有 64 KB 闪存、8 KB SRAM 和 256B EEPROM。
AVR64DD32 产品支持四个多电压 I/O 通道,能够双向 与在高于或低于以下电压下运行的外部设备的通信 MCU 本身。MVIO 系统使 AVR® DD 成为电路板的完美器件 控制、传感器应用、物联网终端节点和其他尺寸受限 应用,以及大型系统中的传感器融合。
相关功能及引脚外设如下图所示:
本次设计主要实现 温度采集显示和恒温自动控制系统,主要由以下内部分组成: 温度采集模块、指示显示模块、加热控制模块和 按键、旋钮操作识别模块组成:
温度采集模块- 实现对于实时温度曲线进行显示,温控开启与关闭状态显示 和 温差状态指示显示功能,目标温度与当前温度相差大于3显示红灯,目标温度与当前温度相差小于3度显示绿灯指示;
温度采集模块 通过NST112温度采集传感器使用IIC通信对于实现温度进行采集;
加热控制模块 使用MOS管的栅极驱动加热阻对 温度部分进行加热,使用PWM占空比控制加热强度;
按键、旋钮操作识别模块 通过使用AVR64DD32 ADC功能对于不同的按键、旋钮操作产生的电压进行模数转换并识别。
方案设计流程框图如图所示:首先,进行IIC、SPI、按键控制ADC、LCD初始化,然后在主循环中 进行不断读取当前温度值,通过读取按键根据用户输入与调节进行目标温度调节,同时进行显示更新与指示状态更新等
三、 相关模块与功能实现:
- 显示模块代码实现,基于LCD厂商源代码修改创建LCD_init.h文件,通过PA4、PA5、PA6、PA7实现SPI功能并添加RES、DC、BLK接口,修改如下部分:
- 温度控制使用PWM占空比调节加热强度,如下代码初始化配置TCA0外设PWM功能初始化,使用PD2接口作为PWM输出接口:
- 温度读取模型,使用IIC接口对于实时温度进行读取:
- 按键、旋钮读取,使用ADC :
- 根据温差进行PWM控制部分:
四、 效果展示:
空闲状态下,STATE:OFF, 当前温度控制模式关闭:
温度控制模式开启状态下,进行恒温控制,温度曲线在目标温度上下轻微波动:
温度控制模式开启状态下,温差小于3度,绿灯亮:
温度控制模式开启状态下,温差大于3度,红灯亮:
五. 心得体会与总结:
1. 硬件开发工具的使用体验很重要:本次使用Ardunio IDE对avr64dd32这款单片机进行了相关功能开发与应用,方便快速地进行相关开发和验证,简化了开发流程,减少了出错机会。同时也体验了官方的IDE编辑器提供了MCC图形化配置界,图形化配置工具会越来越普及,可以进一步减轻工程师的工作量,专注于功能开发,越来越好用。
2. 技术交流与互助是学习进步的关键。这次Funpack活动的完成离不开技术交流群里朋友的帮助与指导。通过交流可以扩展视野,避免走弯路,节约时间。希望Funpack这样的技术活动可以持续举办,促进更多技术交流。
3. 尝试新的技术与产品,磨练快速学习的能力。这次体验AVR64DD32 8bit单片机,锻炼了快速掌握一款新器件的能力。虽然产品不同,但熟悉的开发流程和工具可以快速上手,Funpack活动也为大家提供了尝试新技术的平台。
非常感谢硬禾学堂与Digikey联合举办的第四期Funpack活动,希望硬禾学堂与Digikey电子越来越好!!