1 votos

El optoacoplador no consigue aislar el circuito

Tengo un circuito en el que estoy intentando utilizar un microcontrolador para activar la bocina de un coche. He tenido muchos problemas al intentar aislar la bocina del resto del circuito. Tengo el microcontrolador encendiendo y apagando un LED una vez por segundo más o menos, sólo como un LED de estado de que todo va bien. Luego, cuando la bocina se enciende, el LED deja de parpadear y se queda encendido, y la bocina no se apaga. Es como si el microcontrolador se hubiera quedado encajado. Mientras escribo esto tal vez el reloj externo está recibiendo alguna retroalimentación de alguna manera? Incluso si desconecto la batería de 12v del coche del circuito el microcontrolador no se recupera hasta que lo encienda. He probado el circuito con resistencias de potencia y todo funciona como se espera. Lo difícil es que siento que he hecho todo lo posible para aislar el microcontrolador de la bocina.

También he tratado de añadir un diodo flyback (editar* añadido al esquema) sin mejores resultados (lo dejé fuera para esta ejecución porque uno de los chicos que ayudó a diseñar esta cosa dijo que una batería de coche puede manejar y un diodo flyback no es necesario). Incluso he intentado envolver la placa del microcontrolador en papel de aluminio. Eso tampoco pareció ayudar.

¿Alguna idea de lo que podría estar pasando, o qué probar a continuación?

EDITAR :

Gracias por todas las sugerencias. Terminé añadiendo el diodo flyback a través de la bobina del relé y también simplifiqué un montón de mi código de arduino. Entonces descubrí que si comentaba todo y sólo tenía un botón como entrada al microcontrolador y una única salida a los mosfets y la bocina, ¡las cosas funcionaban! El problema aparece cuando introduzco el código que lee del giroscopio/acelerómetro (MPU6050). Creo que es a través de SPI? De todos modos, si incluyo ese código en mi hilo de bucle, entonces todo se estropea.

Wire.beginTransmission(MPU_addr);
Wire.write(0x3B);  // starting with register 0x3B (ACCEL_XOUT_H)
Wire.endTransmission(false);
Wire.requestFrom(MPU_addr,6,true);  // request a total of 6 registers
accX=Wire.read()<<8|Wire.read();  // 0x3B (ACCEL_XOUT_H) & 0x3C (ACCEL_XOUT_L)    
accY=Wire.read()<<8|Wire.read();  // 0x3D (ACCEL_YOUT_H) & 0x3E (ACCEL_YOUT_L)
accZ=Wire.read()<<8|Wire.read();  // 0x3F (ACCEL_ZOUT_H) & 0x40 (ACCEL_ZOUT_L)

schematic

simular este circuito - Esquema creado con CircuitLab

picture of circuit microcontroller breadboard picture of horn breadboard wrapped in aluminum foil

2voto

Spehro Pefhany Puntos 90994

Conecte un condensador a través del Vcc del microcontrolador a GND directamente en la parte superior del chip (cables lo más cortos posible). El condensador debe ser de tipo cerámico, por ejemplo de 100nF a 1uF.

Si quieres probar el apantallamiento, la pantalla debe estar conectada a GND.

La construcción de su protoboard abierto no es muy propicia para lograr una baja susceptibilidad a la EMI, por no decir otra cosa. Para tratar de averiguar lo que está causando, se puede accionar la bocina manualmente con y sin el optoaislador en su lugar y ver si su uC todavía se cuelga. Usted sabe que la EMI viene de la bocina, pero no ha establecido realmente cómo está llegando a la MCU.

i-Ciencias.com

I-Ciencias es una comunidad de estudiantes y amantes de la ciencia en la que puedes resolver tus problemas y dudas.
Puedes consultar las preguntas de otros usuarios, hacer tus propias preguntas o resolver las de los demás.

Powered by:

X