DPS5020 and DPS3003 PSUs

DPS5020 Power supplyFirstly, the DPS5020 power supply comes in 2 parts, the main controller and a front panel. You get the pleasure of fitting it in a box – and supplying power. So it is “kind of” DIY.

In this case you get a programmable power supply able to give you up to 50v at up to 20 amps output.

But doesn’t that seem a bit daft, needing a power supply to feed a DIY power supply? Nowhere near as daft as it seems – read on – it gets a lot better…

You may have seen a video on an earlier version of this where an output capacitor burned out – well, that’s been sorted out – but what you might not have seen is just what this inexpensive supply can do!

SO in the simplest sense, you get the package, connect the front panel to the control panel (the leads are keyed and marked – you can’t go wrong), stick the two in a box, add output terminals and some form of DC power (I plan to use a 30v 3a laptop supply as I don’t really need the higher voltages) and you’re done.  My current little desk supply can only manage a couple of amps.

Front Panel

The front panel – which I have to say is VERY pretty, allows you to set up not only the maximum voltage, or maximum current but also the maximum power. Not only that but you can also set up to 10 memories for easy recall. So this immediately makes for a small, neat and very useful supply.

DPS5020 Power SupplyBut, it gets a WHOLE lot better than this! The kit turned up today from the designer (Glen) of the product  (here’s the product link) and in the box was what looked like an FTDI – i.e. UART to serial converter along with a Bluetooth equivalent (pass code 1234, just looks like a UART COM port). Thanks for this, Glen.

So here’s the thing, Ok it’s a neat power supply but I always want more, so I went to this site in search of software to make use of this serial connector – and downloaded the PC software accordingly.

I loaded up the software, pushed the serial connector onto the board and connected to a USB connection on my PC. I fired up the software and… it worked.

5020 software on the PC

Not only does the PC software work well, but a document is also provided on that link with the communications protocol – and Node-Red fans will be pleased to note that the protocol is MODBUS and there’s a Node-Red node for that – called node-red-contrib-serial-modbus

Now THAT opens up a whole new world. Note in the image of the PC program above, the voltage I adjusted using that large knob at the top, would never go past 29v as my input voltage was only a little higher than that.

But it does not stop there, the second tab “advanced function” allows for a whole boatload of auto testing, data group operations and more. This truly is a nice piece of work and it is free to download.

5020 software on the PC

When the PC is controlling the board, the front panel controls on the supply are deliberately disabled. Makes sense. You can even control the LCD brightness from the PC.

I have to say – I am dead impressed.

Stable output voltage

Of course – now you’re thinking – well, that’s all very nice but how does it perform as a power supply. Right now I’m awaiting some test gear but I set the current maximum to 1 amp, voltage at 5v and applied a 2 ohm load. Sure enough, the voltage immediately dropped to ensure no more than 1 amp flowed.

When I removed that restriction the same load (not precision resistors, just ones I had lying around) – saw 2.4 amps flow through the resistors – a total of 12w of power… all of which sounds about right. The output voltage stayed rock solid at 5v. I could only do this for a few tens of seconds as my finger were burning holding the resistors.  The supply itself remained freezing cold and the fan stayed off during this time.

To test the other extreme, I set the output to 20ma and attached a small (disposable) LED to the output – and turned the unit on – sure enough – soft start and the LED came on nicely.

Once I get it in a box and get a decent scope on it I will update the blog accordingly – up to now, no gripes at all.

Here is the link – https://rdtech.aliexpress.com/store/923042

Follow-up:

I ended up with a case for the 5005 unit (50v 5a) version featured elsewhere on the blog and swapped cases as I’m really impressed with the 5020 version. The case allows for the serial connection as you can see here. The little serial adaptor fits neatly on 2 standoffs.

5020 power supply unit

End result….

Ruideng 5020 Power Supply

The boxed unit looks great. As mentioned earlier the fan that comes with the box is just a tad noisy, I fixed that by dropping the voltage to it a little using a couple of diodes.  Of course that may affect it’s ability to dissipate heat on heavy load but then the 5020 unit has it’s own fan on board as well. Time will tell.  It definitely has a place on my workbench and with the ability to monitor voltage and current on the PC… lovely.

Stand-alone Power Supply Unit from Banggood

DPS3003Of course, Ruideng do a range of supplies and one of the smaller ones is particularly interesting. If the powerful unit above all sounds a little over the top, there is also a little stand-alone version that all fits in the front panel container and this one came from Banggood. This unit does 20 volts maximum at 3 amps…. and is called the DPS3003 – it is VERY neat, needing just 20v DC max input. There is no serial or Bluetooth but then it is also cheaper, does not have a separate control board (it is all in the front panel) and would fit in a much smaller box. Here is the link if you’re interested.

