ATmega328芯片-“变身”-温度计-,附示例教程

发布者:beta12最新更新时间:2020-06-20 来源: eefocus关键字:ATmega328  温度计  示例 手机看文章 扫描二维码
随时随地手机看文章

概述

常见的AVR单片机内都包含一个温度传感器,用于监测异常高温,便于通过编程为单片机提供保护。


用于Arduino主控芯片的常见的AVR单片机列表如下:


MCU 是否内嵌温度传感器

ATmega8 No

ATmega8L No

ATmega8A No

ATmega168 No

ATmega168A Yes

ATmega168P Yes

ATmega328 Yes

ATmega328P (Arduino UNOMiNiPro MINI) Yes

ATmega1280 (Arduino Mega) No

ATmega2560 (Arduino Mega 2560) No

ATmega32U4 (Arduino Leonardo) Yes

通过上表可以看出:常用的Arduino UNO可以作为临时温度传感器使用。

今天的实验,我们就通过编程来读取ATmega328P内部温度计的读数。


实验分析

由于通电电阻的热效应,只有刚开机时AVR单片机的温度才是室温,随后随着MCU工作产热,温度会有上升。


程序里提供的温度单位是摄氏度,由串口监视窗口显出,准确性依赖于GetTemp函数里t的线性转换公式,你可以改变104.31这个数来校准读数。


实验代码

    // Internal Temperature Sensor

    // Example sketch for ATmega328 types.


    void setup(){

        Serial.begin(9600); 

        Serial.println(F("Internal Temperature Sensor"));

    }


    void loop(){

        // Show the temperature in degrees Celcius.

        Serial.println(GetTemp(),1);

        delay(1000);

    }


    double GetTemp(void){

        unsigned int wADC;

        double t;


        // The internal temperature has to be used

        // with the internal reference of 1.1V.

        // Channel 8 can not be selected with

        // the analogRead function yet. 

        // Set the internal reference and mux.

        ADMUX = (_BV(REFS1) | _BV(REFS0) | _BV(MUX3));

        ADCSRA |= _BV(ADEN); // enable the ADC 

        delay(20); // wait for voltages to become stable. 

        ADCSRA |= _BV(ADSC); // Start the ADC 

        // Detect end-of-conversion

        while (bit_is_set(ADCSRA,ADSC)); 

        // Reading register "ADCW" takes care of how to read ADCL and ADCH.

        wADC = ADCW; 

        // The offset of 324.31 could be wrong. It is just an indication.

        t = (wADC - 104.31 ) / 1.22; 

        // The returned temperature is in degrees Celcius.

        return (t);

    }


参考文档

Atmel官方校准AVR内部温度的参考文档

一篇与本文相关的技术文档

一些测量确定偏移量和获得

内部温度传感器可以用作一个随机数种子

关键字:ATmega328  温度计  示例 引用地址:ATmega328芯片-“变身”-温度计-,附示例教程

上一篇:AVR单片机ATMEGA16编译软件ICCAVR的使用技巧与应用示例
下一篇:如何编译文件得到的bootloader的.hex文件(例如:atmega328p)

推荐阅读最新更新时间:2024-11-06 03:39

