Brianonymous
New Member
Greetings! So glad I found this place..
I am currently trying my first huge scale electronics project.. Ive been dabbling in electronics for a very long time, but only on a very light hobby level... All self/google taught.. That of course doesnt bode well for my confidence that my designs are correct!..
My first project that I am attempting is a weather station.. Being a computer programmer by trade - I feel really comfortable with digital logic arragements - at least far more comfortable than anything on the analog side.
Currently I am working on an LED driver board for the primary displays.. So far I calculated I will be using close to 15 individual 7-seg LED's for the display, as well as a number of individual LEDs. (Heathkit Weather 4001 style display).. Knowing that, I have designed this board to handle up to 144 individual LEDs in a multiplexed fasion.
So far here is what I got:
**broken link removed**
The heart of the system is the PIC16F84A.. It controls 2 4017 decade counters that open up the Darlington Arrays (2003A) for the LEDs ground path. Inbetween cycles, the PIC loads up a shift register with the various bitpatterns for the anodes of the LEDs. Its basically like memory mapped video, per se, and this part seems to work really well.
Now, one of the problems I faced right off the bat was, it became very apparent that I needed a blanking interval while I was loading the shift register. This became a suprisingly complicated problem (for me) with the IC's I have selected. At first, what I was doing was before I loaded the next digit was just shifting in 8 bits of 0, latching the digit, and then advancing the bank clock. This would probably be functional - but seemed very inefficient.. Then I though about using what amounts to an AND gate, with a single pin of the PIC, and the outputs of the shift register. That way, to establish a blanking interval, I just have to lower the PIC pin on one side of the gate, load my digit, and raise it again. Another obvious benefit of this, is it allows me to do PWM control on a per segment level. Generally useless - but neat - especially if I want to use the board in other projects. This whole setup appears to work fine while being emulated... Hope the same is true when I move to prototyping!
That said, I have a few questions...
1- I feel like my component count is very high for controlling a mere 144 LEDs. This may be irrelevant, but I always want to live by the KISS philosophy. Is my design overly complex and are there any obvious reductions that I have missed?
2- Do you think there is any other method to introduce a PWM/Blanking interval besides a handful of 9 transistors?
3- Analog is my weak spot - Do I have my AND gates setup properly to deliver enough current? The way the system is multiplexed, it lights up up to 8 LEDs per cycle.. At ~20ma per segment, that could be up to 160ma's..
I know how to get the voltage I want in a divider case, but I am a bit confused on the current side of things.
4- Is there anything there that catches you off guard? Last thing I want is to build something thats going to smoke itself in a week.
Any help is greatly appreciated, and I hope to be a long time member of this forum! Thanks all!
I am currently trying my first huge scale electronics project.. Ive been dabbling in electronics for a very long time, but only on a very light hobby level... All self/google taught.. That of course doesnt bode well for my confidence that my designs are correct!..
My first project that I am attempting is a weather station.. Being a computer programmer by trade - I feel really comfortable with digital logic arragements - at least far more comfortable than anything on the analog side.
Currently I am working on an LED driver board for the primary displays.. So far I calculated I will be using close to 15 individual 7-seg LED's for the display, as well as a number of individual LEDs. (Heathkit Weather 4001 style display).. Knowing that, I have designed this board to handle up to 144 individual LEDs in a multiplexed fasion.
So far here is what I got:
**broken link removed**
The heart of the system is the PIC16F84A.. It controls 2 4017 decade counters that open up the Darlington Arrays (2003A) for the LEDs ground path. Inbetween cycles, the PIC loads up a shift register with the various bitpatterns for the anodes of the LEDs. Its basically like memory mapped video, per se, and this part seems to work really well.
Now, one of the problems I faced right off the bat was, it became very apparent that I needed a blanking interval while I was loading the shift register. This became a suprisingly complicated problem (for me) with the IC's I have selected. At first, what I was doing was before I loaded the next digit was just shifting in 8 bits of 0, latching the digit, and then advancing the bank clock. This would probably be functional - but seemed very inefficient.. Then I though about using what amounts to an AND gate, with a single pin of the PIC, and the outputs of the shift register. That way, to establish a blanking interval, I just have to lower the PIC pin on one side of the gate, load my digit, and raise it again. Another obvious benefit of this, is it allows me to do PWM control on a per segment level. Generally useless - but neat - especially if I want to use the board in other projects. This whole setup appears to work fine while being emulated... Hope the same is true when I move to prototyping!
That said, I have a few questions...
1- I feel like my component count is very high for controlling a mere 144 LEDs. This may be irrelevant, but I always want to live by the KISS philosophy. Is my design overly complex and are there any obvious reductions that I have missed?
2- Do you think there is any other method to introduce a PWM/Blanking interval besides a handful of 9 transistors?
3- Analog is my weak spot - Do I have my AND gates setup properly to deliver enough current? The way the system is multiplexed, it lights up up to 8 LEDs per cycle.. At ~20ma per segment, that could be up to 160ma's..
I know how to get the voltage I want in a divider case, but I am a bit confused on the current side of things.
4- Is there anything there that catches you off guard? Last thing I want is to build something thats going to smoke itself in a week.
Any help is greatly appreciated, and I hope to be a long time member of this forum! Thanks all!