2016年2月28日日曜日

Arduino 1.6.7のdelay...

土壌水分をTDR法で測る装置(単純にPLLですが)が利用できるような精度で土壌水分量を測ることが出来るのか検証したいと色々考えあぐねていましたがー乾燥土壌をどうやって毎回準備するのか、その乾燥度は?-ひょっと、「容積比100%の土壌を作って、連続的に重量と、水分量のセンサーの値をプロットしてゆけば、期間中に減るのは水分(蒸発する)だけなので、比重1の水のヘル量は重量の減り具合から測れるので、測定可能だ」と思いつきました。 しかし、長期期間一定の時間に記録をする、というのは子供のころから最も苦手とするところなので、「Arduinoを使って自動でサーバのDBにデータを送らせる!」ことを考え;
1)手元のEthernet ShieldとArduino Unoで取りあえず、定期的にデータをサーバに送る基本プログラムを作ってみました。
  これがうまくゆきません!室内環境でサーバからUSB持って来れるので消費電力のことは考えずにdelay()で1時間程度のインターバルをとることを考えてみましたが、
  a) Arduino 1.6.7ではdelay()の引数に60*1000を入れると、戻ってきません。 しようが無いので、for(i=0; i < 60*60; i++) { delay(1000) };で逃げてみましたらこれはうまくゆきます。 
    b) スケッチはサンプルのWebclientから持ってきましたが、一定間隔で一瞬のアップロードの為に接続しっぱなしも勿体無いので、アップロードが済むと一旦接続を切り、アップロードの度にネットへの接続をさせることにしました。
 c) 使用したethernet shieldはW5100を使ったSainSmartの物ですが、これがMACアドレスが無い! サンプルスケッチのMACを使ってみましたが、気持ち悪いのと、家庭内LANですので、固定IPを割り当てることにしてみました。
 何とか、1時間毎にサーバにデータを送ってくれるようになりました。 そのスケッチは下。













重量の自動計測装置もついでなので、FSR(Force Sensing Resistor)を秋月で買ってきて自作することにしました。 今回は仮装置なので、在り合わせのトロイダルコアをセンサの上にのっけてその上にアルミ板を置いて被検体を載せることにしました。 将来はおしゃれにアクリルかなんかで計量装置を作ってみようと思います。 20g以上であれば、数kgから10Kg位までは測れそうですが、やってみないと?? 
 こうやって書いてみると大したことないのですが、ここに来るまでに丸一日を費やしました。 1時間毎の接続は、とにかく実際に1時間毎にアップロードできているかどうか確かめる必要があるので、、、

センサー(PLL)部分を十字パターン基板で作ってみたが、これは完全に失敗ー不安定。 確実にパターンを切断したか判断する箇所が多すぎて手に負えない。 再度、ユニバーサル基板で作り直すことにする。  最初の、「取りあえずやってみ!」バージョンがすんなり動いたのでちょっと油断したかもしれない、、、。

0 件のコメント:

アンテナ切り替えの自動化 (続き)

 調子よく動いていると思っていたら、インジケータのLEDが次々と点かなくなってゆく、、、。 不精して、出力端子(14Vのon/off)にLEDを直列抵抗と入れていたのですが、これではダメっぽい。 LEDが死んでいる。 では、という事でFETのスイッチを入れて、ゲート電圧で検出して...