Hi All,
I'm in the process of designing a monitoring system and auxiliary battery controller for use in a car. I've developed the attached schematic, which is intended as a fairly high level overview of my plan. I haven't fully specified components yet as I don't want to do that until Im fairly confident the idea is sound and free of obvious flaws.
System Requirements:
- Monitor main and auxiliary battery voltages, display on LCD screen
- Connect the auxiliary battery only when the engine is running
- Disconnect the auxiliary battery if the starter motor is engaged
- Monitor the coolant level by way of a sensor in the expansion tank (vehicle uses a pressurised expansion tank), sound an alarm and provide an on-screen alert if the coolant level is too low
- Monitor the cylinder head temperature using a thermocouple, display on screen. Sound an alarm if the temp exceeds a preset value
- Sound an alert if the main battery voltage falls below a preset value
The battery voltages will be monitored using a 1:16 voltage divider with a 1.1v internal reference value. This will allow the internal clamping diode to handle a transient spike of up to 225v.
The engine ignition on state and starter motor are monitored via optocouplers (can someone recommend a suitable optocoupler for this application).
The output will use a Sainsmart LCD shield. This has built in navigation buttons which use a resister divider network to need only one input for a number of buttons. The LCD display will need to be mounted about one meter away from the controller, I'll probably use shielded cat 5 cable for that connection, but I will test this ahead of time. If the connection length is an issue, I might put a second arduino in the LCD housing and use I2C or similar to drive the display.
I haven't yet determined what is the best way to power the arduino in an automotive environment. At the moment I'm considering using either a USB cellphone charger or a buck converter module.
The software side of things doesn't worry me (I work in IT and have done a fair amount of programming including other Arduino projects), but I am less confident with the electronics, and that's where I'm after feedback/suggestions from this community.
Thanks,
JtK.
P.S. Please forgive the fairly poor schematic layout, I'm new to using Fritzing.
I am not sure but I think the voltage divider R in is a little bit high. Others may be able to confirm if so.
I would want the isolation to happen before the starter is operated. Otherwise there may be huge current draw through the MOSFET. In many vehicles the accessories are switched off when you operate the key to start. You may look at using that for your input as it happens before the motor relay operates.
You could simply wait until the motor has been running for a set period & the main battery is up to voltage. You don't want to be charging the auxiliary until the main battery is charged.
How are you going to monitor the coolant level? What is the expansion tank level going to tell you? It may be full but the engine empty due to a radiator leak.
Any optoisolator will work for your usage.
Weedpharma
weedpharma:
I am not sure but I think the voltage divider R in is a little bit high. Others may be able to confirm if so.
I would want the isolation to happen before the starter is operated. Otherwise there may be huge current draw through the MOSFET. In many vehicles the accessories are switched off when you operate the key to start. You may look at using that for your input as it happens before the motor relay operates.
You could simply wait until the motor has been running for a set period & the main battery is up to voltage. You don't want to be charging the auxiliary until the main battery is charged.
How are you going to monitor the coolant level? What is the expansion tank level going to tell you? It may be full but the engine empty due to a radiator leak.
Any optoisolator will work for your usage.
Weedpharma
Thanks for that.
The voltage divider was discussed here: Voltage Divider with Zener Protection Diode - Automotive Application - General Electronics - Arduino Forum The idea being a 16:1 divider removes the need for external protection diodes as it would allow the internal clamping diode to deal with the expected spikes.
I'd prefer to isolate the battery until the engine is started, but I haven't been able to come up with a method to determine if the engine is running or not. I'll investigate the accessories power and also do some more research into how other systems handle it.
EDIT: Thinking this through, I could just isolate the aux battery if the main battery voltage is less than 13.5v. I'd expect to see at least 13.7 when charging, which would indicate the alternator is running. So the logic would be to monitor the main battery voltage, once it's >13.5 (or whatever) for more than say five minutes, connect the aux battery. Disconnect the aux battery when the main battery voltage is <=13.5.
This has the added advantage of removing the two optocouplers and associated wiring.
The vehicle is a Mitsubishi Delica, which has the expansion tank arranged such that it is not the highest part of the coolant circuit. If it falls below the minimum level, that would indicate unacceptable coolant loss somewhere in the system.