Autor Tema: Multiplexado con el 74HC595, consumos. Sonidos con Kinetis.  (Leído 775 veces)

0 Usuarios y 1 Visitante están viendo este tema.

Desconectado planeta9999

  • Moderadores
  • DsPIC30
  • *****
  • Mensajes: 3452
    • Pinballsp
Multiplexado con el 74HC595, consumos. Sonidos con Kinetis.
« en: 18 de Octubre de 2017, 20:03:31 »
 

Terminé mi prototipo de ruleta por encargo, pero me he encontrado con algunos problemas que más o menos voy resolviendo. Lo que me sorprendió es el comportamiento de los led, tanto de los segmentos de los display, como de los led en si.

En principio, sin tener programa busqué un ejemplo que encontré por internet, este usa DMA y SPI para controlar los 74HC595, al final no lo he usado porque por una parte dan el proyecto en Cube y por otra parte unos fuentes, que no casan entre si.

Al final hice mi propio programita de test para barrer los 74HC595, y aquí viene el tema. En el primer programa, que se corresponde con el primer video que pongo, se van encendiendo los segmentos de los display, poco a poco, y todos quedan encendidos. El caso es que al llegar a los led, lo azules y blancos no se iluminan nada, y los rojos y amarillos muy poco. Pensando que se podrían haber quemado, los comprobé y estaban bien, también cambié el 74HC595 y lo mismo.

Entonces pensando que el consumo total era excesivo y el transistor que activa el cátodo común actuaba de cuello de botella, cambié el programa para activar los leds y segmentos, de dos en dos, pero no quedan todos encendidos, se van barriendo de dos en dos. Aqui ya, como se ve en el segundo video, los leds si que lucen todos y con mucha intensidad.

Lo siguiente que hice, es quitar el transistor y cortocircuitar el cátodo común directo a masa. Al ponerlo en marcha, rodando el primer programa, en la fuente veo que el consumo se dispara una barbaridad, al tope de la fuente que son 5 amperios,  y todos los displays y leds se encienden con mucha intensidad.

Esto solo han sido pruebas, en el programa final los displays y leds se tendrán que encender por barrido, todavía no se a que velocidad, para controlar la intensidad y el consumo. Lo que no se es como calcular el valor de las resistencias limitadoras.

También me intriga saber porqué los transistores que controlan el cátodo común, que los elegí de 6 Amperios, no permitieron un consumo por encima de los 750mA, lo se porque es lo que indicaba la fuente, no lo entiendo.

Las resistencias limitadoras que puse en los 74HC595, no fueron las que en principio iba a poner, compré tamaño 1206 de 100, 220 y 470 ohm, pero cuando la recibo descubro que el footprint no se parece ni de lejos, las que pedí son 1206 y las del PCB eran mucho más grandes. Al final las tuve que pedir a Mouser, y solo tenían de 39 ohm, que son las que monta ahora el prototipo.

En el tercer video probé el módulo de sonido con un Kinetis y las librerías de Audio de Teensy. Va de fábula, solo que para reproducir ficheros de sonido estos tienen que ser WAV 16 bit PCM 44100Hz, sin problema. Muy contento, tengo muchas aplicaciones para este reproductor de sonido, con la ventaja de que todos los fuentes son de código abierto y cada uno se lo puede configurar como quiera, con infinidad de efectos, ecualizadores, sintetizadores, mezcladores, reproductores desde SD, desde flash, salida por I2S, DAC, y muchas cosas más, una maravilla.







« Última modificación: 18 de Octubre de 2017, 20:06:59 por planeta9999 »

Desconectado KILLERJC

  • Colaborador
  • DsPIC33
  • *****
  • Mensajes: 7240
Re:Multiplexado con el 74HC595, consumos. Sonidos con Kinetis.
« Respuesta #1 en: 18 de Octubre de 2017, 20:21:47 »
Citar
También me intriga saber porqué los transistores que controlan el cátodo común, que los elegí de 6 Amperios, no permitieron un consumo por encima de los 750mA, lo se porque es lo que indicaba la fuente, no lo entiendo.

Las resistencias limitadoras que puse en los 74HC595, no fueron las que en principio iba a poner, compré tamaño 1206 de 100, 220 y 470 ohm, pero cuando la recibo descubro que el footprint no se parece ni de lejos, las que pedí son 1206 y las del PCB eran mucho más grandes.

Podes dar el esquematico con la conexion de los leds + transistor de comun + 74hc595, un esquema "general" y ver las resistencias/tensiones que estas usando. Asi tambien cual es el transistor que estas usando.

Desconectado planeta9999

  • Moderadores
  • DsPIC30
  • *****
  • Mensajes: 3452
    • Pinballsp
