Problem
You want to calculate the correct value for the Ilim resistor for the NCP380 current limiter IC with a custom current limit.
Solution
This script not only uses the formula from the datasheet to compute the theoretical resistor value but also performs range checks (the NCP380 only supports currents from 0.1 to 2.1 amperes) and computes the nearest E96 resistor value.
In order to run the script, you need to place Resistors.py
in the same directory (see this previous post for details).
#!/usr/bin/env python3 """ A script that computes the NCP380 limit resistor ValueError See http://www.onsemi.com/pub_link/Collateral/NCP380-D.PDF page 17 Based on Resistors.py, see http://techoverflow.net/blog/2015/05/19/finding-the-nearest-e96-resistor-value-in-python/ """ from UliEngineering.Electronics.Resistors import * from UliEngineering.EngineerIO import format_value __author__ = "Uli Koehler" __license__ = "CC0 1.0 Universal" __version__ = "1.0" def computeNCP380AdjResistor(ilim): """Compute the exact value for the NCP380 adjust resistor, given a Ilim value in amperes""" #Check limits if ilim < 0.100: print("Warning: NCP380 does not support currents below 100 Milliamperes") elif ilim > 2.1: print("Warning: NCP380 does not support currents above 2.1 Amperes") #Compute resistor according to equation 5 from the datasheet rlim = -5.2959 * ilim**5 + 45.256 * ilim**4 - 155.25 * ilim**3 + 274.39 * ilim**2 - 267.6 * ilim + 134.21 return rlim * 1000.0 #equation gives us kiloohms # Usage example: Compute E96 Rlim for Ilim=0.23A if __name__ == "__main__": # Compute theoretical value rlim = computeNCP380AdjResistor(0.23) #amperes # Compute nearest actual value actual_rlim = nearest_resistor(rlim, sequence=e96) # Print results print("Theoretical rlim value: %s" % (format_value(rlim, "Ω"))) print("Closest E96 value: %s" % (format_value(actual_rlim, "Ω")))