How reliable is Arduino in a commercial setting?

I'm the owner and builder of a large model railroad exhibit, the Choo Choo Barn, in Strasburg, PA and am looking in to using Arduino as a way of making some very intricate and involved animated scenes. I currently am using a lot of limit switches, timers and relays to make animations work. See my latest video here: The (completed!) Roll Back Tow Truck Animation at the Choo Choo Barn - YouTube It's an operating roll-back truck. The display is O-gauge, 1/4" scale.

The display operates 7-8 hours a day, seven days a week for 9+ months a year (the other months are spent cleaning and making new stuff). I have a lot of great ideas and am working on one right now for next year that will use motors and servos to animate a drag strip scene. My biggest fear is that Arduino is not "beefy" enough to handle this sort of thing. I would suspect that the scene will repeat itself every 5-10 minutes. I'm a newbie to this whole programmable chip thing and I have to learn a lot for this project to work but if and when it does, it will open a whole new world of really cool animations in the future. Did I mention that I also want to incorporate drag strip sounds like squealing tires?

So, is Arduino the way to go? Will it easily operate 4-6 servos and 3 DC motors, all at the same time, over and over again and again, all day long without any glitches? All of my present animations run without fail, some have been on the display for 50 years.

I thank you all for any help or wisdom you can give me.

This was discussed on another Topic recently. Google should help you find it.

As long as you stay within its limits the Arduino should be perfectly reliable.

If you are really concerned you could design your project so it only takes a minute to switch to another Arduino with the same program already loaded.

If there is vibration that might cause connectors to work loose you might need to consider one of the Arduino variants that allows soldered connections - but then that can't be swapped easily.

...R

Several folks have used one of these screw shields with a Mega to connect up lots of wires for model railroad setups.
54 IO connections.
Do you need to control higher voltages or currents? Adding other components may be needed.
http://www.crossroadsfencing.com/BobuinoRev17/

Here's what I'm working on, a little background story first.

Picture this! It’s a hot August night and two street rods are sitting side-by-side on a deserted, straight stretch of road, just outside of Strasburg. The fields on both sides of the road are filled with kids, just waiting for the action to begin. Both cars are gassed up, the drivers are cranked up, both bragging about how much faster they are than the other. A friend walks out in the middle of the road holding a white handkerchief high above his head, he’s the official starter. Both cars are teasing each other; fake starts, fish-tailing back and forth, blueish-white smoke, plus the smell of burning rubber. The starter takes his position; it’s time to put the pedal to the metal. The roar of the souped-up engines is deafening and just like that, the starter drops his hand and both cars lunge from the starting position, the coupe popping a wheelie, the sedan’s tires gripping the road and taking off like a bullet. The coup finally drops down and in a burst of speed, catches up to the sedan, mid track. Both are headed for the finish line, a quarter of a mile from the start when out of nowhere, the local police, with lights flashing and siren blaring, pulls out from his resting spot, pulling the plug on today’s races. Both street rods come to an abrupt halt, backing up to the starting line and calling it quits. Well, not really, they’re just giving the cop a little time to go about his business so the whole sequence of events can start all over again in a few minutes.

As I see it, I need the following: (parts of this have been started a few years ago)
1 servo to make the sedan fish tale
1 servo to make the coup fish tale
1 servo to make the coup pop a wheelie
1 servo to operate the starter’s arm (could be done with a motor instead)
1 motor to operate the chain drive of the sedan
1 motor to operate the chain drive of the coup
1 motor to operate the police car pulling out (could be a servo)
1 flasher unit for police car lights
1 voice chip for sound effects of cars
1 voice chip for police car siren

I have no problem making all the mechanical parts for the moving items. I’ve already made a “sled” that moves the cars and holds the hobby servos for the fish-tailing and the wheelie. The “sleds” are made of Plexiglass and ride inside two “U” shaped aluminum channels that are 6 feet long. I have two of these, one for each street rod. I’ll power the “sleds” with a chain drive, roller chain inside of industrial chain guide. I just bought an automobile power window motor that has a lot of torque, it pulls 3.5 amps at 12 Volts DC. If that won’t work, I’m sure I can find something that does. I’d like the cars to be able to change speed so that one can look like it’s overpowering the other. Everything must be timed just right; I strive for realism as much as I can. Plus, it all has to be fool-proof both mechanically and electronically, I can’t work seven days a week and I don’t have anyone that’s reliable enough to do any repairs, other than myself. I build it, I fix it!

I'll post some pics of what I started 13 years ago as soon as I figure out how to do it.

ChooChooBarn:
Here's what I'm working on, a little background story first.

