Go Down

Topic: 4 Digit 7 Segment Serial LED Module - TM74HC595 (Read 39513 times) previous topic - next topic

aisc

Answers:
1. Normally you have resistors in series with an LED. But in this application, the LED is not on all the time. An LED can exceed its rated maximum continuous current for short periods of time, if the average current is the same. This is how they can get away without resistors. Indeed, you should avoid any code that leaves a segment on continuously.
Noted.

Quote
2. Yes. Usually each digit has a high current driver such as a transistor. But this board doesn't have any. So one digit driver has to share the current for 8 LEDs and they will dim. That is, if the segments are enabled simultaneously. The solution is to modify the software so that only one segment in the entire display is on at any given time.
Ok I understand that by lighting individual segments, the brightness will be consistent - but of course the voltage through the lit segment will be higher.
I am wondering if the lighting of a whole digit is deliberate to ensure the voltage through each segment is lower.

Next time I will buy a different module, or roll my own.

Quote
3. That one is no fun. :) I don't have any ideas other than sluggo coding.
I guess I will give this a miss for now.

@aisc, how warm do they get?
When I noticed the lack of resistors, I deliberately ran the unit at 3.3V and it does not get hot at all.
I have not tried at 5V.

Thanks for the help.

aarg

I'm using TM1638 based modules. They're sweet.
  ... with a transistor and a large sum of money to spend ...
Please don't PM me with technical questions. Post them in the forum.

aarg

#17
Apr 19, 2015, 10:32 am Last Edit: Apr 19, 2015, 11:02 am by aarg
I am wondering if the lighting of a whole digit is deliberate to ensure the voltage through each segment is lower.
Not likely, since they include the character "-" which only has one segment. I thought that he best driver algorithm would be the reverse of what is normal - instead of cycling through the digits and selecting the segments, you should cycle through the segments, and select (turn on or off) the digits. But I realized that isn't possible either. So you have to cycle through all 8*4=32 segments if you want equal intensity. Each segment should get a 1/32 duty cycle. So it may not be very bright.
  ... with a transistor and a large sum of money to spend ...
Please don't PM me with technical questions. Post them in the forum.

Grumpy_Mike

Answers:
1. Normally you have resistors in series with an LED. But in this application, the LED is not on all the time. An LED can exceed its rated maximum continuous current for short periods of time, if the average current is the same. This is how they can get away without resistors. Indeed, you should avoid any code that leaves a segment on continuously.
Absolute and utter bilge. You ought to be made to hand in your soldering iron, that is if they allow hot objects like that where you are.

Quote
can exceed its rated maximum continuous current for short periods of time, if the average current is the same.
So on for an hour and off for 48 hours then? - Grow up. How do you define continuous anyway?

There are thermal considerations but that is not the only effect. Depletion of charge carriers in the semiconductor material will also happen which will degrade the semiconductors and lead to a shorter life.

The only reason why people "get away" with this sort of thing is that they don't know how to test for the damage that this sort of thing actually does.

Do you take this attitude to driving? Have you driven hundreds of times over the speed limit and not got caught? So that's alright then. So either grow up or go somewhere else to peddle your clap trap.


PaulMurrayCbr

I will wrap my head around a loop another day
Something like this:

Code: [Select]

for(int i = 0; i<4; i++) {
  LED[i] = x % 10;
  x /= 10;
}


If this loads the digits into the array in the reverse order of how you actually want it, then the loop should be:
Code: [Select]

for(int i = 3; i>=0; i--) {
  LED[i] = x % 10;
  x /= 10;
}
http://paulmurraycbr.github.io/ArduinoTheOOWay.html

aarg

Absolute and utter bilge. You ought to be made to hand in your soldering iron, that is if they allow hot objects like that where you are.
So on for an hour and off for 48 hours then? - Grow up. How do you define continuous anyway?

There are thermal considerations but that is not the only effect. Depletion of charge carriers in the semiconductor material will also happen which will degrade the semiconductors and lead to a shorter life.

The only reason why people "get away" with this sort of thing is that they don't know how to test for the damage that this sort of thing actually does.

Do you take this attitude to driving? Have you driven hundreds of times over the speed limit and not got caught? So that's alright then. So either grow up or go somewhere else to peddle your clap trap.
M, I think all the objects are hot where you are headed. :)
But seriously, there is a difference between the continuous current and peak current specification for a LED. It's not how I define continuous, it's how the manufacturer defines it. So ask them, not me. For example, this IR LED boasts a continuous maximum current of 50mA, but the peak maximum is 1.0A at 100us, 1% duty cycle:

http://roithner-laser.com/datasheets/led_div/IR333C.pdf
  ... with a transistor and a large sum of money to spend ...
Please don't PM me with technical questions. Post them in the forum.

AWOL

Normally I don't comment on posts reported to the moderators, but Grumpy Mike's post above was reported, describing Mike with a very unflattering term.
In this case, I'm going to defend Mike.
People who post stuff like "the average current is the same, so in the end it's all cool" don't have to deal with the posts from noobs who have broken their AVRs because someone wrote they didn't need buffering.

