\ Surface Pro 7+ とタイプ カバーを同時購入で 18,040 円 OFF! /

Arduino 入門 Lesson 73 【計量・重量センサ】

arduino-lesson73-00Arduino入門編
スポンサーリンク
Arduino 入門
Lesson 73
【計量・重量センサ】

こにんちは、管理人のomoroyaです。

センサーの使い方の基本を学習する入門編。

本Lessonの電子部品、昔購入しいて放置していたものを見つけてきました。

計量・重量センサ。

下記2つの部品から構成されています。

  • ロードセル シングルポイント(ビーム型)
  • ADコンバータ:HX711使用

ロードセル シングルポイント(ビーム型)」は量やトルクなどを検出するセンサ。
※荷重変換器

アルミ起歪体にひずみゲージ(ストレインゲージ)がホイートストンブリッジ回路構成で貼りつけられており、荷重に応じた電圧をリニアに出力します。

このセンサとArduinoを使用することで電子スケールの計量器ができあがりというわけです。

 

世の中には、まだまだ色々なセンサーがあります。

これからも、色々なセンサーで遊んでいきます。
※そろそろ電子部品をさがさないと紹介するものがない・・・

本記事はLesson 73 【計量・重量センサ】です。

 

本Lessonで使用している「計量・重量センサ」は以下が同等品。
※prime対応品
※出荷元:Amazon

 

ただし、歪の検出を利用しているため円盤の板状がついたこちらがおすすめ。

ピンヘッダの取り付けも不要です。

 

Arduino入門編の解説にて使用しているArduinoは互換品です。

互換品とは言え、Arduinoはオープンソースであり複製して販売するのもライセンス的に問題なし。

そのため互換品の品質も悪くなく、それでいて値段は安いです。

正規品本体の値段程度で豊富な部品が多数ついています。

 

正規品の本体単品がほしい方はこちらとなります。

 

スポンサーリンク

はじめに

本Lessonで使用する「計量・重量センサ」はホイートストンブリッジ回路を利用して歪みを検出することで重さを計量するセンサ。

出力された電圧値を「HX711」の24bitADコンバータを利用することで数値に変換します

データシートはすぐに見つけることができます。

秋月電子などで検索ください。

  • ロードセル:「SC133
  • 24bitADコンバータ:「HX711

ロードセルは定格容量が様々ありますので測定対象にあわせて選択ください。

本Lessonにて使用するのは定格容量が2kgとなります。

キッチンで使う、電子スケールを想定して2kgにしてみました。

 

Lesson 73 目標

本Lessonの目標は以下です。

1.ロードセル(SC133)とADコンバータ(HX711)の使い方を学習する
2.計量・重量センサを作り
重さを取得するスケッチを描く
3.計量・重量センサから重さのデータを取得する

いつものように、遊ぶことが重要です。

 

計量・重量センサ」ですが、24bitのADコンバータ(HX711)を利用するためArduinoで取得する値はデジタル値になります。

クロックデータをHX711へ送るとシリアルデータとして24bit分のデータが出力されます。

データシートを見ていただくとわかりますが、若干わかりづらいかも・・・。

 

準備

ではLessonの準備に取り掛かりましょう。

電子部品は「ロードセル(SC133-2kg)」「ADコンバータ(HX711)の2つ。

ただし、ロードセルについている歪みセンサを機能させるためには歪がでるようにロードセルを固定させる必要があります。

そのため、遊ぼうと思っているなら下記アクリル板がついたものがおすすめ。

 

管理人はロードセルとADコンバータしかないので、無理やり固定させてみました。

arduino-lesson73-01

 

必要なもの

※ブレッドボードはセンサとUNOを直接つなぐ場合不要です。
※ジャンパワイヤーは「M-M」「M-F」を必要に応じて使い分けてください。

 

Jumper wire、抵抗は今後も頻繁に利用します。

Jumper wireはできれば、「オス-メス オス-オス メス –メス」の3種類を揃えておくことをお勧めします。

短めが使いやすい場合も。

 

抵抗も単品で揃えるよりはセットをおすすめします。

 

抵抗、LEDなどを個別でセット品を購入しても、そんなに使わない!

という方は、「電子工作基本部品セット」が使い勝手が良い。

 

使用部品説明

ロードセル(SC133-2kg)」「とADコンバータ(HX711)について説明していきます。

 

計量・重量センサ ロードセル(SC133-2kg) 実物写真

下の写真が計量・重量センサのロードセル(SC133-2kg)」の実物写真です。

 

計量・重量センサのロードセル(SC133-2kg)」と「ADコンバータ:HX711実物写真

arduino-lesson73-02

 

■向き

arduino-lesson73-03

 

計量・重量センサ ロードセル(SC133-2kg) 回路図

