Scematic and code review please?

PaulRB

Senior Member
All,

Would appreciate your constructive criticism on the schematic for my clock project:
Clock_schem.jpg
IMAG0613.jpg

And also the code. (Not quite complete yet: still to replace SOUND commands with solenoid/chime sequencing subroutine)

Code:
; Clock
; P. Beard 2/5/2012

#picaxe 20m2
#terminal 4800

; Picaxe Pin symbols
symbol	SPKR = C.7
symbol	LDR = B.6
symbol	IR = C.5
symbol	DOORBELL = PINC.6
symbol	CHIME0 = C.0
symbol	CHIME1 = C.1
symbol	CHIME2 = C.2
symbol	CHIME3 = C.3
symbol	CHIME4 = C.4
symbol	PENDpins = pinsB
symbol	PENDdirs = dirsB


; Display symbols (SAA1064 Display Driver)
symbol	DISPLAY = $70 ; I2C slave address
symbol	DISPLAYSETTINGS = %00000111 ; Dynamic; all digits enabled; test mode off
symbol	BRIGHTSETTINGS = %01110000 ; bits controlling display brightness

; RTC symbols (Jungletronics DS1338 based module)
symbol RTC = $D0 ; I2C slave address

; Data to translate numbers 0..9 into decimal digits on 7 seg display
symbol	SEGDATA = 0
data      	SEGDATA, (%01011111, %00000101, %10011011, %10001111, %11000101, %11001110, %11011110, %00000111, %11011111, %11001111)

; Data for Charlieplexing the Pendulum display
symbol	PENDDATAdirs = 10
data		PENDDATAdirs, (%11000, %10100, %10010, %10001, %11000, %01100, %01010, %01001, %10100, %01100, %00110, %00101, %10010, %01010, %00110, %00011, %10001, %01001, %00101, %00011)
symbol	PENDDATApins = 30
data		PENDDATApins, (%10000, %10000, %10000, %10000, %01000, %01000, %01000, %01000, %00100, %00100, %00100, %00100, %00010, %00010, %00010, %00010, %00001, %00001, %00001, %00001)

; irin command symbols
symbol SETTIME = 10 ; ">10" button on remote
symbol TICKONOFF = 17 ; Vol - button on remote
symbol NOCOMMAND = 255

; Program variables
symbol	RTCsecs = b6
symbol	RTCmins = b5
symbol	RTChours = b4
symbol	DISPHoursTens = b8
symbol	DISPHoursUnits = b9
symbol	DISPMinsTens = b10
symbol	DISPMinsUnits = b11
symbol	TickOn = bit16
symbol	ColonOn = bit17
symbol	InputValue = b20
symbol	MaxInputValue = b21
symbol	InputValuePosition = b22
symbol	CHIMEPULSE = 2000
symbol	PENDpos = b12
symbol	PENDdir = bit18

main:

	setfreq m4

	; Set time on RTC 
	'HI2CSETUP I2CMASTER, RTC, i2cslow, i2cbyte
	;HI2COUT 0, (<secs>, <mins>, <hours>, <dow>, <day>, <month>, <year>, <control bits>)
	'HI2COUT 0, ($00, $50, $12, $07, $09, $06, $12, $14)
	TickOn = 1

	do
		gosub GetTime
		gosub UpdateDisplay
		gosub Chime
		
		gosub Tick
		for PENDpos = 1 to 19
			gosub Pendulum
		next

		gosub Tick
		for PENDpos = 18 to 0 step -1
			gosub Pendulum
		next
		
	loop
	
GetTime:
	
	; Read current time from RTC
	HI2CSETUP I2CMASTER, RTC, i2cslow, i2cbyte
	HI2CIN 0, (RTCsecs, RTCmins, RTChours)
	return	

UpdateDisplay:

	; Write time to display, converting from BCD to decimal digits
	DISPHoursTens = RTChours / $10 + SEGDATA
	read DISPHoursTens, DISPHoursTens
	DISPHoursUnits = RTChours & $0F + SEGDATA
	read DISPHoursUnits, DISPHoursUnits
	; Flash colon (actually just decimal point on this display)
	ColonOn = not ColonOn
	DISPHoursUnits = 32 * ColonOn | DISPHoursUnits
	DISPMinsTens = RTCmins / $10 + SEGDATA
	read DISPMinsTens, DISPMinsTens
	DISPMinsUnits = RTCmins & $0F + SEGDATA
	read DISPMinsUnits, DISPMinsUnits
	; Dim display depending on light level
	readadc LDR, b0
	b0 = b0 / 2 + 16 & BRIGHTSETTINGS | DISPLAYSETTINGS
	HI2CSETUP I2CMASTER, DISPLAY, i2cslow, i2cbyte
	HI2COUT 0, (b0, DISPMinsUnits, DISPMinsTens, DISPHoursUnits, DISPHoursTens)
	return