Grumpy_Mike

Quote
So ask them, not me.
They are not the ones giving rubbish advice.

Quote
For example, this IR LED boasts a continuous maximum current of 50mA, but the peak maximum is 1.0A at 100us, 1% duty cycle:
Grate so you can use that LED in that way. You can not extrapolate that data to any other LED and it says nothing of over driving the Arduino Pin.

aarg

#23
Apr 19, 2015, 02:13 pm Last Edit: Apr 19, 2015, 03:20 pm by aarg
They are not the ones giving rubbish advice.
Grate so you can use that LED in that way. You can not extrapolate that data to any other LED and it says nothing of over driving the Arduino Pin.
You are taking my advice out of context. There are no Arduino pins connected to the LEDs of this display. Nor am I making any recommendations on any new design. We are discussing a particular display module. Download the schematic and see for yourself. In general, I would never recommend operating any electronic device beyond its specified limits.

However, in some cases the specified limits are not available, and it is reasonable to use the limits of similar devices where there is are precedent generalities (or industry practices, if you like). We don't look up the specs of every 1/4W resistor we pick up to use. Especially if there is no particular reason to believe that lives are at stake.

I can indeed extrapolate that data to other LEDs. At least, to the extent that they exhibit the same phenomenon. I don't believe that peak current limits would necessarily be specified for LEDs that are not intended to be used for pulsed applications. Hence the pulse limits may not be known. But for many LEDS, they are. Hence, I seriously doubt that there can be such a qualitative difference between such devices that are all based on the same basic technology (excluding different formulations and so on), that they do not all exhibit it in some degree. Have a look at this:

http://www.avagotech.com/docs/5966-3087E

In this document, an extended warranty is granted for currents about twice the continous maximum, provided duty cycle conditions are met. Tomorrow, I will look at some display modules specs, because they are intended for pulse applications. It will be interesting to see.

@aisc, do you have the ability to measure the module supply current with one segment turned on? With a DMM? Actually, you can do it without modifying the code by loading 16,16,16,16 into the array. Then one segment is always on even though the digits are switching - the "-" symbol.
  ... with a transistor and a large sum of money to spend ...
Please don't PM me with technical questions. Post them in the forum.

Riva

Normally I don't comment on posts reported to the moderators, but Grumpy Mike's post above was reported, describing Mike with a very unflattering term.
In this case, I'm going to defend Mike.
People who post stuff like "the average current is the same, so in the end it's all cool" don't have to deal with the posts from noobs who have broken their AVRs because someone wrote they didn't need buffering.
I don't disagree with what GM says but I do disagree with the the way it is said and the insults levelled in his post.
There is absolutely no need for the below comments
Quote
You ought to be made to hand in your soldering iron, that is if they allow hot objects like that where you are.

So on for an hour and off for 48 hours then? - Grow up.

So either grow up or go somewhere else to peddle your clap trap.
Don't PM me for help as I will ignore it.

aisc

#25
Apr 19, 2015, 06:57 pm Last Edit: Apr 19, 2015, 06:57 pm by aisc
@aisc, do you have the ability to measure the module supply current with one segment turned on? With a DMM? Actually, you can do it without modifying the code by loading 16,16,16,16 into the array. Then one segment is always on even though the digits are switching - the "-" symbol.
I loaded 16,16,16,16 into the array and the display shows "- - - -".

Measuring setup.
-------------------
Uno powered from 12V wallwart.
LED Module powered from 3.3V & GND from Uno.
DMM connected in series with LED module : Uno 3.3V --> DMM+; DMM- --> LED VCC; LED GND --> Uno GND.
DMM setting = 2000 uA (with 1 uA resolution).
DMM reading = - 001 (I imagine that is 1uA).

Not sure why I get the negative sign, but the reading is largely steady on 1 and occasionally jumps to 2 for just a brief moment.

aarg

#26
Apr 20, 2015, 12:31 am Last Edit: Apr 20, 2015, 01:11 am by aarg
1uA is definitely wrong. Was the display module illuminated? Some multimeters require that you plug the probe into a different jack for current readings.

I did some test measurements this morning, and did some more research. I am fully able to justify my belief that this module is operating within safe parameters based on specifications and sound engineering principles, but I'm not willing to get dragged into a debate about it at this time. However I would like some confirmation of the peak current to be 100% sure. The design is not a good one, not mainly because it pushes the hardware to near its limits, but for the alternate reason of the segment dimming phenomenon that is due to lack of digit drivers. From a design point of view, adding those drivers would decrease the driving resistance and thus segment resistors would become more important. The real cost of four SMT transistors and 12 resistors is miniscule, a few pennies. So it's kind of stupid that they didn't use them.

It does seem a lot of trouble to use, considering that the cost of modules based on chips like the TM1638 and others, is little more than the 74HCxxx drive ones such as yours. Although they also use a clocked serial interface, they have the strong advantage of managing all the scanning and LED drive on chip. Thus the Arduino doesn't have to continually update the display if it's not changing. As a bonus, the TM1638 can read switches (mine has 8 pushbuttons). It even has commands to change the brightness. Since the chip has proper scanning and drivers, the brightness is excellent.

