7805 controller has of course the heat sink. But I wonder even the replacement of the DC-DC Buck Converter Step Down that shone less.
A capacitor at the Arduino's ADC input will filter the PWM to give you an average. 1uF - 10uF should be about right with your 10K resistors.
I tried to change the resistor R6 to 10K and capacitor C3 to 1uF, 4.7uF and 10uF. But all changes resulted in maximum voltage at the output and the lack of adjustment possibilities.
I tried to measure the output voltage between pin 2 TIP122 transistor and GND, and then calculate the output voltage from the formula:
Vout = 18V - analogRead(A0) / 1024 * 5V * 4 (in sketch arduino)
As shown in the picture in attachment. But such a voltage divider connected resulted in incorrect operation of the transistor.
PWM value on pin 9 set as follows:
int R = 200;
byte value = map(R, 0, 1023, 0, 255);
analogWrite(9, value);
How about if you turn and & off pin-9 digitally (without PWM)? If you're measuring PWM with a multimeter you won't generally read the average unless you have a mechanical/analog meter.
After unplugging connection pin 9 the output voltage drops to 0V.
You have probably blown up that analogue input because when your TIP122 is off there is in effect no current down the potential divider so you are blasting 18V into the analogue input.
Can I connect a voltage divider as the attached picture, the analog input can be damaged?
To measure the voltage you want you will need to measure the voltage on the 18V rail, and measure the voltage on the transistor cathode, then subtract one from the other to get the voltage across your fans.
I tried to do that, but then did not work properly on the output voltage regulation.
I know that my system contains faults and I am looking for some better solution to the problem. I found something like this:
http://www.edn.com/design/analog/4363990/Control-an-LM317T-with-a-PWM-signal
Is the implementation of such a solution would be better? Unfortunately, the chip LM317T has only 1.5A output. And I need at least 2A output. Is it possible to replace it with something more efficient?
Thank you for your help.