PICAXEでロードセル用ADコンバータHX711のデータを読むところまではきました。
→ 1.ロードセル用ADコンバータHX711のデータを読む
考え所はPICAXEでこのデータをどこまでどうするかです。
PCに生データを送るインターフェイスとしての機能は必要としても,ひょいと使えたり特定の用途に組み込んだり,なんにしても生データの意味とある程度の処理ができれば使えるわけです。
モジュールの秋月のサンプルプログラムやWebの解説などを参考にしながらのオヤジ的処理法案です。
1.HX711からの24bitデータの基本的な処理
1) 24bitデータを2の補数から正の整数に変換する
HX711からの24bitデータは2の補数表現です。PICAXEなどではそのままでは扱えないので正の整数に変換します。
変換といっても [データ] XOR 80 00 00 するだけです (^^;;;;;;;
仕様書のプログラム例にもさらっと書かれているように,24bitの最上位のbitを反転させます。
24bitデータ(16進表記)
最小値 最大値
2の補数 80 00 00 -> 7F FF FF
正の整数 00 00 00 -> FF FF FF
2) ロードセルの1gあたりの電圧変動を前もって計算する
・手持ちの10Kgのロードセルは
定格出力:1.0±0.2mV / V(仕様書)
供給電圧:4.2987V
(HX711からの供給電圧は基準電圧で少し低めに安定化されるらしい)
・上記の定格出力と供給電圧から
最大荷重10Kgの時の電圧値は 1.0mV*4.2987=4.2987mV
なので1gあたりの源電圧値は 4.2987mV/10000(g)
・そして最終的にHX711のアンプで128倍増幅されるので
1gあたり 4.2987mV/10000*128 =0.05502336 mV
が出力電圧となり,増幅しても小さい,,。
なお,HX711に5V電源を繋ぐと秋月のモジュールでは安定化された電圧は(基準電圧と2つの抵抗の値の比で)4.2987Vになるとのことですが,私の実測値では4.325Vでした。これは私が使っている計測器や電源のばらつきによるのかな? 自信がないので,秋月の数値にしておきます (^^)
3) 電圧値を読み取る方の HX711の1bitが表すmVの値を計算しておく
・24bit ADコンバーターは2の24乗の分解能なので,1bitは
4298.7mV/2^24=0.00025622248 mVの電圧を表します
4) ロードセルからの出力電圧をHX711でグラムに変換するのは
・「HX711の1bitあたりの電圧*読み取り値」を「ロードセルの1gあたりの源出力電圧*128倍増幅値」で割るとグラムがでるはずです,,。
・なので,この10Kgロードセルの換算式は
4298.7/2^24*[データ値]/(4.2987/10000*128)
この計算は結構細かく,桁数もあるので,計算中の桁落ちを気にしながらの処理が必要です。
また,この換算式だけできっちりグラムが出てくると考える人はいないですよね。はい,世の中そんなに甘くなく校正は必須でしょう(^^;;;;;;;;。
2.16bitデータに変換してみるとどうなるかの検討
PICAXEで得られた生のデータはそのままPCのコンソールにシリアル通信で送り,表計算ソフトなどでいろいろな検討が可能です。
10Kgのロードセルでは1gの単位がまぁまぁ出るなら私は満足なので,まずは24bitデータの下位8bitを捨て,上位16bitだけでやってみました。
お手軽値段の分銅を手に入れ,ロードセルをクランプで机に挟み計測です。
ロードセルに乗っているのは200gの分銅です。
PICAXEよりも分銅の方が存在感がありますね (^^;;;;;;;
この200gの分銅の計測値をコンソールで受け取っています。
さすがに上位16bitの値は安定しています。
これを表計算(LibreOffice calc)にコピペして検討してみました。
無荷重状態が安定してから200gの分銅を置いてみた結果です。
赤の上位16bitの値(実際はこの256倍)は分銅を置いた約1sec後から安定した数値を示しています。
青の下位8bitはやはり変動は大きめですが,上位16bitが安定してからの振れ幅は最大で150程度,3sec後ぐらいからはもっと安定してきています。
この10kgのロードセルの場合,下位8bitの150の振れ幅は大体0.6g程度に値します。なので,上位16bitでも1gの単位はまぁまぁ出ていると勝手に解釈しています。
(^^;;;;;;;。
次に,10gから200gまでの分銅を計測して直線性を見てみました。
赤の16bitの源データと青のグラム換算した計測値,ともにリニアに移行しています。
ま,200gまでだと両方の値ともに相関も0.9998程度,直線回帰で校正をかけると1g単位の値はまずまず出ていると思います。
ロードセルを机にクランプで挟んで分銅を直接乗せるだけといういいかげんな計測なのですが,実は私が予想していたよりも結構リニアにデータがとれました (^^)
ま,もっと重たい物までどうかは分からないですが,いろいろやってみたくなる気にはなりました。
PICAXE内でどこまでできるかも含めて検討したいですね。
・PICAXEを使って重さを測ってみる 3.ロードセル出力の読取値をグラムに換算する式を作ってみる
→ 1.ロードセル用ADコンバータHX711のデータを読む
考え所はPICAXEでこのデータをどこまでどうするかです。
PCに生データを送るインターフェイスとしての機能は必要としても,ひょいと使えたり特定の用途に組み込んだり,なんにしても生データの意味とある程度の処理ができれば使えるわけです。
モジュールの秋月のサンプルプログラムやWebの解説などを参考にしながらのオヤジ的処理法案です。
1.HX711からの24bitデータの基本的な処理
1) 24bitデータを2の補数から正の整数に変換する
HX711からの24bitデータは2の補数表現です。PICAXEなどではそのままでは扱えないので正の整数に変換します。
変換といっても [データ] XOR 80 00 00 するだけです (^^;;;;;;;
仕様書のプログラム例にもさらっと書かれているように,24bitの最上位のbitを反転させます。
24bitデータ(16進表記)
最小値 最大値
2の補数 80 00 00 -> 7F FF FF
正の整数 00 00 00 -> FF FF FF
2) ロードセルの1gあたりの電圧変動を前もって計算する
・手持ちの10Kgのロードセルは
定格出力:1.0±0.2mV / V(仕様書)
供給電圧:4.2987V
(HX711からの供給電圧は基準電圧で少し低めに安定化されるらしい)
・上記の定格出力と供給電圧から
最大荷重10Kgの時の電圧値は 1.0mV*4.2987=4.2987mV
なので1gあたりの源電圧値は 4.2987mV/10000(g)
・そして最終的にHX711のアンプで128倍増幅されるので
1gあたり 4.2987mV/10000*128 =0.05502336 mV
が出力電圧となり,増幅しても小さい,,。
なお,HX711に5V電源を繋ぐと秋月のモジュールでは安定化された電圧は(基準電圧と2つの抵抗の値の比で)4.2987Vになるとのことですが,私の実測値では4.325Vでした。これは私が使っている計測器や電源のばらつきによるのかな? 自信がないので,秋月の数値にしておきます (^^)
3) 電圧値を読み取る方の HX711の1bitが表すmVの値を計算しておく
・24bit ADコンバーターは2の24乗の分解能なので,1bitは
4298.7mV/2^24=0.00025622248 mVの電圧を表します
4) ロードセルからの出力電圧をHX711でグラムに変換するのは
・「HX711の1bitあたりの電圧*読み取り値」を「ロードセルの1gあたりの源出力電圧*128倍増幅値」で割るとグラムがでるはずです,,。
・なので,この10Kgロードセルの換算式は
4298.7/2^24*[データ値]/(4.2987/10000*128)
この計算は結構細かく,桁数もあるので,計算中の桁落ちを気にしながらの処理が必要です。
また,この換算式だけできっちりグラムが出てくると考える人はいないですよね。はい,世の中そんなに甘くなく校正は必須でしょう(^^;;;;;;;;。
2.16bitデータに変換してみるとどうなるかの検討
PICAXEで得られた生のデータはそのままPCのコンソールにシリアル通信で送り,表計算ソフトなどでいろいろな検討が可能です。
10Kgのロードセルでは1gの単位がまぁまぁ出るなら私は満足なので,まずは24bitデータの下位8bitを捨て,上位16bitだけでやってみました。
お手軽値段の分銅を手に入れ,ロードセルをクランプで机に挟み計測です。
ロードセルに乗っているのは200gの分銅です。
PICAXEよりも分銅の方が存在感がありますね (^^;;;;;;;
この200gの分銅の計測値をコンソールで受け取っています。
さすがに上位16bitの値は安定しています。
これを表計算(LibreOffice calc)にコピペして検討してみました。
無荷重状態が安定してから200gの分銅を置いてみた結果です。
赤の上位16bitの値(実際はこの256倍)は分銅を置いた約1sec後から安定した数値を示しています。
青の下位8bitはやはり変動は大きめですが,上位16bitが安定してからの振れ幅は最大で150程度,3sec後ぐらいからはもっと安定してきています。
この10kgのロードセルの場合,下位8bitの150の振れ幅は大体0.6g程度に値します。なので,上位16bitでも1gの単位はまぁまぁ出ていると勝手に解釈しています。
(^^;;;;;;;。
次に,10gから200gまでの分銅を計測して直線性を見てみました。
赤の16bitの源データと青のグラム換算した計測値,ともにリニアに移行しています。
ま,200gまでだと両方の値ともに相関も0.9998程度,直線回帰で校正をかけると1g単位の値はまずまず出ていると思います。
ロードセルを机にクランプで挟んで分銅を直接乗せるだけといういいかげんな計測なのですが,実は私が予想していたよりも結構リニアにデータがとれました (^^)
ま,もっと重たい物までどうかは分からないですが,いろいろやってみたくなる気にはなりました。
PICAXE内でどこまでできるかも含めて検討したいですね。
・PICAXEを使って重さを測ってみる 3.ロードセル出力の読取値をグラムに換算する式を作ってみる