High Mileage Car Controller using Arduino

I am assisting a high school high mileage car team developing an automated control system that would help eliminate driver variability. The system, when switched on, would have to engage an electric starter of the small gas motor to start it, adjust the motor's throttle position via a server or actuator, until a max speed is reached (monitored via a halls effect sensor or reed switch), and then kill the motor. While the car is coasting, the controller would monitor speed until a min speed and repeat the process.

I feel that Arduino would be a good solution for this type of system, but am looking for advise or resources on this type of project.

smbenson: I am assisting a high school high mileage car team developing an automated control system that would help eliminate driver variability. The system, when switched on, would have to engage an electric starter of the small gas motor to start it, adjust the motor's throttle position via a server or actuator, until a max speed is reached (monitored via a halls effect sensor or reed switch), and then kill the motor. While the car is coasting, the controller would monitor speed until a min speed and repeat the process.

I feel that Arduino would be a good solution for this type of system, but am looking for advise or resources on this type of project.

The Arduino would work fine for this application.

  1. Use a relay or a DC SSR (solid-state relay - most are meant to control AC loads, but there do exist ones to control a DC load, which I assume the starter motor is), the relay controlled by the Arduino.

  2. Use an R/C servo (you'll want something pretty torque-y, likely, if you keep the throttle return spring hooked up) to control the throttle position; again the Arduino (and the Servo library) would serve well here.

  3. Monitor the speed like you said; or, if you can figure it out, monitor the spark or the magneto/coil to determine speed (doing this though will require conditioning of the signal and an optocoupler or something to isolate the high-voltage from the Arduino).

One other thing you are going to definitely want is an external (not connected to the Arduino) kill switch for the engine; should the servo get stuck, this will be vital.

im in the middle ( well, in the beguingin of a similar project )

http://arduino.cc/forum/index.php/topic,88632.0.html

cr0sh thanks for the info. As for speed sensing, I would probably use the a sensor placed on the frame and a magnet on the spokes of the wheel as the vehicle is using bike wheels. The engine is turned on and off during the 5 mile run in a run - coast - run type configuration. The problem is each driver does things differently, thus changing mileage from run to run. The competition is an average mpg over 3 runs. I am trying to reduce the variability on the bulk of the run using this type of system.

What would the be the best method for using the starter relay, setting a timer to power the relay on for a couple of seconds for the starter to engage and start engine and then turn it off? Or adding some sort of sensor that knows when the engine is running.

Thanks.

If the engine starts reliably, you might be able to get away with just cranking for a fixed time. But it would be better to detect when the engine is running so that you don't abuse the starter by cranking longer than necessary.

What sort of engine is it? The method of detecting engine running would depend on that.

You haven't mentioned the transmission. Is there some sort of one-way clutch so that the transmission will take care of itself as you start/stop the engine?

Detecting road speed based on a wheel sensor, and turning an electric starter motor on and off, all seems straight forward. You need to know how much current your starter needs to design the driver, but typical automotive starters are solenoid operated and can be triggered via a simple 30A relay that could be controlled via a small transistor from the Arduiono. (If it's an older inertia reel type starter it might need a bigger relay to drive it, but you probably don't want to go using one of them anyway.)

The engine is a small 2-3 horse ic engine like a lawn mower. Not sure what type of sensing would be required to determine if the motor has actually started to kill starter circuit.

It's chain driven with one way clutch, like a bike, so it free wheels when no power is applied.

Could you do something with sensing exhaust temp?

Also, for interests sake, how will you decide what throttle position you want when you're accelerating ?

smbenson: The engine is a small 2-3 horse ic engine like a lawn mower. Not sure what type of sensing would be required to determine if the motor has actually started to kill starter circuit.

It's chain driven with one way clutch, like a bike, so it free wheels when no power is applied.

You need some sort of RPM sensor. Is it a 4-stroke spark ignition engine? If so you would be able to detect engine rotation by the low voltage side of the coil. If that isn't feasible, you might need to fit a trigger wheel or similar.

Hi, I'm interested in the idea behind what you're doing, but I think you're going about it wrong.

I don't know what engine you're using, but almost none of the small engines I know of operate efficiently at WOT, there's huge efficiency gains to be made by better control of your air fuel ratio and timing being optimized for the rpm and load, as opposed to trying to lose pumping efficiency by turning the motor on and off. The power required to crank the motor over and over again to start it can only be supplied by either a very large battery, or a system to recharge it while in motion. The large battery is a weight penalty, the generator system will be a huge drag.

The small engines are almost universally set up with timing optimized for partial load, and WOT being rich to improve performance. Fuel economy is mostly a secondary concern as it concerns small engines.

You would be far better off to design a simplistic EFI system to improve the burn and keep the air fuel ratio constant at stoichiometric, and a mechanism to advance the timing under light load and retard it at WOT. I'm quite confident that the efficiency improvement, while using throttle to maintain speed, rather than start/stop would be much higher.

Of course, all the above is just my opinion. I do have many years of experience with motors, economy improvement modifications and so on.

Thanks for the good ideas for with a temp sensor on exhaust or voltage from coil. Things to discuss with the students.

Clarification for idea behind this system. These high mileage cars are for high school student build & drive competitions. This system is emulating the way the students currently operate the vehicles to obtain 400-600 mpg on average. The overall mpg is determined by the average of several runs of the car on a closed track. Different drivers of the vehicle, operate it differently. I.E. different acceleration rates, letting the car coast longer/shorter between power cycles, etc. This system is trying to eliminate some of this variability by controlling those variables (acceleration rate, max speed, min speed). If the system works properly, those variables can be tweaked to optimize the mpg and keep the runs very consistent even with different drivers.

mdkoskenmaki: The small engines are almost universally set up with timing optimized for partial load, and WOT being rich to improve performance. Fuel economy is mostly a secondary concern as it concerns small engines.

Pumping losses are minimised at WOT although that last 20% or so of travel probably don't make much difference. On a typical production car the engine would be optimised for maximum power at WOT. Since this is for a hypermiling project I assume the fuelling and ignition timing will be optimised for efficiency under whatever conditions the engine is used. I expect it would be more efficient to run the engine at full throttle, raising the gearing as necessary to drop the rpm and hence power to achieve the desired speed at WOT. If the engine won't run cleanly at those low rpms I think that running the engine intermittently would give better efficiency that running it under part load, as long as the fuel and ignition is optimised for efficiency.