Search This Blog

Monday, December 30, 2013

Gathering with fellow pilots and Multicopter improvements

Most of the time I have been a lone rider in this hobby, having started from scratch on my own, since the traditional helicopters back in 2009. I would occasionally go to local air fields and try to mix in with seasoned RC airplane and helicopter pilots. But the environment would not always be too friendly, with the fixed wing guys not enjoying much the flying grass cutters.

Since the quadcopter I tried going to the local airfield, and was received with curiosity and enthusiasm by some, for showing a uncommon flying apparatus for those accustomed to the traditional RC gear, and apathy of the more senior club representatives who just care about figuring out if we are in a club and paying a annual fee.

Today I just look for a safe and calm place to fly. Unlike a fixed wing aircraft, the ground requirements for an helicopter are rather modest.

After having found that my colleague at work Luis Sismeiro (check out in his blog the post about this encounter, including photos and filming of the quadcopters: is also an enthusiast for this hobby, we have managed to do a couple of encounters, and also manage to stimulate the interest of a third colleague (Nuno Padriano) into this hobby. The later already comes to the air field with his tiny Hubsan quadcopter to be pushed down by the propeller wash of his giant counterparts :)

In my previous post I have detailed the main changes to the quadcopter setup, which included a new flight controller (HK Megapirates board), and addition of OSD and a camera.

After this, most of the work have been about tuning the platform, both in hardware and software aspects. Even though very interesting improvements have been achieved, I still consider this a work in progress.

Main achievements:
  • Removal of video noise with the motors running and under load: added dedicated voltage regulator and ripple filter for the camera, OSD and transmitter. Changed the power supply to the OSD, by no longer using the internal switching regulator and using only an external, clean 5 V supply;
  • Fixed the bluetooth module, which was operating with erratic serial communication: instead of using a pair of bipolar transistors for the step-up of the TX signal from 3.3 V to 5 V, replaced by a 74LS05 open collector NOT buffers. By using correctly sized pull-up resistors I managed to obtain a decent rise time (below 300 ns) for the RS-232 signals, completely eliminating the errors. Initially I had rise times in excess of 3 us, which was unacceptable;

  • Calibrated motors, to reduce vibrations affecting video quality and flight controller performance, not to mention motor bearings wear: used the laser beam and mirror procedure, which proved to work great;
  • Upgraded to Arducopter 3.0.1 RC4: decided to take the risk, after the hazardous RC3 version. Given the positive feedback of users I found this version could be trusted and went ahead and flashed the board. More that a couple of flying hours so far,  and no crashes to account for;
  • Found the sweet spot of PID values: after playing with the relevant parameters such as Stabilize P values (for both pitch and roll), and Rate P and I, the correct values rendering good stability results were finally achieved. No more overshooting or wobbling detected;

Things to be fixed/improved:

  • Get the position hold mode to work: after having identified inaccuracy problem with the compass as motor load increases, it is not worth getting any further into getting this mode to work as the compass is vital to allow the quadcopter to make position corrections in the right direction. As the helicopter begins to hover, a 90º drift in the compass reading can be observed. After landing, the heading slowly returns to the correct value (the gradual variation is possibly due to Kalman filtering performed in the board). To solve this I have ordered an external compass which I will look forward to place the furthest away from strong currents as possible;
  • Flight efficiency: the current setup is quite nice, with a new 3S 5000 mAh Turnigy LiPo battery rendering about 14m50s of maximum attained flight time at an all up weight of about 1.35 Kg. However, not entirely satisfied with the results, I am still inclined to improve this figure and us such found some great 800 Kv, 260 Watt pancake motors at a fairly low price and as such decided to order these. I expect to couple these with  some 12x4.5 propellers and obtain in the vicinity of 18 mins of flight for each charge. Furthermore this accounts for over a 1000 Watts of theoretical maximum power, which for these propellers translate into over 4 Kg of maximum static thrust. Of course, tuning PIDs will be an exercise to repeat again.

  • Install the already ordered video recorder next to the receiver, in order to keep a record of the flights;
  • Build the PPM sum module, to allow GPIO pins to be freed for other purposes such as ADC inputs to measure battery voltage and current. The same module should also integrate the voltage divider and the current sensor;
  • Think about adding an HD camera and a stabilized gymbal for aerial photography and footage.

Sunday, October 13, 2013

Going higher with the flyer

After very conservative steps with this model aviation hobby, I decided to get closer to the trends, and do some updates/improvements on my quadcopter while still being careful with the budget.