Re:Multiplexado con el 74HC595, consumos. Sonidos con Kinetis.
« Respuesta #2 en: 18 de Octubre de 2017, 20:38:47 »
 
Toda la parte de los 74HC595 está alimentada a 5 voltios, las resistencias limitadoras en principio las iba a probar de 100, 220 y 470 ohm, pero por error del footprint las tuve que poner de 39 ohm.

Este es el esquema, el resto de 74HC595 van en cascada, he creado dos grupos cada uno controlado por un transistor que controla el cátodo común de displays y leds en cada grupo.

El transistor que tengo puesto no es el del esquema, aunque ese también lo compré, al final monté uno que soporta 6A, el ZXTN2010GTA. https://www.tme.eu/es/details/zxtn2010gta/transistores-npn-smd/diodes-incorporated/

Lo que no entiendo es porque los transistores me limitan el consumo total a unos 750mA en cada grupo, tampoco se exactamente como calcular las resistenicas limitadoras para encender todo en barrido y a que velocidad he de barrer los displays y led para controlar el consumo y la intensidad. Puedo hacerlo probando y cambiando el fuente hasta que lo vea bien.

La idea es que el encendido de los displays y leds se haga por DMA a través de SPI, para no tener que ocuparme por programa de controlar el encendido. O también lo puedo hacer con una interrupción controlada por un timer, pero me gustaría empeza a usar con asiduidad el DMA, así voy aprendiendo a configurarlo, porque le veo muchas posibilidades.



« Última modificación: 18 de Octubre de 2017, 20:47:24 por planeta9999 »

Desconectado KILLERJC

  • Colaborador
  • DsPIC33
  • *****
  • Mensajes: 7240
Re:Multiplexado con el 74HC595, consumos. Sonidos con Kinetis.
« Respuesta #3 en: 18 de Octubre de 2017, 21:25:45 »
Analicemos los circuitos.

Primero la entrada


* entradatrans.png
(8.91 kB, 568x230 - visto 190 veces)


A la izquierda tenes tu circuito, esto es lo que define Ib, ese pedacito de malla.
Pero la juntura BE por estar polarizada en directa, podriamos reemplazarla como un diodo "ideal" con una caida de cierto voltaje, para fines de acercarse nomas utilizamos 0.7V
Asi que nos queda el circuito de la derecha

Bueno supongamos por un momento que el ZXTN2010GTA desde la base se le dan 5V que es el caso mas favorable.
Tambien su ganancia (hfe) voy a suponer que tenemos una Ic de 1A, por lo cual su ganancia es de 200 segun el datasheet.

Si tenemos 5V en CAT2_MCU/1.?? menos 0.7V de la juntura BE (aunque veo que es un poco mas alta en el datasheet ) y luego dividido por la resistencia de 1K nos queda que tenemos una corriente de base de :

Ib = (5V - 0.7V) / 1K =  4.3mA

Ic es hfe veces mayor que Ib aproximadamente

Ic = Ib * hfe = 4.3mA * 200 = 860mA (Maxima corriente que va a dejar pasar por la suma de todos los leds )

Bastante proximo a lo que estas obteniendo. Lo feo es que mientras mas corriente manejes con el colector menor es la ganancia y mayor corriente debes suministrar a la base.
Si ademas le sumamos que no usas 5V sino que usas 3.3V para manejar la base, deberias disminuir mucho mas la resitencia para llegar a la corriente que queres.

Eso es la parte de la entrada... Ahora veamos la salida


* salidatrans.png
(14.97 kB, 683x305 - visto 201 veces)


La salida, por su parte tenemos el circuito de la izquierda, que es el 74HC595 alimentando con 5V a una resistencia limitadora + led + caida de tension que ofrezca el transistor.

Por simplicididad vamos a suponer que el transistor se satura, es decir que la corriente que calculamos antes ( la Ic ) es mucho mayor de lo que vamos a usar realmente, de esa forma Vce toma el menor valor posible ( Vcesat). Y por simplicidad tambien vamos a reemplazar esa caida de tension como una fuente perfecta.

Si haces la ecuacion de don Kirchoff tenes que en ese circuito:

5V - VR - VLED - VCEsat = 0V

Es decir los 5V que provee el 595 es igual a la caida de tension de todos los demas componentes en la malla. Supongamos por un momento que el LED posee un VF = 2V
VCEsat segun el datasheet es de 50mV para 1A... Y por ultimo nos queda la resistencia. Si reemplazamos que lacaida de tension de la resistencia es I * R , podemos calcular cual es la corriente que pasaria por el led.

5V - 0.05V - 2V = I * R

2.95V = I * R

Si quisiera una corriente de 20mA entonces me quedaria que necesito una resistencia de

2.95V / 20mA = 147 ohms

Si elijo de 150ohms voy a tener un poco menos , y si elijo de 120 voy a tener mas..

