工業製造
産業用モノのインターネット | 工業材料 | 機器のメンテナンスと修理 | 産業プログラミング |
home  MfgRobots >> 工業製造 >  >> Manufacturing Technology >> 製造プロセス

Arduinoの圧力測定とロギング

コンポーネントと消耗品

>
Arduino UNO
× 1
Delkin Commercial MLC SD
× 1
圧力センサーSKU237545
× 1
データロガーrtc
× 1
i2c lcd
× 1
防水クリアカバープラスチック電子プロジェクトボックス158x 90 x 60mm
× 1
HALJIA 300PcsM3ナイロンブラック六角ネジ
× 1
ELEGOO120pcsマルチカラーデュポンワイヤー
× 1

アプリとオンラインサービス

>
Arduino IDE

このプロジェクトについて

このプロジェクトは、機械式コンプレッサーの効率をチェックするために、貯水池に組み込まれた空気圧を記録したいという結果でした。

ジョージ・コンタクシスからの助け

https://www.youtube.com/watch?v=AB7zgnfkEi4&feature=youtu.be

バールとPSIで日付と圧力を示すディスプレイ

Arduino圧力計。 3つの圧力を読み取る

コード

  • SKU237545液晶リアルタイムクロックとデータロギングを備えた圧力センサー
  • リアルタイムクロックの設定
