9回答

0收藏

[求助] MSP430G2553內部溫度

TI TI 11869 人阅读 | 9 人回复 | 2014-06-07

不好意思
請問一下我想使用MSP430G2553內部的溫度傳感器,但是不管我使用網路上哪一版的程式,讀出來的溫度不是破百就是是在零下

另外有辦法使用DHT11嗎?

謝謝

分享到:
回复

使用道具 举报

回答|共 9 个

倒序浏览

沙发

huixianfxt

发表于 2014-6-7 16:58:02 | 只看该作者

可以使用DHT11测温湿度呢!网上也有很多历程的呢!你可以把你的程序贴上来我帮你看看呢!
板凳

ethan42411

发表于 2014-6-7 18:11:26 | 只看该作者

huixianfxt 发表于 2014-6-7 16:58
可以使用DHT11测温湿度呢!网上也有很多历程的呢!你可以把你的程序贴上来我帮你看看呢! ...

你好,我使用這個程式碼
http://shokai.org/blog/archives/6739
  1. int ad;
  2. double temp;
  3. bool led_stat = false;

  4. void setup() {
  5.   pinMode(GREEN_LED, OUTPUT);
  6.   Serial.begin(9600);
  7.   //analogReference(INTERNAL1V5); // 内蔵1.5Vを基準にする
  8.   analogReference(DEFAULT);
  9.   analogRead(TEMPSENSOR); // 最初の1回目のAD変換は正確に取れないので、捨てる
  10. }

  11. void loop() {
  12.   delay(1000);
  13.   ad = analogRead(TEMPSENSOR);
  14.   Serial.print("ad:");
  15.   Serial.println(ad);

  16.   temp = 1.5/1024*(ad-673)/0.00355; // 電圧を温度に変換
  17.   Serial.print("temp:");
  18.   Serial.println(temp);

  19.   digitalWrite(GREEN_LED, led_stat);
  20.   led_stat = !led_stat;
  21. }
复制代码
從序列讀出來的結果是這樣


另外我也用過這個程式碼
https://github.com/energia/Energia/blob/master/examples/3.Analog/AnalogInput_InternalThermometer_430/AnalogInput_InternalThermometer_430.ino
出來的結果是這樣


地板

huixianfxt

发表于 2014-6-7 19:24:52 | 只看该作者

让temp = ((ad - 673) * 423) / 1024;试试呢!另外检查下你的串口程序呢!
5#

ethan42411

发表于 2014-6-7 20:43:17 | 只看该作者

huixianfxt 發表於 2014-6-7 19:24
讓temp = ((ad - 673) * 423) / 1024;試試呢!另外檢查下你的串口程序呢!

你好,
我改完後
如果是analogReference(DEFAULT);的話,值會是負的
如果改成analogReference(INTERNAL2V5);的話,值看起來比較正常,但是跟我用溫度計量出來的值大約相差了9度

請問檢查串口程序是什麼意思? 我不太明白

謝謝
6#

huixianfxt

发表于 2014-6-7 21:38:36 | 只看该作者

ethan42411 发表于 2014-6-7 20:43
你好,
我改完後
如果是analogReference(DEFAULT);的話,值會是負的

你试试官方例程中的ADC的temp程序呢,先不要用串口打印,显示在LCD屏上!
7#

ethan42411

发表于 2014-6-7 21:54:46 | 只看该作者

huixianfxt 发表于 2014-6-7 21:38
你试试官方例程中的ADC的temp程序呢,先不要用串口打印,显示在LCD屏上!

一樣耶
但是我改成這個程式碼就可以正常的顯示了
  1. /// Vars used in code
  2. long  sensorValue = 0;
  3. int   Temp_Gain = 1000; /// gain error (x10*-1.0)+1000 I.E.>  if error = -0.5% Temp_Gain = 1005
  4. int   Temp_Offset = -7;  /// offset error /10 I.E.> if error = 2.1 degrees Temp_Offset = 21
  5. long  FValue = 0;      
  6. float FValue1000 = 0,tempC=0;   // using float here uses a lot of flash mem, this can be converted to long and then some tricks can be done on the display output,but I have lots of flash for this demo.....

  7. void setup() {
  8.   Serial.begin(9600);
  9. }

  10. void loop() {
  11.   ////////////////////////////////////////////////////////////////////////
  12.   //// measure internal temperature and display

  13.   FValue1000 = 0;
  14.   for (int count = 0; count < Temp_Gain; count++)
  15.   {

  16.     ADC10CTL1 = INCH_10 + ADC10DIV_3;         // Temp Sensor ADC10CLK/4
  17.     ADC10CTL0 = SREF_1 + ADC10SHT_3 + REFON + ADC10ON + ADC10IE;
  18.     TACCR0 = 30;                              // Delay to allow Ref to settle
  19.     TACCTL0 |= CCIE;                          // Compare-mode interrupt.
  20.     TACTL = TASSEL_2 | MC_1;                  // TACLK = SMCLK, Up mode.
  21.     LPM0;                                     // Wait for delay.
  22.     TACCTL0 &= ~CCIE;                         // Disable timer Interrupt
  23.     ADC10CTL0 |= ENC + ADC10SC;               // Sampling and conversion start
  24.     __bis_SR_register(CPUOFF + GIE);          // LPM0 with interrupts enabled

  25.     sensorValue = ADC10MEM;                   // store the ADC10 value

  26.     FValue=(((sensorValue) - 630) * 761) / 1024;   // do math on ADC10 value to convert to degrees F
  27.     FValue1000 = FValue1000 + FValue;              // store value (this is how we can apply gain to the measurement)
  28.   }

  29.   FValue1000 = (FValue1000/Temp_Gain);    // do gain error
  30.   FValue1000 = FValue1000 + Temp_Offset;  // do offset error

  31.   tempC=((FValue1000-32)*5)/9;

  32.   Serial.println(tempC);
  33.   delay(100);

  34. }
复制代码
https://groups.google.com/forum/#!topic/msp430launchpaddiy/MxbEBKblfEM
裡面的溫度讀取應該是用官方例程的temp程序

非常謝謝您的指導
謝謝


8#

ljc2010-2032631

发表于 2014-6-14 16:54:06 | 只看该作者

楼主解决没有?没解决的话 给你发奋代码
9#

ethan42411

发表于 2014-6-15 10:46:10 | 只看该作者

1719866259 发表于 2014-6-14 16:54
楼主解决没有?没解决的话 给你发奋代码

你好,
我用7樓的代碼就可以跑了
只是我有另一個疑問MSP430G2553不能同時使用I2C跟SPI?

謝謝
10#

ljc2010-2032631

发表于 2014-6-15 15:00:16 | 只看该作者

ethan42411 发表于 2014-6-15 10:46
你好,
我用7樓的代碼就可以跑了
只是我有另一個疑問MSP430G2553不能同時使用I2C跟SPI?

模拟的I2C 和SPI应该可以一起用吧?我也只是单独用过模拟SPI或者I2C
您需要登录后才可以回帖 注册/登录

本版积分规则

关闭

站长推荐上一条 /3 下一条