Tick:

	; Make "tick" sound, if enabled,  between 7am and 11pm
	if TickOn = 1 and RTChours >= $07 and RTChours <= $22 then : pulsout SPKR,  10 : end if
	return
	
Chime:
	
	; Chime only between 7am and 11pm
	if RTChours >= $07 and RTChours <= $22 then
		if RTCsecs = $00 and RTCmins = $00 then
			; Worst version ever of "Westminster Chimes"
			sound SPKR, (120, 100, 115, 100, 110, 100)
			; "Bong" the hours (convert hours from BCD into 12 hour time: we don't want 22 bongs at 10pm!
			b0 = RTChours & 15
			b0 = RTChours / 16 * 10 + b0
			if b0 > 12 then : b0 = b0 - 12 endif
			For b1 = 1 to b0 
				sound SPKR, (0, 100, 80, 100)
			Next
		else if RTCsecs = $00 and RTCmins = $15 then
			; Chime at quarter past
			sound SPKR, (110, 100, 115, 100, 120, 100)
		else if RTCsecs = $00 and RTCmins = $30 then
			; Chime at half past
			sound SPKR, (120, 100, 110, 100, 115, 100)
		else if RTCsecs = $00 and RTCmins = $45 then
			; Chime at quarter to
			sound SPKR, (100, 100, 120, 100, 115, 100)
		endif			
	endif
	return


Pendulum:

	; Charlieplex the pendulum LEDs
	b0 = PENDpos + PENDDATAdirs
	read b0, b0
	b1 = PENDpos + PENDDATApins
	read b1, b1
	PENDpins = 0
	PENDdirs = b0
	PENDpins = b1

	; Check for IR commands & doorbell push
	b0 = NOCOMMAND
	irin [20], IR, b0
	if b0 <> NOCOMMAND then gosub ProcessIRCommand
	if DOORBELL = 0 then gosub RingDoorbell

	return

	
RingDoorbell:

	pulsout  CHIME0, CHIMEPULSE
	pause 200
	pulsout  CHIME1, CHIMEPULSE
	pause 200
	pulsout  CHIME2, CHIMEPULSE
	pause 200
	pulsout  CHIME3, CHIMEPULSE
	pause 200
	pulsout  CHIME4, CHIMEPULSE
	'sound SPKR, (90, 100, 120, 50, 110, 50, 100, 50)
	return


ProcessIRCommand:

	sound SPKR, (125, 2)
	pause 250
			
	if b0 = TICKONOFF then

		TickOn = not TickOn

	else if b0 = SETTIME then
				
		; Allow user to enter time
		HI2COUT 1, (8, 8, 8, 8) ; clear display
		; read tens of hours
		MaxInputValue = 2
		InputValuePosition = 4
		gosub GetInputValue
		RTChours = InputValue * $10
		; read units of hours
		if InputValue = 2 then : MaxInputValue = 3 : else : MaxInputValue = 9 : endif
		gosub GetInputValue
		RTChours = RTChours | InputValue
		; read tens of mins
		MaxInputValue = 5
		gosub GetInputValue
		RTCmins = InputValue * $10
		; read units of mins
		MaxInputValue = 9
		gosub GetInputValue
		RTCmins = RTCmins | InputValue
				
		; Set time on RTC and zero the seconds
		HI2CSETUP I2CMASTER, RTC, i2cslow, i2cbyte
		HI2COUT 0, (0, RTCMins, RTCHours)
		sound SPKR, (110, 2, 0, 2, 120, 2)

	endif

	return

GetInputValue:

	do
		; read a value from IR remote
		irin IR, InputValue
		if InputValue >= 0 and InputValue <= 9 then
			InputValue = InputValue + 1 % 10
			if InputValue <= MaxInputValue then
				; digit OK
				sound SPKR, (125, 2)
				exit
			else
				; digit not allowed
				sound SPKR, (75, 2)
			end if
		else
			; not a digit
			sound SPKR, (75, 2)
		end if
	loop
	
	; Update display with input value
	b0 = InputValue + SEGDATA
	read b0, b0
	HI2COUT InputValuePosition, (b0)
	dec InputValuePosition
	pause 250

	return

end
Thanks!

Paul
 

AllyCat

Senior Member
Hi Paul,

Well, since yoiu asked. ;) The PICaxe download socket is not shown wired in the normal Rev Ed configuration (I've never understood why their outer sleeve is NOT earth).

It could be argued that the 47 ohm resistors for the top LEDs are too low. They are indeed blue LEDs so their forward drop may be 3 volts or more, but they might still exceed the PICaxe 20/25 mA output pin rating. In practice the current probably is less than that, due to the (undefined minimum?) output saturation voltages of the chip.

But yes, a beatiful diagram (I haven't checked the code).

Cheers, Alan.
 

MPep

Senior Member
Presumably something to do with reducing the chance of shorting the PICAXE serout pin to ground ?
Most likely, the only around that is to insert a series resistor (180R ..... sound familiar??) in the SEROUT lead, before the connector. Of course, this creates problems for manufacturing, extra costs etc.
Hence the work around.
 

hippy

Ex-Staff (retired)
I've never understood why their outer sleeve is NOT earth.
The connections are the same as for some digital cameras which used 9-way to 3.5mm jack plug leads and cables were available as an off-the-shelf component at a reasonable price. The PICAXE followed suit to match those cables.

I would guess camera manufacturers chose that pinout so it was possible to create a 'switch' from the 0V (tip) normally-closed contact to tell when the cable was inserted. The ring contacts can also be used to switch RX to the jack from something else if required. The TX can usually be paralleled out to jack and something else without problems and hence the pinout falls into place.
 

MartinM57

Moderator
Just a quick scan of the schematic...and despite the fact that it all seems to work
- 3.3pF on CExt for the SAA1064? Never used SAA1064, but 3.3pF seems incredibly small
- Q1/Q2 bases are either open circuit or close to (but not at) ground - is that what you want? ULN2803 aren't usually used to buffer transistor base drives
- cap values in mF is a bit old fashioned - my personal preference and de facto normality is to use uF (0.47mF = 470uF etc) - also avoids the confusion with a badly printed/rendered mF vs. nF

Very neat though - well done!
 

PaulRB

Senior Member
Beautiful design. Now go a step further and design a pcb. That would be great!!!
That is the plan! But I am a PCB virgin. Currently using Fritzing, so will have a go with that for PCB layout, and if the result seems ok, may even pay for them to make it.
 

PaulRB

Senior Member
The PICaxe download socket is not shown wired in the normal Rev Ed configuration.
Thanks Alan, I'll check that tonight.

It could be argued that the 47 ohm resistors for the top LEDs are too low. They are indeed blue LEDs so their forward drop may be 3 volts or more, but they might still exceed the PICaxe 20/25 mA output pin rating. In practice the current probably is less than that, due to the (undefined minimum?) output saturation voltages of the chip.
The leds are actually described as purlple/ultraviolet. They look pink to me! Vff quoted as 3.2V. As they are Charlieplexed, current to each led flows through 2 resistors, so each resistor needs to drop 0.9V, so should be around 45ohms for 20mA current. Did I miss something?
 

AllyCat

Senior Member
Did I miss something?
Hi Paul,

No, you're absolutely correct, I missed that there are two resistors in series.

On Martin's comments, yes 3.3pF does seem too small, shouldn't it be 3n3? And yes I'd avoid "mF" as it might be read as "milli" or incorrectly as "micro" or "nano", etc.. Resistors might be added to the base-emitter junctions of the PNP anode drivers, but the darlington drivers have internal resistors across their own base-emitter junctions, so the leakage current when off should be very low. Similarly the PNPs shouldn't be getting too hot (and "leaky") as they're conducting hard into saturation.

Cheers, Alan.
 

nanogear

Member
I am a PCB virgin. Currently using Fritzing, so will have a go with that for PCB layout, and if the result seems ok, may even pay for them to make it.
Try using "Eagle cad". Easy to understand and a powerful cad indeed. You can download the free version and the components library from sparkfun.com
 

MartinM57

Moderator
Try using "Eagle cad". Easy to understand ...
Eagle is, IMHO, the hardest Windows app to use in the world, even assuming that you are competent in knowing what you need to do to make a good schematic/PCB layout.

<cough> Diptrace with PICAXE libraries </cough>
 

PaulRB

Senior Member
- 3.3pF on CExt for the SAA1064? Never used SAA1064, but 3.3pF seems incredibly small
You're right, thats an error, should have been 2.7nF. Thanks!
- Q1/Q2 bases are either open circuit or close to (but not at) ground - is that what you want? ULN2803 aren't usually used to buffer transistor base drives
With Alan's help studdying the data sheet, we found there are current limiting resistors on the darlington bases, so ok to connect direct to picaxe outputs. The examples using ULN2*03 in part 3 of the manual also show direct connection to the picaxe o/ps. Originally I had 2 npn transistors driving the pnp bases and 2 darlingtons unused, so it was an opportunity to reduce compontent count.
- cap values in mF is a bit old fashioned - my personal preference and de facto normality is to use uF (0.47mF = 470uF etc) - also avoids the confusion with a badly printed/rendered mF vs. nF
I selected those from a drop-down menu in Fritzing. I will see if it will let me type other values as per your suggestion.

Thanks for the feedback!
 

MartinM57

Moderator
With Alan's help studdying the data sheet, we found there are current limiting resistors on the darlington bases, so ok to connect direct to picaxe outputs. The examples using ULN2*03 in part 3 of the manual also show direct connection to the picaxe o/ps. Originally I had 2 npn transistors driving the pnp bases and 2 darlingtons unused, so it was an opportunity to reduce compontent count.
I think you are missing the point...it's not about base resistors, it's about the driving signal for the pnp transistors. Your npn's driving the pnp bases would be fine (if you had them correctly configured :)), but I'm not sure replacing them with the ULN is the right idea.

A ULNxxxx either connects the output pin to ~ground (there is a small offset voltage, which can be up to 1.2v worse case) or leaves the output pin floating i.e. effectively not connected to anything. This is fine for the primary purpose of a ULNxxxx - driving relays, high power LEDs etc where the load is connected to +v and the ULNxxxx output.

So your pnp bases are either floating (independent of base resistors being present or not, or their values) or tied to something slightly above ground - which is not the standard way of driving a high side switching transistor
 

PaulRB

Senior Member
Eagle is, IMHO, the hardest Windows app to use in the world, even assuming that you are competent in knowing what you need to do to make a good schematic/PCB layout.

<cough> Diptrace with PICAXE libraries </cough>
My problem with those apps is I have been trying to get away from Windows for a couple of years now. I could try installing WINE I suppose, but Fritzing runs natively on Linux, windows and even MAC (eeugh) .

I run Ubuntu 10.04 LTS.
 

PaulRB

Senior Member
So your pnp bases are either floating (independent of base resistors being present or not, or their values) or tied to something slightly above ground - which is not the standard way of driving a high side switching transistor
Hmm... now my competence with transistors is looking distinctly wobbly again...

Here's how the npns and pnps were connected before.

So how is what the npns were doing different to what the darlingtons are doing now, for the pnp bases? Weren't they floating or just above ground before?

Very grateful for any advice from you or Alan on this while the project is still at breadboard stage!

Paul
 

MartinM57

Moderator
All you are missing is a resistor from the +v supply to the left hand end of your pnp transistor base resistors - maybe I should have been less subtle :)

http://www.picaxeforum.co.uk/showthread.php?18277-Using-a-pnp-transistor-as-a-Switch&p=168776&viewfull=1#post168776 shows what a correct npn driver would be. Your http://www.picaxeforum.co.uk/showthread.php?21256-Driving-large-blue-7-segment-display&p=207735&viewfull=1#post207735 is also incorrect unfortunately.

So when the ULNxxxx is:
- "off" the pnp base is as high as the emitter = pnp switched off
- "on" the pnp base is lower than the emitter = pnp switched on

4K7 is fine for the missing resistor.
 

PaulRB

Senior Member
Thanks Martin,

OK, I get how that extra resistor prevents the pnp base from floating.

But I currently have 510ohm between the base and the ULN output/emitter. The idea was that this lower value would allow a higher base current, ensuring the pnp was completely saturated, minimising the voltage drop and the power it would dissipate. But the diagram you linked to shows a 4K7 resistor there: almost 10x what I currently have, so much less current through the base. Will that be enough to saturate the pnps? They are BC637.

Alan, did we make an error before? It certainly seems to be working ok!

Paul
 

PaulRB

Senior Member
Re: capacitor values in Fritzing. Seems odd how this works. If I want a resistor of any value, I just drag and drop a generic resistor part onto the diagram and key in the exact value I want into the "parts inspector". But with capacitors, I can only select from a fixed list, which does not include 2n7, and uses milli-farad values which people here seem to be frowning upon, for reasons I now understand. Maybe I will raise this on the Fritzing forum. So I had to create a "custom part" for 2n7, which seems a little OTT.
 
Last edited:

MartinM57

Moderator
Time to get the sums out and it's too late for exact calculations :)

With various approximations and assumptions when looking at a BC637 data sheet, let's assume, at worse case, a hfe (=current gain) of 20 at 20mA emitter to collector current.

If your LED segments are drawing 20mA when switched on, then with a gain of 20, you only need 1mA base current for saturation.

If +v = 9v, Veb = 0.7v, ULNxxx saturated voltage = 1v, you need a resistor that draws 1mA with 9-0.7-1 = 7.3v across it. R = V/I, so R = 7.3/0.001 = 7K3

So even if you halve the resistance to get potentially twice the base current (a reasonable assumption to guarantee saturation), then we're talking in the region of 3K6. And if the gain is bigger than 20, which it probably is, the resistor could be an even higher value. So 4K7 isn't too far out IMHO

Alternatively if R = 510R, you are potentially allowing a base current of I = V/R = 7.3/510 = 14.3mA, so your transistor would only need a gain of about 1.5.

510R is not wrong (the max base current of a BC637 is 200mA, so it ain't gonna blow), but I would use something more like 4K7 as that is all that is needed (A level electronics question - why is allowing a higher base current than needed not standard design practice?)
 

MartinM57

Moderator
...and as you have a nice breadboard to play with, just have a go with 4K7 on one BC637 and leave the 510R on the other and and see if there is any observable difference between the pairs of digits
 

PaulRB

Senior Member
Ok, will do.

In your rough calculations above, you assumed 20mA current. I am dimming the displays under w/w control, but in bright conditions, they will be drawing 20mA per segment, and two digits are lit at any instant in time. So the pnp emitter/collector current could be ~16 times your estimate. I will repeat your calculation tomorrow with that figure.

Thanks,

Paul
 

boriz

Senior Member
"why is allowing a higher base current than needed not standard design practice?"

Err... Thermal runaway... err... wasted power... err... Buddha said so... err...

What's the answer?
 

MartinM57

Moderator
So the pnp emitter/collector current could be ~16 times your estimate. I will repeat your calculation tomorrow with that figure.
Oh. Of course. Oops. That's quite a lot more.

Note that BC637 gain goes up slightly with higher currents - have a look at the data sheet. Enjoy the calcs, report back :)

EDIT: also note the gain of the 2N3906 in the referenced post is about 2x that of a BC637, affecting the calcs used there
 
Last edited:

MartinM57

Moderator
Err... Thermal runaway... err... wasted power... err... Buddha said so... err...
Yes, I thought it was a good question as well! Mainly wasted power I suspect. The base current is near enough constant, depending on the voltages and resistances around the base-emitter circuit, the collector current (when the transistor is saturated) depends on the load - so setting too high a base current is just wasteful.

I don't know if it affects (extreme) high frequency switching times - we need a semiconductor physicist on the case I suspect..
 

MartinM57

Moderator
We are all entitled to our opinions :) I'm sure almost any package can produce "industrial grade" gerber files for PCB house fab.

