Lesson 73
【計量・重量センサ】
こにんちは、管理人のomoroyaです。
センサーの使い方の基本を学習する入門編。
本Lessonの電子部品、昔購入しいて放置していたものを見つけてきました。
計量・重量センサ。
下記2つの部品から構成されています。
- ロードセル シングルポイント(ビーム型)
- ADコンバータ:HX711使用
「ロードセル シングルポイント(ビーム型)」は量やトルクなどを検出するセンサ。
※荷重変換器
アルミ起歪体にひずみゲージ(ストレインゲージ)がホイートストンブリッジ回路構成で貼りつけられており、荷重に応じた電圧をリニアに出力します。
このセンサとArduinoを使用することで電子スケールの計量器ができあがりというわけです。
世の中には、まだまだ色々なセンサーがあります。
これからも、色々なセンサーで遊んでいきます。
※そろそろ電子部品をさがさないと紹介するものがない・・・
本記事はLesson 73 【計量・重量センサ】です。
本Lessonで使用している「計量・重量センサ」は以下が同等品。
※prime対応品
※出荷元:Amazon
ただし、歪の検出を利用しているため円盤の板状がついたこちらがおすすめ。
ピンヘッダの取り付けも不要です。
Arduino入門編の解説にて使用しているArduinoは互換品です。
互換品とは言え、Arduinoはオープンソースであり複製して販売するのもライセンス的に問題なし。
そのため互換品の品質も悪くなく、それでいて値段は安いです。
正規品本体の値段程度で豊富な部品が多数ついています。
正規品(Arduino UNO R3)の本体単品がほしい方はこちらとなります。
Arduino入門編2では「Arduino UNO R4 Minima」「Arduino UNO R4 WIFI」にて遊ぶため今のところは正規品を使用。(まだ互換品が・・・ほぼない)
はじめに
本Lessonで使用する「計量・重量センサ」はホイートストンブリッジ回路を利用して歪みを検出することで重さを計量するセンサ。
出力された電圧値を「HX711」の24bitADコンバータを利用することで数値に変換します。
データシートはすぐに見つけることができます。
秋月電子などで検索ください。
- ロードセル:「SC133」
- 24bitADコンバータ:「HX711」
ロードセルは定格容量が様々ありますので測定対象にあわせて選択ください。
本Lessonにて使用するのは定格容量が2kgとなります。
キッチンで使う、電子スケールを想定して2kgにしてみました。
Lesson 73 目標
本Lessonの目標は以下です。
2.計量・重量センサを作り重さを取得するスケッチを描く
3.計量・重量センサから重さのデータを取得する
いつものように、遊ぶことが重要です。
「計量・重量センサ」ですが、24bitのADコンバータ(HX711)を利用するためArduinoで取得する値はデジタル値になります。
クロックデータをHX711へ送るとシリアルデータとして24bit分のデータが出力されます。
データシートを見ていただくとわかりますが、若干わかりづらいかも・・・。
準備
ではLessonの準備に取り掛かりましょう。
電子部品は「ロードセル(SC133-2kg)」「ADコンバータ(HX711)」の2つ。
ただし、ロードセルについている歪みセンサを機能させるためには歪がでるようにロードセルを固定させる必要があります。
そのため、遊ぼうと思っているなら下記アクリル板がついたものがおすすめ。
管理人はロードセルとADコンバータしかないので、無理やり固定させてみました。
必要なもの
- USB接続用のPC(IDE統合環境がインストールされたPC)
→管理人が勝手に比較したBTOメーカーを紹介しています。 - UNO R3(以下UNO)、おすすめUNO互換品(ELEGOO)
- PCとUNOを接続するUSBケーブル
- ブレッドボード安価(大)、ブレッドボード安価(中)
※おすすめブレッドボード(大)、おすすめブレッドボード(中) - M-M Jumper wire(UNOと部品をつなぐための配線)
- M-F Jumper wire(UNOと部品をつなぐための配線)
- M-F M-M F-F セット Jumper wire(UNOと部品をつなぐための配線)
※ブレッドボードはセンサとUNOを直接つなぐ場合不要です。
※ジャンパワイヤーは「M-M」「M-F」を必要に応じて使い分けてください。
Jumper wire、抵抗は今後も頻繁に利用します。
Jumper wireはできれば、「オス-メス オス-オス メス –メス」の3種類を揃えておくことをお勧めします。
短めが使いやすい場合も。
抵抗も単品で揃えるよりはセットをおすすめします。
抵抗、LEDなどを個別でセット品を購入しても、そんなに使わない!
という方は、「電子工作基本部品セット」が使い勝手が良い。
使用部品説明
「ロードセル(SC133-2kg)」「とADコンバータ(HX711)」について説明していきます。
計量・重量センサ ロードセル(SC133-2kg) 実物写真
下の写真が計量・重量センサの「ロードセル(SC133-2kg)」の実物写真です。
■計量・重量センサの「ロードセル(SC133-2kg)」と「ADコンバータ:HX711」実物写真
■向き
計量・重量センサ ロードセル(SC133-2kg) 回路図
計量・重量センサの「ロードセル(SC133-2kg)」の回路図。
回路に興味がないかたは必ず読み飛ばしてください。
■回路図
簡単ですが書いておきます!
回路は特に難しいことはなく「ホイートストンブリッジ回路」の構成。
ブリッジ回路の歪計測について詳しく知りたい方は下記のサイトなどが良いかと。
英語のサイト
https://www.allaboutcircuits.com/textbook/direct-current/chpt-9/strain-gauges/
計量・重量センサ ロードセル(SC133-2kg) 仕様
遊び、学習で使う分には気にする特性はとくにありません。
プログラミングするために定格出力が1.0±02mV/Vだということは頭に入れておきましょう。
Name | Function |
---|---|
定格出力 | 1.0±0.2 mV/V |
非直線性 | 0.05 %F.S(%FSとはフルスケールに対する割合) |
Hysteresis | 0.05 %F.S |
再現性 | 0.05 %F.S |
Zero balance | ±0.1 mV/V |
温度補償範囲 | -10 ~ +40 ℃ |
推奨動作電圧 | 5 ~ 12 V |
Safe overload | 120 %F.S |
Ultimate Overload | 150 %F.S |
接続 | 印可電圧:Red+、Black- 信号:Green+、White- |
24bitADコンバータ(HX711) 仕様
詳細は秋月電子などで検索ください。
- 24bitADコンバータ:「HX711」
Name | Function |
---|---|
動作電圧 | 2.6 ~ 5.5 V |
出力データ速度 | 10 or 80 SPS |
A/Dコンバータの分解能 | 24 bit |
利得 | 32 , 64 , 128 db を選択可能 |
温度補償範囲 | -40 ~ +85 ℃ |
出力データ | 2の補数 |
インターフェイス | クロックとデータ線(2本)によるシリアル出力 |
その他 | ロードセルとADCアナログ電源用の電源レギュレーターを内蔵 |
本Lessonは遊び、学習を想定しています。
Arduinoの仕様範囲内で使用していれば問題になることもありません。
遊び、学習以外での使用用途をお考えの場合はデータシートを必ず確認しましょう。
実践 回路作成とコード作成
最初に回路図を確認してください。
次に、回路図に合わせて部品を接続します。
最後にコードを書いて、「計量・重量センサ」を接続して重さを測定してみましょう。
Arduinoのピン配置を確認したい方は番外編02を参照してください。
回路図
Arduinoの使用ピンは以下。
- 入出力ピン:D8、9
- 5V、GND
回路図がこちら。
こちらがブレッドボード図。
回路図は「fritzing」を利用しています。
「fritzing」の使い方は下記を参照してください。
接続
下図に示すように、用意した部品を使用して接続しましょう。
電子部品は「計量・重量センサ」のみ。
使用するポートは
- 入出力ピン:D8、9
- 5V、GND
穴に挿入しづらいときは、ラジオペンチなどを使用してください。
Load Cellとは半田でつなげた方が良いですが、今回は簡易的にクリップで接続。
コードの書き込み
接続が終わったら、USBケーブルを使用してUNOにプログラムを書き込んで行きましょう。
コードを書き終えたら、いつでも利用できるように「ファイル」⇒「名前を付けて保存」で保存しておきましょう。
コマンド説明
本Lessonでは、特に新しいコマンドはありません。
サンプルコード
仕様からADコンバータから得られた値を重さ(g)に変換する必要があります。
・avddの出力電圧(テスタなどで測定、測定できない場合は4.3V程度)
・2^24 = 16777216
・128(利得)
v_vol = ave*(avdd/16777216.0/128); //ADコンバータ値×1bitあたりの電圧・2000は本Lessonのロードセルの仕様(2kg)
//↓定格出力 0.00098~0.0012の間で補正が必要@datasheet
weight = v_vol / (0.001*avdd/2000.0); //得られた電圧÷1gあたりの出力電圧
//Lesson 73 計量・重量センサ //ロードセル:シングルポイント , ADコンバータ:HX711 //https://omoroya.com/ const int DAT = 8; const int CLK = 9; float avdd = 4.28; //AVDD端子(E+)の電圧 テスタなどで測定して結果を入れる long offset = 0; //何も載せていないときの値をオフセットとする void setup() { Serial.begin(9600); //シリアル通信のデータ転送レートを9600bpsで指定 Serial.println("Start weighing."); //シリアルモニタに表示 pinMode(DAT, INPUT); //8番ピンをINPUT指定 pinMode(CLK, OUTPUT); //9番ピンをOUTPUT指定 //HX711びデータ読み出し オフセット値取得 //CLK H:1us , L:1us設定 @dataseet for(char i=0;i<24;i++) { digitalWrite(CLK,HIGH); delayMicroseconds(1); digitalWrite(CLK,LOW); delayMicroseconds(1); offset = (offset<<1)|(digitalRead(DAT)); } //データ出力は2の補数であるため変換 offset = offset^0x800000; delay(1000); } void loop() { float ave , v_vol , weight; long sum = 0 , data; //HX711びデータ読み出し 10回測定の平均 //CLK H:1us , L:1us設定 @dataseet for (int i = 0; i < 10; i++) { data=0; while(digitalRead(DAT)!=0); //dataはMSB→LSBで24bit for(char i=0;i<24;i++) { digitalWrite(CLK,HIGH); delayMicroseconds(1); digitalWrite(CLK,LOW); delayMicroseconds(1); data = (data<<1)|(digitalRead(DAT)); } //利得の設定(CLK:25,26,27で利得設定) digitalWrite(CLK,HIGH); //利得128を設定したいので25回目で終了 delayMicroseconds(1); digitalWrite(CLK,LOW); delayMicroseconds(1); //データ出力は2の補数であるため変換 data = data^0x800000; sum += data; } ave = sum /10 - offset; v_vol = ave*(avdd/16777216.0/128); //ADコンバータ値×1bitあたりの電圧 //↓定格出力 0.00098~0.0012の間で補正が必要@datasheet weight = v_vol / (0.001*avdd/2000.0); //得られた電圧÷1gあたりの出力電圧 Serial.print(weight);Serial.println("g"); //シリアルモニタに表示 delay(1000); }
動作確認
では、さっそく動作を確認していきます。
動作はTwitterに掲載しましたこちら。
計量センサを使ってみる!
500円玉
10枚70g、5枚35g
精度も、それなりにとれた感じ。
解説記事執筆中。#arduino pic.twitter.com/StvPob0tNa— おもろや (@omoroya777) November 12, 2022
本Lessonで使用した「計量・重量センサ」は安価ですが学習、遊びには十分。
しかも、土台とキャリブレーションをしっかりすれば精度もよし。
電子スケール計量器を作ってみるのも良いかと思います。
まとめ
本Lessonは、以下を目標としました。
2.計量・重量センサを作り重さを取得するスケッチを描く
3.計量・重量センサから重さのデータを取得する
「計量・重量センサ」は手軽に精度よく重さを測定することができます。
自分で電子スケール計量器を作る電子工作に向いている電子部品だと思います。
さっそく作って遊びましょう。
Lesson 73 【計量・重量センサ】 はここまで。
疑問点、質問などありましたら気軽にコメントください。
次回、Lesson 74は思案中です。
最後に
疑問点、質問などありましたら気軽にコメントください。
この電子部品の解説をしてほしい!などなどなんでもOKです。
リンク切れ、間違いなどあればコメントいただけると助かります。
Arduino入門編、番外編、お役立ち情報などなどサイトマップで記事一覧をぜひご確認ください。
Arduino入門編、Arduino入門編2で使用しているUNOはAmazonにて購入可能です。
Arduino入門編では互換品を使用。
Arduinoはオープンソース。
複製して販売するのもライセンス的に問題なし。
そのため互換品の品質も悪くなく、それでいて値段は安いです。
正規品本体の値段程度で豊富な部品が多数ついています。
学習用、遊び用、お試し用には安価な互換品がおすすめです。
ELEGOO UNO キット レベルアップ チュートリアル付 uno mega2560 r3 nanoと互換 Arduino用
上記のものでも十分に多数の部品が入っていますが、最初からもっと多数の部品が入っているこちらもお勧めです。
Arduino入門編2では「Arduino UNO R4 Minima」「Arduino UNO R4 WIFI」にて遊ぶため今のところは正規品を使用。(まだ互換品が・・・ほぼない)
Amazonでお得に買う方法
Amazonでお得に購入するならAmazon Mastercard、Amazonギフト券がおすすめです。
時期により異なりますが、様々なキャンペーンを実施しています。
\Amazonギフト券/
Amazonギフトカード キャンペーン
\Amazon Mastercard お申込み/
Amazon Mastercard 申し込み
いずれの場合もプライム会員である方がお得!!
\Amazon Prime 30日間の無料会員を試す/
無料会員登録
コメント