display 7 segmentos 4 digitos.

Hola amigos, tengo una duda, el tipo de display que estoy utilizando es cátodo común 7 segmentos 4 dígitos,por lo tanto utilizo cuatro transistores npn 2n2222a para encender y apagar los dígitos, utilizo una resistencia de 220ohm para cada dígito para limitar la corriente que le llega, mi problema es el siguiente, al cambiar el valor de la resistencia( la de 220 ohm) a una de 30 ohm para que se distingan mejor los números se comienza a a distorsionarse, el numero de al lado se mira empalmado con el primero por decirlo así pero con menos intensidad o mas tenue,el error sera el tiempo de conmutación entre cada dígito? gracias! dejo mi codigo abajo…

sketch_feb12a.ino (2.49 KB)

Con que alimentas? Espero que no sea con el Arduino.
Ese cambio de Resistencia aumentó la corriente de los segmentos mas de 7 veces.

1 Like

jaja al principio si lo había hecho con el arduino nano, pero cambie por una fuente de 5v 1A pero sigue haciendo lo mismo :S

Supongamos este esquema

Lo alimentas con 5V 1A. Supongamos un Vce de 0.2V y un Vled de cada segmento de 1.5 a 1.8V redondeo en 2V entre Vce y Vled

(5-1.8-0.2)/220 = 13mA x segmento
ahora con 30 ohms da -> 100mA x segmento
quien entrega 100mA Arduino? Imposible, no puede entregar mas de 40mA x pin y ademas 7x40=280mA que ademas supera los 200mA máximo que deben entregar las salidas del Arduino.
Por ende... debes rediseñar tu circuito y poner drivers sea con algun integrado como ULN2003 a 2008 o bien transistores.

entonces usted cree que por el mal diseño del circuito, sea la causa de que se empalmen los números?, también se le puede añadir un diodo a la base de cada transistor para asegurar que este en corte...
que opina del programa? y muchas gracias por contestar

no se lo que es empalmar. No entiendo tu modismo.
Porque no usas una librería como SevSeg?
Te simplifica la vida. Funciona perfecta. La configuras para ánodo o cátodo común. Ajustas el multiplexado.
Te permite acá si regular el brillo por la frecuencia de multiplexado.

excelente muchas gracias! :slight_smile: la libreria esta muy bieeen

Te lo dije.. te simplifica mucho la tarea y te deja para que hagas lo que deseas hacer ya que usa el timer y poca carga para la CPU.

disculpa, tengo otra duda.. viendo algunos de tus comentarios en algunos post que vi sobre el sensor DS18B20 de temperatura que utiliza el protocolo de comunicación oneWire, mencionaste que el programa(de la persona que publico su problema) no funcionaba bien porque la libreria de texas instrument utilizaba "delay", y que una de la soluciones era cambiar todos esos delay basándose en el ejemplo de referencia de arduino llamado blink without delay. mi pregunta es, como harías eso? te lo pregunto porque ya vi el codigo de la libreria y no comprendi mucho como funcionaba se me hizo complicado hacer tu sugerencia.

nota: tambien estoy trabajando en otro proyecto para controlar la temperatura empleando un PID, utilizando como sensor el que te acabo de mencionar, para enfriar un ventilador(lo mas comun que he visto que usan para enfriar), y para calentar posiblemente sea una resistencia.

El problema es que la respuesta del DS18B20 no es rápida, demora unos varios mseg por no decir decenas de mseg pero será cuestión de probar su funcionamiento en un lazo PID.

Para responderte sobre millis() debemos ver el código.

este es el codigo de la libreria para utilizar el sensor que te mencione antes

DallasTemperature.cpp (21.1 KB)