Arduino Powered Bi-directional DC-DC Converter

This project started as a way to create an universal digitally controlled switch mode power supply module base on the Arduino development platform. As I worked on the design, the platform turn out to be an excellent bi-directional DC-DC converter that has many uses.
As the control system is based on a micro controller, all the parameters can be adjusted though changes in the firmware. The basic control loop use a simple integrate operation. This is the I in the PID controller. It is fairly straight forward to add the P and D operation to the control loop, though there should not be any need to add the differential part.
I picked Arduino IDE as the platform as it is very popular in the maker community and is very easy to use.
What makes this design different than the usual DC-DC converter is this design let the power flow in either directions. The current can flow from the low voltage side to high voltage side and vice versa. By changing the firmware used, the converter can either regulate on the input voltage, output voltage, input current or output current. The project is an excellent platform to learn how switching mode power supply works.”