Intro #
Electric Airsoft Gun (AEG), as the name suggests, uses electric current as a source of energy that is consumed by a motor to compress the spring that, when released, produces pressure that shoots the BB. For this reason, I do a lot of measurements of this physical quantity.
The electrical current is measured in Ampers and 1A is quite a substantial current. With our 12V airsoft batteries, this produces 12W of power. Airsoft motors, however, can draw tens of Ampers, taking even 1000W of power - that is more than your microwave uses!
With great power comes great responsibility so I feel obliqued to measure it properly. But as you can imagine, measuring such big currents is not a trivial task. The typical multimeter is only rated to up to 10A of current so we have to think about something else.
Measuring the current #
Contrary to the way we measure voltage, when measuring current we typically have to put our measurement device in series with the component. This means that the resistance of our measuring device will drop the source voltage according to the Ohms law. Even the resistance as small as 0.01 Ohm (that is the resistance of around 70cm/2.5feet of a 16AWG copper wire) would drop 1V (around 10 %) from our battery current at 100A. Even worse, the power is current times voltage so that would generate 100W of power that would have to be changed to heat. If you ever used an old-style 100W bulb, you know how hot it can be!
So to not interfere with our measured circuit, we need our resistance to in 1 milliOhm or smaller range. And that is where the hall-effect based sensors are good at. The ACS758 module I use has only 0.1 milliOhm of resistance and can measure up to 100A of current!
ACS758 #
The ACS758 sensor is measuring current using the hall-effect, which is a production of a magnetic field around a conductor in the presence of an electric current. It represents the measured value by a small voltage change on its output. The version of the sensor I use will change the voltage of the output by 20mV per each 1A of current. Since I use the bidirectional variant, the output voltage at 0A (no current) is half the supply voltage (which is around 5V in my case).
Oscilloscope #
The output of the ACS758 sensor is connected to an oscilloscope so that I can see the change of voltage (representing current) over time with a high sample rate and good precision. A typical screenshot from a measurement or a full-auto round looks like that:
I typically use two channels - the yellow one measures the current drawn from the battery, the blue one measures the voltage of the battery. Combining the two can be used to calculate the internal resistance of a battery. For now, let us ignore the blue chart.
In the background, we can see a grid. Each square of the grid usually represents 10A of current and 100ms (or 0.1s) of time. This is adjustable so the actual value is presented on the screen on places marked as A (the time unit per grid) and B (the current per grid).
Instead of counting pixels, I can use cursors which are two dotted lines marked with C on the screenshot. The lower one should always be set to the value of idle current as is shown on this screenshot. The difference between the cursors (so the increase of the current drawn compared to idle state) is marked with D. It might be negative if I swap the top cursor with the bottom by mistake.
The peak-to-peak current is marked with E. This value shows the difference between the lowest measured value (which is idle current) and the highest measured value which in this case is an inrush current caused by the motor spin up that can be observed 200ms (2 grids) from the left.
After the motor gets up to speed, the plot on full-auto takes a tooth-like shape. Each such “tooth” is one full piston cycle so we can also calculate the RoF. Just count the number of teeth in 5 consecutive grids (which is 500ms = 0.5s) and multiply it by 2 to get the Rounds Per Second value.
Calibration #
I use two methods of verification that the value ACS758 and my oscilloscope shows the value resembling the actual current in the circuit. I have measured the current with this setup and with two methods described below and they all showed the same results.
Known resistance #
If we take a known resistance and known voltage, using Ohms law, you can calculate the expected current - it is just the voltage divided by the resistance. I use a 1 Ohm beefy resistor so by connecting a fully charged 3 cell battery, I should take around 12.6A. At this current, with a decent battery, we can expect a voltage drop of around 0.15V so the actual current would be closed to 12.4A. But that can be measured precisely with a voltmeter.
Hall effect clamp current multimeter #
I use a UNI-T UT203+ multimeter at its 40A or 400A range, depending on the load. It is not perfect as it does its reading only around 3 times a second but it’s very good at measuring the current when it’s not changing (so for example the current with a known resistor or a motor at stale).
Precision #
You can see on the image that I get the 0.1A resolution. The actual precision is not that good, however. As can be seen in the picture, even at idle, the line drawn by the voltage measurements is a few pixels in height. I aim my cursors at the middle of this line but depending on where exactly I put the cursor, the values might be off by, say, 0.3-0.5A. Since I expect to measure currents above 10A, I don’t see this as a problem, though.