実現したいこと
Raspberry Pi Pico(以下Pico)の内蔵温度センサーから温度を取得したい
前提
C++でPicoの内蔵温度センサーから温度を取得するプログラムを作っているのですが、
コアの温度より明らかに高い値が出力される
発生している問題・エラーメッセージ
Arduino IDE(analogReadTemp関数)の方で試したところ15℃から20℃程度を示しましたが、
Pico SDKでプログラムしたところ、70℃から80℃と出力されました
該当のソースコード
C++
1#include <iostream> 2 3#include "pico/stdlib.h" 4#include "hardware/adc.h" 5 6int main() { 7 8 stdio_init_all(); 9 10 adc_init(); 11 adc_select_input(4); 12 13 while (1) { 14 float voltage = adc_read() * (3.3 / 4095); 15 float temperature = 27 - (voltage - 0.706) / 0.001721; 16 std::cout << temperature << std::endl; 17 sleep_ms(100); 18 } 19 20 return 0; 21} 22
正常に動作したArduinoの方です
Arduino
1void setup() { 2 Serial.begin(9600); 3} 4 5void loop() { 6 Serial.printf("%f\n", analogReadTemp()); 7 delay(100); 8}
補足情報(FW/ツールのバージョンなど)
ChromeOS Linux仮想環境
Pico SDK
g++ 10.2.1 (Debian 10.2.1-6)
CMake 3.18.4
「Arduino IDEの方で試した」のと「Pico SDKでプログラムした」のとで
それぞれの実行環境の詳細が分からないのですが、同じモノの温度を測っているでしょうか。
Chromebook、picoそれぞれ別の温度を測っていたりはしていないでしょうか?
Arduino IDEではanalogReadTemp()を利用しました
Arduino IDE, Pico SDKいずれもPico内蔵温度センサーを使用し、チップ自体は室温を測るよう、何にも接触させていません
Arduino IDE(analogReadTemp関数)のコードも提示したほうがよいかと思います。
そうですね、追記させていただきます
Pico SDKでのコードにおいてadc_read()結果からの温度算出部分の計算式の根拠(出典)を提示ください。
複数のページで共通していた計算式を利用したので、具体的にどれというわけではなく、
"pico 温度センサー"と検索して出てきたMicroPythonのプログラムを少し改変したものです
念のため、その複数のページをすべて挙げてください。
それらが提示されているコードとすべて全く同一の計算式であるかを確認できるように。
すべて同一であれば、コードは正しいという前提で
Pico SDKあるいはPicoハードで最近なんらかの変更がなかったかの確認に進めるのかと思います。
解決しました
温度センサーの電源をONにするコードを書き忘れていたようです
私の簡単なミスにお時間を取らせてしまい本当に申し訳ありませんでした
※ 入れ違いのため削除
回答1件