Automatización para cervecería BeerDuino basada en arduino mega. Sistemas automatizados basados ​​en microcontrolador Arduino.

¿Por qué necesitaba automatización?

Se necesita automatización para facilitar el proceso, porque... este controlador controlará la temperatura, la mantendrá y la elevará hasta la pausa de temperatura requerida. También puedes utilizar una señal audible para indicar la intervención necesaria, por ejemplo, si necesitas añadir malta o hacer una prueba de yodo.

Decidí hacer mi propia automatización a partir de un proyecto ya preparado. Funciona con arduino, se le conectan un sensor de temperatura, dos relés, una pantalla y botones. El primer relé controla el elemento calefactor, el segundo relé controla la bomba. La bomba de maceración es muy cómoda porque... no es necesario revolver el puré durante todo el proceso de macerado (recomiendo leer mis anteriores para obtener más detalles sobre cómo preparar cerveza)

Monté la primera automatización usando módulos:

-Arduino mini
- Bloque de dos relés de 15A
- Pantalla 2004
- Sensor de temperatura
- 4 botones
- fuente de alimentación de 5 voltios
La comodidad del montaje modular es que no es difícil conseguir todas las piezas y prácticamente no es necesario soldar nada. Pero la mayor desventaja es la gran cantidad de cables, y el relé chino barato creaba interferencias en la pantalla, por lo que el relé mecánico tuvo que ser reemplazado por uno de estado sólido.

Con el tiempo, llegué a la conclusión de que necesitaba construir mi automatización en un chip con 64 kb de memoria (Arduino mini tiene solo 32 kb) en una placa. No encontré una solución preparada, así que comencé a crear un circuito yo mismo y posteriormente una placa para mi oficio.

Esquema:

Desarrollé y dibujé el diagrama, por así decirlo, de rodillas y para mí, por lo que es posible que haya algunos defectos, pero el diagrama funciona completamente:

Pagar:

Dibujé el circuito, luego queda dibujar el tablero, primero lo dibujé usando el programa Diseño de Sprint 6, muy conveniente, pero no tiene suficiente funcionalidad, así que decidí alejarme de él hacia el programa DipTrace y esto es lo que obtuve:

Puedes descargar las fuentes.
Como pueden ver, le puse a mi cervecería el nombre QRBeer y esta ya es la versión 0.5...

El tablero está listo, solo queda fabricarlo de alguna manera. Para esto decidí usar . ¿Por qué ellos y no LUT? Simplemente decidí probar esta nueva tecnología por mí mismo, ya probé LUT, lo sentí, por así decirlo, no diré que me gustó...

Fotorresistente:

Para hacer placas de circuito impreso usando fotorresistente necesitarás:
- Película de impresora
-
- lámpara ultravioleta
- carbonato de sodio

lámpara ultravioleta

Primero, compartiré información sobre cómo hice el mío. lámpara ultravioleta. Al principio quería utilizar una lámpara ya preparada y luego decidí montarla con seis LED de 3W:
y también comprado en Tao:


Pegué los LED al radiador, aunque se podrían haber montado en una PCB, dudo que se hubieran sobrecalentado.
Esto es lo que obtuve:


Fabricación de tableros

1. Entonces, he preparado la plantilla, solo queda imprimirla en película. Como escribí anteriormente, necesito una película para una impresora, probé una película tanto para una impresora láser como para una impresora de inyección de tinta, la mejor opción se obtiene solo con una película para impresión de inyección de tinta. Es necesario imprimir en negativo y en imagen especular:

Inmediatamente laminé la plantilla para que las huellas dactilares y los residuos pudieran eliminarse fácilmente.
2. A continuación debemos lijar nuestro futuro tablero (laminado de fibra de vidrio). Para ello es adecuada una esponja normal ligeramente humedecida o una esponja de melamina:


3. Después de este procedimiento, aún es necesario desengrasar el cobre con acetona:


Como puedes ver en mi foto, lo desengrasé con una servilleta normal y vertí la acetona en una botella de peróxido, para que sea más cómodo de llevar...
4. El siguiente paso es cortar ligeramente el fotorresistente para que se ajuste a tu futura placa y retirar con cuidado la película protectora superior para no dañarla. Si el fotoprotector es doméstico, hay que quitar el lado mate, si es chino, entonces no hay diferencia...
5. A continuación, pegamos el fotorresistente a la PCB para que no aparezcan burbujas de aire debajo del fotorresistente, de lo contrario no aparecerán pistas en esos lugares, cortamos el exceso...
El proceso de pegar fotoprotector es similar a pegar una película protectora en un teléfono.


6. Cuando se pega el fotorresistente, la textolita que lo contiene se debe pasar por un laminador 2-3 veces o usar una plancha tibia y planchar a través de una hoja de papel doblada por la mitad:


Lo principal es no sobrecalentar el fotorresistente, de lo contrario resultará así:


Si al pegar el fotoprotector se forma una “jaba”, entonces es mejor quitarla (lavarla o rasparla) y volver a pegarla; de lo contrario, después de grabar el tablero quedará triste... No lo quitaré este fotorresistente, les mostraré el resultado final.
7. Coloca una plantilla sobre el PCB con fotorresistente y presiónala con vidrio (yo la saqué de un marco de fotos antiguo), y coloca un peso sobre el vidrio:


8. Iluminamos el fotorresistente mediante una lámpara UV. Mi lámpara dura unos 2 minutos:


Como puede ver, el fotorresistente expuesto cambió de color de azul claro a azul oscuro, y el fotorresistente expuesto es muy frágil.
9. Retire el cristal y la plantilla. El exceso de fotoprotector se puede (opcionalmente) recortar y separar cuidadosamente con unas pinzas:


10. El siguiente paso es lavar el fotorresistente sin revelar con álcali; para ello, tome 2 vasos de agua y una cucharada de carbonato de sodio, revuelva bien. Retire la película protectora superior del fotorresistente y sumerja nuestra textolita en una solución alcalina.


11. Tome un cepillo y frote tres trozos de fotoprotector en el álcali, gradualmente el fotoprotector sin revelar se lava:


No se puede verter el álcali, sino dejarlo en la siguiente tabla o lavar el fotorresistente después del grabado, pero hablaremos de eso más adelante...
12. Grabado en tablero:
Hay dos métodos más accesibles: grabado con cloruro férrico o peróxido + ácido cítrico y sal. No escribiré sobre cloruro férrico, pero probablemente lo describiré usando peróxido:
- 100 ml. peróxido de hidrógeno al 3%: se vende en la farmacia por 7-12 rublos
- 30 gramos. ácido cítrico (disponible en cualquier supermercado)
- 1 cucharada. cucharada de sal (tanto la sal fina como la sal de roca servirán)


Todo esto se mezcla en un recipiente y allí se sumerge el tablero con el fotorresistente terminado, al cabo de un rato aparecen burbujas en el tablero:


Y después de un tiempo, el “cobre desnudo” quedará completamente grabado:


Por cierto, si graba a una temperatura más alta, por ejemplo, con una lámpara incandescente o en un baño de agua, el grabado se reducirá a tres, lo principal es no exagerar, de lo contrario el exceso se grabará. .
13. La forma más cómoda de quitar el fotorresistente es con el mismo álcali con el que se lavó el fotorresistente sin grabar, después de 20 minutos se caerá por sí solo y no es necesario frotar nada...

Y aquí están mis "jambas":


Aunque no es significativo, pero aún así, el descuido es el culpable de todo, no noté burbujas de aire debajo del fotorresistente ni sobrecalentamiento...

Obtuve el siguiente tablero "limpio":


14. A continuación, taladre agujeros y estañe el tablero:


15. Suelde todas las piezas y lave el exceso de fundente:


Soldé componentes SMD con una estación de soldadura por infrarrojos china, muy conveniente:

Eso es todo, la parte más difícil ha pasado, solo queda probar las pistas en busca de cortocircuitos y comenzar a programar el chip.

Programación atmega644