频率测量方法及STM32微控制器代码示例介绍
频率测量是在电子和通信领域中非常重要的任务,用于确定信号的周期性和事件的发生率。 在本文中,我们将介绍两种常用的频率测量方法:计数法和周期法,并提供与STM32微控制器的示例代码,以帮助你在实际应用中进行频率测量。 计数法 计数法是最简单的频率测量方法之一,它通过直接计数事件发生的次数,并与时间相关联来计算频率。 其原理如下: 首先,我们选择一个时间窗口,通常使用计时器来测量。 时间窗口可以是任意合适的时间段,例如1秒。 在这个时间窗口内,我们记录事件发生的次数,这可以通过外部事件触发器、传感器或计数器来实现。 最后,我们使用以下公式计算频率: 计数法的优点是简单易懂,适用于大多数应用场景。对于STM32
[单片机]
量子芯片有了“温度计”:国产超低温传感器研制成功
量子计算机是未来计算技术的前沿领域,量子芯片是量子计算机的核心器件,对温度环境有着极高的要求。 据央视新闻报道,为了实时监测量子芯片运行的温度变化,了解制冷机运行状态,安徽省量子计算工程研究中心的科研人员成功研制出国产量子计算超低温温度传感器,科研人员形象地称其为“量子芯片温度计”。 该传感器由本源量子计算科技(合肥)股份有限公司完全自主研发,支持实时温度监测,可以精确测量 10mK~40K 的温度范围,适用于各种稀释制冷机,安装使用方便,目前已经投入国产量子计算机中使用,为量子计算机系统提供了关键性的保障。 这是我国在极低温领域的温度测量技术达到国际先进水平的重要成果,也是我国实现量子计算机自主可控的重要一步。
[传感器]
PIC16F877A DS18B20数字温度计实验
main.c #include htc.h #include stdio.h #include def.h #include ds18b20.h __CONFIG(0xFF32); void Delay_ms(u16 xms) { int i,j; for(i=0;i xms;i++) { for(j=0;j 71;j++) ; } } void uart_init(void) { TXSTA=0x24; //开启发射使能位、高波特率,TRMT初始值可0可1 RCSTA=0x80; SPBRG=0x19; //4M晶振,波特率9600,则SPBRG初值为25 } //printf函数
[单片机]
PIC16F877A DS18B20数字<font color='red'>温度计</font>实验
51单片机+DS18B20温度上下限报警可调数字温度计
单片机源程序如下: /******************************************************************** * 程序名; 基于DS18B20的测温系统 * 功 能: 实时测量温度,超过上下限报警,报警温度可手动调整。K1是用来 * 进入上下限调节模式的,当按一下K1进入上限调节模式,再按一下进入下限 * 调节模式。在正常模式下,按一下K2进入查看上限温度模式,显示1s左右自动 * 退出;按一下K3进入查看下限温度模式,显示1s左右自动退出;按一下K4消除 * 按键音,再按一下启动按键音。在调节上下限温度模式下,K2是实现加1功能, * K1是实现减1功能,K3是用来设定上下限温
[单片机]
51单片机+DS18B20温度上下限报警可调数字<font color='red'>温度计</font>
【PIC32MZ】OLED12864 I2C显式示例
本篇主要讲述如何使用PIC32MZ来点亮OLED12864。 OLED12864可以控制一个一个像素点,所以需要自建字库,有专门生成的软件,字库为字母字符,放到最后面。注意不同12864排列或者共极不同,则需要自行取模。 本片需要调用I2C通信中的基础代码,需要delay和i2c-Hardware,以下不再贴这部分代码。 第一部分是字模文件 codetab.h #ifndef _CODETAB_H #define _CODETAB_H /***************************16*16 Chinese, common gnd - column style - reverse output*****
[单片机]
【PIC32MZ】OLED12864 I2C显式<font color='red'>示例</font>
一种数码语音温度计的设计方案
0 引 言   温度测量在人们的日常生活中扮演着重要的角色,当人们感到身体不适时, 通常需要测量体温; 家中的婴儿或病人吃的流质食物, 给婴儿准备的洗澡水等, 都需要事先感测温度, 温度过高或过低都会对病人或婴儿造成危害。目前便宜的体温计在家中广泛使用, 但其通常只用于测量体温, 量程小、最大42℃ ;读数不方便, 特别是老年人视力不好, 不容易读准确; 在测量体温以外的情况下不便使用, 并且破损后水银泄漏对身体会造成危害等, 一些国家已开始禁止销售水银温度计; 非接触式的红外测温仪虽然方便使用, 但价格昂贵。文献 介绍了一种用于工业应用的数字温度计设计方法,文献 分别介绍了采用具有语音处理功能的单片机和语音芯片设计温度计的方法
[单片机]
一种数码语音<font color='red'>温度计</font>的设计方案
使用 STM8L DISCOVERY 示例程序添加库文件出现 Error[Li005]
今天想用新买的STM8L-DISCOVERY写一个控制舵机的程序。如果使用标准库的话,正确的做法是把 stm8l15x.h 里面 #include stm8l15x_tim1.h 这一行的注释去掉。我这样做了,然后复制官方提供的一个TIM1的PWM的例子。结果坑爹的情况出现了: 我已经添加了TIM1的头文件了,可是开发环境并没有把对应的源文件加入编译列表: 这到到底是为啥呢?纠结了一下午一晚上,上网搜索外加查阅官方文档,都没有找到答案。 晚上回到宿舍继续纠结,结果意外发现在每个源文件的 option 里都有这么个勾选项: 把这个勾去掉就好了。
[单片机]
使用 STM8L DISCOVERY <font color='red'>示例</font>程序添加库文件出现 Error[Li005]
基于AT89C2051的数字温度计设计
单片机控制已成为今天电子设计追-求的目标之一,本文将这种控制技术应用于温度测量中。AT89C2051是美国Atmel公司生产的低电压、高性能CMOS8位单片机,片内含有2 KB的反复擦写的只读程序存储器和128 B的随机存取数据存储器(RAM)。美国DALLAS半导体公司生产的DSl-8B20型单线智能温度传感器,属于新一代适配微处理器的智能传感器。数字温度计是以DS18B20为检测元件,由AT89C2051作为主控制器的温度计,具有功耗低、结构简单、读数方便、测温范围广、测温准确的特点。 1 电路构成及工作原理 1.1 硬件设计 由AT89C2051构成的温度计主要由三部分组成:DSl8B20温度传感器、单片机A
[单片机]
小广播
设计资源 培训 开发板 精华推荐

最新单片机文章
何立民专栏 单片机及嵌入式宝典

北京航空航天大学教授,20余年来致力于单片机与嵌入式系统推广工作。

换一换 更多 相关热搜器件

 
EEWorld订阅号

 
EEWorld服务号

 
汽车开发圈

电子工程世界版权所有 京B2-20211791 京ICP备10001474号-1 电信业务审批[2006]字第258号函 京公网安备 11010802033920号 Copyright © 2005-2024 EEWORLD.com.cn, Inc. All rights reserved