New Project - Is Arduino Right For Me?

I have little to no practical experience with programming micro-controllers so this is probably quite an ambitious undertaking, but you've got to start somewhere, right?

My goal is to develop a system that can employ PWM to rapidly fire a number of (at least 4) automotive solenoid injectors and monitor one or more sensors. In doing so it should be able to:

  • Read solenoid control data from a map file (table in CSV most likely) - Am I going to need an SD card & shield for this?
  • Continuously read values from one or more attached sensors
  • Log data from the aforementioned sensors against map parameters (or just time, the rest can be done is post-processing)
  • Display instantaneous sensor data on an LCD along with other instantaneous parameters of solenoid operation (freq, pulse width, etc)

In the future I may wish to add further functionality in which the sensor data alters the system behaviour, but that is a long way off. My concern now is that I don't understand the nature of Arduino well enough to know if it is capable of performing the sensor monitoring tasks without disrupting the solenoid control - can anybody clarify this?

The system is not expected to synchronise the solenoid operation with any other process, simply to follow a predetermined sequence as defined in the map file. At this point I'm unsure as to how often each solenoid must fire, but I'd expect to be able to switch each solenoid with a 100Hz pulse while employing an LM1949 drive controller which is 200Hz capable.

Any advice would be much appreciated, I'm looking forward to a foray into the world of Ardunio if it can meet my needs!

What is your knowledge and experience level with electronics?

I'm an aerospace engineer by training and constant tinkerer with automotive systems, as such quite comfortable working with the hardware side of things, but my formal education in programming and control systems was a poorly taught module in MATLAB/Simulink so I'm a bit fuzzier on the computational side.

You will learn a lot, but it would seem that Arduino is the right tool for the job. It can do everything you mentioned, and as far as the programming is concerned it is one of the easier languages to learn, and because it is mostly C (with nice libraries and other added goodness) it could come in handy later on as well.

I would start with one aspect of the project at a time and incrementally add onto that once it workes.

The pulsed signal for the solenoid shouldn't be much of an issue, as 100Hz is very slow from an electrical sense. You could slow down the PWM pins as shown here, or you could just manually set the pins using you own code (this may be necessary to maintain the use of time functions).

Using either of these means of implementing the PWM, your code will have lots of time to read sensors (depending to some degree on what they are) and log data

There are lots of good LCD examples out there, so that part should be doable.

If you want your system to run away from a computer you would likely need some sort of SD card for your CSV file and log file. If you were just logging I would recommend the Sparkfun OpenLog as it is very quick and easy to use, but because you may want to read as well, you will want a true SD card shield. There are many good options. You can check out Sparkfun's quick start guide here for their SD card shield.