読者です 読者をやめる 読者になる 読者になる

mbedで蛍光表示管を使った温湿度気圧計

mbedで蛍光表示管を使って温度・湿度・気圧を表示できるデバイスを作成しました。

f:id:mia_0032:20141115204225j:plain

この作品はMakerFaireTokyo2014に出展します。

実物見たい人は是非見に来てください。

製作について

1. 蛍光表示管のシールド作成

f:id:mia_0032:20141115204649j:plain

蛍光表示管の信号線をすべて1本1本mbedに接続すると、9個(7セグ+ドット+4の横棒)*4の36個も端子を使ってしまうので、そういう接続はせずに、ダイナミック点灯という方法を使います。

ダイナミック点灯は目の残像を利用した点灯方法です。 4本のうち光っているいるものは常に1本で、それを高速で切り替えることで、残像で全部が光ってみえます。

4本あるうちのどの蛍光表示管を光らせるかの接続4個とどの部分を光らせるか(上の9個)の13個の信号線だけで蛍光表示管を駆動できるので端子数が節約できて良いです。

蛍光表示管をダイナミック点灯するための回路は、デジットで売られている蛍光表示管のキットの回路を大体そのまま使わせてもらいました。

蛍光表示管は駆動するのに、最低でも12V以上の電圧が必要となります。なので、mbedの端子から出力できる3.3Vの電圧では足りないため、間にトランジスタを挟み、mbedの出力を別電源から与えた電圧に変換して蛍光表示管に与えています。

蛍光表示管を光らせるには電圧は12V以上の電圧が必要ですが、電流はそんなに流れません。

そこで蛍光表示管用の電源は、外部に別の電源を用意するのではなく、秋月の昇圧キットを使って、USBの5Vから昇圧して20Vを得ることで光らせることにしました。

なお、今回20Vとしているのは、ダイナミック点灯により実質明るさが1/4となってしまうため、電圧を上げてその分、1本あたりの明るさをあげています。

2. 使用したセンサー

を使いました。

どちらもI2C接続で接続でき、mbedの使用する端子の数を減らせます。 AM2321とLPS331は、LPS331のI2Cのアドレスを変更することで同時利用できます。

3. mbedのプログラム

mbedはLPC1768、いわゆる青mbedを使いました。 何だかんだで使いやすいmbedだと思います。

今回使用したライブラリは以下です。

ソースコードは以下で公開しています。

mbed_vfd_thermometer - a mercurial repository | mbed

初めてタイマー割り込みを使ってみましたが、こんなに便利なものとは思ってなかったです。コードがすっきりするので見通しがよくなりますね。

下のような感じで表示されます。

温度の表示のときは末尾が「C」になります。

f:id:mia_0032:20141109210942j:plain

湿度表示のときは末尾が「P」になります。

f:id:mia_0032:20141109210950j:plain

気圧表示のときはの末尾なしか3桁のときは「h」が出るようになっています。

f:id:mia_0032:20141109210954j:plain

4. 外装の作成

2枚のアクリル板で挟むサンドイッチみたいな構造にします。

上側にセンサーや蛍光表示管やICなどが出っ張っているので、それを活かしたデザインにします。

まずはプロトタイプを紙で作成しました。

f:id:mia_0032:20141115200516j:plain

加工は、いつもどおりはざい屋にお願いしました。

現物合わせで調整したい基板の取り付け穴などは自分で加工しました。

f:id:mia_0032:20141115200459j:plain

仮組みしてみたときはこんな感じです。

f:id:mia_0032:20141115144820j:plain

できあがり

f:id:mia_0032:20141115204225j:plain

まとめと今後

  • メジャーなセンサーはmbed.orgにライブラリをつくってくれている人がいるのでありがたいです。
  • RTOSはサンプルプログラムがわかりやすいので、サンプルを実行しながら説明を読むと、理解しやすかったです。
  • Ethernetとかの部分はまだ作りかけです。

mbed NXP LPC1768

mbed NXP LPC1768

mbed用イーサネット接続キット

mbed用イーサネット接続キット