STA25では、スキーのたわみとねじれをセンシングする開発をしてます。
そこで、3年ぶりにひずみゲージセンサを作成するので、アンプもADS122U04を採用することにしました。
すっかり忘れていたので、ほぼ最初からのすたーとなりました。
●小さな2Chヒズミアンプ基板は実用的でなかった。
3年前に小型コンセプトモデルとして作成した基板で、測定実験には使ってなかったので、今回は初めてとなります。
下記不具合がでたので、新たに基板を作り直しました。
①ターミナルねじが締め付けがよわくて、接触不良多発で、ブリッジ抵抗安定しない
②ターミナルからIC端子までAin線の距離が1ch,2chで違っていて、抵抗値ばらつきが発生。
③M5Atom用基板だが、今回は、30cmのシリアルケーブルでマイコン接続するので合わない
上記理由から基板作り直してました。
マイコン分離型で、ケーブルでマイコンと接続します。
ターミナルブロックを左右に配置して、Ain端子との距離を最短で均一にしました。
●トラブル備忘録
①3年前の基板では、ターミナルブロックが小型でネジがちゃちかったので、締め付け力がばらついて、抵抗ばらついて、実験にならなかった。
②5年前の中華ロードセルが抵抗値がおかしくなっていて、テスト用に使えなくて、自作の両持ちロードセルにした。
③マイコン側の電源が、不安定で送信しても、ADSが反応しなかったので、マイコン側の電源を修理してからスタートとなった。
接続図
●プログラム
3年前の2CH用プログラムをちょい変更しただけで、使えました。当初命令直後にdelayをいれないと安定しなかったのですが、
マイコン側電源を修理したら、delay無しでも動作するようになりました。
プログラムはGISTに置いてあります。
https://gist.github.com/dj1711572002/edf1980e1807b9f854eef7b531dc77d0
レジスタ設定は、プログラムコードにコメントありますので、それを参考にしてください。
●3バイトデータの符号付整数への変換
データシートの36ページに詳細書いてあるので、それを見ながら変換関数つくりました。最上位ビットが1のときはマイナスで下りになります。私の使い方はロードセルなので、実際の電圧値は必要ないので、バイナリデータを符号付の整数に変換したデータを使って校正して力の変換をします。
int Toint24(byte d0, byte d1, byte d2) { long val; if ((d2 & B10000000) == B10000000) { //最上位ビットたっていればマイナス val=(d0+d1*256+d2*256*256)-0xFFFFFF+1; } else { val = d0+d1*256+d2*256*256; } return val; } |
動作結果1:2Ch動作ですが、切り替えしながらサンプリングしているので、100SPSで遅延が1.4msecくらいあります。
●動作結果
サンプリング370Hzで2CH測定できました。