Resumen:

Tu gran resistencia de base esta limitando la corriente que deja pasar el transistor, cuando corotcircuitas el transistor lo unico que limita la corriente por los leds es la resistencia de cada diodo. Al tener resistencias muy bajas la corriente se dispara.

Si usamos la anterior ecuacion, es decir la de salida y pensamos que VCE = 0, y que R es 39 ohms, tenes que:

5V - 2V = I * 39 ohms

I = 76.9mA por led.

Por eso mismo estan brillando bastante.

La resistencia de los leds te van a limitar la corriente a cada led para que brille correctamente y en la misma cantidad, la resistencia de base si es grande va a hacer que no puedas suplir la corriente que esperas a todos los leds, y si la bajas va a llegar al punto que solo deberias depender de las resistencias limitadoras de los leds. Este es el punto que deberias lograr. Como calculo la resistencia de base? procedamos de forma inversa.

Supongamos que ese transistor maneja 50 leds.  Cada led le estas dando una corriente de 25mA, por lo tanto nuestro transistor por Ic deberia pasar una corriente de 25mA * 50 = 1.25A
Sabemos que para 1A en Ic segun el datasheet el hfe es de 200, por lo tanto para tener esa corriente en Ic, en Ib debo tener Ic/hfe = 1.25A / 200 = 6.25mA

Si lo manejo con 5V tendrai que tener una resistencia de base de : 5V / 6.25mA  = 800 ohms como maximo, o mas pequeña ( 720 )
Si lo manejas con 3.3V necesitas una resistencia de 3.3V / 6.25mA = 528 ohms como maximo ( 470 )

A mi parecer acá deberias hacer los siguientes cambios:

- Cambiar las resistencias limitadoras por un valor correcto, para que nunca por un solo led pueda llegar a pasar una corriente exagerada.
- Cambiar la resistencia de base del transistor por una menor para permitir que circule mas corriente. Esto lo vas a tener que tener en cuenta que esa corriente la debe suplir el MCU ( si es que esta directo y no por un 595 )

PD: Estos calculos son simplificados
PD2: El hfe del transistor puede variar de uno a otro, variar con la temperatura y no ser exactamente ese valor, por eso puede haber diferencias.
« Última modificación: 18 de Octubre de 2017, 21:38:03 por KILLERJC »

Desconectado planeta9999

  • Moderadores
  • DsPIC30
  • *****
  • Mensajes: 3452
    • Pinballsp
Re:Multiplexado con el 74HC595, consumos. Sonidos con Kinetis.
« Respuesta #4 en: 18 de Octubre de 2017, 22:41:26 »

Gracias por la información. Pero supongo que la cosa se complica, porque los leds no van a estar permanentemente encendidos, si no que se encienden en barrido con un multiplexado a dos transistores, primero un bloque controlado por un transistor y luego el otro bloque controlado por el segundo transistor, y en el diseño final es probable que el multiplexado lo haga con 4 transistores.

Entiendo que al multiplexar, se tendrá que compensar reduciendo las resistencias limitadoras, lo que no se es que cálculo aplicar, o lo haré a base de probar hasta que vea que todo enciende con una intensidad adecuada y sin un consumo elevado. Puedo ir cambiando la frecuencia del timer controlando una interrupción, para activar los transistores, hasta ajustarlo de manera que no parpadeen los led, que den suficiente luz y que no consuman en exceso.

Los dos transistores para el multiplexado, se conectan a un STM32F405 que va a 3.3 voltios.

Otra duda; ¿ porque cuando enciendo todos los diplays y leds, los leds blancos y azules no se encienden y los led rojos y amarillos lo hacen pero luciendo muy poco ?, parece que toda la corriente disponible, los 750 mA los absorben casi en su totalidad los segmentos de los displays, y apenas dejan corriente para los Led, y de esos, los azules y blancos se quedan totalmente apagados.

« Última modificación: 18 de Octubre de 2017, 22:48:01 por planeta9999 »

Desconectado KILLERJC

  • Colaborador
  • DsPIC33
  • *****
  • Mensajes: 7240
Re:Multiplexado con el 74HC595, consumos. Sonidos con Kinetis.
« Respuesta #5 en: 18 de Octubre de 2017, 23:34:22 »
Citar
Entiendo que al multiplexar, se tendrá que compensar reduciendo las resistencias limitadoras, lo que no se es que cálculo aplicar, o lo haré a base de probar hasta que vea que todo enciende con una intensidad adecuada y sin un consumo elevado

El unico que conozco es probar.

Citar
Los dos transistores para el multiplexado, se conectan a un STM32F405 que va a 3.3 voltios.

Entonces aun mas baja la resistencia para lograr la corriente de base.

