ラベル 作ったもの の投稿を表示しています。 すべての投稿を表示
ラベル 作ったもの の投稿を表示しています。 すべての投稿を表示

2020年12月31日木曜日

空調服を生体計測的にhack

  ほい。お久しぶりです。

今年はいろいろとありました。会社クビになったり、拾ってくれる会社があったり、拾われた所ではエンジニアのプライドがめっきり折られたりと…散々な感じですね。多分ですけど、1月末には契約が満期になって、また次の会社を探さないといけないですねぇ…。このご時世でどう探せばいいのやら…。


PSoCに逃げ込むぞ!!!


さて。


夏頃に「暑いけど、空調服は空調服のファンが回りっぱなしで身体が冷えすぎて良くないしなんかないかなー」と考えていました。思いつきでは「あ。生体計測していたし、体内調節機能と連動した空調服の制御が出来ないかな?」っと考えを広げていました。空調服で体内調節機能を連動したものは当時(2020年6月)ありませんでした。生体計測とは何かというと非侵襲、つまりは人体を切り開いたりせずに人体の様子を観察できるようにするという医療工学です。昔はこの分野に関わっていたので「どこ」を「どう」測れば「何が分かる」というのは分かりました。ただ今回のような空調服だとかなり難しいのです。なぜかと言うと次のような理由です。

  • 空調服は運動中に着用している。
  • 実験環境のような密室じゃないのでケーブルを吊り下げておけない
  • 野外に出るのであまりの重装備は怪しまれる。
  • 心電計は使えない(ディスポーザブル電極が手に入らない)
だからと言って雑な測定の仕方では生体情報の取得ができないので測定する範囲を絞ることで実現しようと考えました。空調服を制御する方針は次の通りです。
  • 脈拍を測定して運動負荷をみるようにする。
  • 脈拍数と体温は相関するはずなので、体温は測らない。
  • ボルグスケールに応じて空調服を制御する。
  • 外気の温度と湿度を測定して不快係数に応じて空調服を制御する。
このなかで難しいのは脈波測定です。アナログ回路から作る方法もあれば、センサーやモジュールを使うという方法もあります。アナログ回路から作ると大風呂敷になり過ぎるので脈波センサーを探すことにしました。探しているのは耳の血管で測定できるタイプの脈波センサーです。なぜ指ではダメかというときちんとした理由があります。安静時には心拍と末端の脈波はほぼ同じです。しかし運動時は心拍と末端の脈波は全く異なります。これは手先を動かすこともそうですが重力影響や血圧が変化するためです。末端の脈波の中で影響が比較的少ないのは耳や体幹で測ることの出来る脈波になります。
 おおよその方針が出来たので部品探しをしました。ただお目当ての「耳で測るタイプの脈波センサー」がありませんでした。基板から作ればいいのでしょうがそこまで行うエネルギーもなかったので指で測るタイプで妥協することにしました。


さて、使うセンサーの選定も行ったので全体設計を行いました。



メインはPSoC62xAでFreeRTOSが走っている状態です。(FreeRTOSが機能がシンプルで設計も実装も楽です…。)ユーザーボタンは割り込みで検知するようにしてvTaskNotifyGiveFromISR() でFreeRTOS内のタスクへ通知するようにします。そのほかはソフトウェアタイマーで定期的にセンサー値を取得してqueueに詰めて各タスクで使うような作りにしています。LCDならqueueでもらったデータを表示用のメモリに入れる。ファン制御の所はqueueでもらったデータを使ってファンのスピードを変更するというような切り分けです。私の図の書き方はFPGA屋さんのそれと同じなのでタスクはFPGA屋さんで言う所のモジュールみたいな立ち位置になっています。階層化したものを上から見るか横から見るかの差なだけでほとんどやっていることは同じです。

回路やら体表面用のメカ部品やらを作って、実装をするとこんな感じです。





今回は腕に着けられるようにしましたが、これだけでも怪しさが爆発ですね…。
あまりよろしくないです……。
すべてを組み立てた状態はこのような感じです。



プログラムの構造もすごくシンプルなのでかなり堅い作りかなと思います。
プラスアルファでフレームワークとかも入れていないのでメンテナンス性も良いコードになったと思います。

総括
良い感じ。ただ脈波センサーは変えないとかなり残念な感じになりそう。
今回の改造空調服は「バリアスーツ」と呼んで置きましょう。
今後はリュックに制御装置やらバッテリーが入るようにしようと思います。
どんどんプレデターに出てくるようなスーツのようになりそうです。
いっそ、肩からBB弾とかミサイルを発射出来るようにしてしまうのが
面白いかもしれませんね(当面その予定はないですが…)。
ではまたー。

