![](https://blogimg.goo.ne.jp/user_image/27/2c/c14d78a8a2c0e573d0ade0a01c70620c.jpg)
透過濃度計と言うのは、LEDのライトとCdSを使ってその間に来るフィルム状の物の濃さを測る物。フィルムの色が濃くて光が通らないとCdSの抵抗値が上がり、反対に薄いと抵抗値が下がる。Arduinoのアナログピンで受けるときは濃いと電圧が上がり、薄いと下がる。きれで時間の経過とともに濃さが違って来るかどうかをモニターする。
![](https://blogimg.goo.ne.jp/user_image/1f/c6/ad26caacce27526811e7019167c462d9.jpg)
仕組みは簡単。
![](https://blogimg.goo.ne.jp/user_image/78/d2/1206de955730f1e1b4ff1370226c5263.jpg)
CdSは直列に5個接続されていて大きなフィルムの幅方向の平均を取る感じになっている。(生産機械に取り付けているので写真はなし。) 写真は無いがCdSの取り付けステーだけは外注してお金をかけた。他のパーツは全部安い。
出力をどうして確認するかろ言うと、今回はシリアル通信でPCに送って表示する事にした。LCDを買ってグラフ表示しようかと当初は思っていたのだけれどど、これがなかなか情報が少なくて調べ難かった。何かちょっと面倒らしい。
なので、安易な方法としてPCの画面にプロットする事にした。
候補は以下。
1) Arduino IDEのシリアルプロット機能。
これは便利だけれどXY軸のメモリが自分で変えられない。なので止めた。
2) 国産のあるソフト。
英語表記にならないから止めた。使うのは日本人では無いので日本語表記では困る。良いソフトだったが残念ながら使えない。
2) SerialPlot
(最初書いた時とリンクのURLを変更している。)
なかなか良いのでこれを使うことにした。
ちょっと最初、設定をどうするかわからなかったけれど、わかってみると難しくもない。
Arduinoでシリアル通信をONにし、シリアルプリントでPCのデータを送る。データ型は今回はfloatで小数点以下2桁に制限。どうせ人間が見るからそれ以上は要らない。またArsuinoから送られて来るのはASCIIコードだそうなので、SerialPlotではそう言う設定もできる。
![](https://blogimg.goo.ne.jp/user_image/67/4c/1ac0a441f723ebdd731b2a12b9e3b8ff.jpg)
アナログ値を読んで認識されるのは0〜1023の整数値だそうなので、それを電圧値に計算で求め、その計算結果をPC上のSerialPlotで受けてグラフ表示する。
スケッチ....わざわざ書かなくても良い位簡単。プロットへの出力をなぜ電圧にしているかと言うと、将来別の方法で読む事になった場合、値が大きく違ってしまうから。今回のこれの前はデータロガーでやっていたのでそれに合わせていると言う事もあり。
下にスケッチを追加しておいた。時間待ちのところなど素人丸出しの組み方だけれど、用は足りる。変数T1はグルーバル変数にする必要は無いが、最初にそう書いてしまったのでそのまま。値を電圧に変換するところの計算式に数字がそのまま入っていてカッコ悪いが1回しか使わないし、まあ良い事にしよう。ちなみに値は1ビット変化した時の電圧に相当。つまり5V÷1024の値。(0〜1023のステップ数)
![](https://blogimg.goo.ne.jp/user_image/19/2c/157e4d0ddb14cdb0911d3fa1e9223cdc.jpg)
あ、まずい! 0.00489じゃなくて0.00488だ。細かい事は気にしない気にしない。
データの取得とプロットは6秒置き。これはプロセス上そんなに頻繁に見ないければならないほど値が変わるとは思っていないため。それにデータを見て対処するのは人間の仕事なので1分に1回の取得でも間に合う位。ただ、あまり間を開けると作業員が動いてるかフリーズしてるかわからないので1分に10回にしている。