I am designing a project with 3 daisy-chained Arduinos connected to a desktop PC as server through RS-485 serial interface. This is a noisy industrial environment and the farthest Arduino is some 30 meters of cable away from the server. The server checks periodically if the Arduinos are alert. If an Arduino hangs, the server has to reset it. What is the right way to reset an Arduino remotely?
I have 2 free twisted pairs in the interconnecting UTP cable (CAT-5e). What I don’t want to:
I don’t want to interconnect the grounds of two remote devices (to avoid ground loops).
I don’t want to use a TTL signal, because its noise protection is poor.
Do you have a simple and good solution? The project is complex enough and I would prefer to minimize the complexity of the circuit
What occured to me is to use LVDS (low-voltage differential signalling). Like DS90LV019. It is an unknown field to me but does not look very complicated.
The watchdog timer watchdog-timercan reset the processor if it hangs without any outside signal. The best solution is to find out why they hang and fix the problem instead of applying bandaids.
I could not agree more. If something is wrong with the brakes of my car, I take it to the mechanics. Still I have a second break circuit and the hand brake as last resort. I would not call it bandaid.
In my application a damage in the order of 5000 USD may occur if the Arduino hangs in the wrong state.
The Arduino is a toy, intended for learning and experimentation. The boards are not properly designed for an industrial environment and the software is of widely varying reliability, with some of the libraries being very buggy.
It seems pretty silly to depend on this system to control anything expensive, but at the very least, all data connections must be made through optocouplers.
The Arduino may be for learning etc, but the Atmega MCUs are widely used in industrial applications and I would have no worries about their reliability in a system with proper hardware and software design.
The watchdog timer is the equivalent of the hand-brake.
In my understanding Arduinos are originally for prototyping. To put together something quickly and if you verified the operation then you can make a board with all the components you need. Later people started to use them as a toy. What other MCU would you use to control something expensive?
kgyd:
What other MCU would you use to control something expensive?
There is nothing wrong with the MCUs that the Arduinos use. But the actual Arduino boards have not been designed for harsh environments. In particular the pin sockets are not as good as soldered or screw connections.
As you said yourself, prototype using the convenience of an Arduino board and then build a more robust equivalent for production use.
Robin2:
There is nothing wrong with the MCUs that the Arduinos use. But the actual Arduino boards have not been designed for harsh environments. In particular the pin sockets are not as good as soldered or screw connections.