計量・重量センサのロードセル(SC133-2kg)」の回路図。

回路に興味がないかたは必ず読み飛ばしてください。

 

■回路図

簡単ですが書いておきます!

回路は特に難しいことはなく「ホイートストンブリッジ回路」の構成。

arduino-lesson73-04

 

ブリッジ回路の歪計測について詳しく知りたい方は下記のサイトなどが良いかと。

英語のサイト
https://www.allaboutcircuits.com/textbook/direct-current/chpt-9/strain-gauges/

 

計量・重量センサ ロードセル(SC133-2kg) 仕様

遊び、学習で使う分には気にする特性はとくにありません。

プログラミングするために定格出力が1.0±02mV/Vだということは頭に入れておきましょう。

NameFunction
定格出力1.0±0.2 mV/V
非直線性0.05 %F.S(%FSとはフルスケールに対する割合)
Hysteresis0.05 %F.S
再現性0.05 %F.S
Zero balance±0.1 mV/V
温度補償範囲-10 ~ +40 ℃
推奨動作電圧5 ~ 12 V
Safe overload120 %F.S
Ultimate Overload150 %F.S
接続印可電圧:Red+、Black-
信号:Green+、White-

 

24bitADコンバータ(HX711) 仕様

詳細は秋月電子などで検索ください。

  • 24bitADコンバータ:「HX711
NameFunction
動作電圧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

 

回路図がこちら。

注意
Load Cellとの配線は、購入したものによって異なる可能性があるため購入品の仕様を確認ください。

arduino-lesson73-05

 

こちらがブレッドボード図。

注意
Load Cellとの配線は、購入したものによって異なる可能性があるため購入品の仕様を確認ください。

arduino-lesson73-06.

 

回路図は「fritzing」を利用しています。

「fritzing」の使い方は下記を参照してください。

 

接続

下図に示すように、用意した部品を使用して接続しましょう。

電子部品は「計量・重量センサのみ。

 

使用するポートは

  • 入出力ピン:D8、9
  • 5V、GND

穴に挿入しづらいときは、ラジオペンチなどを使用してください。

Load Cellとは半田でつなげた方が良いですが、今回は簡易的にクリップで接続。

arduino-lesson73-07

 

コードの書き込み

接続が終わったら、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に掲載しましたこちら。

 

本Lessonで使用した「計量・重量センサ」は安価ですが学習、遊びには十分。

しかも、土台とキャリブレーションをしっかりすれば精度もよし。

電子スケール計量器を作ってみるのも良いかと思います。

 

まとめ

本Lessonは、以下を目標としました。

1.ロードセル(SC133)とADコンバータ(HX711)の使い方を学習する
2.計量・重量センサを作り
重さを取得するスケッチを描く
3.計量・重量センサから重さのデータを取得する

 

計量・重量センサ」は手軽に精度よく重さを測定することができます。

自分で電子スケール計量器を作る電子工作に向いている電子部品だと思います。

さっそく作って遊びましょう。

 

Lesson 73 【計量・重量センサ】 はここまで。

疑問点、質問などありましたら気軽にコメントください。

 

次回、Lesson 74は思案中です。

 

最後に

疑問点、質問などありましたら気軽にコメントください。

この電子部品の解説をしてほしい!などなどなんでもOKです。

リンク切れ、間違いなどあればコメントいただけると助かります。

 

Arduino入門編、番外編、お役立ち情報などなどサイトマップで記事一覧をぜひご確認ください。

 

Arduino入門編で使用しているUNOはAmazonにて購入可能です。

互換品とは言え、Arduinoはオープンソース。

複製して販売するのもライセンス的に問題なし。

 

そのため互換品の品質も悪くなく、それでいて値段は安いです。

正規品本体の値段程度で豊富な部品が多数ついています。

 

学習用、遊び用、お試し用には安価な互換品がおすすめです。

 

 

上記のものでも十分に多数の部品が入っていますが、最初からもっと多数の部品が入っているこちらもお勧めです。

 

Amazonでお得に買う方法

Amazonでお得に購入するなら、Amazonギフト券がおすすめです。

現金でチャージするたびに、チャージ額に応じたポイントが付与されます。

最大2.5%!!!(Amazonプライム会員ならさらにお得)

チャージ額(一回分)一般プライム会員
5,000円~19,999円0.5%1.0%
2,0000円~39,999円1.0%1.5%
40,000円~89,999円1.5%2.0%
90,000円~2.0%2.5%

さらに、初回チャージで1000ポイントもらえるキャンペーンも実施中!

\Amazonギフト券 1000ポイントキャンペーン/
Amazonチャージ 初回購入で1000ポイントキャンペーン

 

補足情報
コンビニ・ATM・ネットバンクが対象
購入は1円単位で可能

コメント

タイトルとURLをコピーしました