1. Para comenzar a programar, debe cargar el gestor de arranque. Esto no es difícil de hacer con Arduino UNO, pero primero debes descargar e instalar el programa.
2. El siguiente paso es agregar o tomar inmediatamente un ensamblaje listo para usar al programa instalado:
3. Cargue el boceto de ArduinoISP en la ONU:

4. Y conecta nuestra placa a UNO:


Según las instrucciones del boceto:
// nombre del pin // reinicio del esclavo: 10: // MOSI: 11: // MISO: 12: // SCK: 13:
Resulta según mi esquema así:

5. A continuación, instale nuestra placa en la configuración y cargue el gestor de arranque:




Si todo ha ido bien veremos el mensaje: “Grabación del gestor de arranque completada”
En este punto, la carga del gestor de arranque está completa, puede conectar la pantalla, los botones, el sensor de temperatura y completar. Amigos, un cervecero casero necesita ayuda. Ha pasado mucho tiempo desde el deseo de hacer un termómetro inteligente y un. Surgió un nuevo deseo: construir una cervecería casera automatizada. Para automatizarla, se necesita un control de bloque, se decidió abandonar el uso de controladores PID comprados para controlar el elemento calefactor, ya que hay un Arduino, un relé SSR para ello. una pantalla de 4 por 20 líneas y una placa serial para transmitir información a través de un cable, sin contar tierra y energía.
Mi controlador Arduino, uso el proyecto del australiano Rob, el proyecto está diseñado para Arduino Duemilanove ATmega328 - www.arduino.cc/cgi-bin/yabb2/YaBB.pl
y directamente el proyecto en sí -
Mi cervecería funciona según un principio ligeramente diferente, no como el de Rob, yo confío en Spidel Braumeister, cómo funciona se ve claramente en estos vídeos: http://www.youtube.com/watch?v=x-OBE4tJ-j8&feature= página_perfil_jugador
Pero desafortunadamente nunca soy programador, sé soldar y hacerlo según las instrucciones. Ahora, si volvieras a trabajar el programa de Rob, obtendrías un dispositivo de control ideal. Monté el controlador y lo probé, pero por alguna razón no se reconocen los sensores térmicos del DS. Hay muchas cosas innecesarias en este proyecto para mí, porque... No quiero construir un sistema HERMS como el del autor, por lo que puedes eliminar todos los innecesarios del programa. Todos los actuadores están controlados por relés de estado sólido. Tengo 2 piezas, para el elemento calefactor y la bomba. Utilizo un elemento calefactor comprado en Amazon, de baja densidad de 4,5 kW. Nada se le pega e incluso puedes encenderlo en el aire y no se quemará. Lo interesante es que la pantalla está conectada a través de una placa serie; la ensamblé a partir de un kit comprado en eBay. Solo se utilizan 3 cables, descargando así los puertos Arduino. Qué se necesita: control PID del elemento calefactor para mayor precisión y conveniencia, hay una biblioteca preparada para Arduino, ampliamente utilizada en el proyecto www.brewtroller.com/wiki/doku.php, también puede tomar prestadas muchas ideas de allí , pero el proyecto está sobrecargado de funciones y también está diseñado para los HERMS y RIMS estadounidenses. El programa debe tener 3 modos de funcionamiento: lavado CIP (calentar agua hasta 70 g (se puede cambiar en la configuración) y funcionamiento simultáneo de la bomba), modo AUTO (cuando se procesan todos los pasos establecidos en el modo de programación, puede pausar y pasar con fuerza al siguiente paso), modo MANUAL (en modo manual, simplemente controlamos el encendido/apagado del elemento calefactor, la bomba y la salida AUX, se indica la temperatura), programación AUTO (modo Auto - calentamiento de agua 70 g, pausa (para llenado, ajustable), ajuste de pausas de temperatura (deben ser 4 pausas, para que haya reserva, ácido, proteína, sacarificación), con funcionamiento simultáneo de la bomba, pausa de puré - ajustable con funcionamiento simultáneo de la bomba, solo funcionamiento de la bomba , el llamado modo de hidromasaje, cuando el mosto se arremolina en una corriente y toda la turbiedad se deposita en el centro, y se bombea con el funcionamiento simultáneo de AUX y el segundo sensor de temperatura, se conectará un compresor de acuario con un aireador de flujo a Allí, el mosto fluye a través de un enfriador-enfriador de flujo continuo.
En realidad, la tarea no es grande, pero soy humanista y programar no es fácil.

Por el momento, el controlador se ve así:

A cambio, prometo convertirme en mentor personal y maestro en elaboración de cerveza para cualquiera que esté interesado. :)