SKU237545液晶リアルタイムクロックとデータロギングを備えた圧力センサー C / C ++
 // 2018年8月12日に作成されたPhilipBlayney&Jack Davidsonは、Georgeのコードを使用して// SKU237545圧力センサーのKontaxis // https://www.youtube.com/watch?v =AB7zgnfkEi4&feature =youtu.be #include " LiquidCrystal_PCF8574.h "#include" RTClib.h "//リアルタイムクロック#include  // sdカード#defineLCD_ADDRESS 0x27 // LCD特性を定義#defineLCD_ROWS 2#define LCD_COLUMNS 16#define SCROLL_DELAY 150#defineバックライト255 //オブジェクトの初期化LiquidCrystal_PCF8574lcdI2C; RTC_DS1307 RTC; //リアルタイムクロックオブジェクトを定義しますintn =1; int val; // Arduinoアナログピン用のシンプルなデータロガー#defineLOG_INTERVAL 1000 //エントリ間を移動します(より多くの/より高速なデータを取得するために削減します)//ログに記録されたデータをディスクに永続的に書き込むまでのミリ秒数// LOG_INTERVALに設定します毎回書き込む(最も安全)// 10 * LOG_INTERVALに設定して、10回のデータ読み取りごとにすべてのデータを書き込みます。//電力が失われると、最後の10回の読み取りが失われる可能性がありますが、消費電力が少なく、はるかに高速です!#define SYNC_INTERVAL 10000 // flush()の呼び出し間でミル-カードにデータを書き込む600000 =10 minutesuint32_t syncTime =0; //最後のsync()の時刻const int chipSelect =10; //データロギングシールドには、SDcsラインにデジタルピン10を使用しますFilelogfile; void error(char * str){Serial.print(F( "error:")); Serial.println(str);} void setup(void){Serial.begin(9600); //シリアルポートを開始Serial.println(F( "圧力読み取りSKU237545 SENSOR")); // F =動的メモリを保存するマクロ関数lcdI2C.begin(LCD_COLUMNS、LCD_ROWS、LCD_ADDRESS、BACKLIGHT); lcdI2C.print(F( "SKU237545 SENSOR")); lcdI2C.setCursor(0,1); lcdI2C.print(F( "bar and psi"));遅延(2000); // SDカードを初期化しますSerial.print(F( "Initializing SD card ...")); //使用しない場合でも、デフォルトのチップセレクトピンが//出力に設定されていることを確認します。pinMode(10、OUTPUT); if(!SD.begin(chipSelect)){//カードが存在し、初期化できるかどうかを確認します:error( "カードが失敗したか、存在しません"); } Serial.println(F( "カードが初期化されました。")); char filename [] ="LOGGER00.CSV"; //(uint8_t i =0; i <100; i ++){filename [6] =i / 10 + '0';の新しいファイルを作成しますfilename [7] =i%10 + '0'; if(!SD.exists(filename)){//新しいファイルが存在しない場合にのみ開くlogfile =SD.open(filename、FILE_WRITE);壊す; //ループを離れます! }} if(!logfile){error( "couldnt create file"); } lcdI2C.clear(); lcdI2C.setCursor(0,0); lcdI2C.print(F( "ファイル番号")); lcdI2C.print(ファイル名); Serial.print(F( "ログ記録先:")); Serial.println(ファイル名); // RTCに接続if(!RTC.begin()){logfile.println( "RTC failed"); #if ECHO_TO_SERIAL Serial.println(F( "RTC failed")); #endif // ECHO_TO_SERIAL} logfile.println( "Date / Time、pressure、bar、reading、psi、reading"); delay(5000); lcdI2C.clear(); // LCD画面をクリアします。} void loop(void){int SensorVal =analogRead(A1); // Serial.print( "Sensor Value:"); // Serial.print(sensorVal); float Voltage =(sensorVal * 5.0 )/1024.0; // Serial.print( "ボルト:"); // Serial.print(電圧);フロート圧力_パスカル=(3.0 *((フロート)電圧-0.475))* 1000000.0; //ここでキャリブレーションしますfloatpressure_bar =pressure_pascal / 10e5;フロートpressure_psi =pressure_bar * 14.5038; Serial.print( "Pressure ="); Serial.print(pressure_bar); Serial.print( "バー"); Serial.print( "psi"); Serial.print(pressure_psi); Serial.println(); DateTime now; now =RTC.now(); //時間遅延をフェッチします((LOG_INTERVAL -1)-(millis()%LOG_INTERVAL)); // sdカードの読み取りの間に必要な時間の遅延intH =now.hour(); //今すぐ時間を取得し、h int M =now.minute();という整数に格納します。 //今すぐ議事録を取得し、m int S =now.second();という整数に格納します。 //今すぐ秒を取得し、s logfile.print(now.year()、DEC);という整数に格納します。 logfile.print( "/"); logfile.print(now.month()、DEC); logfile.print( "/"); logfile.print(now.day()、DEC); logfile.print( ""); if(H <10){//必要に応じて、上記のようにゼロを追加しますlogfile.print(0); } logfile.print(now.hour()、DEC); logfile.print( ":"); if(M <10){//必要に応じて、上記のようにゼロを追加しますlogfile.print(0); } logfile.print(now.minute()、DEC); logfile.print( ":"); if(S <10){//必要に応じて、上記のようにゼロを追加しますlogfile.print(0); } logfile.print(now.second()、DEC); // logfile.print( '"'); Serial.println(); Serial.print(now.year()、DEC); Serial.print(" / "); Serial.print(now.month()、DEC ); Serial.print( "/"); Serial.print(now.day()、DEC); Serial.print( ""); if(H <10){//必要に応じて、上記のようにゼロを追加しますSerial.print(0);} Serial.print(now.hour()、DEC); Serial.print( ":"); if(M <10){//必要に応じて、上記のSerialのようにゼロを追加します。 print(0);} Serial.print(now.minute()、DEC); Serial.print(F( ":")); if(S <10){//必要に応じて、上記のようにゼロを追加しますSerial .print(0);} Serial.print(now.second()、DEC); Serial.println(); lcdI2C.setCursor(0,0); lcdI2C.print(pressure_bar); //最初に文字列をLCDに出力行lcdI2C.print( "bar"); lcdI2C.print(pressure_psi); lcdI2C.print( "psi"); lcdI2C.setCursor(0,1); //lcdI2C.print(now.year()、DEC);// lcdには年を表示するのに十分な文字スペースがありません//lcdI2C.print( "/"); lcdI2C.print(now.day()、DEC); lcdI2C.print( "/"); lcdI2C.print(now.month()、DEC); lcdI2C.print( ""); if(H <10){//上記のように、必要に応じてゼロを追加しますlcdI2C.print(0); } lcdI2C.print(now.hour()、DEC); lcdI2C.print( ":"); if(M <10){//必要に応じて、上記のようにゼロを追加しますlcdI2C.print(0); } lcdI2C.print(now.minute()、DEC); lcdI2C.print( ":"); if(S <10){//上記のように、必要に応じてゼロを追加しますlcdI2C.print(0); } lcdI2C.print(now.second()、DEC); logfile.print( "、"); logfile.print( "Pressure ="); logfile.print( "、"); logfile.print(pressure_bar); logfile.print( "、"); logfile.print( "bar"); logfile.print( "、"); logfile.print(pressure_psi); logfile.print( "、"); logfile.print( "psi"); logfile.println(); if((millis()-syncTime) 
