I have the basic Raspberry Pi/Uno/Power shield setup I use with my model railroad. I use a product called DCC++ and JMRI to provide control of the layouts features such as individual locomotive control, signaling, switching, etc and it works pretty good. As the layout grows I will need to add more power stations to supply the extended amount of track with power that comes with it. Additional power supplies will also make it possible to extend the number of locomotives used on the layout at one time. Usually we make a block of track and isolate it from the other blocks as we build our railroad. I would like to know if anyone knows how to add additional motor shields with their own externally connected power supplies to supply power to the additional blocks of track as the railroad grows. They would have to be connected somehow to the single Uno/Raspberry Pi to maintain control of the entire layout.
I power 30 locos, 400 wagons on 220 meter of tracks using 3 power units. You just divide the layout into several large units. Cut and isolate one rail to create those large separately powered parts. Make sure Your power units can withstand the momentary "short" when wheels are passing the gap between powersections, or make 2 gaps a short distance apart.
Thank you for the response. I understand how to make subdivisions for blocks of power. What I don't know how to do is make one Raspberry Pi/Uno base station provide control to more than one motor shield. To my thinking I could have a few motor shields at various physical locations on the layout all being controlled by the one Raspberry Pi/Uno "base station". Each motor shield on the layout would have it's own DC power supply to provide power to that particular block of track.
My model RR buddies tell me this can't be done for one reason or the other, no specifics, but I figure that there are some smart people out there who know how to do this. They tell me to suck it up and buy a dedicated system like Digitrax, Lenez, NCE, Easy DCC etc. All that adds up to a lot of money.
Yes, each powerblock has its own DC supply. The same coded signal, carrying loco-id + loco-power, should be sent to each powercenter. Nothing strange in that I think. I don't expet any need of intermididate amplifiers.
That signal should be broadcasted to all "transmitters", pwr units.
My first pwr central is an ECoS 5200 and the loco-orders are tapped from its outputs feeding 2 Littfinski DB-04 boosters.
As long as your power supplies are constrained (crowbar etc) to their nominal voltages, the most important thing is a common ground, and isolation where dissimilar voltages may meet.
Thorerik:
Thank you for the response. I understand how to make subdivisions for blocks of power. What I don't know how to do is make one Raspberry Pi/Uno base station provide control to more than one motor shield. To my thinking I could have a few motor shields at various physical locations on the layout all being controlled by the one Raspberry Pi/Uno "base station".
I find your use of the term "motor shield" confusing. It conjures up the image of one of those things that piggy-backs on an Uno. But it can't be that because your comments say that whatever you are referring to can also be used with an RPi.
Some time ago I did some experiments with using a few Arduinos to drive few h-bridge motor drivers for different sections of track - this was for a possible DC layout (to simplify wiring of Cab Control). I had in mind that they could also be used with DCC which would make changing between DC and DCC easy. The "client" decided to stick with traditional cab control.
I suspect you are faced with the same technical issue, and it may be at the root of the advice that "it can't be done".
The essential requirement is that the power signal from all the different drivers must be in phase. If all the drivers are working from the same PWM signal from a single Arduino then that will happen automatically. However if the PWM signals are being generated by different Arduinos (as in my experiment) then you will need some means to synchronize the Arduinos. There is a simple way to do that with one of the registers that controls the Timers. If this is where your problem lies I will look up the details.
...R