¡UDP! ¡Tema sobre Habré!

La automatización en la sociedad moderna es una medida necesaria, porque en la era digital es extremadamente importante eliminar el factor humano en diversas industrias para estandarizar y mejorar la calidad de los productos. También hay áreas en las que los humanos simplemente no pueden hacer lo que los robots son capaces de hacer, por ejemplo, la producción de nanomateriales y microcircuitos.

Sin embargo, la automatización no sólo ayuda en la producción, sino que también puede resultar útil para el ciudadano medio. Por ejemplo, la automatización de una cervecería con Arduino puede simplificar significativamente el proceso de producción de un producto. Averigüemos cómo puede ayudar la automatización para la rectificación en Arduino y otras cosas, y veamos ejemplos.

Las principales ventajas de los sistemas automatizados basados ​​​​en el microcontrolador Arduino.

Nadie te prohíbe soldar tu propia placa y programarla tú mismo utilizando lenguajes de bajo nivel. Sin embargo, la automatización con Arduino y microcontroladores prefabricados facilitará enormemente todo el proceso y ahorrará tiempo. Después de todo, es mucho más fácil comprar un producto ya preparado con un conjunto de bibliotecas y adaptarlo a sus necesidades. Y la automatización asequible en Arduino mega 2560 puede ser útil en muchas áreas de la vida, desde interruptores de voz para una casa inteligente hasta pestillos eléctricos con detector de movimiento. Las principales ventajas por las que es famosa la automatización Arduino son:

  1. Baja barrera de entrada. No es necesario obtener una educación de ingeniero; basta con ver un par de videos de capacitación y tener una base en programación.
  2. Una gran cantidad de bibliotecas ya preparadas. Arduino es utilizado en toda la CEI por muchos entusiastas de la robótica, hasta el punto de que la producción de diversos productos electrónicos se convierte en su hobby. Por este motivo, la comunidad de usuarios online es extremadamente activa, publica un gran número de espacios en blanco y está dispuesta a ayudarle a resolver cualquier problema. La calidad de las bibliotecas se ve afectada debido al bajo umbral de entrada, pero nadie prohíbe crear la suya propia, basta con estudiar la semántica del lenguaje C++ o utilizar traductores ya preparados.
  3. Una gran cantidad de periféricos. No importa si necesita una automatización de invernadero basada en Arduino o un sensor de luz, encontrará cualquier módulo, incluidos sensores de sonido y reconocedores de voz. Sí, algunas placas cuestan mucho dinero, pero siempre puedes encontrar análogos baratos, por ejemplo, el módulo wi-fi esp8269 de otros fabricantes, que cuesta 10 veces menos que el oficial.
  4. Mucha información. Cualquier problema al que te enfrentes ya lo ha enfrentado otra persona y probablemente encontrarás una solución en Google. También hay literatura completa que puedes consultar.

Sin embargo, no creas que Arduino no tiene fallas. La placa es famosa por su bajo rendimiento. En tareas especialmente complejas y con una gran cantidad de código, el tiempo de respuesta puede alcanzar 1 segundo, lo que es inaceptable para los microcontroladores. La memoria flash de la mayoría de los módulos no supera 1 MB, lo que no es suficiente para crear redes neuronales o utilizar archivos multimedia. Por supuesto, se puede conectar una tarjeta de memoria auxiliar, pero esto también aumenta el tiempo de respuesta, requiere recursos adicionales para alimentarlo y se hace de forma semi-artesanal.