Bottom line is, to make your module's display really look good you have to change the software. I am willing to help with that if you like, but I doubt that it's worth it. The idea would be to illuminate one segment at a time as I outlined in a previous post.
  ... with a transistor and a large sum of money to spend ...
Please don't PM me with technical questions. Post them in the forum.

aisc

#27
Apr 20, 2015, 04:54 am Last Edit: Apr 20, 2015, 05:12 am by aisc
1uA is definitely wrong. Was the display module illuminated? Some multimeters require that you plug the probe into a different jack for current readings.
Yes the modules was illuminted - See pics.
Here is a link to my UNI-T 30C multimeter.
Red lead was plugged into middle socket and connected to Uno 3.3V.
Black lead was plugged into COM and connected to the LED Module VCC.
Setting used was 2000 uA and reading was "- 001".

The 1uA would be for 4 segments.
Why do u think the reading is wrong?
What do believe the reading should be?
I would hate to think it is my meter - I only bought it 2 weeks ago.

Edited:
--------
As an afterthought, I also measured 2 segments lit i.e. "1 1 1 1" and 7 segments lit "8 8 8 8".
In both cases I still get a reading of "- 001".
Wondering if that means my meter is not granular enough.

Quote
I did some test measurements this morning, and did some more research. I am fully able to justify my belief that this module is operating within safe parameters based on specifications and sound engineering principles, but I'm not willing to get dragged into a debate about it at this time. However I would like some confirmation of the peak current to be 100% sure. The design is not a good one, not mainly because it pushes the hardware to near its limits, but for the alternate reason of the segment dimming phenomenon that is due to lack of digit drivers. From a design point of view, adding those drivers would decrease the driving resistance and thus segment resistors would become more important. The real cost of four SMT transistors and 12 resistors is miniscule, a few pennies. So it's kind of stupid that they didn't use them.
Well it would seem according to my meter that the peak current would be 2 uA for four segments.
Although the reading mainly sits on one, it regularly flashes up to 2 briefly.

Quote
It does seem a lot of trouble to use, considering that the cost of modules based on chips like the TM1638 and others, is little more than the 74HCxxx drive ones such as yours. Although they also use a clocked serial interface, they have the strong advantage of managing all the scanning and LED drive on chip. Thus the Arduino doesn't have to continually update the display if it's not changing. As a bonus, the TM1638 can read switches (mine has 8 pushbuttons). It even has commands to change the brightness. Since the chip has proper scanning and drivers, the brightness is excellent.
I bought this module not knowing any better. I initially bought some 7 segment displays, but to my horror discovered they needed a lot of pins to drive. I was about to add level shifting to the displays, when I discovered there were some premade ones. So I ordered one to save myself the hassle of making one. But alas, I paid no mind to any technical issues - lesson learned.
Can u please provide a link to the ones u are using.

Quote
Bottom line is, to make your module's display really look good you have to change the software. I am willing to help with that if you like, but I doubt that it's worth it. The idea would be to illuminate one segment at a time as I outlined in a previous post.
This module was bought for the sole purpose of having the convenience of visualising the distances sensed by a sonar sensor during testing - so I don't really care about the brightness.

Bottomline:
-------------
I try to avoid controversy so would normally not comment, but since I feel a certain level of responsibility for raising the initial questions....

This post started out as a programming question. Aarg helped me resolve a programming issue for which I am grateful and thank him.
I threw in a few other questions and he was kind enough to respond to those as well.
Some may believe he did not give good advice, but the bottom line is I have to take responsibility for buying the unit and if it burns out ce la vie. The data sheet does not show the need for any resistors, so if blame needs to be laid, it should be at the feet of the manufacturer.

I am certainly interested to learn more about the technical aspects/limitations of the unit, but would rather it be discussed objectively and not at the expense of the reputation of someone trying to be helpful - after all we are only talking about a $1 piece of equipment.

That being said, I DO appreciate all the input, including constructive criticism, and thank everyone for their contribution.


aarg

Short answer before I go to lunch - the module current should be at least a few mA... LEDs just don't light up on a few uA. But i am hungry. When I get back, I'll look at the photos. It's possible that the display strobing is creating too much AC and it's confusing the meter. Just a guess.
  ... with a transistor and a large sum of money to spend ...
Please don't PM me with technical questions. Post them in the forum.

aisc

#29
Apr 20, 2015, 06:53 am Last Edit: Apr 20, 2015, 07:15 am by aisc
Quick update...
Since you mentioned you are expecting in the mA range, I upped the meter range setting but at 3.3V I get a zero reading.

However, on a 200 mA setting and running the module at 5V, I get 31.8 mA for 7 segments lit i.e. "8 8 8 8".

So it seems my meter has issues at 3.3V.

I will reload and measure "- - - -" at 5V.

Update :
---------
With 1 segment lit i.e. "- - - -" and running at 5V, I get 27.7 to 27.8 mA.

Go Up