Picture this! It’s a hot August night and two street rods are sitting side-by-side on a deserted, straight stretch of road, just outside of Strasburg. The fields on both sides of the road are filled with kids, just waiting for the action to begin. Both cars are gassed up, the drivers are cranked up, both bragging about how much faster they are than the other. A friend walks out in the middle of the road holding a white handkerchief high above his head, he’s the official starter. Both cars are teasing each other; fake starts, fish-tailing back and forth, blueish-white smoke, plus the smell of burning rubber. The starter takes his position; it’s time to put the pedal to the metal. The roar of the souped-up engines is deafening and just like that, the starter drops his hand and both cars lunge from the starting position, the coupe popping a wheelie, the sedan’s tires gripping the road and taking off like a bullet. The coup finally drops down and in a burst of speed, catches up to the sedan, mid track. Both are headed for the finish line, a quarter of a mile from the start when out of nowhere, the local police, with lights flashing and siren blaring, pulls out from his resting spot, pulling the plug on today’s races. Both street rods come to an abrupt halt, backing up to the starting line and calling it quits. Well, not really, they’re just giving the cop a little time to go about his business so the whole sequence of events can start all over again in a few minutes.

As I see it, I need the following: (parts of this have been started a few years ago)
1 servo to make the sedan fish tale
1 servo to make the coup fish tale
1 servo to make the coup pop a wheelie
1 servo to operate the starter’s arm (could be done with a motor instead)
1 motor to operate the chain drive of the sedan
1 motor to operate the chain drive of the coup
1 motor to operate the police car pulling out (could be a servo)
1 flasher unit for police car lights
1 voice chip for sound effects of cars
1 voice chip for police car siren

I have no problem making all the mechanical parts for the moving items. I’ve already made a “sled” that moves the cars and holds the hobby servos for the fish-tailing and the wheelie. The “sleds” are made of Plexiglass and ride inside two “U” shaped aluminum channels that are 6 feet long. I have two of these, one for each street rod. I’ll power the “sleds” with a chain drive, roller chain inside of industrial chain guide. I just bought an automobile power window motor that has a lot of torque, it pulls 3.5 amps at 12 Volts DC. If that won’t work, I’m sure I can find something that does. I’d like the cars to be able to change speed so that one can look like it’s overpowering the other. Everything must be timed just right; I strive for realism as much as I can. Plus, it all has to be fool-proof both mechanically and electronically, I can’t work seven days a week and I don’t have anyone that’s reliable enough to do any repairs, other than myself. I build it, I fix it!

I'll post some pics of what I started 13 years ago as soon as I figure out how to do it.

Sounds like a great project and very doable

Maybe think about an automatic reset of the arduino each time it passes a certain point - so lets say the sled gets back to the start - just before it gets there it trips a relay that gives a time delay of (say 2 sec) which then cuts the power to the arduino and forces a restart - effectively each time you run the simulation you are starting off with a "fresh" arduino and you therefore know that you will not have any memory issues, variables left in an unknown state etc.

Also make sure when building this that you use a timer based approach with non-blocking code rather than using delays everywhere

Craig

Hey Craig,

That's the kind of information I need before I even get started with the Arduino part. I was really worried about it "hanging up" but I understand the reset instead of the loop. The whole scene will have a battery backup just in case of a power failure or brown-out while we are open. I'm also worried about what would happen if things got stuck in the middle of the procedure. The rollback truck at the top of this post has all 24V DC components with a 24 volt burglar alarm battery backup so if there's a drop during the day, my relays are not affected at all.

My plan included an the Arduino looking at a pin to see if it was high at the very start of the program. It would be a simple on-off switch on my control panel that would be turned on in the morning. If it was high, that would mean that the program is allowed to continue, if it wasn't high, the program would go into a loop that would keep looking for that pin to be high. If the pin was low, it would also light an LED on the control panel to tell the operator that they can shut everything down for the night.

I'm a newbie at this so I'll have to research the "use a timer based approach with non-blocking code rather than using delays everywhere" idea. I bought "Arduino For Dummies" just to get my brain started. I've been trying to find someone around my area that has some working knowledge of programming that I can tap for some help.

I think the timer would work great, it would give me my "wait" between each "show". I'd like there to be a 5 minute wait time between the end of the sequence and the whole thing starting over again.

To Crossroads,
I'll most likely be looking into the MEGA screw shield. Believe it or not, even screws will eventually vibrate loose over time given erratic behavior sometimes. Thanks for the tip.

The first pic shows one car from the side. Here you can see the two servos that operate the fishtailing and the wheelie.

The second pic shows the two cars side by side. My original design used servos for the lineal movement but I’ve since decided to use the DC motor and chain drive idea.

Also, the finished product will be closer together due to space limitations on the display.

0211_hotrod.jpg

0222_cars.jpg

