Continue to Site

Welcome to our site!

Electro Tech is an online community (with over 170,000 members) who enjoy talking about and building electronic circuits, projects and gadgets. To participate you need to register. Registration is free. Click here to register now.

  • Welcome to our site! Electro Tech is an online community (with over 170,000 members) who enjoy talking about and building electronic circuits, projects and gadgets. To participate you need to register. Registration is free. Click here to register now.

Identify engine cranking event

Status
Not open for further replies.
I have to write a program where I need to identify engine cranking event. The input is battery voltage. How do I do it? Should I consider incremental decrement? I am confused since there is a possibility of voltage decreasing on applying some load? Any ideas how to do it?
 
An engine cranking event is by FAR the highest current demand the vehicle will see, it should be easy to detect the large drop in battery voltage.

Instead of the large increase of current Nigel?
 
Just prior to cranking, a properly-charged automotive lead-acid starting battery will have 12.5 to 13.4V.

Engine-running, a couple of minutes after start, said battery will have 14.0 to 14.8V.

During cranking, said battery will have <11V.

An automotive lead-acid starting battery that is sitting at <11.5V is so discharged that it likely will not start the engine, and needs to be recharged before cranking. The battery, or the vehicle's charging system needs attention.

That is why most of my vehicles, boat, airplanes have **broken link removed**...
 
Last edited:
Instead of the large increase of current Nigel?

It's a LOT harder to detect the current, as it usually requires breaking in to the thick lead to monitor the current. Although a better way is to amplify the voltage drop across the battery earth strap :D

But monitoring the battery voltage is trivial, and that is actually what his project requires him to do (according to his OP) :p
 
My requirement is something like this.
1. I read battery voltage for every 1 sec.
2. I run one simple algorithm every 1 sec.
3. I should not run the algorithm when the engine is cranking. The algorithm will start again after the alternator is on.
4.so basically I want to do a sort of prediction of engine cranking and stop the algorithm.
5. I was thinking of the rate of voltage fall will help me, but not sure?
6. Another difficulty I face is once cranked it may be unsuccessful.
7. I have access to battery current as well.
Is it possible to achieve this?
 
What type of battery current access do you have?
 
If current can be used (item 7 of your post #6)
Evaluating the cranking event is more simply approached by winding a coil onto the +ve cable of the battery.
Perhaps around 10 to 20 turns of around #28 to #18Awg wire should do it (use 10 first). Proceed to read the 'cranking pulse' induced into the coil with a comparator or a 555 configured as one to stretch the pulse for a better display.
The advantage of this approach is that it is isolated from the system and not subject to load dump events (ISO7637) which can destroy the sense circuitry!

Also, since you can use two comparators to assess the direction of current flow you WILL know if your cranking is successful because the battery will start to be charged by the alternator and the current flow will reverse. This current flow is an order of magnitude less than the cranking current and will require the comparator to detect it. An o'scope will assist greatly in determining the optimum winding to provide both signals at adequate levels. You can 'protect' from excessive pulses induced in the coil with a simple zener (5.1v?) diode clamp though.

EDIT: since u have to write some programming ( a uC?) , I'd suggest you use a uC with built in comparators to make programming simple. Although feeding external comparator outputs (logic level Vcc) into the logic inputs of ANY uC will also work.

The algorithm will be like this:
1) Detect cranking pulse. A continuous loop. Fall through to 2) after pulse has stopped.
2) Monitor for charge current within 2 seconds of cranking being stopped.
3) illuminate LED indicators to suit your detected event, then loop back to 1)

1) & 2) = Successful engine start

1) alone = Failed engine start
 
Last edited:
What type of battery current access do you have?
Through a current sensor which is connected to my ecu I can read the battery current and direction.

As suggested in the previous reply I cannot use additional hardware circuit. I can only do through software program with inputs as battery voltage and current.
 
Well use the current signal and the algorithm I suggested in post#8.
Just verify that the signals from the ECU are logic compatible with the micro first. If they are not, perhaps 0-12V rather than 0-Vcc (micro supply Vcc) then you WILL need a resistive voltage divider to adjust the signal. Perhaps resistors in the 2K to 10K region will be ok to use to not load the ECU output unduly.
If the current signal is analog and relative to the battery current you'll need to use the ADC in the micro to sample and assess it every few milliseconds in order to run the algorithm with proper inputs for the current.
 
I'd up that to 70+ amps. 20A can occur for things like the defogger or cigarette lighter and such.
 
Here I did a quick design with window comparators using LED's for reference voltages and indicators, which are entirely optional.

All you need is the top comparator (quad type) to indicate low voltage , the trigger for starter ON. and the bottom for ALTERNATOR ON.( engine running)

The string of 4 White LEDs like a 12V zener for detecting battery voltage as it cycles from starter ON below 11.5V and Alternator ON > 13.5V ( normally 14.2V)
play here

Of course you may use ADC and do this in a uC if you prefer and amplify the diode string current to 3V and even connect an analog Volt meter to show actual Vbat. with a more sensitive range than 0~15. The lower the current you put thru the LED's , Series R, the more accurate the voltage sense or quality of the Zener like characteristics. .i.e 0.1 ~ 2mA will be approx 2.8 to 2.95V ( work better than most Zeners at this current and voltage level) But I raised the current to make the simulator bright with 82R.

The 1 Ohm should be a polyfuse., the 5V Zener can be an LDO and the comparators can run off 5V and be open collector type with Red LEDs giving 5-2V= 3V logic level out or Op Amps as I selected here.

This is just a quick and dirty design..... TONY

The theory of operation is solely based on Vbat. to indicate 3 states, Starter ON, Engine Off/idle, Running.
 
Last edited:
any questions on my design?
 
Since your sampling rate is so slow, you may miss the event. But if during, then why not run the algorithm?

If voltage difference is significant lower i.e. more than -0.5V change and also less than 11.5V then start new algorithm to count duration. If duration is more than a few seconds, assume battery is under load from starter and/or very low SoC. If between 11.5 and 12.5 then Soc is 0 to 100% if between 12.5 and 13.5 more then assume it was running and switched off, then if 13.5 to 14.2 then assume engine is running ( idle to above ) if above 14.4 then consider over charge situation and Alternator needs attention.

Repeat new conditions by measuring more frequently to decide if state has changed again then return to slow sampling rate.
 
any questions on my design?
The simulation looks very good but it will take some time for me to understand. Thank you for the circuit.

Regarding the missing of the event I thought 1 second is sufficient to capture the event. I am not sure I have to verify by testing. I think my question is slightly wrong. I have to stop some calculations if engine is below some voltage or condition during cranking where voltage fluctuations are more. In case if I am not able to capture the event it is OK for me. I have put as suggested by you a condition if the voltage is in some range engine is on.
 
Status
Not open for further replies.

Latest threads

New Articles From Microcontroller Tips

Back
Top