Sin embargo, los sistemas automatizados simples, por ejemplo, para elaborar cerveza o para invernaderos, no requieren ni una fracción de los recursos que la placa puede proporcionar. En consecuencia, la mayoría de los usuarios considerarán que estas deficiencias no tienen sentido. Si decide montar su propia impresora 3D o un diseño más complejo, debería echar un vistazo más de cerca a sus homólogos. Pero la barrera de entrada para los competidores de Arduino será mucho mayor.

Un ejemplo de automatización de procesos basado en microcontrolador Arduino.

El ejemplo más simple de automatización de procesos puede ser un invernadero con Arduino. Para crear cualquier sistema conviene definir claramente las tareas que debe realizar. Tomando como ejemplo un invernadero, esto sería:

  1. Creación de un clima especial.
  2. Encendido y apagado oportuno de la iluminación.
  3. Riego oportuno de las plantas y mantenimiento de la humedad del aire al mismo nivel.

Según estas tareas, podrá notar inmediatamente lo que necesitará comprar para la placa principal:

  1. Sensor de temperatura. Garantizará que el aire no se caliente ni se enfríe, estando dentro de los límites prescritos por el programa. Si la temperatura cambia, la placa encenderá el aire acondicionado o las baterías electrónicas.
  2. Sensor de luz. Por supuesto, puedes limitarte a una solución de software y comprar lámparas caras que simulen la luz del día. Pero si desea crear un invernadero completo, será mucho más conveniente instalar un techo automático, que será controlado por Arduino.
  3. Sensor de humedad. Aquí todo es igual que con la temperatura, según el escenario prescrito, la placa encenderá pulverizadores y humidificadores, si es necesario.

Cuando compras todos los módulos necesarios, solo queda programarlos. Después de todo, sin código, son sólo piezas de hardware que no son capaces de hacer nada.

Programación de microcontroladores Arduino para automatización de procesos. Ejemplo

Como en el punto anterior, para la programación es importante dividir la tarea en subpuntos separados y realizarlos de forma secuencial. La programación de Arduino se produce gracias a comandos en la interfaz AT y AT+, utilizando bibliotecas preparadas. En consecuencia, todos los scripts se escriben en un entorno especial en C++ y, antes de hacer nada, se dedica tiempo a estudiar su semántica. Además de realizar funciones simples, el sistema también es capaz de almacenar scripts en la memoria flash, que es lo que necesitamos en este ejemplo.

No olvides que la información de cada sensor llega en tiempo real y como variable, pero puedes limitar el tiempo de respuesta, ya que no es necesario gastar recursos y medir cada parámetro constantemente. En consecuencia, configure el tiempo de encendido y apagado para cada sensor o configure el tiempo de respuesta para un período determinado.

Soy estudiante de una universidad técnica. Un día, sentados en un café con un amigo que entonces estudiaba en una universidad de medicina, decidieron abrir un bar. Había muchas ideas que, en principio, merecían cierta atención. Por ejemplo, una pista de baile que cambia el ángulo de inclinación según el estilo de música... Pero, junto con toda la variedad de ideas, también había una más:

…¿no deberíamos elaborar nuestra propia cerveza?

Un par de semanas después, preparé cerveza con ingredientes de la cervecería donde trabajaba el amigo de mi padre. Pero muchos procesos tecnológicos se vieron interrumpidos, por lo que en lugar de cerveza salió algo con un olor no muy agradable.

Unos años más tarde decidí repetir el proceso, automatizándolo un poco con Arduino UNO. Y esto es lo que pasó.

Comenzaré con lo que se supone que debe hacer toda la configuración.

  • Compruébelo usted mismo: ¿está todo funcionando, está todo conectado?
  • Límpiate;
  • Prepárese para el proceso de elaboración de la cerveza;
  • Elaborar cerveza en modo semiautomático;
  • Elaborar cerveza manualmente;
  • Prepare cerveza en modo automático (como una lavadora lava la ropa).

El primer punto no se ha implementado por el momento. Hasta ahora ni siquiera tengo idea de cómo implementarlo.
El segundo tampoco está implementado, pero lo terminaré en un futuro próximo, solo esperaré a que me entreguen las bombas de eBay.
El tercer punto es bastante sencillo.

Preparándose para el proceso de elaboración de cerveza.

