4 Digits CA Display

Hello Friends,

This my first post on this forum,hoping to have knowledge from Expert people!

4 Digits CA Display.
Successfully tested on small 4 digit CA Display.When tried to use 12V, 4 Inch high Display facing challenges.

As 2 Nos. 74HC595 used with small Segments which is not possible to directly used with 4 inch due to HIGH Current (Each segment @20mA).

As far as Hardware concern to switch Digit supply HIGH SIDE switching NPN and PNP transistor Combination with 4K7 resistor is used.
As Output of 595 is not capable to drive 12V hence tried with ULN2803.

ULN invert Signals hence code does not work properly showing jumble digits.Moreover had to declare COMMON_CATHODE (though we have Common Anode)
Cpuld someone please tell me what I might be doing wrong because it is not working correctly.

Please suggest What all changes to be done in codes and hardware when we use Huge display.

Following code is used with Small 4 Digits 7 Segment working smoothly.

/*
// https://github.com/MiguelPynto/ShiftDisplay/blob/master/examples/Weather/Weather.ino
ShiftDisplay example by MiguelPynto
Simulate a weather station, showing info such as temperature and condition
https://miguelpynto.github.io/ShiftDisplay/
*/

#include <ShiftDisplay.h>

const int LATCH_PIN = 6;
const int CLOCK_PIN = 7;
const int DATA_PIN = 5;
const DisplayType DISPLAY_TYPE = COMMON_ANODE; 
const int DISPLAY_SIZE = 4; 

ShiftDisplay display(LATCH_PIN, CLOCK_PIN, DATA_PIN, DISPLAY_TYPE, DISPLAY_SIZE);

float getTemperature() {
	delay(1000); // simulate processing
	return 21.36;
}

String getCondition() {
	delay(1000); // simulate processing
	return "Sunny";
}

void setup() {
}

void loop() {
	float temp = getTemperature();
	String condition = getCondition();
	condition = "        " + condition; // prefix with spaces

	// for 4 seconds, show temperature with one decimal, aligned to center of display
	display.set(temp, 1, ALIGN_CENTER);
	display.show(4000);

	// show condition with marquee effect
	while (condition.length() > 0) {
		display.set(condition, ALIGN_LEFT);
		display.show(500);
		condition.remove(0,1);
	}
}

Are you sure you have CA display's (positive side is connected together)? They must connect (with resistor in each line) to ground to work. There is the ULN2003 or ULN2803 perfect for. Link to display's or display datasheet.

For CC display, they must drive from 12V to your display with a resistor in each line. In that case you can use the MIC2981, high side driver pin compatible with UDN2981.

Why not program the outputs yourself? Inverting the output is then in no time made. Isn't there a setting in the library to invert? Using an inverter IC is another possibility.

1 Like

Thanks for promt response.
surely,its CA display.
Tried to change code in .cpp file but not succeed,am not expert in code. I think thats why .cpp code didnt suppoert after chages


With Small 7 Segment 2 Nos.595 worked efficiently.

For 4 Inch display additional 2 ULN 2003 are used with 2 Nos 595 ie every signal is inverted.

You could also do something like this. The TPIC6B595 is very tolerant (low side only) :

@rezox
You may follow the scheme of Fig-1 to drive high power CA 7-segmnet multiplex display unit using ULN2803 buffers. Because of two inverters, the topology is compatible with SevSeg.h Library.


Figure-1:

1 Like

Thanks ,Could you Please help me with code for TPIC6B595.

With four separate LEDs of that size, it might be easier to just use four TPIC6B565s and not multiplex the display.

1 Like

Thanks but SevSeg.h consume may IO Pins.I already tried with SevSeg.h working smoothly issue is IO Pins.ShitDisplay uses only 3 IO Pins

Yes. You will definitely get help here. Decide the complete solution first. Since the displays are individual, a non-multiplexing solution with 4 X TPIC6B595 chips (as already suggested) will give brighter results and easier to code. 4 shift registers in a chain consume a total of 3 Arduino pins.

1 Like

What's about using MAX7219 and ULN2803 buffers?

Thank You for kind support,its university project to display 4 Digit on CA display.Good idea to go with non-multiplexing solution with 4 X TPIC6B595 chips.

Thanks but MAX7219 is not allwed by university

The University allows Arduino and SevSeg.h Library but not the MAX7219 -- very surprising?

No...............Componts which I am supposed to complete given project, Max7219 is not clubed...because MAX7219 task is given to another group of students

When I used small 7 Segment CA, code was working perfectly.(without using ULN2803).

For Huge Segment high current issue ULN2803 are used means Digit Supply and Cathode Pins Supply inverted.
So can I replace my Segment with Common Cathode Segment instead of CA.
Please suggest.

Something you can try, tell the library that you have a common cathode display, that might invert all the signals from the shift registers and allow you to use the ULN2803 without any other modifications.

1 Like

This works fine for my own 4" (6 digit clock)

Resistor value you must see.

1 Like

If you want to go with a 4 x TPIC6B595 solution, it could look like this. The shift registers are daisy chained.

EDIT
Removed unnecessary high side components as pointed out by @david_2018

1 Like