I can say my original setup basically sucked. The KK Multicopter board (the v2.1, based on Atmega168PA) was way too basic to let flying with the quadcopter being something close to exciting. It lacked the level of stabilization that could make flying the quad a pleasurable experience. Most of the time the pilot would be focused on trying to keep it level, preventing the build up of confidence to perform more complex maneuvers. It reminds me in respect to the traditional helicopters the rate gyro age, as opposed to the heading hold gyros that came later.

Instead of buying an original APM board, I decided to go for a more within budget alternative flight control board. As such I decided to grab the Multiwii Pro from hobbyking, given the $65 of cost, and the fact that included the GPS module.

The GPS would not be the greatest (a MTK 3329), but according to the specs and reviews it would do the trick just fine, as long as I added a ground plane below the board. And so I did:

In every sense has the same features as the APM board, including the Atmega2560 chip. The only difference is the lack of dedicated microcontroller to handle the PPM encoding. However, apparently in this Hobbyking board, the Atmega2560 seems to handle the concurrence of all the tasks pretty well.

Taking into account that there are so many parameters in these Arducopter firmwares that need to be adjusted, I found it would be quite cumbersome having to connect the USB plug all the time to perform changes. As such as I had a bluetooth serial adapter board from a couple I bought on dealextreme some time ago, I decided to integrate it:

The only issue would be the signal levels, as the board itself would only accept 3.3V. For that effect I added a circuit with a couple of transistors to do the level shifting between 3.3 V and 5 Volts for TX and RX, and avoid buying an expensive MAX chip for the same purpose. The 3.3 V supply would be available from the flight controller board, by taking it from one of the I2C ports power output.

Another relevant upgrade in my flight gear was the transmitter radio. I was still using a crappy one from my first RTF helicopter kit. With this new flight controller it would be practically unusable, given the lack of channels to calibrate things and switch between flight modes.

I have been analysing the Turnigy 9x for a while and initially decided to buy it. Then I found that his twin brother from Flysky, the OEM of these Turnigy radios, would be available in Europe, so that taking into account the shipping cost and time it would be safer to buy the Flysky. Additionally there would be a small aspect that I liked better: the antenna from the included TX module would be attached to the module instead of being attached to the radio and going to the module through a non-removable cable as it happens with the Turnigy 9X. As such I could remove it, put other modules, and place it again whenever I wanted.

As the hole for an antenna in the transmitter body would be free, I soon found an application for it: I decided to "steal" the camera and video transmitter from the robotic car I built a while ago ( The idea would be to go step by step into the FPV world. One important aspect is to have a visualization device (i.e. a screen) through which we can see the flight situation and navigate from there, without direct visual contact with the aircraft. I had a video monitor I put together for the rover. It only lacked a way to attach it to the transmitter. That is where the antenna hole comes into place:

After getting a piece of aluminium tubing and other parts, the antenna hole was found to be a perfect place to attach the video monitor to the transmitter:

The video monitor has its own power supply (a 1200 mAh LiPo battery), a 1.2 GHz receiver, and a battery monitor circuit I built myself with the help of a PIC12.

The support provides some adjustment to the angle of the monitor, which is specially relevant because of the sun light.

In the back we can also see the transmitter module, which in this case is the FrSky DIY module inside a plastic box that I salvaged from a battery charger of a toy helicopter. It has a better range than the original module from the transmitter, and also has the failsafe feature, allowing selected servo positions to be applied in case the radio link is lost.

Also, and as FPV can be difficult without it, I bought a budget OSD board, the MinimOSD, which integrates with the flight controller board via the MAVLink protocol, and is proving to be quite nice, as with the help of a Windows based tool, the OSD layout can be freely customized:

After a power supply issue was fixed (powering the analog side directly from the battery would blank the OSD once the motors would start, the solution consisted in removing the 12V battery supply, connecting the digital and analog grounds together, and powering the OSD from the same 5 V input). The fix consisted only in bridging the (A/D)GND and (A/D)VCC pairs of pads, and removing the 12 V input diode (as such allowing the 12V jumpers to still be used for power distribution to the transmitter).

BTW, through Hobbyking this board costed about $18.

In operation, with the video monitor attached to the transmitter, the result looks pretty neat (a bit Back To The Future style :) ):

Switching screens can be done through channel 8, which I have assigned to the 3 position switch:

  • A main screen, with artificial horizon and heading rose:

  • A complimentary screen with the less relevant information (e.g. servo channels values, GPS additional info, etc):
  • A screen without text (for sightseeing only :)).
