Too much current draw by ACS712 5A sensor, weak voltage to be sensed.

Hello everyone.

Objective: I am working on a fairly simple looking IoT project, which mainly involves monitoring of power generated by vertical axis wind turbines. I am making a small-scale demonstration model, in which I'll be doing analysis on the collected data later. The main objective is monitoring only, not storage or power or charging of batteries, or anything of that sort.

Well, data analysis is a challenge for later part, and I am in my initial phase of my project where I am mainly testing out if things are working or not.

This is the first time that I am working on arduino, and I am absolutely new to electronics, but it still seems a lot interesting to me.

Situation: I am using small permanent DC motors commonly used in toys, like a lot of people use them for wind turbine projects and making DIY Anemometers. I have 6 of them with me. So, in my initial testing, I was supposed to make sure the voltage generated is below 5V before it goes to any of the analog input pins to be read. I first found out the polarity and maximum voltage that is generated by the DC motor with a multimeter, and the max voltage was around 0.37V which was still safely measurable by arduino's analog input pin. Moreover, the maximum voltage is a lot lower than 5V so, I did not use any resistors for Voltage Diver Circuits, so, the voltage is going directly to the arduino analog pin.

To go further, I wanted to see what is the current that the motor is generating. Here, I connected my DC motor to ACS712 5A Hall Effect Current sensor, and I was able to get some reading, stating the presence of measurable current, and of course, I had checked the amperage of the DC motor before connecting it to the sensors and arduino.

I am not writing the smoothening code to get the precise electrical measures for now, as I ran into a roadblock.

Problem: To move ahead, I decided to measure the power. For that, I connected the positive terminal of the DC motor generator directly to one of the analog pins to sense the raw value Voltage directly. Then the negative terminal to one of the Ground pins. Then to get the Current raw value, I connected the positive and negative terminals to ACS712 positive and negative terminals, respectively in parallel. (I know ACS712 can sense the current in both directions). I powered on the entire set up and got into Serial Monitor (and sometimes Serial Plotter). I was getting raw values of current. But the voltage showed 0 (zero) all the time. So, I suspected the wiring, it seemed to be ok. Then the most Obvious issue, a weak and inefficient generator! So, I changed the DC motor generator to the 1000RPM geared DC motor, and the similar (but not the same) issue popped up. This time I was getting 0 and a significant number of 1's in the voltage, slight improvement (and also to remind me that my generators are too weak!). I also noticed a very strange thing, that is the motor was having difficulty while rotating and was needing a significant amount of torque to rotate it and if I plug out either the voltage lead or the current lead, this strange issue for me was gone. But, I can't do that as I need to calculate power and not just current or voltage! So, I put the smaller non-geared DC motor, which I was using initially, to check what's the deal with that. I got my multimeter and put it across the terminals while running the entire setup again. And it was generating voltage but in millivolts. I had to set the multimeter to read that. It was reading somewhere around 1-2mV which is almost nothing, and the arduino cant sense that as it requires 0.004V (4mV) for its steps. It was having the issue of too much current being drawn that was slowing it down, but it was not that noticeable, as it required a lot less torque to rotate.

Constraints: I don't want to use different motors, as the other big ones require too much torque to rotate. My VAWT is not going to be that big in size, that put's another constraint on the motor upgrade. So, upgrading the motors is the last resort.

Other Info: I read somewhere that OpAmps can be used to amplify the voltage. Instrumentation Amplifiers are more preferred. So, if that is the way I can go, then at least I can get the signal to the arduino and I can measure the actual voltage in the code.

What do you suggest? Also, I have no idea about amplifiers and setting up the gain and all that and which one to use. I don't understand circuit diagrams that much. I have read other forum posts which required sensing pressure as well, and there were some ICs suggested there. But, I require your suggestion for my application.

Thank You in advance.

-Vikram

Measuring current without a load (except the A-meter) tells the short-circuit current of the generator. The power (P=U*I) drawn from the generator will be almost zero.

For reasonable measurement on a generator a load is required.

DrDiettrich: Measuring current without a load (except the A-meter) tells the short-circuit current of the generator. The power (P=U*I) drawn from the generator will be almost zero.

For reasonable measurement on a generator a load is required.

Thank you so much for such a quick reply.

So, where do I put the Load?

For an anemometer, you want to measure the [u]open circuit[/u] voltage of the motor, which is proportional to the shaft rotational speed.