Banggood also do other supplies of course – I’ll leave this link here for those interested.

In the coming weeks I will have a better scope to look at the output of these little wonders as well as a programmable load so we can see the output under various loads.  Keep looking in.

55 thoughts on “DPS5020 and DPS3003 PSUs

  1. I would suggest the letters mean the following;
    U = Vcc, probably 5 VDC.
    T = Transmit.
    R = Receive.
    G = Ground.

    However, I don’t know for certain.

    1. Not 5V its 3.3v everywhere, VCC and the Tx/Rx lines.
      A simple meter probing the 4 pins in a logical order will tell you this.
      Only low current (unknown) can be taken from the 3.3 VCC on the 5020 comms port connector as the spec/info will tell you—dont try and use more powerful Bluetooth or wifi module you WILL cook the 3.3v reg.

  2. I have DPS3005. I connect a Logic Analyzer to the wires of UART to USB board to analyze the UART communication but my capture seems not logical based from the Communication Protocol. What does U T R G pins means from the UART to USB board?

  3. As per the manufacturer instructions you should ensure that input voltage is 10% greater than desired output so it sounds to be within .5v of that.

  4. I built the DPS5020 with case. I am using a computer switching supply that shows as 11.6 volts on my multi-meter. I cannot get the DPS to generated an output grater than 10.07 volts. THe settings screen does not allow me to dial above 10.07 volts. Is my board bad?

  5. Hello, Does anyone have any idea if you can change the PC program for DPS5020 to export the excel table with values ​​like the one in the mobile application? thank you in advance

  6. To all,

    I managed to communicate with these power supplies with a python3 program. The modbus communication works fine but rather slow.
    Note that the PC operation system was LINUX.

    For those who are familiar with python3 :

    #!/usr/bin/env python3
    from tkinter import *
    import minimalmodbus
    import time

    coloron=”green”
    coloroff=”red”
    colorcursor=”deep sky blue”
    top = Tk()
    top.title(‘Voeding’)
    top.geometry(“250×200”)
    top.config(bd=2, relief=’sunken’)

    power_supply = minimalmodbus.Instrument(‘/dev/serial/by-id/usb-1a86_USB2.0-Serial-if00-port0’, 1)
    power_supply.serial.baudrate = 9600
    power_supply.serial.bytesize = 8
    power_supply.serial.timeout = 2
    power_supply.mode = minimalmodbus.MODE_RTU

    def on_off() :
    try :
    onoff=power_supply.read_register(9)
    power_supply.write_register(9,(1-onoff))
    except :
    print (“write_error”)

    def copy() :
    try :
    power_supply.write_register(0,int(str(set_volt.get())))
    power_supply.write_register(1,int(str(set_amp.get())))
    except :
    print (“write_error”)

    def refresh():
    try :
    a=power_supply.read_registers(0,11) #read data from power supply
    #a[0] U-set x100 (R/W)
    #a[1] I-set x100 (R/W)
    #a[2] U-out x100
    #a[3] I-out x100
    #a[4] P-out x100
    #a[5] U-in x100
    #a[6] lock/unlock 1/0 (R/W)
    #a[7] ?
    #a[8] operating mode CC/CV 1/0
    #a[9] on/off 1/0 (R/W)
    #a[10] display intensity 1..5 (R/W)
    U_out.configure(text=str(a[2]/100)+” Volt”)
    I_out.configure(text=str(a[3]/100)+” Amp”)
    P_out.configure(text=str(a[4]/100)+” Watt”)
    U_in.configure(text=str(a[5]/100)+” Volt U-in”)
    if(a[9]==1):
    on_off.configure(bg = coloron)
    else:
    on_off.configure(bg = coloroff)
    except :
    print(“read error”)
    top.after(100,refresh)

    U_out = Label(background = “Green Yellow”, font=(“Courier Bold”, 14), relief=”sunken”)
    U_out.place(x = 10,y = 70,width = 150)

    I_out = Label(background = “Yellow”, font=(“Courier Bold”, 14), relief=”sunken”)
    I_out.place(x = 10,y = 100,width = 150)

    P_out = Label(background = “Medium Orchid”, font=(“Courier Bold”, 14), relief=”sunken”)
    P_out.place(x = 10,y = 130,width = 150)

    U_in = Label(background = “Deep Sky Blue”, font=(“Courier Bold”, 14), relief=”sunken”)
    U_in.place(x = 10,y = 160,width = 150)

    set_volt = StringVar()
    volt = Entry(top, background = “Green Yellow”, font=(“Courier Bold”, 14), relief=”sunken”, textvariable=set_volt)
    volt.place(x=10,y=10,width=55)
    volt.insert(END, “0000”)

    U_set_info= Label(font=(“Courier Bold”, 14),text=”SETpoint U/100″)
    U_set_info.place(x = 75,y = 10)

    set_amp = StringVar()
    amp = Entry(top, background = “Yellow”, font=(“Courier Bold”, 14), relief=”sunken”, textvariable=set_amp)
    amp.place(x=10,y=40,width=55)
    amp.insert(END, “0000”)

    I_set_info= Label(font=(“Courier Bold”, 14),text=”SETpoint I/100″)
    I_set_info.place(x = 75,y = 40)

    power_supply.write_register(0,int(str(set_volt.get())))
    power_supply.write_register(1,int(str(set_amp.get())))

    copy = Button(top, text = “set”, activebackground = colorcursor, command = copy, bd = 2)
    copy.place(x = 180,y = 68,width=60)

    on_off = Button(top, text = “on/off”, activebackground = colorcursor, command = on_off, bd = 2)
    on_off.place(x = 180,y = 158,width=60)

    top.after(100,refresh)
    top.mainloop()

    1. Dear Luc
      Please tell how can I write my own routine to communicate with dps5005 for pic 16f87

      1. Usman,

        Sorry but I have only programming experiences with Arduino. You could try with an Arduino, A library ‘modbus’ and several examples are avalable on the internet

    2. Luc, to save you some hassle
      have a look here ‘https://github.com/lambcutlet/DPS5005_pyGUI’
      i’ve been toying with this for a few weeks now.
      minimalmodbus on individual reads or writes is slow in the region of 350ms
      to speed it up you need to read & write blocks.

      1. Lambcutlet,
        Great to see this!. I was quite impressed with the RD provided software but as I’m a Linux user, can’t run it. Now I can run something that does the same job and can be adapted.
        Just ordered a 5005 so a couple of weeks to wait …

  7. Please guide how to write our own application to control this supply and Where can we find the necessary info?

  8. What are the pinouts for the BT module? Red, Black, Yellow and green doesn’t tell me much!

    1. Doesn’t tell me much either. But looking at the Bluetooth unit, assuming you are looking top down and the connector is at the bottom, it says grtv which I assume to mean ground, receive, transmit, Vcc.

  9. Peter, if you have ordered the ZHIYU ZPB30A1 dummy( electronic) load you will not be disappointed, I have the enhanced version. I have set up an ESP8266 along with an INA219 module and GLCD display and the dummy load holds the current very reliably at a range of test voltages. Absolutely brilliant for testing batteries.

        1. Hi Antonio, that’s the one I’ve got, bought after watching that video a few weeks ago. I’ve also got the one Emil and I believe you also posted about

      1. Peter, I added the INA219 module so I could send the load current and voltage data via an ESP8266 to Node-Red via MQTT. I can also send it via UDP to the MegunoLink Pro software which allows all sorts of graphing, logging etc. on the PC. The INA module gives very accurate readings.

        1. Yes I have good use for some of those… and actually that’s not a bad idea – though I think the ones I have are limited to 2 amps – I’ll have to change resistors.

          1. hi Peter, The INA219 modules I have are specified at +/- 3.2 Amp. My bench power supply only goes to 3A and I have run the INA module at that whilst testing the dummy load and the module has suffered no ill effects. Mine are the little purple coloured modules. The modules are only rated for 26 volt so they would be no good with DPS5020 modules. However, for what I use Pi’s, Arduinos and ESP’s for I don’t need 50 volt @ 20 Amp!

  10. Even if the software does allow to change to slave id, it wont help much, this implies having multiple modbus devices on the same serial line (aka rs485). The serial interface on the units is TTL.
    This doesn’t mean you can’t use rs485 to TTL converters on each unit, and they are extremely cheap. Thus allowing you to run multiple DSP’s on the same link.

    But then again ESP8266’s are also cheap, and allow additional smarts to be implemented. so you can then have as many DPS units as you like, all with a different virtual com port, plus additional logic if you choose.

    1. Must try one of these, we use DaqFactory for modbus control, its free for up to 25 channels and simple to build graphical displays in minutes (PC only), although they are not as refined as the software above, also use esp’s with modbus 8266 software as dirt cheap modbus slaves which communicate with Daqfactory and node-red on the same PC, then use redundant phones as remote displays. DaqFactory has some really refined pid functions, so if i can control the power supply to such a refined degree I can build my ultimate sous vide cooker!. DaqFactory documentation also contains one of the best modbus primers I have come across. Thanks Pete.

  11. I’m trying to find out how to change the slave adres of the power supply. This must be possible (modbus protocol) in order to communicate with several PS at a time. Can someone help me out ?

  12. I ordered one of these a few days ago from a local Australian supplier, a few dollars more than Banggood, but at least I’ll get it in under a week.
    I plan to use an ESP as a transparant serial bridge, and then control via wifi. The next step will be to see how. I go with modbus on the ESP. Which of course raises the question, have you had any thoughts on adding modbus to your Home control software?

    1. I have an admission to make – I know ZILCH about Modbus. Thankfully my pal Peter Oakes in Canada (who does good videos) does – so no doubt before long I’ll know all about it.

      1. Pete

        I really don’t think you’ll have any problems with Modbus (Just think simple I2C, with a CRC added to the end of the message frame). If I was a conspiracy theorist, I’d say that I2C was derived from Modbus.
        Obviously I2C has been extended, but the the basics remain the same

        Preamble, Address, Payload, Frame-end.

        However, how the Payload has been implemented on the DPS is another story, once mine arrives, the first thin I’ll be doing is loading the software onto a PC, and then sending commands to the device, while monitoring serial activity. I don’t think this will take all that long, as I’ve done the same thing with other Modbus devices to determine the actual messages required to control them.
        Anyway, as you already have the DPS, I’m sure you’ll beat me to the punch.

        1. Patrick

          ‘ If I was a conspiracy theorist, I’d say that I2C was derived from Modbus.’

          How long has MODBUS been around?

          I remember using Phillips I2C devices 30 years ago.

          If you look at the I2C specification, the history section says the first release was in 1982.

          1. Modbus was released in 1979
            I remeber doing my apprenticeship at Monsanto Aust, as an instrument technician in late 1980, and I was tasked with developing ladder logic for Honeywel PLC’s to communicate with the newfangled devices. The old guard hated the change, and were happy to stick with their pneumatic computers.

            1. ‘pneumatic computers’ Fluidics I presume?

              In the early 70s one of my neighbours worked at Aston University running the ANALOG computers. One use was to simulate the life cycle of a nuclear reactor under different load scenarios.

  13. That’s a very nice piece of kit&software!
    Just yesterday received my DPS5005, alas the incommunicado one 🙁
    Forgot to read the details too, so bit shocked it didn’t come with a case or a DC power unit. Looking at this software i might still reorder the lot and go for your version with case and ftdi. Doesn’t seem to be connections on the current board to add the comms. Valuable tip on the laptop powersupply, have one or two lying around, thanks Pete.

      1. Erm, why? The original software seems to work and is pretty coloured – I took a quick look at your link – black and white? It is early in the morning – explain the point?

        1. Hello Pete, I believe that since the comms versions of the DPS and DPH units there is no point at all in the #opendps# project. It never seemed to get off the ground really. I have no issues at all with the screen readability., I think it s just right.

          A couple of things that may help you or others … If you need any information on the Modbus RTU protocol for the DPS and new DPH comms units then let me know. I wrote the protocol document. I didn’t write the actual ‘protocol’ ! . just the English translation and any corrections. I have some much more detailed information available if anyone is really interested in communications with the unit. I have tested all functionality via Modbus and it works superbly. Someone here mentioned examining the actual protocol packets ??? – totally pointless. All the information is available in the comms documents.
          Someone also asked about changing the unit ID address. It can be be done from the PC control program or – from the PSU control unit, hold the up arrow while powering on. You will enter the interface setup area – Modbus unit ID, baud rate, BT pin etc. Press ‘set’ twice in succession to exit.

          Hope that helps.
          Joe (JphDev)

          1. Hey that’s great Joe – personally I’m happy to talk to the unit via the PC as it stands as the software looks ok but I can see that some folk might want to try specialist stuff on it with their own software commands and it is great to know that we have someone who is involved with this unit in here. If you want to put any links in here to make life easier for people, please do, I’m sure they will be appreciated.

            1. Hi Pete,
              I only worked on the comms testing and documentation for the English Modbus RTU protocol information. I am only involved with the unit in a very very small way. I am, at the moment, also in the process of rewriting / translating the user manuals for the products.
              I won’t put links in for more info if that is ok but will certainly provide info to anyone that needs to know more than the information in the current documents. They can contact me via you if needed. To be honest, anyone that wants to work with the protocol would probably have everything they need in the available information. There is more detail to be had for the unit size specified in the register data. This is very slightly different between the low power and high power versions, but only in the areas of V A and W resolution steps. It is a very robust comms system as well and not possible to accidentally damage or brick the unit – (as far as testing goes – and I have really really really tried !!) 🙂 .. so no one should be worried about doing something ‘wrong’. You cannot hurt it via comms.
              The application of the base protocol would be very useful for establishing control of multiple units – for example in a dual output supply. One could instigate a dual tracking PSU function quite easily with a simple Arduino. There is a generic modbus rtu library available for the Arduino that could be used.
              It would also be really easy to add data acquisition to the unit without an external PC needed. The info could be viewed at a later date or on a small lcd. or downloaded as a CSV file or similar for use in Excel. One could also download a monitoring program to an arduino or similar processor to warn of changes in levels – ie increases or decreases in current consumption / power etc. It would be really easy to set up multistage / complex battery charging and status monitoring also. The. full control that one has via the comms is really excellent. and offers some excellent potential for development and addons.
              A very very nice unit.

          2. and I agree with you – I think the litle screens are marvellous. The first link in the website is the shop for the developer so communication on hardware should not be an issue. I’ve sent off for a decent load tester and accurate voltage reference and so should be able to pass more comments on these units in the coming weeks. I’m also expecting the arrival of a decent scope to take a look at the quality of the output.

            1. If you wanted to go the Modbus route for a load testing unit there is a very nice unit available – very very nice in fact –
              https://www.aliexpress.com/item/Electronic-Load-Constant-Voltage-Constant-Current-Constant-Power-Module-485-Communication-Control/32815027501.html?spm=a2g0s.9042311.0.0.8L2HgS
              However, it IS modbus only.!. it has no external interface or controls.
              They do do a version that is setable via potentiometers but I like the fine control and the huge range of added features. The products are EXTREMELY well made as well. A great complimentary product for the RD Tech PSU for testing. Thoroughly recommended if anyone is looking for a really versatile load and doesn’t mind producing their own user interface / control. You can even set it for constant resistance ! . The modbus control is great for me as both units share the same protocol. ! bonus !. A nice ‘bit of kit’, but I digress. 🙂 ..
              Good to hear about the ‘scope a must have piece of kit and you get a heck of a lot for your money with the current offerings.
              J.

          3. I just got a basic Sigrok driver going for these and I’d like to identify the unit from the value in the MODEL register, but there’s no information about the mapping (my DPH5005 returns 5205, so it’s not simply the model number.)

            Do you happen to have a list of device id’s?

            1. The register (11 – decimal – in Protocol address mode as opposed to PLC address mode) contains the model number- (Device ID) and this is the model number so should normally be the same, also confirm YOUR model number ? a DPH or DPS ? – there is a DPS5005 and a DPH3205 ? Let me see the contents of registers 10, 11 and 12 (decimal) please. It is possible, but I would think unlikely, that there is a mistake in the actual programming, but I would need to see more info.
              Thanks
              Joe

              1. Hi James,
                Apologies, actually I made a mistake in the answer above, there ARE two models of 5005, the Buck model, DPS5005, and the Buck/Boost model DPH5005,
                the model number you are seeing appears to be perfectly normal, the ‘2’ in the 5’2’05 designates it as a DPH and differentiates it from the DPS Buck only model as otherwise there would be two models with 5005, so the ‘2’ simply designates as a DPH B/B model.
                Hope that helps ?
                The other models are as normal, ie – 5020, 5005 (dps)
                At the moment, that is the only Buck/Boost model with comms. There is a DPH3205 however this is not available with comms.
                The only model NOT to have a direct correlation to the model at this time IS the DPH5005.
                If you used the same read on a DPS5005 you would GET 5005, and on a DSP5015 you would get 5015. Hope that clears it up and helps.
                What are you actually working on ? – ie: – what is your design idea ?

                Best regards,
                Joe

                1. Thank you! I was hoping that was the case, but since I had the one exception to the rule I couldn’t be sure.

                  All I’m doing right now is writing a driver for Sigrok (sigrok.org) which provides a generic api for all sorts of logic analysers, oscilloscopes, data loggers, programmable PSUs, multimeters etc.

                  1. Hi James,
                    Glad you got it sorted.
                    What an extremely useful and helpful project you are doing. I think a huge thanks is due from the general community.
                    Thank you also for bringing the site and project to my attention, I had not not heard of that project before. I will most certainly be following and using that.
                    Keep up the great work and if I can help in any way just let me know. Best regards. Joe

                    1. Hi Joe _ I know you want me to pass on your email to Martin – but I cant find “Joe Hanley” in the subscriber database. Are you subscried to the blog or just the newsletter? Failing that just email me privately and I’ll pass the email on to Martin….

          4. Hi Joe, Can I get your contact details. I have some questions about connecting a DPS5005 to modbus RTU.

Comments are closed.