Most of these great things are only possible (specially with low budget) due to several opensource projects, including:
  • The Ardupilot project, for the flight controller;
  • The MinimOSD project for the OSD;
  • The OpenTX project for the FlySky (or Turnigy 9X);
  • The SimonK RapidESC project for the alternative firmware of the ESCs (providing optimized performance for quadcopters);
So far I have only attempted some small flights at low altitude (10 meters max), and looking at the model instead of the screen most of the time. I hope to bring some footage soon, and start experimenting with the GPS position hold mode.

Tuesday, August 13, 2013

Powerwheels RC conversion

I soon noticed my 20 month daughter affinity to vehicles. I wanted to give her one where she could sit and enjoy the ride, but currently most powered vehicles for infants require they are able to reach the throttle pedal and properly handle the steering wheel. So I figured out the best way would be to go remote controlled. As I already had done previous projects involving RC gear, it would be piece of cake to turn a regular electric car into a large scale RC car where a small kid could sit inside.

As such I first looked on OLX (a portuguese ebay-like 2nd hand product buying site) for a 2nd hand electric car or jeep at an affordable price. Taking into account that I would be spending extra money with the conversion I wasn't really interested in spending too much money on the car itself. As such I looked and found a Feber jeep for 25 Euros. New these cost about 200 euros. It seemed like a good price in spite of the cosmetic wear:

Next I went for finding the parts I would need for the conversion. As I wanted to make it RC, one of the important things would be to have a proper steering system. Unlike a regular RC car, a standard servo (or even a larger heavy duty servo) would not be powerful enough to handle the steering of this car:

As such I had to look for a better solution. I found that automotive window wiper and window lifter motors had the nice feature of including worm gears, making for very silent yet high torque motor systems. The only challenge however would be to turn these continuous rotation motors into servo motors. In the same online purchase site, I found people selling used auto parts, among which the following window lifter from a Citroen C3, which seemed suitable:

For €19 it seemed like a good price. Given the fact that looked physically good, it was from a recent car, and from the right-hand door (for which normally the motor has a smaller duty cycle), I thought I would not be disappointed. Once I received it, I found that it had a six pin connector (rather strange for something that should only have 2 pins for the DC motor). This connector would come out of a plastic casing, apparently sealed against moisture. Removed its 2 screws and lifted the plastic clips, and voilá, found this complex PCB inside:

The first thing to notice is the 28 pin SMD package, followed by a 4 MHz crystal, a current shunt and a relay (NAID branded, specially designed for automotive applications). Without knowing anything about the IC, it clearly looked like some kind of microcontroller - it has the logo of Freescale semiconductors, and the PSA initials - which likely stands for Peugeot Citröen S.A. Just for curiosity searched for some Freescale application notes, and they seem to have created some solutions to control window lifter motors, with stall current detection (and hence the current shunt), and LIN bus communication (an alternative to the CAN bus for more localized and simple applications). I may try to hack this in the future and post the results here in the blog :)

Back to the main topic, I had some broken standard servos among my RC scrap parts. The PCB board inside these servos contain the closed loop control system and the h-bridge dimensioned to power the small DC motor that is part of the servo.

The board I grabbed had some of the H-bridge transistors burned, but after some testing I confirmed that the important part for this project, the closed loop control IC was working. I removed the SMD soldered H-bridge transistors and tested the outputs of the control IC (it has one pin for forward and another for reverse direction).

Next I designed the H-bridge for this solution and mounted the prototype circuit in breadboard. Basically I had to combine driver transistors with the low side and high side power FETs I would be using in this H-bridge. I selected the jellybean 2N2222 as drive transistors. The circuit looks like this:

After initial tests with small motors I tried the circuit with the window lifter motor, and it worked correctly:

Even though not strictly required because of the intrinsic existence of a body diode in these types of FETs, still I added a schottky diode in paralell with each FET to improve the protection against back EMF. I have chosen the 5 A 60 V rated SB560 schottky diodes.

The other important element in this project would be the traction motor control. In the jeep original condition, the motor control was done simply via a on/off switch. If I wanted to preserve this approach I could have simply reused another servo board, and attached some relay to achieve a similar effect. But after checking the market for brushed motor ESCs (electronic speed control - a device that controls the power delivered to an electric motor), I found that I could buy one for a really low cost, and achieve proportional speed control (as such continuously varying the power delivered to the motor, from zero to full throttle). For instance I found this one at hobbyking (a store from which I am a faithful customer, from previous projects):