Un mensaje del sistema de que es necesario verter agua en la tina -> el programa espera a que se presione la tecla OK -> el programa envía al arduino un comando para encender el relé de estado sólido -> el relé de estado sólido El relé enciende el elemento calefactor de un kilovatio en la tina, lo lleva a una temperatura de 37 grados y envía un comando al programa de que todo está listo para cocinar. Mantiene una temperatura de 37 grados.

Me gustaría que se comprobara la presencia de agua, pero el sensor aún está esperando que lo envíen los “hermanos chinos”.

Elaborar cerveza en modo semiautomático

En principio, un procedimiento sencillo:

Presione el botón "Calentamiento" en el programa de control, los otros botones de control están inactivos;
- Después del calentamiento, el programa muestra el mensaje “Todo está listo, puedes cocinar”;
- Agregue los ingredientes, seleccione el programa de elaboración de cerveza - se activa el botón "Elaboración de cerveza";
- Presione el botón “Elaboración de cerveza”, el proceso ha comenzado;
- A continuación, el sistema te avisará periódicamente con mensajes informativos sobre qué hacer y cuándo.

Debes seguir las instrucciones.

Elaborar cerveza manualmente

Este proceso le permite configurar los parámetros de cocción y cambiarlos durante el ciclo de cocción. Aún no me he puesto a ello.

Cocción automática

Esto es un sueño. Actualmente no hay componentes para implementar. No hay suficientes bombas ni sensores de nivel de agua. No sé cómo medir la densidad del mosto, cuánto alcohol hay en la cerveza joven y mucho más. Pero no me desespero y automatizaré gradualmente hasta que la elaboración de cerveza se vea así:

Eché los ingredientes en las bandejas correspondientes, apreté el botón y... al mes y medio recibí la cerveza terminada.

Esta es una breve descripción general del proceso, ahora pasemos al aspecto técnico.

Lado técnico del proceso.

Como se indicó anteriormente, el microcontrolador de control es arduino UNO. 2 relés están conectados a él, 2
Termómetro digital DS18B20.

Arduino se comunica con el programa principal a través del puerto com. Porque No tengo una placa de identificación en tiempo real para arduino, tuve que tomar temporizadores de Visual C#. No tengo experiencia escribiendo programas, así que si alguien tiene alguna idea o crítica, sería un honor para mí. Critica, intimida, por así decirlo, si de repente no te gusta.

Aquí está el texto del programa en arduino.

#incluir OneWire ds(8); // los sensores de temperatura están ubicados en el pin 8 int reley1 = 13; int reley2 = 12; int reley3 = 11; int reley4 = 10; int reley5 = 7; //habilitar decenas int reley6 = 6; // calentar en el puré float temp1; temperatura flotante2; configuración vacía (void) ( Serial.begin(9600); pinMode(reley1,SALIDA); pinMode(reley2,SALIDA); pinMode(reley3,SALIDA); pinMode(reley4,SALIDA); pinMode(reley5,SALIDA); pinMode( reley6,SALIDA); digitalWrite(reley2,LOW); digitalWrite(reley4,LOW); digitalWrite(reley6,LOW) (if (Serial.available()) ( switch (Serial.read())( caso " i": infuz(); romper; caso "p": progrev(); romper; caso "a": avariya (); romper; caso "v": varka(); romper; caso "t": romper; ) ) void varka() ( digitalWrite(reley6, ALTA); while(Serial.read()! ="m") ( temperatura(); if (temp1 >= 52.00) digitalWrite(reley6,BAJO); else digitalWrite(reley6, ALTO); ) while(Serial.read()!="n") ( //digitalWrite (reley6,HIGH); if(temp1>= 62.00) digitalWrite(reley6,LOW); else digitalWrite(reley6,HIGH); while (Serial.read()!="b") ( //digitalWrite (reley6,HIGH); temperatura(); if(temp1 >= 75.00) digitalWrite(reley6,LOW);<=69.50) digitalWrite(reley5,HIGH); else digitalWrite(reley5,LOW); } digitalWrite(reley5,LOW); } void progrev() { while (temp1 <=36.00) temperature(); digitalWrite(reley6,HIGH); digitalWrite(reley6,LOW); //while (temperature() >40.0) //retraso(1000);< 9; i++) { // we need 9 bytes data[i] = ds.read(); } int16_t raw = (data << 8) | data; byte cfg = (data & 0x60); if (cfg == 0x00) raw = raw & ~7; // 9 bit resolution, 93.75 ms else if (cfg == 0x20) raw = raw & ~3; // 10 bit res, 187.5 ms else if (cfg == 0x40) raw = raw & ~1; // 11 bit res, 375 ms celsius = (float)raw / 16.0; for(i = 0; i<8; i++) { if (addr[i] == zator[i]) gde = true; else { gde = false; break; } } if (gde) { Serial.print("t2 "); //temperatura варочника temp2 = celsius; Serial.print(temp2); Serial.println(); } else { Serial.print("t1 "); //температура затора temp2 = celsius; Serial.print(temp1); } }

