The software part is a firmware written using Arduino IDE and it’s supporting both AVR (Mega2560) and ARM platform (Due). Modified, it could also be used in other projects. It comes with SCPI command set that is obligatory feature of serious commercial equipment and its usually behind the marketing word “programmable”. Thanks to SCPI it’s possible to remotely program and monitor power supply. There is many commercial software suites that allows communication with various laboratory equipment, and some manufacturers such as Keysight offers entry level solution for free (e.g. Command Expert).
This project is now in mature phase leaving many mistakes, misconceptions and dead-ends behind it. I’d like to present here a current status and from now on new ideas and progress will be presented asking of course for your opinions and comments.
In short this project should bridge the huge gap that exists between commercial and simple DIY programmable power supplies (that if we could accept above mentioned notice about programmability hardly deserve such name) – the first offers many features and remains hopelessly closed and later offers OPENNESS in publishing and discussing all challenges and are in general much simpler for building (that not necessary mean that such design is by default questionable, poor performer, unsafe or even dangerous to any party involved).
Let’s continue with the list of main features:
- Modular design, that means instead of one big PCB the complete functionality is achieved using few smaller modules. Currently we have pre-regulator (one per channel), post-regulator (one per channel), Digital control board that is Arduino shield (one per system) and Auxiliary power supply (one per system).
- “DIY friendly” at beginning presume using many “jelly beans” THT components but after few revisions the advantage of SMD becomes clear: you can pack more components and it’s easier to desolder/resolder during experimentation. All assembly so far is done with soldering iron and due to that “no-leads” packaging such as QFN or BGA was avoided. The “DIY friendly” also means that no exotic, custom or hard to find components are used. Actually all parts are sourced from only two distributors (+ enclosure is the third one).
- “A complete approach” – the project starts with keeping in mind electrical, mechanical and software aspects concurrently and all the time (almost ;). For example, PCBs are dimensioned to fit suitable heatsink, the enclosure is selected to accept two channels and main transformer, the front panel is designed taking into account usability, etc. Such approach could simplify eventual preparation for group buy started by “closed” group of some forum members or even crowd funding campaign. Who is going to do that is not so important – the whole project is open and will stay open. If selected TAPR 1.0 (hardware) and GPLv3 (firmware) seems too restrictive to any potential manufacturer we are open for discussion.
- Safety during testing/assembling phase and in daily operation. The power supply has to be safe for the human operator, connected load and itself. Due to that no high voltage circuits are used (that of course would make a complete design more efficient) that could less experienced builder (as myself) could cost eventually life. The mains voltage is present only at the input section of Auxiliary power supply module but even that could be skipped in the future if isolated external AC/DC adapters similar to notebook’s adapter but with higher voltage (e.g. 36 or 48 V) is used. Load protection is achieved with offering constant voltage and constant current mode of operation with software protection against over-voltage and over-current situations. The protection on power supply is achieved with adding AC input and DC output protection components and by deploying software over-temperature and over-power protection mechanisms.
- Remote control was planned from day one. Therefore Ethernet port is added to goes beyond the limit of USB cable. Wireless in not yet supported. Remote control requires much more works on software sides but already in M1 (Milestone One) version of the firmware the comprehensive set of SCPI commands are available.
What is achieved to this moment?
The hardware part is completed with one minor exception: a nice front panel cover mask is missing. Its design file is ready and it has to be send to laser cutting online service (namely formulor.de). Two prototypes are up and running one with THT pre-regulator/post-regulator modules and another with SMD. Both of them are using the same Arduino shield one running Mega2560 and another Due.
Firmware M1 is published and comes with one still rare feature: a software simulation! That means that one could test all currently supported functionality (SCPI commands in this moment) without having real hardware! We tested it on Windows, Linux and OS X and source code is available on GitHub, and it’s accompanied with decent 100-page reference guide. You are welcome to test what is done so far (some examples are also available if you are not familiar with SCPI).
More detailed hardware feature list
- MCU based digital control module using Arduino boards such as Mega or Due (3.3 to 5 V level shifting is included). Basic functionality for e.g. initial testing during assembling phase does not require digital control. It’s achievable by using standard potentiometers and mechanical switches
- SPI bus communication with power channels (pre-/post-regulator modules) with galvanic isolation
- No complex multiple secondary windings transformer is required. Both power and all bias voltages are derived from the single winding (bias supply has own LM5574 based pre-regulator)
- Phase-control mosfet pre-regulator lower power dissipation
- Voltage regulation (CV), 10 mV resolution (could be better)
- Current regulation (CC), 10 mA initial resolution (could be better)
- Various voltage single range operation (i.e. 0 – 30 V, 0 – 40 V or 0 – 50 V per channel)
- Various current single range operation (i.e. 0 – 3.12 A or 0 – 5 A per channel)
- Dual channel 16-bit DAC (DAC8552) for output voltage and current programming
- Quad input 15-bit ADC (ADS1120) for monitoring both programmed and output values
- Output enable (OE) circuit
- Down-programmer (DP) circuit
- MCU controlled remote sense (using signal relays)
- MCU controlled serial and parallel connection of channel’s outputs (using power relays)
- LED indicators for Stand-by, CV, CC, OE, Remote sense, serial/parallel connection
- Simple AC input protection (surge and transient protection)
- Simple DC output protection (reverse voltage, over-voltage)
- Multiple temperature sensors for monitoring transformer, output heatsinks (up to two) and connected load temperature (e.g. when used for battery charging)
- Real-time clock (PCA21125) with supercap/batter backup
- EEPROM (AT25256) used as a configuration and calibration parameters storage
- USB port that can be used for remote control, as a debug console and firmware upload
- Ethernet port (ENC28J60) for SCPI/LXI based remote control
- 3.2” TFT color touch-screen display (TFT_320QVT with SSD1289 controller) for local control
- SD-card as an additional storage (comes with TFT display)
- Metallic enclosure (e.g. Hi-fi 2000/Modushop.biz Economica EP1153220 L 320 x P 200)
More detailed firmware M1 (Milestone One) feature list
- Support for both AVR (Mega) and ARM (Due) MCU
- Used 3rd party libraries: SCPI parser, UIPethernet, UTFT/UTouch
- SCPI registers and queues schema
- Power-on self test
- Device identification
- Calibration of voltage and current
- Up to 10 user profiles (save, recall, set name, set default)
- System date and time
- Power up/stand-by control
- Diagnostic information (ADC values, self-test, calibration, protection status)
- Set voltage and current (fixed and step value)
- Output enable/disable (down-programmer currently follows OE status)
- Set “trip” level and delay for over-voltage (OVP), over-current (OCP) and over-power (OPP) protection per channel
- Set “trip” level and delay for over-temperature (OTP) protection (currently only MAIN sensor is supported)
- Beep tone during power-up or stand-by phase, when an error or protection condition is occurred
- Software simulator allows testing all functionality without having real hardware and allows faster developments since no additional cumbersome uploading to the Arduino board is necessary