For about €10 it barely covers the cost of the individual FETs it is based on. With an advertised 45 Amp countinuos current capability, even assuming it is an inflated value, there is still a good margin in respect to the maximum current in this application (the car came with a 13 Amp circuit breaker).

After a couple of weeks of shipping time, the ESC arrived and I could immediately test it with the car:

It proved to work normally, barely getting warm after some use. In its user manual, it was shown that thermal protection (90ºC) and battery voltage protection for LiPo could be enabled. However the downside is that these protections can only be activated together, so in my case (system is powered by Lead-Acid 6 Volt batteries) it does not work to keep both protections on (as the voltage drops below 5.6 V the power is cut with the protections on, which for Lead Acid is still an ok voltage under load). This is the only downside to account for so far.

After the control circuit having proven functional and stable, it was time to put together the servo circuit into a board.

In spite of no heating having been detected by the finger during operation, still I decided to add a couple of heatsinks to the FETs from the servo control board (the board will be located in a space with limited airflow). The ESC already has a small square heatsink.

Another challenge involving some work was the construction and mounting of the feedback sensor. For good protection I decided to reuse the enclosure from the broken standard servo. It would to some extent protect against moisture and mechanical actions:

Another issue would be finding the ideal place to obtain the position feedback. In general the closer we obtain the feedback from the output, the better. Without searching too much I found that the wheels are bolted to the injection molded plastic body in such way that offers access to the steering shafts from inside the car:

This was a decent place to put the feedback sensor, as rotation of the steering could be perceived from this point. What I had to do was to drill holes to attach the servo support and dremel a slit through the shaft, so that a mating part in the feedback sensor could fit here.

In the feedback sensor, I had to cut a mounting plate (here I reused a metal part from the rack mounting of a broken kvm I had in my scrap box), and make the mating part attaching to the sensor shaft:

The final part attached perfectly to the chassis, right on top of the steering shaft:

Given the lack of openings for the air to flow inside the battery compartment (underneath the seat) where I would fit the electronics, I realized I had to add openings, and better yet, a fan, to allow the air to properly flow through the heatsinks of the motor controllers. As such I added a spare fan I had in the scraps parts, and holes to let the air flow:

Another thing I had to spend money on were the batteries. I found the original Lead Acid 6 Volt 13 Ah battery to be dead. Also, given the fact that I had to power the steering at 12 Volts, and as the motor and ESC were not rated (or not known to be rated) for 12 Volts, I would still need to have 6 Volts available in the system. So I bought 2 x 6 Volt 12 Ah batteries in a local store, and mounted these in series in the system. For the two Sealed Lead Acid batteries I had to shell out approximately €40. In the background is the wasted original battery (Feber branded, but with an incredibly similar casing construction - almost inclined to guess it is the same manufacturer).

The downside of this approach is that the batteries will not discharge evenly, so that series charging cannot be applied. If in the future I replace the ESC I will look for one that can operate at 12 Volts, and supply the entire system with a single voltage.

I decided to keep the original circuit breaker for the traction motor, and added a 15 Amp fuse for the steering. The servo control FETs are rated for at least 22 Amps, so this should provide a good margin of protection. As I didn't had a high amps rated switch, I decided to use the one from the direction handle of the jeep, and put it in the back side:

The original plastic steering bar did not allow for toe-in angle adjustment, and it seemed to have to much positive toe.

As such I removed it, and replaced by a threaded rod attached to the aluminium steering levers. With this arrangement, the toe-in angle could now be adjusted. Additionally, as the linkage of this bar would have ball bearings, less drag would occur:

Below is a video of the new steering bar in operation:

And finally, the best thing of all, to put the result to the test, letting my daughter try it for the first time:

Tuesday, June 11, 2013

Creation Factory now has a domain name -

From this point on you can also link to this blog via:

(No, it's not com, it's co).

Thursday, May 2, 2013

Power Supply Refactoring - finishing the details

In spite of already being a working device, there were aspects that like I explained in the previous post, required some attention. One of the major fixes was the voltage drift. This was caused by the 5 K potentiometer used to set the voltage end point. It was too large (the sweet spot of my setup was around 500 Ohms), which besides making it difficult to adjust, caused temperature induced resistance drift to be too large, causing an increase of around 200 mV from the initial voltage once the temperature settled.

To fix this I replaced the 5 K pot with a combination of a 500 Ohm potentiometer and a 220 Ohm resistor. The result was a benefit both in adjustment accuracy and drift minimization (I accounted for a 10 times lower drift):