2016年12月21日水曜日

感雨センサーをつくってみる。

今回はオペアンプとADCを組み合わせて、感雨センサーを作ってみました。
今回のは今までの記事を総合していけば難しい話ではない。

感雨センサーは割とお安く売っているのだけれど、
MEMS、つまりは専用ICになっているというわけじゃ無くて
むき出しの配線に水滴が当たると抵抗値が下がると言う仕組み。
ひずみゲージとかと同じで、
どう考えてもアナログフロントエンドが必要な類のセンサーです。

さて、分圧回路をするか差動増幅みたいな感じなるのかなと考えてチョロット
実験をしてみました。結果から言うと分圧してあげる方がよさそうという事がわかりました。しかし、感雨センサーに水滴を付けたりさせても200KΩ~1MΩぐらいの変化なので分圧回路に使う抵抗は変に小さくすると反応が出ないので「どうしたもんかね?」と言うのが出る訳ですな。

通常のMCUだと「どうしたもんかね…」でおしまいになるのですが、
PSoCなら分圧回路から出力される電圧値をオペアンプで増幅してあげれば
ADCにつなげた時にADCの分解能を最大限使える様になるはずです。
これは今回構成したPSoCの中身です。



分圧回路→オペアンプで1.5倍に増幅→ADCでデジタルに変換
デジタル値はI2CのLCDへ表示する。と言う感じ。
ただし、デジタル値は乾いているとき(抵抗値が大きいとき)は
電圧が大きくなる。なのでそこは気を付けないといけない。



MCUで同じことをするにはオペアンプを買ってきて、
電流制限を付けた電源を作ったりして流れる電流量を調整したり
(しないと配線むき出しのセンサーが熱を持つ可能性がある)
と非常に面倒臭い…。
ま、PSoCだとセンサーの性質を調べる方に時間がかかったけど
割と簡単にできちゃいます。

温度や湿度、気圧などは専用のICとして売られているけれど
今回みたいに物理的な現象を電圧値に変えてセンサーとして使う場合は
アナログフロントエンドを避けて通る事は中々難しい。
また、王道のアナログ回路をするのは部品や機材も多く必要になる。
けどPSoCであれば、途中から部品を買い足す事も少なくなるので
お財布にも優しく、多種多様構成が出来るのでうまく使って
高速に作りたいシステムや作品を作りましょう!!

2015年11月29日日曜日

加工と検証が出来る準備が出来た。

PSoC5LPで機能を造る事は出来ても、
外側やフレーム等の加工や回路のチェックをする機材がありませんでした。
実のところ、電子工作をする上で回路のチェックは
テスター(デジタルマルチメーター)だけでは、無理があります。
例えば、アナログ回路で作成した波形出力機はテスターで見る事が出来ません。
また、混ざった波形にどの周波数が隠れているか
正しい周波数なのかを調べるにはオシロスコープや周波数解析器が必要となります。

電子回路は作れても、外側の箱やメカニカルな機能が残ります。
外形加工は測る道具もそうですが切る道具、削る道具も多くそろえる必要があります。
また穴あけも含め電動の工具は割と大きな音が出るものが多いため
なかなか都心の真ん中では運用に問題があります。

正直なところ、私の家には外形加工と回路検証の手立てがありませんでした。
特に回路の検証は深刻で、手の届きやすい機器が易々と手に入る訳ではありません。
予算もないですしね。
アナログもしっかりやりたい私には少なくとも10Mhz対応のオシロスコープと
周波数解析、デジタルの通信をモニターするロジックアナライザーが欲しいと考えていました。
ただ、これだの機材を揃えようと思うとかなりの高額な金額になります。
外形加工も夕方や夜に出来れば良いのですが
そんな訳にも行かないので低騒音なNC加工の機器が欲しいと考えていました。
多くの時間をかけて考えた結果として、私はこれらを解決するのに2つの機器を買いました。

1つはビットスコープマイクロと言う多機能検査機器
もう1つはda Vinci Jr1.0と言う3Dプリンターです。

ビットスコープマイクロと言うのは、
2Ch20Mhzオシロスコープ、ロジックアナライザー,スペクトラムアナライザー(周波数解析)
8chスペクトラムアナライザーが1つに合わさったUSB検査機器です。
またビットスコープはraspberry Piの様なLinuxボードでも動きます。
Linuxボードを使えば作業用のパソコンとも切り離せますし
OSの割り込みによる測定ミスの可能性を減らせます。