You could always solder the wires into boards with no headers.
I think some of the Arduino models ship like that.
If you don't need quite so much IO, I have a '1284 based board with 32 IO. I don't know how much IO the voice chips need.
You may want to look at an MP3 type card there for cleaner sound, playback from an SD card with MP3 chip.
http://www.crossroadsfencing.com/BobuinoRev17/


MP3 card
http://www.mdfly.com/index.php?main_page=product_info&cPath=9_53&products_id=284

ChooChooBarn:
Hey Craig,

That's the kind of information I need before I even get started with the Arduino part. I was really worried about it "hanging up" but I understand the reset instead of the loop. The whole scene will have a battery backup just in case of a power failure or brown-out while we are open. I'm also worried about what would happen if things got stuck in the middle of the procedure. The rollback truck at the top of this post has all 24V DC components with a 24 volt burglar alarm battery backup so if there's a drop during the day, my relays are not affected at all.

My plan included an the Arduino looking at a pin to see if it was high at the very start of the program. It would be a simple on-off switch on my control panel that would be turned on in the morning. If it was high, that would mean that the program is allowed to continue, if it wasn't high, the program would go into a loop that would keep looking for that pin to be high. If the pin was low, it would also light an LED on the control panel to tell the operator that they can shut everything down for the night.

I'm a newbie at this so I'll have to research the "use a timer based approach with non-blocking code rather than using delays everywhere" idea. I bought "Arduino For Dummies" just to get my brain started. I've been trying to find someone around my area that has some working knowledge of programming that I can tap for some help.

I think the timer would work great, it would give me my "wait" between each "show". I'd like there to be a 5 minute wait time between the end of the sequence and the whole thing starting over again.

To Crossroads,
I'll most likely be looking into the MEGA screw shield. Believe it or not, even screws will eventually vibrate loose over time given erratic behavior sometimes. Thanks for the tip.

Based on your need for sound you may be better off looking at the Due or some of the new clones coming out - in particular the Digix (do a search on the internet) as this provides DAC onboard for sound generation from SD cards etc.

Get yourself a small board to start with a start playing - i am relatively new to Arduino and i found that i wanted a "development" environment that was identical to my production environment so i could test things side by side and then move them into "production". I therefore bought two Mega2560's - for around $30 each you can not really go wrong.

Once you have a fairly simple sequence written in the Arduino then the chance of it hanging up appears to be minor - one way to mitigate this would be to have multiple Arduinos doing different tasks and then a master controller sequencing them and being the traffic controller - that way if the board doing the servos hung up - it would not stop the whole process.

In terms of your master switch - i would have one somewhere and an LCD display (or even something like this in the operators face)

It could give a countdown to when the next show is going to commence so he would know that he had turned the key/switch on and could provide visual feedback to the audience what was expected.

It may also be worthwhile to have an "override" button - something goes horribly wrong in the middle of the show - it would then tell the arduino to gracefully bring everything back to their starting positions and flash some message that there was a problem

I would also have code that detected how long a show was meant to run and keep track of that - if a switch at the end of the track had not been tripped within that timeframe (again something gone horribly wrong) then it would stop everything and flash a help message or reset to the start again.

In terms of the non-blocking code - have a look at the blinkwith delay and blinknodelay examples to see what i mean and set them up on a breadboard to see the practical effect

Craig

Wow, I loved your video! What are the drive electronics in the lower left corner?
When I was in the chem engineering business we used 'programmable controllers' to replace relays, timers, etc. The Arduino beats them on price by a wide, wide margin.

is Arduino the way to go?

You still need motors, relays, wiring, etc. How much effort or cost does the Arduino save? Maybe not much.

The Arduino will be a big gain if:

  1. You can simplify mechanisms with servos and stepper motors. Potentially a very big time & space saver. For example, they can easily eliminate the need for hanging counter wieghts. Servos have internal gear trains and a host of standard mechanical addons from the RC hobby industry. Be sure to look here for ideas: http://www.servocity.com/

  2. Multiple animations rather than just one. Easy with software, often impossible with hardware only solutions.

  3. More life like animations that add little quirky movements that are part of the real world. Servos and steppers can add realism at no additional hardware cost. But see software(5) below.

  4. Dynamic animations that are effected by inputs. For example, one or more big buttons that children (including we overage kids) can push to effect the animation.

  5. Software expertise. Are you comfortable with programming or can you lasso some eager young highschool hotshot? You need a software state machine. Not quite the usual Arduino program, but certainly doable.

I do not think he should start with a state machine - too complicated for a newbie to grasp - better off building it up in stages and then once comfortable come back and re engineer in parallel into a state based system.

I think he wants to do some of this as a learning exercise - but you are right someone to lean on would help - then again with this forum here i am sure all of this can be done "in the cloud" without needing someone to put actual hands on for him.

Craig