Fabrication industrielle
Internet des objets industriel | Matériaux industriels | Entretien et réparation d'équipement | Programmation industrielle |
home  MfgRobots >> Fabrication industrielle >  >> Manufacturing Technology >> Processus de fabrication

Mesure et journalisation de la pression Arduino

Composants et fournitures

Arduino UNO
× 1
Delkin Commercial MLC SD
× 1
capteur de pression SKU237545
× 1
enregistreur de données rtc
× 1
i2c lcd
× 1
Boîte de projet électronique en plastique à couvercle transparent étanche 158 x 90 x 60 mm
× 1
HALJIA 300Pcs M3 Nylon Black Hex Vis
× 1
ELEGOO 120pcs Fil Dupont Multicolore
× 1

Applications et services en ligne

Arduino IDE

À propos de ce projet

Ce projet était le résultat de vouloir enregistrer la pression d'air comme construit dans un réservoir pour vérifier l'efficacité d'un compresseur mécanique.

Aide de George Kontaxis

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

Affichage indiquant la date et la pression en bar &PSI

Manomètre Arduino. lecture de 3 pressions

Code

  • Capteur de pression SKU237545 avec horloge LCD en temps réel et enregistrement des données
  • réglage de l'horloge en temps réel
Capteur de pression SKU237545 avec horloge LCD en temps réel et enregistrement des donnéesC/C++
//créé le 12 août 2018 Philip Blayney &Jack Davidson en utilisant le code de George //Kontaxis pour le capteur de pression SKU237545//https://www.youtube.com/watch?v=AB7zgnfkEi4&feature=youtu.be #include " LiquidCrystal_PCF8574.h"#include "RTClib.h" // horloge temps réel#include // carte SD #define LCD_ADDRESS 0x27 // Définit les caractéristiques LCD#define LCD_ROWS 2#define LCD_COLUMNS 16#define SCROLL_DELAY 150#define BACKLIGHT 255 // initialisation de l'objetLiquidCrystal_PCF8574 lcdI2C;RTC_DS1307 RTC; // définit l'objet horloge temps réel n =1; valeur int; // Un simple enregistreur de données pour les broches analogiques Arduino #define LOG_INTERVAL 1000 // fraises entre les entrées (réduire pour prendre plus/plus de données plus rapidement) // combien de millisecondes avant d'écrire les données enregistrées de manière permanente sur le disque // définissez-le sur LOG_INTERVAL pour écrire à chaque fois (le plus sûr) // définissez-le sur 10 * LOG_INTERVAL pour écrire toutes les données toutes les 10 lectures de données, vous pourriez perdre jusqu'à // les 10 dernières lectures si l'alimentation est coupée, mais cela consomme moins d'énergie et est beaucoup plus rapide ! #define SYNC_INTERVAL 10000 // fraise entre les appels à flush() - pour écrire des données sur la carte 600000 =10 minutesuint32_t syncTime =0; // heure de la dernière synchronisation () const int chipSelect =10; // pour le bouclier d'enregistrement de données, nous utilisons la broche numérique 10 pour la ligne SD cs File logfile;void error(char *str){ Serial.print(F("error:")); Serial.println(str);} void setup(void){ Serial.begin(9600); // démarre le port série Serial.println(F("lecture de pression hors SKU237545 SENSOR")); //F =fonction macro pour enregistrer la mémoire dynamique lcdI2C.begin(LCD_COLUMNS, LCD_ROWS, LCD_ADDRESS, BACKLIGHT); lcdI2C.print(F("SKU237545 CAPTEUR" )); lcdI2C.setCursor(0,1) ; lcdI2C.print(F(" bar et psi " )); retard (2000); // initialise la carte SD Serial.print(F("Initialisation de la carte SD...")); // assurez-vous que la broche de sélection de puce par défaut est définie sur // sortie, même si vous ne l'utilisez pas :pinMode(10, OUTPUT); if (!SD.begin(chipSelect)) { // voir si la carte est présente et peut être initialisée :error("La carte a échoué ou n'est pas présente"); } Serial.println(F("carte initialisée.")); char nom de fichier[] ="LOGGER00.CSV"; // crée un nouveau fichier pour (uint8_t i =0; i <100; i++) { filename[6] =i/10 + '0'; nom de fichier[7] =i%10 + '0' ; if (! SD.exists(filename)) { // ouvrir un nouveau fichier uniquement s'il n'existe pas logfile =SD.open(filename, FILE_WRITE); Pause; // quitte la boucle ! } } if (! logfile) { error("Impossible de créer le fichier"); } lcdI2C.clear(); lcdI2C.setCursor(0,0); lcdI2C.print(F("Fichier Non " )); lcdI2C.print(nom de fichier); Serial.print(F("Connexion à :")); Serial.println(nom de fichier); // se connecte à RTC if (!RTC.begin()) { logfile.println("RTC a échoué"); #if ECHO_TO_SERIAL Serial.println(F("RTC a échoué")); #endif //ECHO_TO_SERIAL } logfile.println("Date / Heure ,pression ,bar ,lecture ,psi,lecture "); retard (5000); lcdI2C.clear(); // Effacer l'écran LCD.} void loop(void){int sensorVal=analogRead(A1);//Serial.print("Sensor Value:"); //Serial.print(sensorVal);float voltage =(sensorVal*5.0 )/1024.0;// Serial.print("Volts:");// Serial.print(tension); float pressure_pascal =(3.0*((float)voltage-0,475))*1000000.0; //calibrer ici float pressure_bar =pressure_pascal/10e5; float pression_psi =pression_bar*14,5038 ; Serial.print("Pression ="); Serial.print(pression_bar); Serial.print("barres "); Serial.print ("psi "); Serial.print (pression_psi); Serial.println(); DateHeure maintenant ; maintenant =RTC.maintenant(); // récupère le délai ((LOG_INTERVAL -1) - (millis() % LOG_INTERVAL)); // délai pour le temps que nous voulons entre les lectures de la carte SD int H =now.hour(); // Récupère les heures maintenant et stocke-les dans un entier appelé h int M =now.minute(); // Obtenez les minutes maintenant et stockez-les dans un entier appelé m int S =now.second(); // Obtenez les secondes maintenant et stockez-les dans un entier appelé s logfile.print(now.year(), DEC); logfile.print("/"); logfile.print(maintenant.mois(), DEC); logfile.print("/"); logfile.print(now.day(), DEC); logfile.print(" "); if (H<10){ // Ajoutez un zéro, si nécessaire, comme ci-dessus logfile.print(0); } logfile.print(now.hour(), DEC); logfile.print(":"); if (M<10){ // Ajoutez un zéro, si nécessaire, comme ci-dessus logfile.print(0); } logfile.print(now.minute(), DEC); logfile.print(":"); if (S<10){ // Ajoutez un zéro, si nécessaire, comme ci-dessus 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){ // Ajoutez un zéro, si nécessaire, comme ci-dessus Serial.print(0); } Serial.print(now.hour(), DEC); Serial.print(":"); if (M<10){ // Ajoutez un zéro, si nécessaire, comme ci-dessus Serial. print(0); } Serial.print(now.minute(), DEC); Serial.print(F(":")); if (S<10){ // Ajoutez un zéro, si nécessaire, comme ci-dessus Serial .print(0); } Serial.print(now.second(), DEC); Serial.println(); lcdI2C.setCursor(0,0); lcdI2C.print(pressure_bar); // Imprimer la chaîne sur l'écran LCD en premier ligne lcdI2C.print ("bar "); lcdI2C.print (pression_psi); lcdI2C.print ("psi "); lcdI2C.setCursor(0,1); //lcdI2C.print(now.year(), DEC); // l'écran LCD n'a pas assez d'espaces de caractères pour afficher l'année // lcdI2C.print("/"); lcdI2C.print(now.day(), DEC); lcdI2C.print("/"); lcdI2C.print(now .month(), DEC); lcdI2C.print(" "); if (H<10){ // Ajouter un zéro, si nécessaire, comme ci-dessus lcdI2C.print(0) ; } lcdI2C.print(maintenant.heure(), DEC); lcdI2C.print(":"); if (M<10){ // Ajoutez un zéro, si nécessaire, comme ci-dessus lcdI2C.print(0); } lcdI2C.print(maintenant.minute(), DEC); lcdI2C.print(":"); if (S<10){ // Ajoutez un zéro, si nécessaire, comme ci-dessus lcdI2C.print(0); } lcdI2C.print(now.second(), DEC); logfile.print(", "); logfile.print(" Pression ="); logfile.print(","); logfile.print(pression_bar); logfile.print(","); logfile.print(" barre "); logfile.print(","); logfile.print(pression_psi); logfile.print(","); logfile.print("psi"); logfile.println();if ((millis() - syncTime)
réglage de l'horloge temps réelC/C++
//Code par tronixstuff#include "Wire.h"#define DS3231_I2C_ADDRESS 0x68// Convertit les nombres décimaux normaux en octets décimaux codés binaire decToBcd(byte val){ return( (val/10*16) + (val%10) );}// Convertir les nombres décimaux codés binaires en nombres décimaux normauxbyte bcdToDec(byte val){ return( (val/16*10) + (val%16) );}void setup(){ Wire.begin(); Serial.begin(9600); // définissez l'heure initiale ici :// DS3231 secondes, minutes, heures, jour, date, mois, année setDS3231time(00,43,14,3,14,8,18); // définit l'heure requise ici} void setDS3231time (octet seconde, octet minute, octet heure, octet jour de semaine, octet octet mois, octet année){ // définit les données d'heure et de date sur DS3231 Wire.beginTransmission (DS3231_I2C_ADDRESS); Wire.write(0); // définit l'entrée suivante pour qu'elle commence au registre des secondes Wire.write(decToBcd(second)); // définit les secondes Wire.write(decToBcd(minute)); // définit les minutes Wire.write(decToBcd(hour)); // définir les heures Wire.write(decToBcd(dayOfWeek)); // définir le jour de la semaine (1=dimanche, 7=samedi) Wire.write(decToBcd(dayOfMonth)); // fixe la date (1 à 31) Wire.write(decToBcd(month)); // définir le mois Wire.write(decToBcd(year)); // définir l'année (0 à 99) Wire.endTransmission();}void readDS3231time(byte *second,byte *minute,byte *hour,byte *dayOfWeek,byte *dayOfMonth,byte *month,byte *year){ Wire. beginTransmission(DS3231_I2C_ADDRESS); Wire.write(0); // définit le pointeur de registre DS3231 sur 00h Wire.endTransmission(); Wire.requestFrom(DS3231_I2C_ADDRESS, 7); // demande sept octets de données à DS3231 à partir du registre 00h *second =bcdToDec(Wire.read() &0x7f); *minute =bcdToDec(Wire.read()); *heure =bcdToDec(Wire.read() &0x3f); *dayOfWeek =bcdToDec(Wire.read()); *dayOfMonth =bcdToDec(Wire.read()); *mois =bcdToDec(Wire.read()); *année =bcdToDec(Wire.read());}void displayTime(){ octet seconde, minute, heure, dayOfWeek, dayOfMonth, mois, année ; // récupérer les données du DS3231 readDS3231time(&second, &minute, &hour, &dayOfWeek, &dayOfMonth, &month, &year); // l'envoie au moniteur série Serial.print(hour, DEC); // convertit la variable d'octet en nombre décimal lorsqu'elle est affichée 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(mois, DEC); Serial.print("/"); Serial.print(année, DEC); Serial.print(" Jour de la semaine :"); switch(dayOfWeek){ case 1 :Serial.println("Dimanche"); Pause; cas 2 :Serial.println("lundi"); Pause; cas 3 :Serial.println("mardi"); Pause; cas 4:Serial.println("Mercredi"); Pause; case 5:Serial.println("Jeudi"); Pause; cas 6 :Serial.println("Vendredi"); Pause; cas 7 :Serial.println("samedi"); Pause; }}boucle vide(){ displayTime(); // affiche les données de l'horloge en temps réel sur le moniteur série, delay(1000); // chaque seconde}
LiquidCrystal_PCF8574.h
bibliothèque requise, sous sketch, incluez la bibliothèque et ajoutez .zip, puis sélectionnez où le zip a été téléchargéhttps://github.com/mathertel/LiquidCrystal_PCF8574
RTClib.h
bibliothèque, horloge en temps réel, décompressez d'abord le zip. puis ajoutez le fichier zip restant à votre bibliothèquehttps://github.com/mechasolution/RTClib.h

Schémas

A5 vers SCL
A4 vers SDA
5 volts à VCC
GND à GND fil jaune vers A1
fil noir à GND
fil rouge à 5 volts connectez-vous au PC et confirmez les performances correctes

Processus de fabrication

  1. Dés numériques Arduino
  2. Contrôleur de jeu Arduino
  3. Animation LCD et jeux
  4. Chaussures intelligentes (laçage automatique et génération d'électricité)
  5. Température, humidité et pression BME280 sur l'affichage Nextion
  6. Sonar utilisant arduino et affichage lors du traitement de l'IDE
  7. Jeu Pixel Chaser
  8. Roue de mesure simple bricolage avec encodeur rotatif
  9. Composants de sécurité pneumatiques et où les appliquer