Raspberry Piで1-Wire

1-Wireの習得を目的に買ったMaximの温度センサDS18B20+。測定精度が凄く高くて、-10℃~85℃の範囲で誤差が±0.5℃。そのかわり高価。しかも1-Wireが意外と難しい。PICとArduinoで挑戦して挫折。うまい具合に(といっては語弊があるが)1-Wireがあまり普及せず、部品店で買えるデバイスがいまだにこれくらいしかない。習得しなくても大丈夫そうなのでほうってあった。

DS18B20

昨日、Raspberry Piを探検していたら1-Wire対応モジュールを発見。調べてみると、w1-gpioがバスマスタドライバ、w1-thermがMaximの温度センサのプロトコル。てことは実質DS18B20+以外の1-Wireデバイスを取り扱えないものが付いている。世界中の部品店で1-Wireのデバイスはいまだにこれくらいしかないってことか。何はともあれ、挫折からは立ち直っておこう。

sudo modprobe w1-gpio
sudo modprobe w1-therm

モジュールの組み込みが完了。1-Wireデバイスの接続は7番ピン。ちょっとした思い付きでWebIOPIのGPIO Headerを開いてみたら、ちゃんと7番ピンがONEWIREになっている。

w1-webiopi

間に合わせの回路をブレッドボードに組み立てる。

w1-ds18b20

間に合わせにコマンドで動かしてみる。最後に表示されたt=27375が温度27.375℃という意味。

w1-commandline

1-Wireの大きな特長は信号から電源をとれることにあり、理屈では電源をつながなくていい(プルアップ抵抗が必要だから電源の配線がいらないわけではない)。やってみたら、動くには動くけど測定結果が違う。というか、いつも85℃。しかたなく英語のマニュアルを熟読。抵抗を使った単純なプルアップだと通信くらいは何とかなるとしても温度測定に必要な電力を供給できないらしい。やりたければMOSFETで強くプルアップしなさいだと。電源をつなぐほうが簡単じゃん。

広告
カテゴリー: RaspBerryPi パーマリンク

コメントを残す

以下に詳細を記入するか、アイコンをクリックしてログインしてください。

WordPress.com ロゴ

WordPress.com アカウントを使ってコメントしています。 ログアウト / 変更 )

Twitter 画像

Twitter アカウントを使ってコメントしています。 ログアウト / 変更 )

Facebook の写真

Facebook アカウントを使ってコメントしています。 ログアウト / 変更 )

Google+ フォト

Google+ アカウントを使ってコメントしています。 ログアウト / 変更 )

%s と連携中