You should use a small capacitor across the motor terminals (e.g. 100 nF or so) for smoothing, though, because of brush noise.

To protect ADC inputs, it would be sufficient to put a 10K Ohm resistor in series with the input. For reasonably low voltages (but > 5V), that limits the current through the input protection diode to a safe value.

The load is put in parallel to the V-meter, and in series with the A-meter. With a purely resistive load it's sufficient to measure either voltage or current, the other value is redundant.

jremington: For an anemometer, you want to measure the [u]open circuit[/u] voltage of the motor, which is proportional to the shaft rotational speed.

You should use a small capacitor across the motor terminals (e.g. 100 nF or so) for smoothing, though, because of brush noise.

To protect ADC inputs, it would be sufficient to put a 10K Ohm resistor in series with the input. For reasonably low voltages (but > 5V), that limits the current through the input protection diode to a safe value.

I did that using the multimeter and I got up to 0.37V.

I'll put a capacitor now.

And, I do understand the need to protect the ADC inputs. But, my voltage is already quite low. Also, you said putting the 10K Ohm resistor will limit the current. Is that necessary? (Sorry, for a dumb question. I am a bit confused as I used to think I just need to make sure that my input voltage should not go beyond 5V. But here you're talking about current and the diode. Can you please explain a little more? Thank You)

DrDiettrich: The load is put in parallel to the V-meter, and in series with the A-meter. With a purely resistive load it's sufficient to measure either voltage or current, the other value is redundant.

Yes Sir! I get that.

This is one physics experiment that we did in my school days.

So, is this the same thing that I am supposed to do with the arduino circuitry that I have?

Because I don't have any voltmeters or ammeters as such.

I am using that ACS712 in place of the ammeter and the voltage is sent to arduino through an analog pin. Am I supposed to place anything before that? Am I supposed to put any kind of resistor as a load before I connect the pin to the arduino?

If yes, then by doing so, won't it reduce the already low voltage that is going to the arduino to be sensed?

Also, you said putting the 10K Ohm resistor will limit the current. Is that necessary?

It is necessary if there is any chance that the voltage on the analog input could exceed 5.5V (for Vcc = 5V Arduino). Otherwise you could destroy the input, the Arduino or both.

Normally the analog inputs do not draw measurable current. However there is a protection diode on each input. If the voltage exceeds Vcc by about 0.5V, then that diode will conduct current. Hence the need for protection if outside voltage sources are applied.

If the input voltage remains < Vcc then the “protection resistor” does not affect the circuit.

Because I don’t have any voltmeters or ammeters as such.

Now is the time to buy a multimeter. It is essential.

jremington:
It is necessary if there is any chance that the voltage on the analog input could exceed 5.5V (for Vcc = 5V Arduino). Otherwise you could destroy the input, the Arduino or both.

Normally the analog inputs do not draw measurable current. However there is a protection diode on each input. If the voltage exceeds Vcc by about 0.5V, then that diode will conduct current. Hence the need for protection if outside voltage sources are applied.

If the input voltage remains < Vcc then the “protection resistor” does not affect the circuit.
Now is the time to buy a multimeter. It is essential.

jremington:
It is necessary if there is any chance that the voltage on the analog input could exceed 5.5V (for Vcc = 5V Arduino). Otherwise you could destroy the input, the Arduino or both.

Normally the analog inputs do not draw measurable current. However there is a protection diode on each input. If the voltage exceeds Vcc by about 0.5V, then that diode will conduct current. Hence the need for protection if outside voltage sources are applied.

If the input voltage remains < Vcc then the “protection resistor” does not affect the circuit.
Now is the time to buy a multimeter. It is essential.

I have a multimeter. And that is what i was using for testing the maximim voltage generated.

I have a multimeter.

Then why did you say "I don't have any voltmeters or ammeters as such."?

jremington: Then why did you say "I don't have any voltmeters or ammeters as such."?

Sorry for the confusion.

What I meant was I am not using voltmeter or ammeter to measure the electricity. I am using some sensors to connect to arduino. And I am doing that only if voltages are correct.

I have a multimeter, but that cannot be interfaced with arduino of course.

A digital A/V meter is for human reading, sensors and ADC do the same job for controllers. The basic circuit for taking the power measurement is the same.

Are you sure the output of your generator is DC ?