Industriële fabricage
Industrieel internet der dingen | Industriële materialen | Onderhoud en reparatie van apparatuur | Industriële programmering |
home  MfgRobots >> Industriële fabricage >  >> Manufacturing Technology >> Productieproces

Arduino-drukmeting en -registratie

Componenten en benodigdheden

Arduino UNO
× 1
Delkin Commercial MLC SD
× 1
druksensor SKU237545
× 1
datalogger rtc
× 1
i2c lcd
× 1
Waterdichte doorzichtige plastic elektronische projectdoos 158 x 90 x 60 mm
× 1
HALJIA 300-delige M3 nylon zwarte zeskantschroef
× 1
ELEGOO 120-delige veelkleurige Dupont-draad
× 1

Apps en online services

Arduino IDE

Over dit project

Dit project was het resultaat van het willen opnemen van luchtdruk zoals ingebouwd in een reservoir om de efficiëntie van een mechanische compressor te controleren.

Hulp van George Kontaxis

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

Display met datum en druk in bar &PSI

Arduino manometer. 3 drukken aflezen

Code

  • SKU237545 Druksensor met lcd realtime klok en datalogging
  • real-time klok instellen
SKU237545 Druksensor met lcd realtime klok en dataloggingC/C++
//gemaakt op 12 augustus 2018 Philip Blayney &Jack Davidson met code van George //Kontaxis voor de SKU237545 druksensor//https://www.youtube.com/watch?v=AB7zgnfkEi4&feature=youtu.be #include " LiquidCrystal_PCF8574.h"#include "RTClib.h" // realtime klok#include  // sd-kaart #define LCD_ADDRESS 0x27 // Definieer LCD-kenmerken#define LCD_ROWS 2#define LCD_COLUMNS 16#define SCROLL_DELAY 150#define BACKLIGHT 255 // objectinitialisatieLiquidCrystal_PCF8574 lcdI2C;RTC_DS1307 RTC; // definieer het Real Time Clock-objectint n =1; int val; // Een eenvoudige datalogger voor de Arduino analoge pinnen #define LOG_INTERVAL 1000 // maalt tussen invoer (verminder om meer/snellere gegevens te nemen) // hoeveel milliseconden voordat de gelogde gegevens permanent naar schijf worden geschreven // stel het in op LOG_INTERVAL om schrijf elke keer (veiligste) // stel het in op 10 * LOG_INTERVAL om alle gegevens elke 10 datareads te schrijven, je zou tot // de laatste 10 reads kunnen verliezen als de stroom uitvalt, maar het gebruikt minder stroom en is veel sneller! #define SYNC_INTERVAL 10000 // maalt tussen oproepen naar flush() - om gegevens naar de kaart te schrijven 600000 =10 minutenuint32_t syncTime =0; // tijd van laatste sync()const int chipSelect =10; // voor het dataloggingschild gebruiken we digitale pin 10 voor de SD cs-regel File logfile;void error(char *str){Serial.print(F("error:")); Serial.println(str);} void setup(void){ Serial.begin(9600); // start seriële poort Serial.println (F ("druklezing van SKU237545 SENSOR")); // F =macrofunctie om dynamisch geheugen op te slaan lcdI2C.begin (LCD_COLUMNS, LCD_ROWS, LCD_ADDRESS, BACKLIGHT); lcdI2C.print(F("SKU237545 SENSOR")); lcdI2C.setCursor(0,1); lcdI2C.print(F(" bar en psi " )); vertraging (2000); // initialiseer de SD-kaart Serial.print (F ("Initializing SD-kaart...")); // zorg ervoor dat de standaard chipselectiepin is ingesteld op // output, zelfs als u deze niet gebruikt:pinMode(10, OUTPUT); if (!SD.begin(chipSelect)) { // kijk of de kaart aanwezig is en kan worden geïnitialiseerd:error ("Kaart mislukt, of niet aanwezig"); } Serial.println(F("kaart geïnitialiseerd.")); char bestandsnaam[] ="LOGGER00.CSV"; // maak een nieuw bestand voor (uint8_t i =0; i <100; i++) { bestandsnaam [6] =i/10 + '0'; bestandsnaam [7] =i%10 + '0'; if (! SD.exists(bestandsnaam)) { // open alleen een nieuw bestand als het niet bestaat logfile =SD.open(bestandsnaam, FILE_WRITE); pauze; // verlaat de lus! } } if (! logbestand) { error("kon bestand niet aanmaken"); } lcdI2C.clear(); lcdI2C.setCursor(0,0); lcdI2C.print(F ("Bestandsnummer")); lcdI2C.print(bestandsnaam); Serial.print(F("Log in op:")); Serial.println(bestandsnaam); // verbind met RTC als (!RTC.begin()) { logfile.println("RTC mislukt"); #if ECHO_TO_SERIAL Serial.println(F("RTC mislukt")); #endif //ECHO_TO_SERIAL } logfile.println ("Datum / Tijd, druk, bar, aflezing, psi, aflezing "); vertraging (5000); lcdI2C.clear(); // Clear LCD-scherm.} void loop (void) {int sensorVal=analogRead (A1);//Serial.print("Sensor Value:");//Serial.print(sensorVal);float voltage =(sensorVal*5.0 )/1024.0;// Serial.print ("Volt:");// Serial.print (voltage); vlotterdruk_pascal =(3,0*(((vlotter)spanning-0,475))*1000000.0; // kalibreer hier float pressure_bar =pressure_pascal/10e5; vlotterdruk_psi =druk_bar*14.5038; Serial.print("Druk ="); Serial.print(drukbalk); Serial.print("balken"); Serial.print ("psi"); Seriële.afdruk (druk_psi); Serieel.println(); DateTime nu; nu =RTC.nu(); // haal de vertraging op ((LOG_INTERVAL -1) - (millis () % LOG_INTERVAL)); // vertraging voor de hoeveelheid tijd die we willen tussen SD-kaartmetingen int H =now.hour(); // Haal nu de uren op en sla ze op in een geheel getal met de naam h int M =now.minute(); // Haal nu de minuten op en sla ze op in een geheel getal met de naam m int S =now.second(); // Haal nu de seconden op en sla ze op in een geheel getal met de naam s logfile.print(now.year(), DEC); logbestand.print("/"); logbestand.print(nu.maand(), DEC); logbestand.print("/"); logbestand.print(nu.day(), DEC); logbestand.print(" "); if (H<10){ // Voeg indien nodig een nul toe, zoals hierboven logfile.print(0); } logbestand.print(now.hour(), DEC); logbestand.print(":"); if (M<10){ // Voeg indien nodig een nul toe, zoals hierboven logfile.print(0); } logbestand.print(now.minute(), DEC); logbestand.print(":"); if (S<10){ // Voeg indien nodig een nul toe, zoals hierboven logfile.print(0); } logbestand.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){ // Voeg indien nodig een nul toe, zoals hierboven Serial.print(0);} Serial.print(now.hour(), DEC); Serial.print(":"); if (M<10){ // Voeg indien nodig een nul toe, zoals hierboven Serial. print(0);} Serial.print(now.minute(), DEC); Serial.print(F(":")); if (S<10){ // Voeg indien nodig een nul toe, zoals hierboven Serial .print(0); } Serial.print(now.second(), DEC); Serial.println(); lcdI2C.setCursor(0,0); lcdI2C.print(pressure_bar); // Print String naar LCD eerst regel lcdI2C.print ("bar"); lcdI2C.print (druk_psi); lcdI2C.print ("psi"); lcdI2C.setCursor(0,1); //lcdI2C.print(now.year(), DEC); // lcd heeft niet genoeg spaties om het jaar weer te geven // lcdI2C.print("/"); lcdI2C.print(now.day(), DEC); lcdI2C.print("/"); lcdI2C.print(now .month(), DEC); lcdI2C.print(" "); if (H<10){ // Voeg zo nodig een nul toe, zoals hierboven lcdI2C.print(0); } lcdI2C.print(nu.uur(), DEC); lcdI2C.print(":"); if (M<10){ // Voeg indien nodig een nul toe, zoals hierboven lcdI2C.print(0); } lcdI2C.print(now.minute(), DEC); lcdI2C.print(":"); if (S<10){ // Voeg indien nodig een nul toe, zoals hierboven lcdI2C.print(0); } lcdI2C.print(now.second(), DEC); logbestand.print(", "); logbestand.print(" Druk ="); logbestand.print(","); logbestand.print(drukbalk); logbestand.print(","); logbestand.print ("balk "); logbestand.print(","); logbestand.print(druk_psi); logbestand.print(","); logbestand.print("psi"); logfile.println();if ((millis() - syncTime)  
real-time klok instellenC/C++
//Code door tronixstuff#include "Wire.h"#define DS3231_I2C_ADDRESS 0x68// Converteer normale decimale getallen naar binair gecodeerde decimalbyte decToBcd(byte val){ return( (val/10*16) + (val%10) );}// Converteer binair gecodeerde decimalen naar normale decimale getallenbyte bcdToDec(byte val){ return( (val/16*10) + (val%16));}void setup(){ Wire.begin(); Serieel.begin(9600); // stel hier de begintijd in:// DS3231 seconden, minuten, uren, dag, datum, maand, jaar setDS3231time(00,43,14,3,14,8,18); // stel hier de vereiste tijd in} ongeldig setDS3231time (byte seconde, byte minuut, byte uur, byte dayOfWeek, bytedayOfMonth, byte maand, byte jaar) {// stelt tijd- en datumgegevens in op DS3231 Wire.beginTransmission (DS3231_I2C_ADDRESS); Draad.schrijven(0); // stel de volgende invoer in om te beginnen bij het secondenregister Wire.write (decToBcd (second)); // stel seconden in Wire.write (decToBcd (minuut)); // minuten instellen Wire.write (decToBcd (uur)); // stel uren in Wire.write (decToBcd (dayOfWeek)); // dag van de week instellen (1 =zondag, 7 =zaterdag) Wire.write (decToBcd (dayOfMonth)); // datum instellen (1 tot 31) Wire.write (decToBcd (maand)); // set maand Wire.write (decToBcd (jaar)); // jaar instellen (0 tot 99) Wire.endTransmission();}void readDS3231time(byte *second,byte *minute,byte *hour,byte *dayOfWeek,byte *dayOfMonth,byte *month,byte *year){ Wire. beginTransmission (DS3231_I2C_ADDRESS); Draad.schrijven(0); // stel de DS3231-registeraanwijzer in op 00h Wire.endTransmission (); Wire.requestFrom (DS3231_I2C_ADDRESS, 7); // verzoek zeven bytes aan gegevens van DS3231 vanaf register 00h *second =bcdToDec(Wire.read() &0x7f); *minuut =bcdToDec(Wire.read()); *uur =bcdToDec(Wire.read() &0x3f); *dayOfWeek =bcdToDec(Wire.read()); *dayOfMonth =bcdToDec(Wire.read()); *maand =bcdToDec(Wire.read()); *year =bcdToDec(Wire.read());}void displayTime(){ byte seconde, minuut, uur, dayOfWeek, dayOfMonth, maand, jaar; // gegevens ophalen van DS3231 readDS3231time (&seconde, &minuten, &hour, &dayOfWeek, &dayOfMonth, &month, &year); // stuur het naar de seriële monitor Serial.print (uur, DEC); // converteer de bytevariabele naar een decimaal getal wanneer weergegeven Serial.print(":"); if (minuut<10) { Serial.print("0"); } Serial.print (minuut, DEC); Serial.print(":"); if (seconde<10) { Serial.print("0"); } Serial.print (tweede, DEC); Serieel.print(" "); Serial.print(dayOfMonth, DEC); Serieel.print("/"); Serial.print (maand, DEC); Serieel.print("/"); Serial.print (jaar, DEC); Serial.print(" Dag van de week:"); switch(dayOfWeek){ geval 1:Serial.println("zondag"); pauze; geval 2:Serial.println ("maandag"); pauze; geval 3:Serial.println ("dinsdag"); pauze; geval 4:Serial.println ("woensdag"); pauze; geval 5:Serial.println ("donderdag"); pauze; geval 6:Serial.println ("vrijdag"); pauze; geval 7:Serial.println ("zaterdag"); pauze; }}void loop(){ displayTime(); // toon de real-time klokgegevens op de seriële monitor, vertraging (1000); // elke seconde}
LiquidCrystal_PCF8574.h
vereiste bibliotheek, onder schets , bibliotheek opnemen en .zip toevoegen, selecteer vervolgens waar de zip is gedownloadhttps://github.com/mathertel/LiquidCrystal_PCF8574
RTClib.h
bibliotheek, real-time klok, pak eerst de zip uit. voeg vervolgens het resterende zipbestand toe aan uw bibliotheekhttps://github.com/mechasolution/RTClib.h

Schema's

A5 naar SCL
A4 naar SDA
5 volt naar VCC
GND naar GND gele draad naar A1
zwarte draad naar GND
rode draad naar 5 volt verbind met pc en bevestig correcte prestaties

Productieproces

  1. Arduino digitale dobbelstenen
  2. Arduino-gamecontroller
  3. LCD-animatie en gaming
  4. Slimme schoenen (automatisch rijgen en elektriciteit opwekken)
  5. BME280 temperatuur, vochtigheid en druk op Nextion-display
  6. Sonar met arduino en weergave op verwerkings-IDE
  7. Pixel Chaser-game
  8. DIY eenvoudig meetwiel met roterende encoder
  9. LED-helderheid regelen met Bolt en Arduino
  10. Python3- en Arduino-communicatie
  11. Pneumatische veiligheidscomponenten en waar ze moeten worden toegepast