In Part 4 I managed to get a micro-controller based DC-DC converter running. To ring a telephone we need a 20-50Hz sine wave of about 100Vpp superimposed on -48VDC. In other words a ring signal that moves between 0 and -100V.
The DC-DC converter set point can be programmed in software, for example -48V for nominal telephone operation. The DC-DC converter set point is a variable in the uC software, say -48 for -48V. So my idea was to modulate the set point to make a ring signals. So if I use a 20Hz sine or square wave between -100 and 0, the DC-DC converter output should generate that instead of a fixed DC voltage.
When I tried this approach in the Octave simulation it looked promising:
So I modified the AVR C code to produce a 0 to -100V square wave. However it didn’t work. The phone sat there. Silent. Looking at the waveform on the scope the average voltage was a very low -100V with a small AC component of about 10Vpp. So it was back to the drawing board for some more thinking.
Here is the DC-DC converter circuit I am using.
When I measured the impulse response of the on-hook telephone it started to make sense. The time constant was very large, about 2 seconds. This suggests a large on-hook DC resistance of several M-ohm, in parallel with C20, the 10uF capacitor at the output of the DC-DC converter.
The load resistance forms part of the DC-DC converter, and with C20 sets the frequency response. My simulations gave good results as I assumed an on hook load resistance of about 3300 ohms, which resulted in a much smaller time constant. However the resistive part of the on hook phone impedance is very high, so the DC-DC bandwidth is very low, with a time constant of a few seconds. This makes it hard to modulate large amplitude 20Hz sine waves – they are being low pass filtered.
The DC-DC converter output can however charge C20 quickly (i.e. develop a negative voltage quickly). It just can’t discharge C20 to 0V quickly, as this depends on the load resistance.
The DC-DC time constant can be tweaked a bit by changing C20. I tried removing C20 completely and managed to blow up Q5 twice. After some thought and a good nights sleep I tried another approach. I reduced C20 from 10uF to 3u3, and added Q6 to force-ably discharge C20 quickly via R35. Here is the new DC-DC converter circuit.
That’s Q6 hanging in the air:
Q6 is turned on by a GPIO on the 0V half the ring cycle. After some tweaking I developed a solid 100Vpp 20Hz square wave. This waveform can ring all 3 phones tested and the current draw is not bad (40-50mA), despite the energy wasted in R35.
Here is the ring waveform (bottom), and the DISCHARGE signal driving Q6 (top):
Another approach would have been an extra switch to disconnect the -100V rail:
The switches would be driven in anti-phase to connect the phone to -100V for half the ring cycle, then 0V for the other half. This would avoid the need for power dissipation in R35 but would require an extra transistor and some hardware to level shift and drive the extra transistor.
The heart of the circuit is the DC-DC converter made from Q5, L1, D5 and C20 plus the Q6 discharge circuit to make it ring properly.
I would like to simply this circuit, e.g. choose easier to get transistors for Q5/Q6, maybe simplify the drive. I would also like to make it a little more bullet proof, I popped Q5 several times while developing. For example make the circuit survive a short circuit while ringing by limiting the current thru Q5. I don’t want to rely on software control for survival. Natural current limiting due to the power supply output impedance is a better approach.
Over the past few weeks I’ve made some good progress on the $10 ATA concept. Next step is to start integrating the Hybrid and DC-DC converter together, add some hook detection, and connect to a host router to prototype the whole $10 ATA system. However right now I need to work on some other projects like Codec 2. I’ll get back to the $10 ATA a little later this year.