Manufactura industrial
Internet industrial de las cosas | Materiales industriales | Mantenimiento y reparación de equipos | Programación industrial |
home  MfgRobots >> Manufactura industrial >  >> Manufacturing Technology >> Proceso de manufactura

Medición y registro de presión de Arduino

Componentes y suministros

Arduino UNO
× 1
Delkin Commercial MLC SD
× 1
sensor de presión SKU237545
× 1
registrador de datos rtc
× 1
i2c lcd
× 1
Caja de proyectos electrónicos de plástico con cubierta transparente impermeable 158 x 90 x 60 mm
× 1
HALJIA 300Pcs M3 Nylon Black Hex Screw
× 1
ELEGOO 120 piezas de alambre Dupont multicolor
× 1

Aplicaciones y servicios en línea

Arduino IDE

Acerca de este proyecto

Este proyecto fue el resultado de querer registrar la presión del aire construida en un depósito para verificar la eficiencia de un compresor mecánico.

Ayuda de George Kontaxis

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

Pantalla que muestra la fecha y la presión en bar y PSI

Manómetro Arduino. leyendo 3 presiones

Código

  • SKU237545 Sensor de presión con reloj lcd en tiempo real y registro de datos
  • configurar el reloj en tiempo real
SKU237545 Sensor de presión con reloj lcd en tiempo real y registro de datos C / C ++
 // creado el 12 de agosto de 2018 Philip Blayney &Jack Davidson con código de George // Kontaxis para el sensor de presión SKU237545 // https://www.youtube.com/watch? v =AB7zgnfkEi4 &feature =youtu.be #include " LiquidCrystal_PCF8574.h "#include" RTClib.h "// reloj en tiempo real # incluye  // tarjeta sd #define LCD_ADDRESS 0x27 // Define características de LCD # define LCD_ROWS 2 # define LCD_COLUMNS 16 # define SCROLL_DELAY 150 # define BACKLIGHT 255 // inicialización del objetoLiquidCrystal_PCF8574 lcdI2C; RTC_DS1307 RTC; // define el objeto Reloj en tiempo realint n =1; int val; // Un registrador de datos simple para los pines analógicos de Arduino #define LOG_INTERVAL 1000 // molinos entre entradas (reduzca para tomar más / datos más rápidos) // cuántos milisegundos antes de escribir los datos registrados permanentemente en el disco // configúrelo en LOG_INTERVAL para escriba cada vez (más seguro) // configúrelo en 10 * LOG_INTERVAL para escribir todos los datos cada 10 lecturas de datos, podría perder hasta // las últimas 10 lecturas si se corta la energía, ¡pero usa menos energía y es mucho más rápido! #define SYNC_INTERVAL 10000 // molinos entre llamadas a flush () - para escribir datos en la tarjeta 600000 =10 minutosuint32_t syncTime =0; // hora de la última sincronización () const int chipSelect =10; // para el escudo de registro de datos, usamos el pin digital 10 para la línea SD cs File logfile; void error (char * str) {Serial.print (F ("error:")); Serial.println (str);} configuración vacía (void) {Serial.begin (9600); // iniciar el puerto serie Serial.println (F ("lectura de presión del SENSOR SKU237545")); // F =función macro para guardar memoria dinámica lcdI2C.begin (LCD_COLUMNS, LCD_ROWS, LCD_ADDRESS, BACKLIGHT); lcdI2C.print (F ("SKU237545 SENSOR")); lcdI2C.setCursor (0,1); lcdI2C.print (F ("bar y psi")); retraso (2000); // inicializar la tarjeta SD Serial.print (F ("Inicializando tarjeta SD ...")); // asegúrese de que el pin de selección de chip predeterminado esté configurado en // salida, incluso si no lo usa:pinMode (10, OUTPUT); if (! SD.begin (chipSelect)) {// ver si la tarjeta está presente y se puede inicializar:error ("Tarjeta fallida o no presente"); } Serial.println (F ("tarjeta inicializada")); char filename [] ="LOGGER00.CSV"; // crea un nuevo archivo para (uint8_t i =0; i <100; i ++) {nombre de archivo [6] =i / 10 + '0'; nombre de archivo [7] =i% 10 + '0'; if (! SD.exists (filename)) {// solo abre un nuevo archivo si no existe logfile =SD.open (filename, FILE_WRITE); descanso; // ¡deja el bucle! }} if (! logfile) {error ("no se pudo crear el archivo"); } lcdI2C.clear (); lcdI2C.setCursor (0,0); lcdI2C.print (F ("No de archivo")); lcdI2C.print (nombre de archivo); Serial.print (F ("Iniciar sesión en:")); Serial.println (nombre de archivo); // conectarse a RTC if (! RTC.begin ()) {logfile.println ("RTC falló"); #if ECHO_TO_SERIAL Serial.println (F ("RTC falló")); #endif // ECHO_TO_SERIAL} logfile.println ("Fecha / Hora, presión, bar, lectura, psi, lectura"); retraso (5000); lcdI2C.clear (); // Limpiar la pantalla LCD.} Void loop (void) {int sensorVal =analogRead (A1); // Serial.print ("Valor del sensor:"); // Serial.print (sensorVal); voltaje de flotación =(sensorVal * 5.0 ) /1024.0; // Serial.print ("Voltios:"); // Serial.print (voltaje); presión de flotación_pascal =(3.0 * ((flotación) voltaje-0.475)) * 1000000.0; // calibrar aquí float pressure_bar =pressure_pascal / 10e5; flotador presión_psi =presión_bar * 14.5038; Serial.print ("Presión ="); Serial.print (barra_de_presión); Serial.print ("barras"); Serial.print ("psi"); Serial.print (presión_psi); Serial.println (); DateTime ahora; ahora =RTC.now (); // busca el retardo de tiempo ((LOG_INTERVAL -1) - (millis ()% LOG_INTERVAL)); // retraso por la cantidad de tiempo que queremos entre las lecturas de la tarjeta sd int H =now.hour (); // Obtenga las horas en este momento y guárdelas en un número entero llamado h int M =now.minute (); // Obtenga los minutos ahora mismo y guárdelos en un número entero llamado m int S =now.second (); // Obtenga los segundos ahora mismo y guárdelos en un entero llamado s logfile.print (now.year (), DEC); logfile.print ("/"); logfile.print (ahora.mes (), DEC); logfile.print ("/"); logfile.print (ahora.día (), DEC); logfile.print (""); if (H <10) {// Agregue un cero, si es necesario, como arriba logfile.print (0); } logfile.print (ahora.hora (), DEC); logfile.print (":"); if (M <10) {// Agregue un cero, si es necesario, como arriba logfile.print (0); } logfile.print (ahora.minuto (), DEC); logfile.print (":"); if (S <10) {// Agregue un cero, si es necesario, como arriba logfile.print (0); } logfile.print (ahora.segundo (), DEC); // archivo de registro.print ('"'); Serial.println (); Serial.print (ahora.year (), DEC); Serial.print (" / "); Serial.print (ahora.month (), DEC ); Serial.print ("/"); Serial.print (ahora.día (), DEC); Serial.print (""); if (H <10) {// Agrega un cero, si es necesario, como arriba Serial.print (0);} Serial.print (ahora.hora (), DEC); Serial.print (":"); if (M <10) {// Agregue un cero, si es necesario, como arriba Serial. print (0);} Serial.print (ahora.minuto (), DEC); Serial.print (F (":")); if (S <10) {// Agrega un cero, si es necesario, como arriba Serial .print (0);} Serial.print (ahora.segundo (), DEC); Serial.println (); lcdI2C.setCursor (0,0); lcdI2C.print (barra_de_presión); // Imprime la cadena en la pantalla LCD en la primera línea lcdI2C.print ("barra"); lcdI2C.print (presión_psi); lcdI2C.print ("psi"); lcdI2C.setCursor (0,1); //lcdI2C.print (ahora.year (), DEC); // lcd no tiene suficientes espacios de caracteres para mostrar el año // lcdI2C.print ("/"); lcdI2C.print (ahora.día (), DEC); lcdI2C.print ("/"); lcdI2C.print (ahora .month (), DEC); lcdI2C.print (""); if (H <10) {// Agrega un cero, si es necesario, como arriba lcdI2C.print (0); } lcdI2C.print (ahora.hora (), DEC); lcdI2C.print (":"); if (M <10) {// Agregue un cero, si es necesario, como arriba lcdI2C.print (0); } lcdI2C.print (ahora.minuto (), DEC); lcdI2C.print (":"); if (S <10) {// Agregue un cero, si es necesario, como arriba lcdI2C.print (0); } lcdI2C.print (ahora.segundo (), DEC); logfile.print (","); logfile.print ("Presión ="); logfile.print (","); logfile.print (barra_de_presión); logfile.print (","); logfile.print ("barra"); logfile.print (","); logfile.print (presión_psi); logfile.print (","); logfile.print ("psi"); logfile.println (); if ((millis () - syncTime)  