Citar
y en el diseño final es probable que el multiplexado lo haga con 4 transistores.

El que lo hagas con 4, te permite poner transistores de menos corriente de colector, y que poseen mayor ganancia. Como los NZT560A que poseen una ganancia media de 400, y asi poder reducir la corriente de base.

Citar
Otra duda; ¿ porque cuando enciendo todos los diplays y leds, los leds blancos y azules no se encienden y los led rojos y amarillos lo hacen pero luciendo muy poco ?, parece que toda la corriente disponible, los 750 mA los absorben casi en su totalidad los segmentos de los displays, y apenas dejan corriente para los Led, y de esos, los azules y blancos se quedan totalmente apagados.

Los leds de distintos colores poseen tambien distinto VF

http://www.miki.96.lt/archivos/Hojas%20de%20datos%20%20de%20led/LED%20SMD.pdf

Entonces para los rojo tenemos que tiene un VF de 2V, y para los blancos/azules un VF de 3V

Eso sumado a que el VCE del transistor va a aumentar debido a que no llega a la saturacion por la baja corriente de base, es decir, el transistor va a agrandar su VCE hasta que pase por Ic una corriente dada por hfe * Ib.

Este aumento de VCE hace que la caida de tension sobre los leds sea poca, imaginate unos 2V de VCE, eso te deja 3V para la resistencia ( VR ) + led (VLED), con esos 3V tal ves los blancos y azules apenas conducen, pero los rojo/amarillos ya estan conduciendo y por ellos pasara mucha mas corriente. Por supuesto al ser menor la diferencia en los rojos/amarillos, esa resistencia queda grande y por ende no es que van a brillar todos, pero la suma de todas las corrientes deberia estar en el maximo fijado por la resistencia de base.

De esto te deja que tenes que calcular las resistencias limitadoras para ambos casos, ya que poseen distinto VF, y no van a ser iguales para todas las resistencias.
« Última modificación: 18 de Octubre de 2017, 23:38:06 por KILLERJC »

Desconectado Chaly29

  • Moderador Global
  • DsPIC33
  • *****
  • Mensajes: 4311
Re:Multiplexado con el 74HC595, consumos. Sonidos con Kinetis.
« Respuesta #6 en: 19 de Octubre de 2017, 10:37:08 »
Hola planeta9999, lo explicado por KILLERJC está excelente y creo muy fácil de entender.

Yo en tu caso usaría el mismo transistor que estás usando (soporta buena intensidad) pero le aplicaría una configuración darlington para no forzar mucho el micro. En realidad, yo usaría mosfet, pero al usar un micro de solo 3.3V complica el tema.

Con respecto a la resistencia de los led, pues si solo usarás 2 grupos de led, o sea que cada grupo estaría encendido el 50% del tiempo total, pues dejaría resistencias tales de que la corriente máxima por cada led sea de aproximadamente el máximo recomendado por el data sheet o de lo contrario, corriente levemente inferior. Esto para no reducir la vida útil de los led's.

En el caso de usar 4 grupos de refresco, o sea que cada uno estará encendido solo el 25% del tiempo, te recomendaría una corriente entre 10-15% superior a la recomendada por el datasheet. Pero lo mejor es siempre probar, muchas veces no es necesario sobrepasar la corriente máxima para conseguir un brillo adecuado.

En cualquier caso, si yo tuviera que elegir, usaría solo 2 grupos de refresco (cuanto menos mejor), y no uses una velocidad de refresco inferior a los 100 Hz, recomiendo entre 120 y 150 Hz.

Un saludo.

Atte. CARLOS.

La teoría es cuando se sabe todo y nada funciona. La práctica es cuando todo funciona y nadie sabe por qué.

Desconectado planeta9999

  • Moderadores
  • DsPIC30
  • *****
  • Mensajes: 3452
    • Pinballsp
Re:Multiplexado con el 74HC595, consumos. Sonidos con Kinetis.
« Respuesta #7 en: 19 de Octubre de 2017, 11:12:39 »
 
Gracias Chaly y Killer.
Lo iré probando, cambiando la frecuencia del timer hasta que vea que no parpadea nada y que luce con una intensidad adecuada.

En el diseño final para el cliente, todos los led serán iguales, seguramente blancos, ya probaré con varios valores de resistencias limitadoras, combinando con la velocidad de refresco hasta que quede bien.

Esta placa es solo un prototipo de la ruleta en miniatura para poder hacer toda la programación. El diseño final son varias placas más grandes conectadas entre si con cables planos, los pulsadores son grandes, retroiluminados y van fijados en el frontal de la máquina, los displays también son bastante más grandes y los led los quiere pasantes, seguramente de 5mm.
« Última modificación: 19 de Octubre de 2017, 11:16:29 por planeta9999 »