Serial.println("s"); ) accidente nulo())( digitalWrite(reley1,LOW); digitalWrite(reley2,LOW); digitalWrite(reley3,LOW); digitalWrite(reley4,LOW); digitalWrite(reley5,LOW); ) temperatura nula() ( byte i ; byte presente = 0; byte addr; byte zator = (40, 23, 218, 43, 6, 0, 0, 22); // dirección del sensor de temperatura en el byte varilka = (40, 255, 240, 115) , 59, 4, 0, 234); //dirección del sensor de temperatura en el tanque de preparación float celsius; // float temp if (!ds.search(addr)) ( //Serial.println("No más direcciones; ."); //Serial.println(); ds.reset_search(); delay(250); // retorno; ) if (OneWire::crc8(addr, 7) != addr) ( Serial.println("CRC ¡no es válido!"); // return; ) ds.reset(); ds.select(addr); ds.write(0x44, 1); // inicia la conversión, con el parásito encendido al final delay(840) ; // tal vez 750 ms sea suficiente, tal vez no // podríamos hacer un ds.depower() aquí, pero el reinicio se encargará de ello present = ds.reset() // Leer Scratchpad para ( yo = 0; i

Todo estaría bien, pero por alguna razón el tercer sensor muestra constantemente 85 grados. No puedo decir por qué todavía. Y es necesario para una mayor automatización: mantener la temperatura en el refrigerador.

Describiré brevemente lo que hace el programa.

El programa está dividido en subrutinas, cada una de las cuales se activa si aparece un símbolo determinado en el puerto COM. Por ejemplo, si la letra “p” ingresa al puerto, se activa el modo “Calentamiento”. O, si es "a", entonces se llama a la subrutina avariya() y todo se apaga. Al llamar a la subrutina temperatura(), los datos se escriben en las variables globales temp1, temp2. Desde allí acceden a las subrutinas necesarias.

En el futuro, aparecerán subrutinas para elaborar diversas variedades e incluso alcohol ilegal.

Ahora, con respecto al programa de control principal.

Programa de control principal

Está escrito en Visual Studio C#.

Código fuente del programa:

usando Sistema; usando System.Collections.Generic; usando System.ComponentModel; usando System.Data; usando System.Drawing; usando System.Linq; usando System.Text; usando System.Threading.Tasks; usando System.Windows.Forms; utilizando System.IO.Ports; espacio de nombres WindowsFormsApplication1 ( clase parcial pública Form1: Form ( // String número de puerto; SerialPort Port1 = new SerialPort("COM5", 9600); int s=0; public Form1() ( InitializeComponent(); ) /*private const int CP_NOCLOSE_BUTTON = 0x200; anulación protegida CreateParams CreateParams ( get ( CreateParams myCp = base.CreateParams; myCp.ClassStyle = myCp.ClassStyle | CP_NOCLOSE_BUTTON; return myCp; ) )*/ privado void Form1_Load(remitente del objeto, EventArgs e) ( label2.Text = Port1. PortName; Port1.Open(); ) //Comprobando el equipo privado void button1_Click(remitente del objeto, EventArgs e) ( if (Port1.IsOpen == false) ( try ( //la información del programa se puede modificar desde podrugomu.com/node /987 Port1.PortName = label2.Text; Port1.Write("Check"); //SerialPort Port2 = new SerialPort("COM4", 9600); //Port2.Open(); ReadByte()); //comprobando las lecturas del puerto MessageBox.Show("El proceso de verificación del hardware ha comenzado", "Mensaje informativo"); NombrePuerto = etiqueta2.Texto; Texto; //Puerto1.Open(); Puede agregar malta y activar el modo de maceración"); richTextBox1.Text = richTextBox1.Text + "\n" + "Fin del proceso de preparación del macerado. Т=37 grados" + " " + DateTime.Now.ToString("HH:mm"); button2.Enabled = true; ) ) private void emergenciaDisableToolStripMenuItem_Click(objeto remitente, EventArgs e) ( Port1.WriteLine("a"); MessageBox.Show("El usuario ha apagado todo el sistema"); hervidor de puré vacío privadoToolStripMenuItem_Click(remitente del objeto, EventArgs e) ( Port1.WriteLine("k"); MessageBox.Show("El modo de ebullición Mash tun está activado. Espere 60 minutos") ; richTextBox1.Text = richTextBox1.Text + "\n" + "El modo de ebullición Mash Tun está activado Espere 60 minutos" + " " + DateTime.Now.ToString("HH:mm" ) private void timer3_Tick(remitente del objeto, EventArgs e) (cadena s1 = ""; Port1.ReadLine(); if (s1.Substring(0, 2) == "t1") label5.Text = s1.Substring(4, 5); if (s1.Substring (0, 2) == "t2") label9.Text = s1.Substring(4, s++; if (s == 900) ( Port1.WriteLine("m"); MessageBox. Show("Sobrescribir fase a 62 grados"); richTextBox1.Text = richTextBox1.Text + "\n" + "Etapa de puré a 62 grados" + " " + DateTime.Now.ToString("HH:mm");

Código fuente del programa

El programa se comunica con arduino a través del puerto com. Lo único que no puedo superar es que al sondear el puerto COM, el programa no se congela mientras se ejecuta la subrutina. Una vez finalizada la subrutina, el programa se cuelga, pero por ahora esto no es crítico e incluso es una especie de ventaja. Infalible: para evitar que presiones algo durante un determinado procedimiento.

En total, el programa puede
- preparar el equipo para cocinar;
- cocinar;
- escribir un registro de trabajo sencillo (muy útil para análisis posteriores de la elaboración de cerveza);
Hervir la cerveza y hacer puré.

Cuando lleguen las bombas y las válvulas solenoides, las automatizaré aún más. Mientras tanto, añadiré un programa de cocina cada domingo. Habrá 5 programas en total. La implementación del modo manual también espera su turno.
Como dicen,

continuará...

ACTUALIZACIÓN:

Aquí algunas fotos de la cervecería.

Este es un digestor. Tengo dos de estos. En el lateral se instala un sensor de temperatura DS18B20 en un marco sellado.
Durante mucho tiempo no pude entender por qué el arduino se congela periódicamente, hasta que me di cuenta de que todo debía estar conectado a tierra, de lo contrario se rompería en la carcasa, luego en la carcasa del sensor y en el arduino.

El tubo de cobre del interior sirve para filtrar el mosto. Se puede hacer más bonito, pero es mejor utilizar un fondo doble. Lamentablemente los chinos no tienen prisa por enviarlo.

Es demasiado pronto para hablar del resultado, esto es lo que pasó

La vista general de la tina se ve así.

Conectores regulares usados
Para conectar sensores de temperatura, conectado a un enchufe doble. Es más conveniente lavar el equipo. Lo apagué y lo llevé al baño. Lo lavé, lo conecté y todo funciona.

Todo hizo espuma según lo previsto, no se escapó ningún exceso. Y mis planes inmediatos son drenar un lote de cerveza para una mayor fermentación y elaborar otro. La receta, en principio, se puede ver en el código de la subrutina varka() de arduino.

Por fin han llegado las electroválvulas. El proceso de automatización continúa.




Arriba