查看: 3269|回复: 9

[求助] MSP430G2553內部溫度

[复制链接]

1

主题

2

好友

2856

积分

进士

Rank: 5Rank: 5

  • TA的每日心情
    开心
    15 分钟前
  • 签到天数: 875 天

    [LV.10]以坛为家III

    发表于 2014-6-7 16:48:57 |显示全部楼层
    不好意思
    請問一下我想使用MSP430G2553內部的溫度傳感器,但是不管我使用網路上哪一版的程式,讀出來的溫度不是破百就是是在零下

    另外有辦法使用DHT11嗎?

    謝謝

    回复

    使用道具 举报

    8

    主题

    1

    好友

    1万

    积分

    实习版主

    Rank: 7Rank: 7Rank: 7

  • TA的每日心情
    奋斗
    10 小时前
  • 签到天数: 972 天

    [LV.10]以坛为家III

    发表于 2014-6-7 16:58:02 |显示全部楼层
    可以使用DHT11测温湿度呢!网上也有很多历程的呢!你可以把你的程序贴上来我帮你看看呢!
    回复

    使用道具 举报

    1

    主题

    2

    好友

    2856

    积分

    进士

    Rank: 5Rank: 5

  • TA的每日心情
    开心
    15 分钟前
  • 签到天数: 875 天

    [LV.10]以坛为家III

    发表于 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. }
    复制代码
    從序列讀出來的結果是這樣
    2014-06-07-[18-06-35].png


    另外我也用過這個程式碼
    https://github.com/energia/Energia/blob/master/examples/3.Analog/AnalogInput_InternalThermometer_430/AnalogInput_InternalThermometer_430.ino
    出來的結果是這樣
    2014-06-07-[18-08-55].png


    回复

    使用道具 举报

    8

    主题

    1

    好友

    1万

    积分

    实习版主

    Rank: 7Rank: 7Rank: 7

  • TA的每日心情
    奋斗
    10 小时前
  • 签到天数: 972 天

    [LV.10]以坛为家III

    发表于 2014-6-7 19:24:52 |显示全部楼层
    让temp = ((ad - 673) * 423) / 1024;试试呢!另外检查下你的串口程序呢!
    回复

    使用道具 举报

    1

    主题

    2

    好友

    2856

    积分

    进士

    Rank: 5Rank: 5

  • TA的每日心情
    开心
    15 分钟前
  • 签到天数: 875 天

    [LV.10]以坛为家III

    发表于 2014-6-7 20:43:17 |显示全部楼层
    huixianfxt 發表於 2014-6-7 19:24
    讓temp = ((ad - 673) * 423) / 1024;試試呢!另外檢查下你的串口程序呢!

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

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

    謝謝
    回复

    使用道具 举报

    8

    主题

    1

    好友

    1万

    积分

    实习版主

    Rank: 7Rank: 7Rank: 7

  • TA的每日心情
    奋斗
    10 小时前
  • 签到天数: 972 天

    [LV.10]以坛为家III

    发表于 2014-6-7 21:38:36 |显示全部楼层
    ethan42411 发表于 2014-6-7 20:43
    你好,
    我改完後
    如果是analogReference(DEFAULT);的話,值會是負的

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

    使用道具 举报

    1

    主题

    2

    好友

    2856

    积分

    进士

    Rank: 5Rank: 5

  • TA的每日心情
    开心
    15 分钟前
  • 签到天数: 875 天

    [LV.10]以坛为家III

    发表于 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程序

    非常謝謝您的指導
    謝謝


    回复

    使用道具 举报

    0

    主题

    0

    好友

    517

    积分

    举人

    Rank: 4

  • TA的每日心情
    奋斗
    2014-6-15 15:00
  • 签到天数: 15 天

    [LV.4]偶尔看看III

    发表于 2014-6-14 16:54:06 |显示全部楼层
    楼主解决没有?没解决的话 给你发奋代码
    回复

    使用道具 举报

    1

    主题

    2

    好友

    2856

    积分

    进士

    Rank: 5Rank: 5

  • TA的每日心情
    开心
    15 分钟前
  • 签到天数: 875 天

    [LV.10]以坛为家III

    发表于 2014-6-15 10:46:10 |显示全部楼层
    1719866259 发表于 2014-6-14 16:54
    楼主解决没有?没解决的话 给你发奋代码

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

    謝謝
    回复

    使用道具 举报

    0

    主题

    0

    好友

    517

    积分

    举人

    Rank: 4

  • TA的每日心情
    奋斗
    2014-6-15 15:00
  • 签到天数: 15 天

    [LV.4]偶尔看看III

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

    模拟的I2C 和SPI应该可以一起用吧?我也只是单独用过模拟SPI或者I2C
    回复

    使用道具 举报

    您需要登录后才可以回帖 登录 | 立即注册

    关闭

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


    手机版|爱板网 |网站地图  

    GMT+8, 2016-12-7 18:33 , Processed in 0.186665 second(s), 19 queries , Memcache On.

    苏公网安备 32059002001056号

    Powered by Discuz!

    回顶部