configurar el reloj en tiempo real C / C ++
 // Código por tronixstuff # incluye "Wire.h" #define DS3231_I2C_ADDRESS 0x68 // Convierte números decimales normales a decimalbyte codificado en binario decToBcd (byte val) {return ((val / 10 * 16) + (val% 10) );} // Convertir decimal codificado en binario a números decimales normalesbyte bcdToDec (byte val) {return ((val / 16 * 10) + (val% 16));} void setup () {Wire.begin (); Serial.begin (9600); // establece la hora inicial aquí:// DS3231 segundos, minutos, horas, día, fecha, mes, año setDS3231time (00,43,14,3,14,8,18); // establece aquí el tiempo requerido} void setDS3231time (byte segundo, byte minuto, byte hora, byte dayOfWeek, bytedayOfMonth, byte mes, byte año) {// establece la fecha y hora en DS3231 Wire.beginTransmission (DS3231_I2C_ADDRESS); Wire.write (0); // establece la siguiente entrada para que comience en el registro de segundos Wire.write (decToBcd (segundo)); // establecer segundos Wire.write (decToBcd (minuto)); // establecer minutos Wire.write (decToBcd (hora)); // establecer horas Wire.write (decToBcd (dayOfWeek)); // establecer el día de la semana (1 =domingo, 7 =sábado) Wire.write (decToBcd (dayOfMonth)); // establecer fecha (1 a 31) Wire.write (decToBcd (mes)); // establecer el mes Wire.write (decToBcd (año)); // establece el año (0 a 99) Wire.endTransmission ();} void readDS3231time (byte * segundo, byte * minuto, byte * hora, byte * dayOfWeek, byte * dayOfMonth, byte * mes, byte * año) {Wire. beginTransmission (DS3231_I2C_ADDRESS); Wire.write (0); // establece el puntero del registro DS3231 en 00h Wire.endTransmission (); Wire.requestFrom (DS3231_I2C_ADDRESS, 7); // solicita siete bytes de datos de DS3231 a partir del registro 00h * second =bcdToDec (Wire.read () &0x7f); * minuto =bcdToDec (Wire.read ()); * hora =bcdToDec (Wire.read () &0x3f); * dayOfWeek =bcdToDec (Wire.read ()); * dayOfMonth =bcdToDec (Wire.read ()); * mes =bcdToDec (Wire.read ()); * año =bcdToDec (Wire.read ());} void displayTime () {byte segundo, minuto, hora, dayOfWeek, dayOfMonth, mes, año; // recupera datos de DS3231 readDS3231time (&second, &minute, &hour, &dayOfWeek, &dayOfMonth, &month, &year); // enviarlo al monitor serial Serial.print (hora, DEC); // convierte la variable de bytes en un número decimal cuando se muestra Serial.print (":"); if (minuto <10) {Serial.print ("0"); } Serial.print (minuto, DEC); Serial.print (":"); if (segundo <10) {Serial.print ("0"); } Serial.print (segundo, DEC); Serial.print (""); Serial.print (dayOfMonth, DEC); Serial.print ("/"); Serial.print (mes, DEC); Serial.print ("/"); Serial.print (año, DEC); Serial.print ("Día de la semana:"); switch (dayOfWeek) {caso 1:Serial.println ("Domingo"); descanso; caso 2:Serial.println ("Lunes"); descanso; caso 3:Serial.println ("martes"); descanso; caso 4:Serial.println ("miércoles"); descanso; caso 5:Serial.println ("jueves"); descanso; caso 6:Serial.println ("viernes"); descanso; caso 7:Serial.println ("sábado"); descanso; }} bucle vacío () {displayTime (); // muestra los datos del reloj en tiempo real en el monitor serial, retraso (1000); // cada segundo} 
LiquidCrystal_PCF8574.h
biblioteca requerida, debajo del boceto, incluya biblioteca y agregue .zip, luego seleccione dónde se descargó el ziphttps://github.com/mathertel/LiquidCrystal_PCF8574
RTClib.h
biblioteca, reloj en tiempo real, descomprima el zip primero. luego agregue el archivo zip restante a su bibliotecahttps://github.com/mechasolution/RTClib.h

Esquemas

A5 a SCL
A4 a SDA
5 voltios a VCC
GND a GND cable amarillo a A1
cable negro a GND
cable rojo a 5 voltios conéctese a la PC y confirme el funcionamiento correcto

Proceso de manufactura

  1. Dados digitales Arduino
  2. Controlador de juego Arduino
  3. Animación LCD y juegos
  4. Zapatos inteligentes (autoajuste y generación de electricidad)
  5. BME280 Temperatura, humedad y presión en la pantalla Nextion
  6. Sonda usando arduino y visualización en procesamiento IDE
  7. Pixel Chaser Game
  8. Rueda de medición simple de bricolaje con codificador giratorio
  9. Control del brillo del LED usando Bolt y Arduino
  10. Python3 y comunicación Arduino
  11. Componentes de seguridad neumática y dónde aplicarlos