Another thing was the transistor dissipation imbalance. I was planning to replace the coldest transistor with a spare one, but instead I decided to put fresh thermal compound over all the transistors. This resulted in a more even distribution of heat dissipation.

In the initial version, fan control was crappy. I decided to go to town with this, and elaborate a better algorithm.  The basic concept behind it is to increase PWM (and as such fan RPM) in a linear manner in respect to the temperature once the temperature increases above 28ºC. Below this temperature, the fan is completely off. Above 50ºC the fan goes full on (Pulse Width = 100 %). One of the problems that I have faced was PWM noise. At 1.6 KHz and 4.8 KHz this is quite obviously high. At 19 Khz (the finally selected frequency) noise is lower but still present (low order harmonics most likely). I've chosen this setting because above this frequency the overall efficiency of the fan most likely will degrade due to inductance and capacitance factors. Another challenge was the added weight of using floating point mathematics. The PIC has to perform all the calculations by software, therefore increasing the CPU and memory demand. I had to take this into consideration during the programming. Still for a relatively simple firmware, it consumed around 77 % of the PIC Flash and RAM (it is a PIC 12F683).

To avoid (the remote probability of) blowing up the transistor used for the switching of the fan because of back EMF, a diode in parallel with the 2N2222 transistor was added, so that it is bypassed if reverse current happens to flow. I've just used a 1N4007. A bit overkill but it was what I had laying around.

The overtemperature LED was also tested, but attaching it to the front panel is a task still to be done.

In respect to testing, this should be further exercised. Possible tests includes various combinations of output voltage/current. One relevant aspect would be to determine the largest power dissipation (in the transistors) for which a safe and steady temperature is still obtained.

The 2N3055 are expected to operate at up to 150ºC without being destroyed. To keep things in the safe side, staying below the 100ºC should be the aim. Besides this, at these temperatures the transistor characteristics change significantly. And furthermore, the use of several transistors that have small differences between them increases the risk of thermal runaway, which is an evil from which bipolar transistors suffer (as temperature increases, current flowing through the transistor also increases, causing the temperature to further increase, and so on, until the transistor releases magic smoke, or simply dies silently).

Bringing some theory to the table (and here we will not be too distant from it, as long as our measurements are correct), we can easily verify that in order establish a relationship between output voltage, current, and the dissipation on the transistors we need only to consider the following simple equivalent circuit. All other components have negligible impact on the end results:

As such we have a given Vin, which ignoring the transformer own voltage drop in respect to the load, has a value of about 28 Volts. In this PSU this is fixed, as we don't have multiple transformer taps and relays to switch between them. We also consider this to be both a corrent and voltage source, as it can operate in both forms. So applying the law of the meshes we have:

Vin = Vreg + Vload + Vshunt

The resistor for Vshunt has a value of 0.18 Ohms so that the dissipation is very small here.

To define a function where the Power dissipation in the transistors depends on the output voltage and current is easy. We know that P = Vreg * I. Our Vin = 28 Volts. From looking at the circuit it is clear that:

28 = Vreg + Vload + 0.18 * I

As our two independent variables are Vload and I, and knowing that P = Vreg * I, then our function translates to:

28 = P / I + Vload + 0.18 * I <=> P = (28 - Vload) * I - 0.18 * I^2

Translating this into a 3D graph, we have the following:

X, Y and Z axis represent Vload, I and Power respectively. As such we can clearly see that our maximum dissipation occurs for the combination of maximum current and minimum output voltage. For the graph we considered the voltage to be between 0 and 20 Volts, the current between 0 and 8 Amps, and the power peaking at 212.48 watts for V = 0 V and I = 8 A. This is therefore the worst case scenario our transistors need to handle. With the current size of the heat sink and at moderate (> 20ºC) ambient temperatures this may not be feasible without damaging the transistors. The maximum theoretical dissipation of each 2N3055 is of about 70 W considering that its temperature is kept below 30ºC. This gives us a 280 Watt power budget, which in practice will be smaller because it is impossible to stay below this temperature with the current heat sink (at about 40 Watts dissipation the heatsink temperature settles at about 50-55ºC). However in the green area of the graph, healty operation seems possible, as the dissipation is not huge.

Sunday, April 28, 2013

Power Supply Refactoring - closing the hood

After many hours of work I finally can say it's done. Even though I don't consider it the perfect work, I can definitively consider it a major improvement in respect to the previous version of the PSU:



And in respect to the inner workings:



The tests carried so far were quite satisfying. Some optimizations had to be performed, and others are still on the pipe to be performed. For instance, one of the first issues I found was the imbalance of thermal dissipation between the 4 power transistors:

This was fixed by swapping the hottest transistor (which happened to be on the rightmost edge) and putting it in second place (counting from the left). This resulted in 3 of the 4 transistors sharing a relatively homogenous temperature. Only the first (the one closest to the fan) tended to be cooler (by 10ºC from the tests done so far). In the future I may try to swap it by a spare transistor, and see if there are improvements.

As I don't currently have an electronic load or any similar testing device, I had to play with using a manually built load consisting of a piece of nichrome wire wound resistor which we can see here glowing:

Another aspect requiring testing was the ripple. As such, one of the obvious tests was to compare it with the performance of my commercial power supply and see the differences. I didn't expect miracles. Even though the Korad KA3005P can be seen as a low cost PSU, it has a very good construction and well engineered design. They really went to town in minizing noise at the output. The comparison revealed good results in spite of my minimalist design. In average the Korad measured about 14 mVpp, while my PSU measured roughly 33 mVpp:

The test setup:

The result from the oscilloscope:

In yellow is the signal from the Korad, and in blue is the signal from my PSU. In both cases the input is AC coupled, 1x attenuation in the probe, and amplitude set to 10mV per division. No analog or digital filtering was being applied. For the triggering, the AC line trigger was selected in an attempt to sychronize with whatever ammount of stray 50 Hz could exist in the signal. As we can see in the image, there is no obvious dominance of the AC line frequency, just a sort of broadband white noise. When the fan turns on there is a slight disturbance of the signal to be checked.

However I cannot consider these tests absolutely conclusive, as even after shutting down both PSUs, the same noise pattern persisted with similar amplitude. It is not an oscilloscope probe issue because after swapping the probes, the results were still consistent.In a preliminary discussion of the results this would cause me to lean upon differences in (external) line and RF immunity rather than noise intrinsic to the power supplies. I have several switching power supplies operating close to the two PSUs under test, so this could be an issue.

Going back to the construction details, one unforeseen issue was found regarding the two led meters bought from China (panel ammeter and voltmeter): in spite of both being powered by a floating voltage in respect to the measured circuit, there was a low value resistance between the power ground and the signal ground. As such this would prevent the nr. 2 secondary tap from the transformer, from being used to also power these meters. The reason is the relation between the power ground and control electronics ground, which affects the output voltage.

As such, and given the fact that there were no more secondary windings available in the transformer, an extra transformer had to be added. I searched the scrap parts bin, and found a small ac wall transformer that seemed adequate. Opened it up with the dremel tool, and attached it to the chassis:

The AC output (the twisted red and brown wires to the left of the transformer) goes to the main control board where a rectifier bridge, filter capacitors and linear regulator produce the steady 5 Volts used by the meters.

A view of the control board, which includes elements such as the LM723 linear regulator (the core of the power supply voltage and current regulation), a PIC12F683 for controlling the fan based on the temperature, 
and bridge rectifiers, filters and regulators for the different voltages required by the circuit:

Several heatsinks were required, given the large voltage differential between the input and output (16 Volts in the case of the fan power supply). In the case of the fan, only around 100 mA of power are required, but considering this differential, we end up with a total of 1.6 Watts of dissipation in the regulator. Without a heatsink it risks getting damaged.

All in all the result is good and we now have a working power supply with good performance. In the form of improvements/tasks to be accomplished is the following list of items:
  • properly measure the ripple/reduce the injected noise (even though as is it is very good, compared to many stabilized PSUs, as for example the ones found in computers);
  • try to swap the cold transistor with a spare one,  and check if the dissipation is evenly distributed by the transistors;
  • improve the fan control algorithm, by adding some hysteresis for smooth operation (while still ensuring fact action);
  • fix slight voltage drift over time (possibly a potentiometer issue);
  • Add overtemperature indicator LED to the front panel (for not having to burn the fingers on the heatsink);
  • Check slight disturbance (few millivolts) of the output voltage when fan turns on.
In conclusion, the single benefit of this kind of project is the joy associated to the design and step-by-step construction of the PSU, and of course the knowledge that is obtained and/or profounded in the process. Also worth mentioning is the freedom to implement things that could be nice to have in commercial units. Apart from this, considering the cost of comparable commercial lab grade power supplies, and the time spent, it is clear that buying the off the shelf unit is better if the single objective is to have the instrument in the bench ready for use.