I'm happy with my infinite value for money DIPTRACE (number of features / cost)...
 

AllyCat

Senior Member
Hi Paul,

Sorry for my absence, I only have occasional access to the internet at the moment and I've missed almost two pages!

Yes, it is "good practice" to put resistors across base-emitter junctions (perhaps 1k ohms). They're not really "current limiting" resistors as such, their purpose is to prevent thermal leakage currents (collector to base) getting amplified (perhaps over several stages) to the point where the current becomes "embarrasing". In your case, at the worst, it might slightly illuminate "off" segments.

In this application we're using the PNPs as switches and to "close" (saturate) them properly requires a sufficient current. That needs to be chosen for the "worst case" (low gain) transistors, so yes in 90% of cases some power will be "wasted". But if you don't do that, then the remaining 10% won't illuminate the segments properly and/or the transistors will dissipate so much power that they may be damaged.

Yes, allowing (bipolar) transistors to saturate does indeed make them turn-off rather more slowly (we're talking nanoseconds or maybe a few microseconds at most), but in this case the delay/dissipation is negligible compared to the normal resistive losses if the transistor doesn't saturate properly.

Cheers, Alan.
 

PaulRB

Senior Member
With various approximations and assumptions when looking at a BC637 data sheet, let's assume, at worse case, a hfe (=current gain) of 20 at 20mA emitter to collector current.

If your LED segments are drawing 20mA when switched on, then with a gain of 20, you only need 1mA base current for saturation.

If +v = 9v, Veb = 0.7v, ULNxxx saturated voltage = 1v, you need a resistor that draws 1mA with 9-0.7-1 = 7.3v across it. R = V/I, so R = 7.3/0.001 = 7K3

So even if you halve the resistance to get potentially twice the base current (a reasonable assumption to guarantee saturation), then we're talking in the region of 3K6. And if the gain is bigger than 20, which it probably is, the resistor could be an even higher value. So 4K7 isn't too far out IMHO
OK, so repeating Martin's calculations with a potential max emitter to collector current of 320mA, I get required resistance of around 450~500R, which is very close to the 510R I already have (nearest I had to 560R suggested by Alan).

So I decided to see what happens if I replace the 510R with 4K7 anyway. Guess what? It still works fine, in fact I can see no difference in the brightness or evenness of the segments, even when rapidly swapping between 4K7 and 510R, in bright light and shadow on the LDR (and being careful not to shadow the LDR with my movements!) which controls the segment brightness via software.

I also tried adding two more 4K7 as per Martin's earlier suggestion in post #16, from emitter to base on each PNP, to stop the bases from floating when the darlingtons are not switched on. Again, I could see no difference.

So what have I learned? I suppose the gain of those BC637 must be around 16 times higher than the 20 we assumed? Martin said the gain increased with higher E-->C current.
 

AllyCat

Senior Member
Hi Paul,

Actually my "calculation" (wet finger in the air) was based on the original "constant current driver" configuration which gave only about 4 volts across 560 ohms, so say 7.5mA into each base. I believe Martin calculated 7k5 for one segment, which might be around 300 ohms for 28!

So I decided to see what happens if I replace the 510R with 4K7 anyway. Guess what? It still works fine, in fact I can see no difference in the brightness or evenness of the segments, even when rapidly swapping between 4K7 and 510R, in bright light and shadow on the LDR (and being careful not to shadow the LDR with my movements!) which controls the segment brightness via software.
Did you try it with all 28 segments lit? However, for a "clock" display 28 segments is not actually possible, I calculate the maximum as betwen 21 and 26 depending on whether it's 12/24 hours and with/without a leading zero.

But it's not surprisng if the segments didn't dim, firstly the transistor is very unlikely to have minimum gain, particularly at room temperature, and when the PNP does get pulled (slightly) out of saturation, the "constant current" drivers in the SAA will compensate. Initially that might be good news because you're transferring power dissipation from the ic into the transistors, but at some stage the current drivers will run out of "headroom" and then the segments will "suddenly" dim.

I supposes the gain of those BC637 must be around 16 times higher than the 20 we assumed? Martin said the gain increased with higher E-->C current.
The data sheet that I looked at showed the "peak" gain at about 100mA, so it's likely to be falling again by 250mA. The gain was given as 40 - 160 at 150mA with a "minimum" of 25 at significantly higher and lower currents. So the "correct" drive resistor is probably about 680 - 820 ohms, but as a I said above, with 90% (or probably 99%) of transistors and operating conditions (temperature, etc.) it will probably work well enough with a far lower driver current.

Cheers, Alan.
 
Last edited:

PaulRB

Senior Member
Update: circuit now constructed on stripboard. Mostly working but a few problems to work out. These are things that worked ok on breadboard, so I must have wired up incorrectly or some components damaged during soldering.

The charlieplexing pendulum display is wired up wrong. Very frustrating. Have re-wired twice now, following plan very carefully, and triple-checked the wiring and the plan.

The ir receiver not working, so can only set the time via program download.IMAG0630.jpgIMAG0631.jpg
 

PaulRB

Senior Member
Dry joints and solder bridges ...
You could be right Jim. I thought I had inspected and corrected any bridges, but I'll have another look. Its hard to tell for sure from those phone pics.

And all my joints look "dry" these days, since I ran out of the old lead/tin solder and started using this new stuff!
 

JimPerry

Senior Member
Do you use a scalpel between the tracks? I still have an old-fashioned "Swann Morton" scalpel (like hospitals used to use) but a "Stanley knife" would do the job. :D

I hate the new Pb-free solder as well!
 
Top