Increasing current ranges to detect mA



  • Howdy all, I'm just getting into this project and learning my way through python and the arduino interface, very grateful and impressed with the work you are putting into this. My question is: Is there a way to increase the current ranges to register mA? Right now the max range is +/- 1000 uA (=1mA). Is this limit arbitrary or is the teensy not capable of handling higher currents (say, +/- 100 mA)? Many thanks.



  • @rfndzc

    The measurement current can be increased by changing a resistor in the transimpedance amplifier feedback path. However, the current measurement isn't really the main limitation. The control amplifier has an upper limit of 45mA. So with the current design this would represent the absolute maximum current you could source.



  • @Will-Dickson

    Many thanks Will. I believe I can work within the 45 mA limit. I'll look at the schematic for the teensy shield again.



  • @rfndzc

    The transimpedance amplifier feedback resistors are R5, R6, R7 and R8. Each one corresponds to one of the selectable current ranges. Some info on setting the feedback resistor can be found here https://en.wikipedia.org/wiki/Transimpedance_amplifier



  • @Will-Dickson

    I swapped out R8 with 50 Ohm resistor to create a +/-12mA current range. I've attached a figure showing a fullscale range test with a 220 Ohm dummy cell. It looks good over the whole range.

    +/- 12mA range



  • @Will-Dickson

    I swapped out R7 with a 15 Ohm resistor to create a +/-40 mA range. This appears to work well between about -20mA and 20mA. However, below or above that is starts to fail.

    Figure showing the -20 mA to 20 mA range where things look OK.
    +/-40 mA range OK

    Figure showing the failure below -20mA and above 20mA.
    +/-40 mA range fail



  • @Will-Dickson

    I've swapped out the 15 Ohm resistor in R7 with two of the 50 Ohms in parallel ( 25 Ohms) to create a +/- 24 mA range. This allows us make use of almost the full range of the ADC. As before it looks good over +/-20 mA range.
    24000uA_current_range_partial

    It almost works over the full +/-24 mA range. It fails at the negative end right around -22mA.
    24000uA_current_range_full



  • @Will-Dickson Made the resistor change on R8 to 51-Ohm (50Ohm +/- 5%) and then went to the ps_constants.h firmware file and recompiled and uploaded with TEENSY to the Rodeostat. Then went in to the CV.PY sample file and changed the current limit to (12mA) and received a KeyError : u'milliAmpV0.1' ... made a change back to (12000uA) and received the same error. Need to find where the changes need to be made for the mA usage. Any thoughts?



  • @williamzerx

    You need to download the latest version of the Python potentiostat library from the repository here https://bitbucket.org/iorodeo/potentiostat The changes required to the Python library aren't yet in the version on PyPI (installed via pip). You will need to install from source from the repository. The python library is in the software/python/potentiostat sub-directory. You can install from source using "python setup.py install".



  • @Will-Dickson Hi, trying to do the same thing. Replaced the R8 with a 22 Ohm resistor. Having difficulty finding the changes necessary in the firmware files though. Recon you point me to lines which need changing?



  • @tellis

    In the "firmware/libraries/potentiostat" sub-directory there is file named ps_constants.h there is a #define near the top which is commented out

    //#define HARDWARE_VARIANT_MILL_AMP
    

    remove the comments - so it like like this

    #define HARDWARE_VARIANT_MILL_AMP
    

    Notes, this assumes that you are changing two resistors - R8 with 50 Ohm and R7 with 25 Ohm. If want to just change one you may need modify lines 92-99 in ps_constants.cpp where the parameters for the current range are set.



  • @Will-Dickson

    Also, when re-programming the firmware make sure the "tools -> optimize" is set to FAST. Right now if it is set to FASTER, which is the default, there will be an issue with the ArduinoJson library.

    This is something I'm going to fix soon - just need to upgrade to the latest version of the ArduionJson library and the problem goes away. Then the optimize setting won't matter. There is a little bit of an API change between the new and old version of the library - so I want to test a bit first.



  • Worked like a charm. You're a gem, thanks so much.



  • This post is deleted!

Log in to reply