最近使用g2553這塊IC內部溫度感測,
同樣燒錄TI提供的範例COD,但每顆IC溫度都有點差距,有些差5度以上
想請問是什麼原因呢?
再請問,g2553內部有散熱裝置嗎?
运行一样的程序,一样的时间么?
单片机内部的温度的确不准的,内部只是个热敏电阻而已,而且是IC内部温度。
引用: 原帖由 jhihj1123 于 2013-10-15 17:40 发表
最近使用g2553這塊IC內部溫度感測,
同樣燒錄TI提供的範例COD,但每顆IC溫度都有點差距,有些差5度以上
想請問是什麼原因呢?
再請問,g2553內部有散熱裝置嗎?
G2553有温度较准数据,用了么?如果没较准,肯定是误差很大的
回复 板凳wangfuchong 的帖子
目前只是在比較手邊IC
比較過四個IC每顆溫度都不同,程式碼是TI 的 WIKI範例CODE
請問IC內部有散熱元件,或是有散熱材料嗎?
引用: 原帖由 laoguo 于 2013-10-15 20:09 发表
运行一样的程序,一样的时间么?
单片机内部的温度的确不准的,内部只是个热敏电阻而已,而且是IC内部温度。
是的,一樣程式,也同一個環境下測試
有每顆IC溫度都不同,
因為這問題與同學起了點爭執
當時測試過三塊版子,四顆IC
最後結論是IC問題,不同IC測試竟然有些IC能差距到5度以上
有個同學強調是IC內部有微型散熱裝置產生的誤差,
但在我認知當中,這種低電流IC沒有所謂的微型散熱裝置.
請問G2553這顆IC本身有微型散熱裝置嗎
[
本帖最后由 jhihj1123 于 2013-10-15 23:17 编辑 ]
请给个wiki范例的链接,我看看代码
想起来我不久前还想做的一个demo,其中一个功能就是关于msp430内部温度传感器的,你和你同学的争论可以在这个demo里演示得出可能的结论
不过因为不是我个人实际有用的,所以一直没时间弄
回复 6楼wangfuchong 的帖子
//******************************************************************************
// MSP430G2x33/G2x53 Demo - ADC10, Sample A10 Temp and Convert to oC and oF
//
// Description: A single sample is made on A10 with reference to internal
// 1.5V Vref. Software sets ADC10SC to start sample and conversion - ADC10SC
// automatically cleared at EOC. ADC10 internal oscillator/4 times sample
// (64x) and conversion. In Mainloop MSP430 waits in LPM0 to save power until
// ADC10 conversion complete, ADC10_ISR will force exit from any LPMx in
// Mainloop on reti. Temperaure in oC stored in IntDegC, oF in IntDegF.
// Uncalibrated temperature measured from device to device will vary with
// slope and offset - please see datasheet.
// ACLK = n/a, MCLK = SMCLK = default DCO ~1.2MHz, ADC10CLK = ADC10OSC/4
//
// MSP430G2x33/G2x53
// -----------------
// /|\| XIN|-
// | | |
// --|RST XOUT|-
// | |
// |A10 |
//
// D. Dang
// Texas Instruments Inc.
// December 2010
// Built with CCS Version 4.2.0 and IAR Embedded Workbench Version: 5.10
//******************************************************************************
#include "msp430g2553.h"
long temp;
long IntDegF;
long IntDegC;
void main(void)
{
WDTCTL = WDTPW + WDTHOLD; // Stop WDT
ADC10CTL1 = INCH_10 + ADC10DIV_3; // Temp Sensor ADC10CLK/4
ADC10CTL0 = SREF_1 + ADC10SHT_3 + REFON + ADC10ON + ADC10IE;
__enable_interrupt(); // Enable interrupts.
TACCR0 = 30; // Delay to allow Ref to settle
TACCTL0 |= CCIE; // Compare-mode interrupt.
TACTL = TASSEL_2 | MC_1; // TACLK = SMCLK, Up mode.
LPM0; // Wait for delay.
TACCTL0 &= ~CCIE; // Disable timer Interrupt
__disable_interrupt();
while(1)
{
ADC10CTL0 |= ENC + ADC10SC; // Sampling and conversion start
__bis_SR_register(CPUOFF + GIE); // LPM0 with interrupts enabled
// oF = ((A10/1024)*1500mV)-923mV)*1/1.97mV = A10*761/1024 - 468
temp = ADC10MEM;
IntDegF = ((temp - 630) * 761) / 1024;
// oC = ((A10/1024)*1500mV)-986mV)*1/3.55mV = A10*423/1024 - 278
temp = ADC10MEM;
IntDegC = ((temp - 673) * 423) / 1024;
__no_operation(); // SET BREAKPOINT HERE
}
}
// ADC10 interrupt service routine
#pragma vector=ADC10_VECTOR
__interrupt void ADC10_ISR (void)
{
__bic_SR_register_on_exit(CPUOFF); // Clear CPUOFF bit from 0(SR)
}
#pragma vector=TIMER0_A0_VECTOR
__interrupt void ta0_isr(void)
{
TACTL = 0;
LPM0_EXIT; // Exit LPM0 on return
}
直接貼在CCS裡,編譯後燒入 觀察變數IntDegC
误差5摄氏度以上显然大了点,是否合理需要看器件手册。要注意的一点是:片内温度跟系统的散热条件和MCU的运算强度都有关系,要比较离散性必须在同样的系统、同样的环境、同样的运行代码下才有意义。
上传了一些书籍资料,也许有你想要的:https://download.eeworld.com.cn/user/chunyang
回复 8楼chunyang 的帖子
是的,同台電腦編寫,同樣開發環境,同樣CODE
差5度C
回复 9楼jhihj1123 的帖子
同电脑编写程序、同开发环境是无关的,有关的是MCU的运行环境,这个必须一致。
上传了一些书籍资料,也许有你想要的:https://download.eeworld.com.cn/user/chunyang
引用: 原帖由 chunyang 于 2013-10-16 15:45 发表
同电脑编写程序、同开发环境是无关的,有关的是MCU的运行环境,这个必须一致。
是的,MCU運行環境也是一至.
就是條件一至下測試
[
本帖最后由 jhihj1123 于 2013-10-16 15:53 编辑 ]
回复 11楼jhihj1123 的帖子
如果确实是这样,那么应该能见到其它人会有同样的结论,器件手册中也应该载明。
上传了一些书籍资料,也许有你想要的:https://download.eeworld.com.cn/user/chunyang
回复 7楼jhihj1123 的帖子
你这个显然没有使用较准数据吧,使用较准数据试试看
或者直接查看较准数据存储所在的位置,看看较准数据相差大不大,就知道你现在的实测结果是不是就是应该相差较大的因为没有使用较准数据
另外补充,芯片本身的功耗外界环境应该都会对芯片内传感器有影响,至于影响多大,我是设想过通过实验测试对比的