您现在的位置是:首页 > 行业发展

Arduino的328芯片内部的温度计及读出方法

智慧创新站 2025-05-08【行业发展】158人已围观

简介常见的Arduino的avr芯片内都有一个温度传感器,用于监测异常高温便于编程提供保护。含有温度计的arduino芯片列表如下(yes为有):ATmega8:NoATmega8L:NoATmega8A:NoATmega168:NoATmega168A:YesATmega168P:YesATmega3...

常见的Arduino的avr芯片内都有一个温度传感器,用于监测异常高温便于编程提供保护。含有温度计的arduino芯片列表如下(yes为有):

ATmega8:No
ATmega8L:No
ATmega8A:No
ATmega168:No
ATmega168A:Yes
ATmega168P:Yes
ATmega328:Yes
ATmega328P:Yes
ATmega1280(ArduinoMega):No
ATmega2560(ArduinoMega2560):No
ATmega32U4(ArduinoLeonardo):Yes

所以常用的UNO有,2560就没有。

可以使用下面的程序来读出内部温度计的读数,只有刚开机时的温度才是室温,随后随着芯片工作产热,温度会有上升。程序里提供的温度单位是摄氏度,由串口监视窗口显出,准确性依赖于GetTemp函数里t的线性转换公式,你可以改变104.31这个数来校准读数。

//InternalTemperatureSensor//ExamplesketchforATmega328types.////April2012,(){(9600);(F("InternalTemperatureSensor"));}voidloop(){//(GetTemp(),1);delay(1000);}doubleGetTemp(void){unsignedintwADC;doublet;//Theinternaltemperaturehastobeused////Channel8cannotbeselectedwith//theanalogReadfunctionyet.//=(_BV(REFS1)|_BV(REFS0)|_BV(MUX3));ADCSRA|=_BV(ADEN);//enabletheADCdelay(20);//|=_BV(ADSC);//StarttheADC//Detect-of-conversionwhile(bit_is_set(ADCSRA,ADSC));//Readingregister"ADCW"=ADCW;//=()/1.22;//(t);}

很赞哦!(190)