BJT, resistencia y diodo funcionan pero ULN2803 no

Estoy tratando de controlar algunos relés de 5V con un mC. Al principio opté por usar un BJT, una resistencia de 470 ohmios y un diodo 1N4004 para controlar cada uno de los relés. Cada pin de salida mC es de 5V, 40ma. Esta configuración funcionó bien.

Quería ver si podía hacerlo mejor, así que estoy probando el chip controlador ULN2803an . Sin embargo, este tipo de obras. Funciona durante 5 segundos y luego el mC se congela o comienza a controlar los pines de salida incorrectamente.

el pin 9 va a tierra, el pin 18 va a 5V

Los cables amarillos se conectan directamente a los pines de salida del mC. El pin 9 de ULN2803an va a tierra, el pin 10 de ULN2803an va a +5V.

¿Necesito una resistencia entre el mC y el chip ULN2803an? ¿Está conectado correctamente el ULN2803? ¿Hay algo más que me estoy perdiendo? Todo funciona con el combo BJT, resistencia y diodo. Pensé que el ULN2803an sería exactamente igual. Cualquier ayuda para resolverlo sería apreciada.

De la foto parece que conectó el 2803 correctamente, pero el camino desde las bobinas del relé a través de los diodos de retorno del 2803 es un poco largo. Para verificar si este es su problema, puede intentar con un suministro separado de 5 V para los relés o con diodos de retorno directamente a través de las bobinas de los relés.
Wow, creo que esto resolvió el problema. ¿Por qué importan las conexiones largas? Deberías ponerlo en la sección de respuestas.
hecho. ¿Cuál de las dos sugerencias usaste?
acortando los cables se arregló :) Intenté reconstruirlo varias veces anteriormente, pero cuando probé cables más cortos funcionó

Respuestas (3)

De la foto parece que conectó el 2803 correctamente, pero el camino desde las bobinas del relé a través de los diodos de retorno del 2803 es un poco largo. Para verificar si este es su problema, puede intentar con un suministro separado de 5 V para los relés o con diodos de retorno directamente a través de las bobinas de los relés.

Una línea larga es efectivamente una resistencia (pequeña) en serie con un inductor (pequeño). (En realidad, también hay un condensador, y si necesita ser preciso, hay una gran cadena de resistencias, inductores y condensadores). Muchas veces puede ignorarlos, pero en este caso, puede haber grandes picos de corriente que resulten en picos de voltaje, que pueden afectar su microcontrolador.

Si tiene la oportunidad, use relés de 12 V, alimentados desde una pared de 12 V, y use un 7805 o similar para alimentar su microcontrolador.

¿Qué gana al usar relés de 12V en lugar de 5V?
El 'mismo' relé para 12V usa ~ 1/4 de la corriente, y los picos estarán en el suministro de 12V, con el 7805 para mantenerlos alejados del suministro de 5V.

Parece que tiene su ULN2803 conectado incorrectamente.

Aquí está el pinout de la hoja de datos:

ULN2803

Y aquí hay un darlington individual del IC:

ULN2803 darlington

Puede ver que no hay pin Vcc; esto se debe a que las salidas son de colector abierto . Esto significa que conecta su carga (bobina de relé) entre la salida y Vcc. Esto es lo mismo que habría hecho con su configuración BJT.

Puede usar un diodo para protegerse contra el retroceso inductivo como con el transistor único, pero el ULN2803 tiene diodos integrados para este propósito que puede usar en su lugar. Los ánodos de los diodos están conectados a cada salida, y el pin COM es la conexión de cátodo común para estos diodos (por lo que puede conectarlo al Vcc para colocar el diodo en la bobina del relé)

Efectivamente, cada salida debería verse así cuando se configura correctamente:

Conexiones ULN2803

La entrada se puede controlar directamente desde la salida del micro (el micro estaría donde está el DS89C4x0 en el diagrama) o usar un drenaje abierto con resistencia pullup como en el circuito anterior. Observe cómo el pin COM está conectado a +5V para colocar el diodo interno en la bobina del relé.

EDITAR: noté que ha editado su pregunta para cambiar los + 5 V del pin 18 al pin 10. Supongo que fue un error tipográfico y fue así al principio.
En este caso, y a juzgar por la imagen, parece que las cosas están conectadas correctamente como menciona Russell.
Es difícil saber qué podría estar causando su problema sin más datos. ¿Qué quiere decir cuando dice que se ejecuta durante 5 segundos? ¿Qué está haciendo durante este tiempo? ¿Con qué frecuencia están cambiando los relés? ¿Qué están cambiando? ¿Lo que sea que se esté cambiando comparte líneas eléctricas con el micro? Si tiene un alcance, entonces publicar una captura de las salidas ULN2803 y la línea de + 5V probablemente ayudaría.

Edité la pregunta. Dije que el pin 18 estaba vinculado a VCC, pero en realidad era el pin 18. Los relés cambian una vez por segundo. Programé el mC para ciclar los relés. El problema parece ser causado entre cuando todos los relés se encienden y todos los relés se apagan. Actualmente, los relés no están cambiando nada.
¿Te refieres al pin 10? Parece que aún puede tener un problema de contragolpe (o posiblemente su fuente de alimentación no es capaz de suministrar suficiente corriente). Intente agregar algunos diodos externos directamente a través de las bobinas del relé y eche un vistazo a su fuente de alimentación. ¿Tienes un alcance?
¡ay! Sí, pin 10... :/ Si es un problema de fuente de alimentación, ¿por qué funcionaría con los BJT pero no con el ULN2803? Todavía no tengo un visor, pero puedo buscar uno.
Si es la misma fuente de alimentación y está cambiando los relés exactamente como antes, entonces no debería ser diferente. No sabía que era exactamente la misma configuración (es decir, la cantidad de relés, el mismo suministro, la misma conmutación). Un osciloscopio debería identificar fácilmente el problema.
Gracias. Cuando obtenga el alcance, ¿debo mirar la fuente de alimentación?

Tu foto parece correcta.
Asegúrese de que todas las conexiones de la placa de pruebas hagan contacto correctamente.

Pruebe los diodos inversos directamente a través de las bobinas del relé.

Conecte el cable +ve que va al bus superior y luego al pin 10 directamente al pin 10
(o verifique el pin 10 con el medidor para asegurarse de que esté alto.

Un cable de tierra a las salidas 2803 debe operar los relés
(puede funcionar tal como está sin dañar el IC).

Una entrada + a las entradas 2803 debe operar los relés; primero desconecte uC.

Gracias por la ayuda. Probé el diodo inverso a través de los relés, pero parecía estar ocurriendo el mismo problema. Luego probé los cables más cortos y funciona.