このビットスコープは日本だとどこも取り扱いがないので今回は個人輸入をしました。
梱包ミスがあったりしてオーストラリアのお店とのやり取りが多かったですが
無事に手元に届きました。
pcDuino3nanoで動かすとこんな感じです。


da Vinci Jr 1.0は5万円以内かつスタンドアローンで出力のできる、
今のところ唯一の3Dプリンターでしょう。

 樹脂部分のヒビによって返品交換をしたりしましたが
どうにか運用出来ている感じかと思います。
3Dプリンターは削って作りこんでいく訳ではないので都心でも安心して使えます。


とは言え大きい事もあるので定位置はクローゼットとなりました。
セミクローズド制御でもないので加工精度としてはイマイチですが
時間を気にせずに運用が出来るので良しとしましょう。3mm以下の円形は苦手の様です。
実際に作ったpcDuino3nanoのケース。
売っていないのでda Vinci jr 1.0で作った。



2015年2月20日金曜日

PSoC4でリキッドレベルゲージを作ったよ。

日本サイプレスのブース目当てに
昨年の組み込み総合技術展(通称ET)に行ってきました。

そこで、PSoCで液体の量を測るデモをしていました。


液体の量を測るのは大変でレーザーや電極、超音波など
調整が大変だったり、センサーが高価だったりハードルが高いです。
液体の量を測る事は応用範囲が広いですね。
たとえば冷蔵庫の中にある液体や光に触れる事を避ける液体の量が分かったり
デザインのために液体の量が分からない事を解決したりと
言うような感じ。(医療系でも活用があるかな?)

液体にも少なくとも静電容量ができるはず。
静電容量ができるなら、PSoCにあるCapSenseをうまく使って液体の量を測れるはず。

今回は、ホームセンターで買ったプラスチックのボトルにアルミテープを貼って
アルミテープと液体との静電容量をCapSenseでそこに液体があるかどうかを測る
システムです。



作ろうと思ったきっかけは、コンビニにあるエスプレッソマシンのミルクが切れていた事に店員さんが気づいていないと言うことから。
このシステムの分解能はどうしてもアルミテープの数になってしまうので
1㏄単位での計測はちょっと厳しいかもしれないですね。




(赤線が液体の量です。)
難しいのは、GNDパターンでした。
ピアノの時より液体の場合ではGNDのパターンが重要でした。
始めはスライダー型のパターンにしたのですが、上手くいきませんでした。
これの理由にはCapSenseのアプリケーションノートにヒントがありました。
要は液体の静電容量にはちゃんとPCBのパターンにGND入れろって事でした。
なので、GNDパターンを丁寧に取るようにしました。

CapSenseで液体の量を測る場合では、ボトルが空の状態に
一度ならないといけないので、そう言う部分では改良が必要だと考えられます。
これでもまだ途中で、最終的にはPSoC4BLEを用いて
冷蔵庫の中にある液体がスマートフォンとかで分かるようになったら
いいかなぁと考えています。

2014年7月8日火曜日

Capsenseでピアノ。

今回は「こんなの作ったよ」と言うだけ。
とある会社に持っていく用でしたが、「クソ」扱いとなりました。
とは言え作って放置と言うのも、もったいないので
ブログに乗せようと思います。

外見はこんな感じ。

よこと裏はこんな感じ。



白鍵の所に指で触ると、ドレミファの音が出る。
簡単なピアノです。

難しかった所はPWMの設定だったかな?
PWMのピリオド値を操作するAPIを探すのに時間がかかったり
ドレミファの周波数が微妙で、調整に大変でした。
調整が大変だっただけあって、arduinoのトーン関数より
正確な周波数を出力出来るようになりました。

焦った事はとしては
CapsenseがAGND使わないと、ほぼ言う事を聞かなかった事

配線ではアルミテープとワイヤーを接合するには
はんだづけだと部材が溶けたりする可能性があるので
コンダクティブペン(導電インク)をはんだ付けに応用

通常、mbedやarduinoで同じことをするにはCapseseのライブラリーを
使うか、もしくは外部のタッチセンサーを使う事ことで実現できる。
ただ、必要以上にライブラリー入れたり外部との通信をしたりする事なく
ワンチップで実現できちゃう所はPSoC5LPの便利なところ。
もし、シビアにタッチセンサーを使ったものを作る場合では
PSoC5LPの方が有利に作れると思います。

~~~~~~
作り方等を聞きたい場合、コメント欄に
「詳しくかけ」等、書いて頂けたらと思います。