It may be possible to use an Arduino driving a relay board to use detection inputs to switch certain blocks to an asymmetric signal to stop the train. The only problem is this does not allow for reversing the train at the end of the line. It can run, making as many intermediate stops as you configure blocks for, and have relays for - relay switches between standard DCC and the asymmetric signal. But no way to change direction. For a loop arrangement this would work great. Wiring would be fairly simple - break one of the DCC bus wires into 2. One goes to one pole of each relay. The other goes through a diode and then to the opposite pole of each relay. Middle (moving) contact on the relay goes to one rail, which is gapped for each relay. Other rail is continuous and got back to the other booster terminal. Relay is on one poosition, that block is fed by plain DCC. Relay flips the other way, block is fed by an asymmetrical DCC signal and the train stops. Still need block detection inputs to the Arduino as well so you know when the loco hits a particular block so you know when to flip the relay and stop the train.
--Randy
Modeling the Reading Railroad in the 1950's
Visit my web site at www.readingeastpenn.com for construction updates, DCC Info, and more.
I'm not disagreeing with you Randy. But it's always good to have options. A cheaper/simpler solution (asymettric DCC or DC cutoff) might be the better one. As they say, there's more than one way to skin a cat. You just need to pick the right one.
Don - Specializing in layout DC->DCC conversions
Modeling C&O transition era and steel industries There's Nothing Like Big Steam!
The examples are out there for Arduino as a DCC command station, so that code is already developed and working. Instead of then trying to read back block occupancy via DCC (which means some interface bus - OpenLCB, CMRI, LocoNet), some form of block detection, either IR or even a comemrcial current sense solution like some NCE BD20's or RRCirKits BOD-8 can connect right to the Arduino inputs.
Not off the shelf or super easy, but fairly inexpensive (relatively) and totally standalone. A big Arduino like a Mega would have enough inputs to handle teh needed block detectiosn adn have some left over for perhaps some setup buttons to set the initial state and then start the automation.
As I mentioned, there is a ready to use commercially available solution from Tam Valley but for 2 trains on 2 different lines you'd need 2 of the units. Tradeoff is the Tam Valley unit is easy to connect to the tracks and configure, no real programming or electronics expertise needed.
Randy is right, a couple block detection systems would be needed. You could set it up running JMRI on a raspberry pi which is about $30 + the cost of the block detection board + interface unit. But writing the scripts takes some chops.Lenz also has it's assymetric DCC which allows you to programmatically stop a train with a couple of diodes.
Then there's the option of turning off alternate power mode like what I do. When a block switches to DC, the DCC chip automatically engages brake mode and stops the train till a valid DCC packet is found again.if (trainstopBlock == occupied && trainLeaving == false) {pin5(High); Wait(60);trainLeaving = true;pin5(Low)}
pin5 activates a DPDT relay on mine. High = DC to track. Low = DCC (default)
I have mo idea about JMRI and PC control, but concerning Arduino the answer is yes, it can be done. However, you will have to build a mini DCC command station around it.
You will have to install sensors to detect the locomotives once they pass a check point, and probably their direction to. The Arduino will send DCC signals to the desired locomotives to control their direction, speed and accelaration according the signals it receives and the desired operation schedule. These DCC signals are TTL, meaning 5V square signals. Therefore, a motor controller with a suitable power, or a commercial DCC booster, will be needed to process these signals and generate the appropriate voltage to operate the locomotives. And as mentioned previously, zou must separate this sections from the rest of the layot to avoid intereference between DCC commands.Summary, yes it is feasible if you are ready to do the effort.RegardsWalid
Randy to the rescue, again
I think RR&Co (Freiwald Software) is what I'm looking for. I might be able to get by with their basic (Bronze) version. The fully automated version seems a little pricey just for shuffling 4 trains back & forth on the same track.
I've never had any luck with JMRI scripts to run trains - plus you need block detection of some sort for it to work. RR&CO seems to work better for automation. But you still need block detections.
An Arduino could do this, a bigger one like the Mega would have enough ports to handle the block detectioon as well. These tracks would have to be isolated from the rest of the layout, as the Arduino would act as a DCC command station. Running DCC trains liek this is fairly complicated - I know of only one commercial product that can move the train back and forth with an optional middle stop, and that's the Tam Valley DCC Train Shuttle. Not cheap and you'd need two, one for each train.
DCC
DCC?
greg - Philadelphia & Reading / Reading
I'm adding two point to point rail lines to my layout, one short line for frieght & a second for interurban passenger service. The frieght line will have two (hidden) holding tracks and the passenger line four (hidden) holding tracks. I want to ramdomly shuffle trains back & forth between the holding tracks and the other end point of the line. I also want to slow the passenger trains to a stop gradually when they approach the station, stay there for a while, reverse, slowly starting again & head back to the hidden holding track. The point being to let these two point to point lines operate automatically by themselves.
Are Arduino appropriate for something like this or am I better off using something like JMRI & a PC?