RCT Current Sensor is here!
You know the drill, head on to Ebay and get some parts:
- Arduino Pro Mini 5V 16Mhz, example link here.
- ACS712 or ACS758 current sensor module, example links here and here.
- 100k Resistor
- Resistors according your voltage, look below for more info.
- 100 nF Capacitors, example link here.
NOTE: Make sure you get the 5V 16Mhz version of Arduino Mini Pro!
Supported current sensor modules
Currently supported sensor modules listed (Firmware v.1.1) :
- ACS712-05 (max. 5A)
- ACS712-20 (max. 20A)
- ACS712-30 (max. 30A)
- ACS758-050B (max. 50A – Bidirectional)
- ACS758-100B (max. 100A – Bidirectional)
- ACS758-150B (max. 150A – Bidirectional)
- ACS758-200B (max. 200A – Bidirectional)
- ACS758-050U (max. 50A – Unidirectional)
- ACS758-100U (max. 100A – Unidirectional)
- ACS758-150U (max. 150A – Unidirectional)
- ACS758-200U (max. 200A – Unidirectional)
Bidirectional – current can flow in both directions, unidirectional – current allowed only one way.
Note about MUI: Jetimodel’s current sensor MUI uses ACS758B, for example in MUI150 the sensor-chip is ACS758-200B.
RCT AmpSensor Features
- Voltage (V)
- Current (A)
- Capacity (mAh)
- Power (W)
- User selectable type of sensor-module, automatic settings
- User selectable voltage-range when making the sensor
- User calibratable current-measurement
- Possibility to keep capacity in memory between usage
How’s the size on RCT AmpSensor?
Here’s some pics to show you the idea, comparison to Arduino Pro Mini:
You can see the ACS758 module in the middle, to save space I cut the PCB a little, compare to uncut module above. Do not solder battery-wires to PCB, solder them directly to the ACS-chip itself. Comparing the size to MUI150 below will get you the idea:
Size-comparison to MUI150 reveals that since Jetimodel have everything on one PCB the MUI150 is thinner. Looking at width and length we are pretty close. But it does make a pretty small package.
Connection are easy and not that many. Littel thinking and you are able to make a neat package:
- ACS-Module VCC -> Arduino VCC
- ACS-Module GND -> Arduino GND
- ACS-Module Vout (or VO1) -> R3 100k resistor -> Arduino A3
For battery voltage measurement we need a voltage divider, here’s the resistor-values, schematic will tell you the rest:
- R1 11k, R2 1k for max. 60V (14S)
- R1 10k, R2 2k for max. 30V (6S)
- R1 2k, R2 1k for max. 15V (3S)
- R1 2k, R2 2k for max 10V (2S or Rx)
Voltage measurement is done from battery to R1, other end of R1 goes to Arduino A2 and R2, other end of R2 goes to Arduino GND.
For stabilizing Arduino’s reading of millivolts you should connect a 100nF capacitor between GND and A2 and another between GND and A3. These are not mandatory but will make for less fluctuating measurements so strongly recommended.
You also need the connection to Jeti receiver:
- Arduino 3 -> Receiver signal
- Arduino RAW -> Receiver positive
- Arduino GND -> Receiver negative
Optionally you can also use receivers Digital Output to reset values with Digital Output, connection is one wire
- Arduino 5 -> Receiver output defined as Digital Output
NOTE: Some boards have GRN where my boards have GND. Do NOT use GRN, use GND!
Connection schematic below says it all:
After building it’s time for the magic!
Programming Jeti AmpSensor
Go and get the suitable .hex or .ino (Named RCT-AmpSensor) file from my Github here. Easiest method is RC-Thoughts Firmware Uploader here + .hex-file. With Arduino and .ino you need to use the libraries included in Github repository. For info on how to use these look in DIY Sensor FAQ here or RFID-sensor how-to here.
NOTE: When updating from 1.0 to 1.1 you have to go to Jetibox, reset the sensor to defaults and then do the setup!
Jeti AmpSensor in Sensors
As usual, go to Main Menu -> Timers/Sensors -> Sensors/Logging Setup and do a sensor search. You will find a new sensor with four values to also put to your main screen:
Before you can start using AmpSensor some settings needs to be done. So head on to trusted Jetibox, and MX-screen, then down and you are in the AmpSensor:
Press right to get to first status-screen with current and used capacity for those Jetibox and Jetibox Profi-users:
Next screen to right is voltage and power:
As you see even the voltage is zeroed out at this point, we need to finish the settings first. So continue to settings pressing right:
Press Up or Down to scroll through the selectable Sensor module-options. When ready press right to select the voltage-measurement range:
Sensor defaults to 60 volt measurement, if you choose to use other settings make sure you have the corresponding R1 and R2 resistor-values. WARNING: Do NOT connect higher than here set voltage to voltage measurement. You WILL BREAK at least your Arduino! When done, press right:
This is the current calibration screen. This can be done after you have saved settings once, do not calibrate on first time. Usual accuracy for current is with one decimal, for diagnostic purposes here is two values shown. Arduino measures millivolts coming from ACS-module, due small differences in components this might be little off. So adjust with Up and Down-buttons the calibration value so the current-value just stays at 0.00A. My two ACS758’s had calibration values of -8 and -2 as an example. After done press right again:
You are now in voltage calibration screen. The steps are really small so change is also small. Measure the battery-voltage with multimeter and adjust if necessary. When done press right.
If you want to keep used capacity in RCT AmpSensors memory even after recycling power to model you can connect a receivers digital output to AmpSensor. Used capacity will always be added to previously used until digital output is used. More info below. After this, go again to right:
This is the last screen, I promise! Pressing Up and Down at the same time resets sensor to default values, pressing Right saves settings. In both cases sensor restarts automatically.
Setting up the Reset-function
If you chose to use the reset via Digital Ouptu you need to configure a channel for this. So let’s make one. Go to Function Assignment and create new function, here I named it as “FuelReset” (don’t get confused, recycling pictures, you know…), assign a control (switch for example) for it:
After this go to Servo Assignment and define a channel for the function, here it’s on channel 10:
Next power up the model, go to Device Explorer and Define one of your receivers to Digital Output in Pin Config, here I used OutputPin 4:
Last thing you need to do is to point the “FuelReset”-channel to OutputPin 4, so go to Device Explorer and outputs, define the FuelReset to OutputPin 4:
Make sure the channel-value is 100% and goes to -100% on reset.
Now you have it, capacity-value reset with a switch.
Q: How does it compare to MUI?
A: Pretty good actually. Remember, MUI is done with same components.
Q: “I have peaks in current, what’s the sensor I need to select?”
A: If you for example generally use a long term current of say ~80A and have peaks to ~160A I’d go with a ACS758-200B. No need to risk it and it might be good to know the peaks. A 150A module is enough and can take the beating but you will not know anything above 150A. (If ACS758 temperature is 80 degrees celsius it can take 900A for one second, should be enough.)
Q: What’s the most important thing?
A: Really good soldering on battery-wires. Look above for MUI-picture, you’re after that. Do not overheat the chip anyway.
- 1.0 Initial release
- 1.1 Added voltage calibration and current-reading is more stable with hardware-filter.
- 1.2 Improved small current measurement and total accuracy on capacity
Always make sure everything works as it should. Do not use faulty devices. neither RC-Thoughts and/or me are in any way liable or responsible for anything you do with your equipment or to others with equipment used as described here. You should never use LUA-apps for operation-critical functions.
If you find something that is not working or is behaving strangely please let me know. I’m a car-mechanic by training, not a programmer-geek :)
Most important thing
Is to have fun building and using, this will not bankrupt you in any way :)