I have a problem with my homemade buck converter. It is based on a TL494 control chip with my discrete MOSFET driver. The problem is that my inductor squeaks and whines, when the output current exceeds a certain value.
As an inductor, I have first used a common toroidal choke from an old ATX PSU (yellow color with one white face). However I noticed it was really getting hot, and that was not the loss in my copper wire, it was the core not being suited for switching application, but rather for filtering purposes. Then I disassembled a small ferrite transformer, wound my own inductor on it but it was squeaking again.
Then I thought that it might be due to the cores not being ideally glued together, so then I decided to do this on a larger transformer (probably EPCOS E 30/15/7 with round center part, but unfortunately I have no idea about the material used in this core and if it is gapped or not), but this time with carefully removed windings without taking the core apart.
The result was acceptable (my signal generator didn’t arrive yet, so I cannot precisely measure the inductance, but it is in the region of 10uH, 6 turns (of a couple wires to reduce the skin effect)). It is still squeaking, but only at voltages and currents that probably will not be reached with my LED lighting (basically I want to create my own DC-DC converter to control the voltage applied to LEDs instead of using PWM, which created too much EMI).
Here are the waveforms (current flowing through inductor, measured voltage drop across a 0.082 Ω resistor ~0.1 Ω), that I captured back when I was using iron powder core (yellow-white) as inductor core. Every waveform is DC-coupled.
Low output current: ca. 1A
Medium output current: ca. 2A
High output current: ca. 3A. At this level the squeaking starts. But I have to emphasize out that the inductor core was heated to ca. 90°C. This basically looked like a waveform from above, but modulated by a low frequency sine wave.
I was unable to make the current waveform oscillate between a certain level without touching 0A. I saw that it shouldn’t reach it in pictures of waveforms online and in a OSKJ XL4016 buck converter with an oscilloscope. It looked like this: (Sorry for painted waveform, but unfortunately I didn’t save it; It just proves the point)
Here are the waveforms that I got with my current ferrite transformer-inductor at the moment when squeaking starts.
Channel 1 (yellow): current
Channel 2 (blue): voltage across inductor.
At this point squeaking appears. I tried increasing and decreasing output capacitor, but it generally didn’t solve the issue. Also, the ringing gets dampened, when I touch the non-isolated MOSFET heatsink, I have no idea why this ringing even exists.
This is my schematic (it’s not completely what I have on my PCB, but the changes are just subtle, like potentiometer instead of 2 resistors and fine-tuned capacitor value to get a frequency of 100 kHz). Pin 2 is currently connected to Vref, and Pin 16 to GND to permanently turn on the converter, Vin – input voltage = 24V. Due to high peak current seen by the diode D5, it was replaced with a more durable one for 5A:
D4, C2, R15 were finally replaced by a better and more robust solution, but it doesn’t make an influence on the waveforms on inductor L1. This is my PCB layout, it was designed for a different application (requiring 0.5A – 1A max, so I didn’t add any heatsink there). Also, the values of some resistors and capacitors were manually adjusted to make up nice efficiency of ~86% at full load, the bulk of power that is wasted happens in MOSFET Q7, probably because of slow rising and falling edge of gate signal and Rds(on), being at 0.3 Ω.
Now (during testing) the inductor is suspended above the solder layer (because it’s too big to fit in the designated space, back when I was designing this board I didn’t know that I cannot use a usual iron powder core, on my other converter, based on LM2576 it worked fine, but there are problems with voltage regulation, so I wanted to design this). Lastly I recorded voltage and current at said voltage, at which the inductor started audibly squeaking, here are the results:
- 5 V – 0.150 A ← min output voltage
- 6 V – 0.300 A
- 7 V – 0.400 A
- 8 V – 1 A
- 9 V – 2.5 A
- 10 V – 2.7 A
- 11 V – 3.1 A ← designed output current
- 12 V – 3.1+ A
- 13 V – 3.1+ A ← max output voltage
After that I lowered the inductance by unwinding 1 turn and it started to squeak at much lower currents. The same happens when I add more windings. When I change the frequency, nothing interesting happens. I have also calculated the capacitor and inductor values using the formulas provided inside TL494 datasheet, but it was squeaking with those as well. Every current measurement was done on the output side of the inductor. I've measured the ESR of my output capacitor and the LCR-T4 tester showed 0.09 Ω.
To summarize: I have a problem with whining/squeaking inductor and I don’t know how to fix it.
At every level my LED lights draw less current, which is required to make the inductor squeak, but my heart really wants to know why is this happening and what I don’t understand or understand wrong. Please help me. If I missed any details, I will write them in a comment to this question. Sorry for any mistakes in my “Engrish”, it’s not my native language. I am not experienced in this field, so please, forgive me if I made some big mistakes.
"At every level my LED lights draw less current, which is required to make the inductor squeak" – I mean, that the LEDs always should draw less current, that is required to make the inductor squeaking ⇒ during normal operation the inductor shouldn't squeak.
I uploaded a video showing waveforms to YouTube while changing output current, switching frequency and output voltage. The load is my makeshift "constant current load" made from a MOSFET and a potentiometer regulating voltage at MOSFET gate, it's crude, but it works. As mehmet.ali.anil wrote (but now I see, that he deleted his answer), I increased the inductance to approximately 200uH by winding a new wire and at the end of the video You can see, that I accidentally tuned the frequency to a "perfect" value, that resulted in successful CCM work, but it squeaks quietly all the time and especially during output voltage change. Additionally, the frequency is really close to the limit, being ~300 kHz. I should have uploaded a similar video beforehand, sorry.
Here is the link for it: https://youtu.be/tgllx-tegwo
The solution to solving this problem is adding a negative feedback, as explained in this video https://youtu.be/wNnOfF1NkxI?t=1584. Firstly I added a capacitor between the output and feedback pin of the TL494, it seems to have solved the issue, but it doesn't work as good as adding a proper negative feedback. I have done some tests, that prove this: At first, I increase the current from 0A to 3A and then I change the oscillator frequency from ~170 kHz to ~20 kHz and then go up to the "crash" (I suppose) of TL494 ⇒ beyond 300 kHz and then return to ~170 kHz. Yellow trace - voltage at oscillator capacitor, Blue trace - current flowing through inductor. The inductor now is not whining but hissing, it depends on the core used, because when I tried with EI, it was less noticeable (during the night the tape has loosened and the inductor started squeaking, now I am experimenting with nail polish as a way to glue the core and still be able to take it apart), This test was done with a factory glued EE core. The screenshot of a "spectroid" app is done when the output current is at 3A and at the bottom You can see the 20 kHz moment and at the top 300 kHz.
Negative feedback + capacitor https://youtu.be/S9KfA9NNXkE
Negative feedback https://youtu.be/h1AN7rQTDa4
Nothing (initial problem) https://youtu.be/nVOfPynJRGE
By negative feedback and capacitor, I mean:
Later I will check if my push-pull MOSFET driver works fine now. If there is a need, I can do a more advanced recording and show the frequency generated by the inductor corresponding to the oscillator frequency.