リアルタイムクロックの設定 C / C ++
 // tronixstuffによるコード#include "Wire.h" #define DS3231_I2C_ADDRESS 0x68 //通常の10進数を2進化10進数に変換decToBcd(byte val){return((val / 10 * 16)+(val%10) );} //バイナリコード化された10進数を通常の10進数に変換するbytebcdToDec(byte val){return((val / 16 * 10)+(val%16));} void setup(){Wire.begin(); Serial.begin(9600); //ここで初期時刻を設定します:// DS3231秒、分、時間、日、日付、月、年setDS3231time(00,43,14,3,14,8,18); //ここで必要な時間を設定します} void setDS3231time(byte second、byteminute、byte hour、byte dayOfWeek、bytedayOfMonth、byte month、byte year){//時刻と日付のデータをDS3231に設定しますWire.beginTransmission(DS3231_I2C_ADDRESS); Wire.write(0); //次の入力を秒レジスタで開始するように設定しますWire.write(decToBcd(second)); //秒を設定しますWire.write(decToBcd(minute)); //分を設定しますWire.write(decToBcd(hour)); //時間を設定しますWire.write(decToBcd(dayOfWeek)); //曜日を設定します(1 =日曜日、7 =土曜日)Wire.write(decToBcd(dayOfMonth)); //日付を設定します(1から31)Wire.write(decToBcd(month)); //月を設定しますWire.write(decToBcd(year)); //年(0〜99)を設定Wire.endTransmission();} void readDS3231time(byte * second、byte * minutes、byte * hour、byte * dayOfWeek、byte * dayOfMonth、byte * month、byte * year){Wire。 beginTransmission(DS3231_I2C_ADDRESS); Wire.write(0); // DS3231レジスタポインタを00hに設定Wire.endTransmission(); Wire.requestFrom(DS3231_I2C_ADDRESS、7); //レジスタ00hから始まるDS3231から7バイトのデータを要求します* second =bcdToDec(Wire.read()&0x7f); *分=bcdToDec(Wire.read()); *時間=bcdToDec(Wire.read()&0x3f); * dayOfWeek =bcdToDec(Wire.read()); * dayOfMonth =bcdToDec(Wire.read()); *月=bcdToDec(Wire.read()); * year =bcdToDec(Wire.read());} void displayTime(){byte second、minute、hour、dayOfWeek、dayOfMonth、month、year; // DS3231からデータを取得しますreadDS3231time(&second、&minute、&hour、&dayOfWeek、&dayOfMonth、&month、&year); //シリアルモニターに送信しますSerial.print(hour、DEC); //表示時にバイト変数を10進数に変換しますSerial.print( ":"); if(minute <10){Serial.print( "0"); } Serial.print(minute、DEC); Serial.print( ":"); if(second <10){Serial.print( "0"); } Serial.print(second、DEC); Serial.print( ""); Serial.print(dayOfMonth、DEC); Serial.print( "/"); Serial.print(月、12月); Serial.print( "/"); Serial.print(年、12月); Serial.print( "曜日:"); switch(dayOfWeek){ケース1:Serial.println( "Sunday");壊す;ケース2:Serial.println( "Monday");壊す;ケース3:Serial.println( "Tuesday");壊す;ケース4:Serial.println( "Wednesday");壊す;ケース5:Serial.println( "Thursday");壊す;ケース6:Serial.println( "Friday");壊す;ケース7:Serial.println( "Saturday");壊す; }} void loop(){displayTime(); //リアルタイムクロックデータをシリアルモニターに表示します、delay(1000); //毎秒} 
LiquidCrystal_PCF8574.h
必要なライブラリ、スケッチの下にライブラリを含め、.zipを追加してから、zipがダウンロードされた場所を選択しますhttps://github.com/mathertel/LiquidCrystal_PCF8574
RTClib.h
ライブラリ、リアルタイムクロック、最初にzipを解凍します。次に、残りのzipファイルをライブラリに追加しますhttps://github.com/mechasolution/RTClib.h

回路図

A5からSCL
A4からSDA
VCCに対して5ボルト
GNDからGND A1への黄色のワイヤー
GNDへの黒いワイヤー
5ボルトへの赤いワイヤー PCに接続して、正しいパフォーマンスを確認する

製造プロセス

  1. Arduino Digital Dice
  2. Arduinoゲームコントローラー
  3. LCDアニメーションとゲーム
  4. スマートシューズ(自動レーシングおよび発電)
  5. NextionディスプレイのBME280温度、湿度、および圧力
  6. arduinoを使用したソナーと処理IDEでの表示
  7. ピクセルチェイサーゲーム
  8. ロータリーエンコーダー付きDIYシンプル測定ホイール
  9. BoltとArduinoを使用したLEDの明るさの制御
  10. Python3とArduinoコミュニケーション
  11. 空気圧安全コンポーネントとそれらを適用する場所