hiro yamamoto works

マイコンハード、ソフトを作ったりしています。
お家や現場のお困りごと解決に!
内容利用は自己責任でお願いします。

真空センサとADS1015を組み合わせたセンサモジュールを自作

2020-10-25 15:03:00 | マイコンハードウェア

複数の圧力を計測したいので作りました。
I2Cバス接続のADCとMIS-2500-015V圧力センサを
基板に載せてモジュール化しました。
(最大8個の圧力センサが使えます。)
I2Cバスを2mのLANケーブルでマイコンに接続していますが
問題なく測定できました。
長時間の使用でどうなのかは、お客様からのフィードバック
情報を待ちます。2020/12/20更新
製作手順スライド動画をYouTubeへアップしました。2021/03/17

ケースに収納したセンサモジュール
ケースに収納したセンサモジュール

2mLANケーブルでマイコンとI2C接続
2mLANケーブルでマイコンとI2C接続

秋月電子取扱 Cタイプユニバーサル基板にレイアウト
しました。(サイズ 72.0x47.5mm)試作品の写真
I2C ADCと圧力センサを組み合わせた自作モジュール

試作品の写真
I2C ADCと圧力センサを組み合わせた自作モジュール

基板裏配線
センサモジュールの基板裏配線
試作ではラジアルリードの積層セラミックコンデンサを
使いましたが、本製作ではチップコンデンサを使いました。
AE-ADS1015のプルアップ抵抗は使わずに、4.7Kを外付け
しました。

試作配線図
表から見た図と裏から見た図
I2C ADCと圧力センサを組み合わせた自作モジュール
赤点線の交わるところにチップコンデンサが載っています。

無保証自己責任でお願いします。


MMA8451とBME280を2個づつ使う

2020-10-25 05:36:00 | マイコンハードウェア

ESP-WROOM-02 MMA8451とBME280を2個づつないで測定できました。
再編集


当初正常動作できるセンサケーブル長の合計は3m程度でした
が、I2C-Busバッファを追加することで合計10m可能となりま
した。(CAT5フラットタイプLANケーブルで2種センサのセッ
トを5m延長でそれぞれ接続し動作を確認)

バッファについては下記リンクの記事を見て下さい。
作ってみたI2C-BusバッファPCA9600
PCA9600 I2C-Bus Buffer改

PCA9600 I2Cデバイス構成ブロック図

センサについて
・Adafruit MMA8451 Accelerometer Breakout
 レギュレータ,レベル変換搭載 5V電源とロジック可
 I2Cプルアップ抵抗10kΩ付き
 I2Cアドレス 初期設定は0x1D、A端子をGND接続で0x1C

・BME280センサモジュール アマゾンで購入3個入1,880円
 レギュレータ,レベル変換搭載 5V電源とロジック可
 I2Cプルアップ抵抗10kΩ付き
 I2Cアドレス 初期設定は0x76
   パターンカットはんだブリッジで0x77(下画像)

 (ジャンパーパッド左と中央間のパターンをカット
 中央と右をはんだでブリッジする。)

MMA8451、BME280センサ
MMA8451、BME280センサ

スケッチは一部修正が必要かも知れませんが参考まで
また、各センサ用のライブラリはArduinoIDEのメニューから
「スケッチ」「ライブラリをインクルード」「ライブラリを
管理」センサ名で検索しインストールして下さい。
ありがたく使わせていただきます。

#include行の<>記号は半角へ修正して下さい。
#include <Wire.h>
#include "Adafruit_MMA8451.h"
#include <Adafruit_Sensor.h>

#include "SparkFunBME280.h"
BME280 mySensor1;
BME280 mySensor2;

Adafruit_MMA8451 mma1 = Adafruit_MMA8451();
Adafruit_MMA8451 mma2 = Adafruit_MMA8451();


void setup(void) {
Serial.begin(115200);
Serial.println("");
Serial.println("Reading basic values from MMA8451 and BME280");

Wire.begin(4, 5); // //デフォルトは0x1D
if (! mma1.begin(0x1D) || ! mma2.begin(0x1C)) {
//mmaのbegin()の中でwire.begin()してた
Serial.println("MMA8451 Couldnt start");
while (1);
}
Serial.println("MMA8451 found!");

mySensor1.setI2CAddress(0x76);//default 0x76
mySensor2.setI2CAddress(0x77);
if (! mySensor1.beginI2C() || ! mySensor2.beginI2C() ) {
//Begin communication over I2C
Serial.println("BME280 did not respond. Please check wiring.");
while (1); //Freeze
}

mma1.setRange(MMA8451_RANGE_2_G);
mma2.setRange(MMA8451_RANGE_2_G);

Serial.print("MMA1 Range = ");
Serial.print(2 <


シリアルモニタ表示
I2C 4センサのシリアルモニタ表示

Arduino UNO等でもできると思います。
興味がある方はお試し下さい。

無保証自己責任でよろしくお願いします。