プログラミング」カテゴリーアーカイブ

本日のゼミの課題

3年生へ

一列目に現在時刻と二列目に現在の温度を5秒ごとにcsv形式で記録する。

ヒント

1.プログラムを作るフォルダはmax31855-masterで行うこと

2.温度を読み取るコードは以下のURLを参照

https://github.com/Tuckie/max31855/blob/master/README.md

3.現在時刻はimport time を宣言してtime.time()で取得

http://ja.pymotw.com/2/time/

4.熱電対を制御するプログラムの実行には sudo python ***.pyと管理者権限で行う必要がある。

さらにヒント

#!/usr/bin/python
from max31855 import MAX31855, MAX31855Error
import time #timeをインポート
import datetime #datetimeをインポート

cs_pin = 18 #ここを24から18にしておくこと
clock_pin = 23
data_pin = 22
units = "c"  #fだと華氏、cだと摂氏
d1= datetime.datetime.now()
thermocouple = MAX31855(cs_pin, clock_pin, data_pin, units)
print("time: {} temp: {}".format(d1, thermocouple.get())
thermocouple.cleanup()

while文とtime.sleep(5)を使って5秒周期で繰り返す。

なんとMathematicaが無料

久々にRaspberry piねたです。

3年生にpythonゼミを開始しました。最終的にはpyvisaで制御できるようになるまでを想定しています。

さらになんとMathematicaが無料なんだそうです。あらかじめイメージになっているので、

既存のOSにインストールとなるとちょっと厄介ですが、
それでも素晴らしいことです。

http://ascii.jp/elem/000/000/844/844677/

学生実験のテキストを作成するのに球面調和関数を描くのに使ったことがありますが、
学生にも開放できますしいろんな演習に使えそうです。

他にもxcrysden, fitykが使える事がわかったので計測以外にも楽しめそうです。

PL-2303 USB-シリアルのWindows8未対応

今日からスーパーサイエンスハイスクール(通称SSH)で、地元の高校生がガラス作りとレーザーパターニングの体験に来ています。本来は学生ゼミでRaspberry piをお披露目と思ったのですが、思いの外学生にうけが良かったので、明日使ってみることにします。

とはいってもLibre office calcでグラフ用紙からXY座標をデジタイジングする作業と、impressで報告プレゼンを作るのに使うので、計測は行いません。果たして無事に6台動くかどうか?

今回の製作を通じて分かった驚愕の事実が、タイトルにあるUSB-シリアル変換ケーブルの件です。

巷ではWindwosXPサポート終了問題がしきりに報道されていますが、測定器関連はほとんどがXPで動いています。Raspberry piのUARTシリアルの動作確認のためにWindows8プリインストールのノートパソコンに、秋月電子のUSB-シリアル変換ケーブルを挿したら動作しないのでした。いろいろ調べるとWindows8ではサポートしないようです。この変換ケーブルですが、研究室にはたくさんあります。もちろんXPに繋いで使用しているのもありますが、うかつにWindows8にはアップグレード出来ないことになります。

Visual studio expressが出たときも、webアプリ開発が先にローンチされて、デスクトップアプリ開発は後回しになったのも驚かされましたが、計測器を制御するのに最適なOSかは疑問がでてきます。測定装置、計測器のメーカーも多分悩んでるんでしょうね。

これを機会にWindowsで計測プログラムを開発するのやめようかな?と思います。

 

Raspberry piでUSBTMC

土日は学内で学会、ようやく普段の落ち着きを取り戻しつつあるが、来週はICGで再び海外へ、
raspberrypiネタばかりですが、これははまります。
カーネル再構築でUSBTMCが使えるそうで、ただいまコンパイル中

参考にしているのは以下のサイト

http://kuchem.kyoto-u.ac.jp/kinso/weda/blog/?date=20130612

成功したらまた報告を

Raspberry piに K熱電対ロガー (2)

前回に引き続き、今回はようやく熱電対2チャンネル分の動作まで確認できた。

外観はこんな感じ

Raspberry piに熱電対モジュール2つ接続した外観

Raspberry piに熱電対モジュール2つ接続した外観

SPIシリアルは基本的にはSSで機器を判別するので、配線は以下の通りとなる。

SPIシリアルピンと2つのK熱電対モジュールの配線図

SPIシリアルピンと2つのK熱電対モジュールの配線図

配線はなるべく短いほうがいいようです。とりあえず手元にあった古いLANケーブルを切り刻んでハンダ付けしましたが、十分OKでした。

あとはmax31855.pyのコードを2チャンネル分読み取るように編集すると完成。

5秒毎の室温を2ちゃんねる同時に測定し、libreofficeでグラフ表示

5秒毎の室温を2ちゃんねる同時に測定し、libreofficeでグラフ表示

概ね安定して測定できています。もう少しノイズ対策したらばらつきは改善するのかもしれません。windowsでプログラミングするようになってからあまりきにしていませんでしたが、pythonはインデント位置が厳密になっていて、綺麗にコードが書けるように配慮されています。あとはRS-232cポートを取り付けて、シリアル制御もできるとさらに可能性が広がります。できればUSBTMCも制御できてしまうと完璧なんですが。GPIBはとても大好きですけど遅いしもういらないかな・・・だれかUSBTMCドライバ開発してください。

Raspberry piにK熱電対ロガー (1)

K熱電対のモジュールが届いたので、ユニバーサル基板にピンソケットをつけて配線したらとりあえずあっさりと1チャンネル分の熱電対ロガーが出来てしまったので、まとめておく。

参考にしたサイトは以下のサイトですが、フランス語なのでgoogle翻訳のお世話になった。

http://chezdjibb.wordpress.com/2013/03/02/raspberrypi-et-thermocouple/

 

K熱電対のモジュールは千石電商から購入し、ソケット終端の熱電対がセットになっています。

IC(MAX31855)部分は予め半田付けしてあるので、ピンヘッダ部と熱電対のソケットをハンダで固定するだけです。

モジュールとraspberry piとの配線は以下の通り

  • VCC  →  3V3 Power  (隣の5Vはだめです。多分MAX31855が壊れます)
  • GND →  Ground
  • SS  →  GPIO 8(CE0) あるいは GPIO 7(CE1)どちらでも可(のはず)
  • MISO →  GPIO 9 (MISO)
  • SCK  → GPIO 11(SCKL)

GPIOs

 

とりあえず繋いでみた写真がこんな感じ

IMG_0255

 

ここからはソフトウェアの設定

  • GPIOを制御するライブラリのダウンロードとインストール

https://github.com/quick2wire/quick2wire-python-api

quick2wire-python-api-master.zipを適当なフォルダに保存したら

unzip quick2wire-python-api-master.zip

cd quick2wire-python-api-master

もしここでpyhton3がインストールされていなければ sudo apt-get install python3-setuptoolsを実行

sudo python3 setup.py install

  • Bitstringのダウンロードとインストール

https://code.google.com/p/python-bitstring/downloads/list

unzipで解凍したら先ほどと同じく解凍したフォルダに移動して

sudo python3 setup.py install

  • GPIOポートの設定

/etc/modprobe.d/raspi-blacklist.confの全ての行をコメントアウト(行頭に#をつけて保存)

rebootで再起動

  • MAX31855ドライバのダウンロードと編集

https://github.com/Tuckie/max31855/blob/master/

ZIPを解凍してmax31855.pyを編集

134行目 thermocouple = MAX31855(1, “f”) ここで括弧の中の1はCE1を示すので、CE1に接続したなら1のまま、CE0に接続の場合は0に書き換え、”f”は華氏、”c”に書き換えで摂氏に変更

  • とりあえず実行してみる

python max31855.py で実行すると以下の通り温度が1秒おきにスクロール表示される

IMG_0260

2つ値が表示されるが、tcが熱電対先端の温度で、rjがモジュールICに内蔵の冷接点補償回路のセンサー温度なので、常に冷接点補償された温度を記録できている。素晴らしい。

あとはもう1チャンネル繋いで、2チャンネル分収集出来るか確認が出来れば示差熱分析に使えそう!

ただ14ビットで最少0.25C刻みなので、ちょっと不安ではありますが・・・、まあ学生実験であれば許されるだろう;

というか-200℃~1800℃を14ビットで分解しているのはどう見てもおかしいでしょう。K熱電対はそんな高温まで耐えられないんだから1100℃上限のスケールにしてもらえればもう少し分解能は改善すると思うんですが。不思議です。

MAX31855はR熱電対用もあるみたいです。ただ1000個ロットでないと安く購入するのは難しいようなので、

どなたかR熱電対用も同じ価格でモジュールを販売していただけると助かります。

このコストパフォーマンスには驚かされます。Raspberry piが2950円(typeAに至っては2150円)、熱電対モジュールが1個2730円。モニタはターミナルあるいはVNC経由にしてしまえば通常は必要ないので、この時点で6000円ほどでLAN対応温度ロガーができてしまいます。電気炉のモニタにも使えるでしょうし、この面白さ、学生にもぜひ理解して欲しいところです。

Raspberry piで

35$コンピュータとして昨年人気になったRaspberry piを学生実験の計測に活用できないか思案中
とはいえデータロガーは最低でも数万はするし、NI-DAQとLabVIEWとなるとさらに高額でボツ。できれば熱電対の温度くらいは格安でデータ収集したいところです。

いろいろ探しているとRaspberry piにはSPIシリアルが2つ切り替えられるのと、SPIシリアル用に熱電対モジュールが販売されているようです。

MAX31855 K型熱電対温度センサモジュール

http://strawberry-linux.com/catalog/items?code=12388

また、pythonで読み取れるらしい。

http://www.raspberrypi.org/phpBB3/viewtopic.php?t=18125

これを2つ搭載すれば、示差熱分析が一万円しないで作れそう。
さらにUARTシリアルに電子天秤を繋げばTG-DTAにも・・・