Arduino 16x2 LCD símbolos extraños después de relé-interruptor

0

Estoy usando mi arduino para cambiar automáticamente el agua de mi acuario. El programa funciona bien, las bombas, los calentadores y las válvulas están controlados por relés. Cuando estoy conectado a mi computadora portátil, puedo ver a través del monitor en serie que funciona y funciona bien en el programa. Pero ahora mi LCD da símbolos extraños después de activar / desactivar los relés. He leído algunas preguntas y respuestas sobre estos problemas, pero no tengo una respuesta clara y unívoca.

Mi pregunta principal: ¿La perturbación también puede venir debido a la distancia 'física' desde el LCD hasta el relais?

Déjame incluir la imagen de mi configuración hasta ahora (aún en fase de prueba, y no soy tan bueno en electrónica, así que tal vez te burlarás de mi configuración:

Comopuedever,elarduinoestájustoencimadelosrelés,juntoaunafuentedealimentaciónde24VCCparalasválvulas,ylosenchufesestánconectadosalosrelés.Losreléscambiarán2bombas(30W)perotambiénelementosdecalefacciónde300W.

Mipregunta:¿lossímbolosextrañossolopuedensercausadosporcablesdecanalcomolosdescritosen este tema ? ¿O la distancia 'física' también causa problemas?

También: estos relais pensé que eran Relais de estado sólido, pero probablemente no lo son, ya que la misma tienda en línea también vende la placa de 8 relés denominada como Relais de estado sólido: p. ¿Podría eso darme una solución? Aquí hay un enlace al esquema de los relés que estoy usando ahora: schematic . (Teniendo en cuenta que desde que vi este comentario en el tema vinculado anteriormente):

  

Mira la hoja de datos para el "Relay". La entrada al relé en realidad está impulsando un pequeño SSR, que cambia la potencia real al propio relé. Dado que la entrada a la cosa de relé es una entrada SSR, no veo que un diodo realmente haga nada

Si alguien puede ayudarme con este problema sería genial, ya leí mucho sobre estos problemas, pero no entiendo cómo resolverlo. Si se puede arreglar con condensadores, resistencias o amortiguadores, adjunte un pequeño dibujo con él si es posible. Gracias por el tiempo a todos!

    
pregunta Bart

5 respuestas

2

Dada su configuración, es probable que tenga un problema similar a un cliente mío a principios de este año. Bajo las pruebas de EMC, su aparato no pasó la prueba de emisiones externas intensas. El motivo: los cables entre la placa principal y la placa LCD eran largos, no blindados y de alta impedancia (> 1 Ohm).

Su configuración ofrece muchas oportunidades para: a. emitiendo "potencia de radio" al conmutar; segundo. siendo perturbado por la "potencia de radio".

Debe mantener sus bucles actuales lo más pequeños posible: retuerza los cables de alimentación y gire los cables a la pantalla LCD, hágalos más pequeños si es posible. Puede reducir el efecto simplemente protegiendo la "señal de reloj" en su LCD: agregue un condensador cerca de la entrada de la entrada de reloj del LCD (1-100nF dependiendo de la velocidad). Para mi cliente, resolví el problema en SW; de lo contrario, tenía que modificar toda su producción. Lo resolví por: - Asegurarse de que la pantalla LCD esté en modo de lectura siempre que no esté escrita; - Actualice los caracteres y la configuración de la pantalla LCD de forma regular (vuelva a escribir cada parámetro y carácter cada pocos segundos [un parámetro cada 20 ms, por ejemplo).

Antes de eso, confirmé el origen del problema de Hte agregando condensadores de filtrado en el reloj y en Lectura / Escritura (pero el reloj era lo más importante).

    
respondido por el le_top
0

Lo más probable es que su problema sea la repentina demanda de corriente cuando el encendido de un relé está causando un fallo en su alimentación de 5 V al Arduino y al LCD. Parece que el Arduino sigue funcionando pero el LCD está corrompiendo.

Figura1.Tarjetaderelésde5V,canalúnico.

Soloparasureferencia,lostablerosgeneralmentefuncionandelasiguientemanera:

  • Siserequierensuministrosaisladosde5V,elmicroalimentaelLEDdeloptoaisladorylafuentedealimentaciónseparadaalimentaelfoto-transistor,Q1ylabobinadelrelé.
  • LamayoríadelasaplicacionessolotienenunaPSU,porloqueVccseconectaaJD-Vcc.
  • CuandosebajaIN2,elLEDindicadoryelLEDoptoseencienden.Estoenciendeelopto-transistorquepasalacorrientesuficienteparaencendercompletamenteelQ3.Estoenergizalabobinadereléde5V.D3absorbelaenergíainductivadelabobinadereléenelapagado.

Devueltaasuproblema:obtengaotrafuentedealimentaciónde5V:uncargadordeteléfonoUSByuncableUSBconelconector"B" serán suficientes. Retire el puente Vcc a JD y alimente la placa de relés del lado JD de su nueva fuente: '+' (rojo) a JD, '-' (negro) a común.

Si esto resuelve tu problema, entonces mi teoría es correcta. Es posible que pueda funcionar con una fuente de alimentación siempre que corra los cables directamente desde el mismo al tablero de relés y directamente desde la fuente de alimentación al Arduino. No los encadenes.

Háganos saber cómo le va.

    
respondido por el Transistor
0

El problema similar ocurrió hace ~ 2 meses, cuando un hombre vino a mí y me dijo: ¿Por qué, cuando enciendo el motor de CA, un pequeño paso a paso comienza a funcionar solo? Tan pronto como supe que el motor de CA era en realidad un motor grande de 3KW, lo supe. Es el campo magnético, que crea. Y lo mismo ocurre en su caso, esos relés crean un enorme campo magnético a su alrededor, y en su caso, el arduino está a solo unos centímetros de distancia. Intenta dar arduino en cables a 1 metro de distancia. Intente también colocar el arduino en la carcasa de metal (creando la jaula de Faraday) y solo cables. También debería resolver el problema. Espero que ayude.

    
respondido por el Jakey
0

También tuve un tipo de problema similar, pero lo solucioné agregando algunas líneas justo después de que sucediera el cambio:

digitalWrite(xPin,LOW);
lcd.begin(16,2);
lcd.clear();
lcd.setCursor(0, 0); 
lcd.print("Your Content...");

Lo que sucede detrás de la escena es que su LCD tiene su propia memoria. Tiene pocos programas en su memoria flash. Pero cuando haces el cambio hay un apagón transitorio. Durante ese apagón, su LCD literalmente olvida todo lo que tenía en su memoria. Ahora no sabe por dónde empezar y, por lo tanto, muestra mensajes extraños. Cuando agrega estas líneas de código /*lcd.begin(16,2); lcd.clear();*/ debajo del cambio, ahora le está recordando a la LCD su objetivo.

Una alternativa podría ser: alimentar su relé con una fuente totalmente diferente. ¿Qué quiero decir con eso? La fuente de alimentación que está conectada a NC o NO del relé no debe ser común a la fuente de alimentación que le está dando a su sistema de microcontrolador.

    
respondido por el Bigyan Chapagain
0

Un problema con los módulos LCD de caracteres es que cuando se usa en modo de cuatro bits, un fallo que les permite recibir un medio byte erróneamente ensamblará bytes utilizando (lo que debería ser) la segunda mitad de un byte y la primera La mitad de la siguiente. Esto puede causar que la pantalla se dañe hasta la próxima vez que sea forzada al modo de 8 bits y luego al modo de 4 bits. Si uno no está usando el desplazamiento deliberadamente y no le importa restablecer la posición del cursor, esto puede lograrse enviando un valor nybble de 0, 3, 0, 2. Incorpore una pausa de 1,6 ms (mínimo) después del segundo y cuarto bytes , y una pausa de 40us (mínimo) después de cada byte. Siguiendo esos comandos, use los comandos apropiados para establecer el modo de visualización y reescribir el contenido de la visualización.

Si la pantalla estaba en modo de 4 bits, esperando recibir la primera mitad de un byte (como debería ser), procesará lo anterior como un comando de inicio 0 + 3 y un comando de inicio 0 + 2.

Si la pantalla estaba en el modo de 8 bits, procesará 00 como NOP, 30 como un comando para cambiar la pantalla al modo de 8 bits (que ya está), 00 como un NOP y 20 como un comando para cambiar al modo de 4 bits. Tenga en cuenta que la pantalla cambiará al modo de servicio 1/8, por lo que el código debe establecer el modo de ciclo de trabajo requerido después de usar la secuencia de sincronización anterior.

Si la pantalla estaba en modo de 4 bits, pero esperando recibir la segunda mitad de un byte, recibirá? +0 como algún tipo de comando, 3 + 0 como comando para cambiar al modo de 8 bits, y 20 como comando para cambiar al modo de 4 bits.

La secuencia de sincronización puede causar una falla en la pantalla si la pantalla estaba usando un ciclo de trabajo de 1/16 y estaba en el estado incorrecto, pero en esa situación probablemente también hubiera habido otras cosas incorrectas. Debido a que la pantalla no se interrumpirá si está en el estado correcto, el código puede usar periódicamente la secuencia anterior y reescribir los contenidos de la pantalla sin perturbaciones visibles. Si algo sale mal, se corregirá la próxima vez que el código se reconfigure y vuelva a escribir la pantalla.

    
respondido por el supercat

Lea otras preguntas en las etiquetas