Sean Posted August 26 Posted August 26 (edited) rather predictably I am back after a long hiatus and have been plugging away at a new project! I am finally at the stage where im happy to share it with the world. I like my micro projects, because im far more likely to actually see them through, the lack of a running loop tends to frustrate me though. Im also not a fan of ovals that are 4 to 5 feet wide as ive always seen them as a terribly bulky and sometimes hard to reach across.. so messing around in railmodeller and i came across marklin 2210 which ive apltly nicknamed radius 0 as it seems like it would be the next size down from first radius in the set track system. this gives me an overall size of around 2.5 x 3.8 feet, a very portable size! Initially this was just going to be a simple experiment oval to see what would actually run on it with some time spent on detailed scenics however during the planning phase i got carried away with several different siding ideas and thought sure lets try and squeeze in a siding, which turned into an inglenook and so on. I can just about get some 42 flats around this but any passenger stock will be out of the question. In terms of era and location it was decided fairly early on for it to be a very generic scene that could be anywhere in ireland and that neither modern nor old stock would look out of place on it, it was finally decided to focus on a 1970's or 1980's aesthetic but as i wasnt actually alive to remember either of those decades artistic license can be used somewhat and there wont be any hard of fast rules. I have enough loose coupled wagons and nowhere to put them! so without further ado! Heres my overall trackplan and despite it looking quite sparse there is actually going to be more going on than meets the eye. there will be lit signals, motorised points, block detection and even possibly some automation down the line! Lets assume there is a loco parked on the spur playing yard pilot and 3 random wagons in any of the 2 sidings but the "line" cannot have any wagons parked on it by the pilot because there are trains passing through frequently, let's also assume that there is another loco with 5 vans plus a brake van working the "line" This gives us 2 different games plus a running loop for times of boredom. the loco pulling 5 plus a brake van can be ran on a loop, it can also stop into the yard and play the inglenook game using the 3 sidings while the pilot simply waits around before he can play the inglenook game however he must shunt the brake van down onto the bottom siding in order to have enough space to shunt. once the inglenook game is complete the train leaves the yard and either goes back to doing its loop or it simply stops in the fiddle yard. When the line loco is in the fiddle yard the pilot loco will be able to shunt wagons between the yard and outer siding in a tuning fork formation but he will have to stop and goto the spur when a train comes to pass through the yard. in time id like to see if i could automate the line train to stop in the fiddle yard for 5 minutes before coming again following the pilot to be driven around by a human in the interim! IMG_2678.MOVIMG_2678.MOV Edited August 26 by Sean 17 1 Quote
Galteemore Posted August 26 Posted August 26 Fab stuff. You can easily get away with 4w wagons on such a layout, whereas, as you’ve realised, long bogie coaches will overhang and look odd. On such a layout, less is more when it comes to scenery, but the tiny details such as lever frames or point rodding will make it come alive. Careful placement of the few buildings is also key to avoiding the overcrowding effect. I think this will be a brilliant layout - I’m also a micro fan for various reasons. Too many large layouts end up on the boulevard of broken dreams and I suspect I’d be on it before long! As Louis MacNeice remarked ‘And because one feels that here at least one can, Do local work which is not at the world's mercy And that on this tiny stage with luck a man Might see the end of one particular action.’ He was talking about politics but it applies to micros! 4 Quote
Tullygrainey Posted August 26 Posted August 26 (edited) A great start! This should be an enjoyable layout to operate. I like that cottage/farmhouse. The one with (Paddy Hopkirk's?) Monte Carlo mini parked outside. Scratchbuild? The cottage not the car Edited August 26 by Tullygrainey Quote
DJ Dangerous Posted August 26 Posted August 26 Smashing stuff, @Sean! Great to see that you're getting locos and stock around such tight curves. Maybe A/S have a job opening for a tester. 1 Quote
west_clare_wanderer Posted August 26 Posted August 26 I love this! You've obviously put a lot of thought into operation, which will only help bring the project to fruition. It looks like you're using a three-way point. What make is that - Peco, or Märklin again? Keep on sharing! Quote
Sean Posted August 27 Author Posted August 27 (edited) 20 hours ago, Tullygrainey said: A great start! This should be an enjoyable layout to operate. I like that cottage/farmhouse. The one with (Paddy Hopkirk's?) Monte Carlo mini parked outside. Scratchbuild? The cottage not the car Believe it or not thats a hornby product straight out of the box! and so is the shed. 19 hours ago, DJ Dangerous said: Smashing stuff, @Sean! Great to see that you're getting locos and stock around such tight curves. Maybe A/S have a job opening for a tester. getting everything around it so far except the ballast chassis as the couplings are bunching up as a result of them not moving, pretty much anything with moving couplings goes around it without any fuss whatsoever. 13 hours ago, west_clare_wanderer said: I love this! You've obviously put a lot of thought into operation, which will only help bring the project to fruition. It looks like you're using a three-way point. What make is that - Peco, or Märklin again? Keep on sharing! Its actually all peco code 75 i lifted from the loft, I just used the marklin sizing as a template to make the curve and it worked out well Edited August 27 by Sean 3 1 Quote
Sean Posted August 27 Author Posted August 27 23 hours ago, Galteemore said: Fab stuff. You can easily get away with 4w wagons on such a layout, whereas, as you’ve realised, long bogie coaches will overhang and look odd. On such a layout, less is more when it comes to scenery, but the tiny details such as lever frames or point rodding will make it come alive. Careful placement of the few buildings is also key to avoiding the overcrowding effect. I think this will be a brilliant layout - I’m also a micro fan for various reasons. Too many large layouts end up on the boulevard of broken dreams and I suspect I’d be on it before long! As Louis MacNeice remarked ‘And because one feels that here at least one can, Do local work which is not at the world's mercy And that on this tiny stage with luck a man Might see the end of one particular action.’ He was talking about politics but it applies to micros! some great points here and we are on the same page about keeping things minimal and sparse! I wont be adding any more buildings than this and even the house was an unplanned impulse buy but it works here so im glad i grabbed it. Just about to finish off the backscene in wood rather than foam and then i have a nice photographic backscene to mount, after that im thinking a lot of greenery and a decently long counry road serving the yard and house, initially a level crossing was planned but even now im probabaly going to downgrade it to a crossing gate. 4 Quote
Sean Posted August 31 Author Posted August 31 Little big update is due. It has been a very busy week. Heres an idea of an automated running session I have been crafting with the help of an AI, no idea if its going to actually work or not though // Aliases ALIAS(MAIN_LOCO, 3) ALIAS(SHUNT_LOCO, 4) ALIAS(HEADSHUNT_BLOCK, 1) ALIAS(APPROACH_SENSOR, 100) // Before headshunt, counterclockwise approach for ROUTE(10) ALIAS(EXIT_SENSOR, 101) // After headshunt, bidirectional ALIAS(SIDING_SENSOR, 102) // In first siding, counterclockwise entry ALIAS(SECOND_SIDING_SENSOR, 103) // In second siding, counterclockwise entry ALIAS(HEADSHUNT_SENSOR, 104) // Middle of headshunt, for shunting loco ALIAS(BACKSCENE_SENSOR, 105) // In backscene, for counterclockwise stop/signals ALIAS(ENTRANCE_SENSOR, 106) // At entrance from backscene, for signals ALIAS(DIRECTION_BUTTON, 108) // Button to toggle signal direction ALIAS(DIRECTION, 0) // 0 = counterclockwise signals (startup default), 1 = clockwise signals ALIAS(SIDING_TURNOUT, 1) // First siding: THROW=oval, CLOSE=siding/headshunt, DCC address 1 ALIAS(SECOND_SIDING_TURNOUT, 2) // Second siding: THROW=oval, CLOSE=siding/headshunt, DCC address 2 ALIAS(SIGNAL_1, 300) // Signal 1 at headshunt exit (red/green) ALIAS(SIGNAL_1_RED, 50) // Pin for Signal 1 red ALIAS(SIGNAL_1_GREEN, 51) // Pin for Signal 1 green ALIAS(SIGNAL_2, 301) // Signal 2 at backscene entrance (red/green) ALIAS(SIGNAL_2_RED, 52) // Pin for Signal 2 red ALIAS(SIGNAL_2_GREEN, 53) // Pin for Signal 2 green ALIAS(SIGNAL_3, 302) // Signal 3, red unless headshunt free and turnouts thrown ALIAS(SIGNAL_3_RED, 48) // Pin for Signal 3 red ALIAS(SIGNAL_3_GREEN, 49) // Pin for Signal 3 green // Sensor definitions (IR modules and button) HAL(SENSOR, 100, 22, 1, ACTIVE_LOW) // APPROACH_SENSOR, IR module, pin 22, pull-up, active low HAL(SENSOR, 101, 23, 1, ACTIVE_LOW) // EXIT_SENSOR, IR module, pin 23, pull-up, active low HAL(SENSOR, 102, 24, 1, ACTIVE_LOW) // SIDING_SENSOR, IR module, pin 24, pull-up, active low HAL(SENSOR, 103, 25, 1, ACTIVE_LOW) // SECOND_SIDING_SENSOR, IR module, pin 25, pull-up, active low HAL(SENSOR, 104, 26, 1, ACTIVE_LOW) // HEADSHUNT_SENSOR, IR module, pin 26, pull-up, active low HAL(SENSOR, 105, 27, 1, ACTIVE_LOW) // BACKSCENE_SENSOR, IR module, pin 27, pull-up, active low HAL(SENSOR, 106, 28, 1, ACTIVE_LOW) // ENTRANCE_SENSOR, IR module, pin 28, pull-up, active low HAL(SENSOR, 108, 29, 1, ACTIVE_LOW) // DIRECTION_BUTTON, button, pin 29, pull-up, active low // Turnout definitions TURNOUT_DCC(1, 1, 0) // First siding turnout, DCC address 1 TURNOUT_DCC(2, 2, 0) // Second siding turnout, DCC address 2 // Signal definitions (2-aspect, red/green) SIGNALH(SIGNAL_1, SIGNAL_1_RED, SIGNAL_1_GREEN) // Signal 1 at headshunt exit SIGNALH(SIGNAL_2, SIGNAL_2_RED, SIGNAL_2_GREEN) // Signal 2 at backscene entrance SIGNALH(SIGNAL_3, SIGNAL_3_RED, SIGNAL_3_GREEN) // Signal 3, red unless headshunt free and turnouts thrown // Initialize signals and direction at startup STARTUP(GREEN(SIGNAL_1)) STARTUP(GREEN(SIGNAL_2)) STARTUP(RED(SIGNAL_3)) // Initialize Signal 3 to red STARTUP(SETVAR(DIRECTION, 0)) // Ensure counterclockwise signaling at startup // Sequence to check Signal 3 state SEQUENCE(CHECK_SIGNAL3) IFRESERVED(HEADSHUNT_BLOCK) RED(SIGNAL_3) // Headshunt occupied, set red ELSE IFT(SIDING_TURNOUT) // Check if first turnout is thrown (oval) IFT(SECOND_SIDING_TURNOUT) // Check if second turnout is thrown (oval) GREEN(SIGNAL_3) // Both thrown and headshunt free, set green ELSE RED(SIGNAL_3) // Second turnout not thrown, set red ENDIF ELSE RED(SIGNAL_3) // First turnout not thrown, set red ENDIF ENDIF DONE // Trigger Signal 3 check on block or turnout changes ONRESERVE(HEADSHUNT_BLOCK) FOLLOW(CHECK_SIGNAL3) DONE ONFREE(HEADSHUNT_BLOCK) FOLLOW(CHECK_SIGNAL3) DONE ONTHROW(SIDING_TURNOUT) FOLLOW(CHECK_SIGNAL3) DONE ONCLOSE(SIDING_TURNOUT) FOLLOW(CHECK_SIGNAL3) DONE ONTHROW(SECOND_SIDING_TURNOUT) FOLLOW(CHECK_SIGNAL3) DONE ONCLOSE(SECOND_SIDING_TURNOUT) FOLLOW(CHECK_SIGNAL3) DONE // Button to toggle signal direction ONACTIVATE(DIRECTION_BUTTON) IF(DIRECTION, 0) SETVAR(DIRECTION, 1) // Switch to clockwise signal logic ELSE SETVAR(DIRECTION, 0) // Switch to counterclockwise signal logic ENDIF DONE // Counterclockwise signal logic (DIRECTION = 0) ONACTIVATE(EXIT_SENSOR) IF(DIRECTION, 0) RED(SIGNAL_1) // Signal 1 red (train passed headshunt exit) ENDIF DONE ONACTIVATE(BACKSCENE_SENSOR) IF(DIRECTION, 0) GREEN(SIGNAL_1) // Signal 1 green (train in backscene) RED(SIGNAL_2) // Signal 2 red (train in backscene) ENDIF DONE ONACTIVATE(ENTRANCE_SENSOR) IF(DIRECTION, 0) GREEN(SIGNAL_2) // Signal 2 green (train passed entrance) ENDIF DONE // Clockwise signal logic (DIRECTION = 1) ONACTIVATE(ENTRANCE_SENSOR) IF(DIRECTION, 1) RED(SIGNAL_1) // Signal 1 red (train passed entrance) RED(SIGNAL_2) // Signal 2 red (train passed entrance) ENDIF DONE ONACTIVATE(EXIT_SENSOR) IF(DIRECTION, 1) GREEN(SIGNAL_1) // Signal 1 green (train passed headshunt exit) DELAYRANDOM(5000, 10000) // Delay 5-10 seconds GREEN(SIGNAL_2) // Signal 2 green after delay ENDIF DONE // Main train: Counterclockwise oval loop (manual start) ROUTE(10, "Main Oval") ONLOCO(MAIN_LOCO) SETVAR(DIRECTION, 0) // Set counterclockwise signal logic REV(50) // Counterclockwise (DCC forward = counterclockwise) AT(APPROACH_SENSOR) // Approach headshunt RESERVE(HEADSHUNT_BLOCK) // Wait if occupied THROW(SIDING_TURNOUT) // Ensure oval path THROW(SECOND_SIDING_TURNOUT) REV(50) // Through headshunt AFTER(EXIT_SENSOR) // Clear headshunt FREE(HEADSHUNT_BLOCK) // Free block AT(BACKSCENE_SENSOR) // Reach backscene STOP // Stop main train DELAYRANDOM(5000, 10000) // Pause FOLLOW(10) // Loop // Shunting loco: Cycle from first siding to second siding and back, repeats indefinitely ROUTE(22, "Siding Cycle") ONLOCO(SHUNT_LOCO) // From first siding to headshunt RESERVE(HEADSHUNT_BLOCK) // Reserve headshunt (in first siding) CLOSE(SIDING_TURNOUT) // Exit first siding to headshunt REV(30) // Clockwise to headshunt AT(HEADSHUNT_SENSOR) // Detect in headshunt CLOSE(SECOND_SIDING_TURNOUT) // Set for second siding FWD(30) // Counterclockwise to second siding AT(SECOND_SIDING_SENSOR) // Detect in second siding STOP // Shunt in second siding FREE(HEADSHUNT_BLOCK) // Free block (loco in second siding) DELAY(15000) // Simulate shunting // From second siding to headshunt RESERVE(HEADSHUNT_BLOCK) // Re-reserve headshunt THROW(SIDING_TURNOUT) // Set for headshunt from second siding CLOSE(SECOND_SIDING_TURNOUT) // Set for headshunt from second siding REV(30) // Clockwise to headshunt AT(HEADSHUNT_SENSOR) // Detect in headshunt CLOSE(SIDING_TURNOUT) // Set for first siding FWD(30) // Counterclockwise to first siding AT(SIDING_SENSOR) // Detect in first siding STOP // Stop in first siding FREE(HEADSHUNT_BLOCK) // Free block DELAY(15000) // Simulate shunting FOLLOW(22) // Repeat cycle indefinitely 2 2 Quote
Sean Posted September 2 Author Posted September 2 (edited) No little big update as of yet, FINALLY got all of the wiring wired up (i still have to go back and solder loads of twisted pairs) and I STILL have to add in a frog juicer The above ai code turned out to be complete thrash and so im rewriting it all by hand in the mean time there is this. IMG_2712.mp4 Also, backscenes are difficult to apply after construction, wont be doing that again! Theres a set of points in the backscene, so the signals are actually signaling to me when the train is clear of them to enhance operations. Once things are a little further on the loco is going to stop in the backscene a time chosen at random of between 1 and 3 minutes, this should break the "train set" aesthetic when running trains in a loop and make things feel a bit more realistic, the train should also be able to stop if someone is driving another train which makes use of the headshunt and continue on when it is free. Sean Edited September 2 by Sean 2 2 Quote
Sean Posted September 3 Author Posted September 3 FINALLY have all of the underside wired and tidied up. now to do the same on the top of the board 2 Quote
leslie10646 Posted September 3 Posted September 3 Wow, all this 21st Century technology and one of my vans in it! 1954 GNR meets Star Wars? 1 Quote
David Holman Posted September 4 Posted September 4 Some fine recycling going on here for the baseboards. 1 Quote
Sean Posted Thursday at 03:45 Author Posted Thursday at 03:45 IMG_2756.mp4 I have three relays underneath the board which are wired back to the command station and flip the point polarity automatically along with the points change. It should have been very simple, but the unit is very susceptible to noise and it has taken me a week or more to figure out how to get it to work in a stable manner, Last night i finally got it and tonight after a little hiccup there was the eureka moment that makes it just about stable enough to keep it going for a running session as long as i follow a particular operating procedure. We can revisit this issue later Just in time as my unfitted H vans arrived today and i was able to run them for a little while beore geting back to the technicals. Ive been really itching for some nice leisurely modelling but this portion has dragged out way more than it should have so it will be good to finally get started. Sean 3 Quote
Sean Posted 5 hours ago Author Posted 5 hours ago (edited) IMG_2762.mp4 125 moves a box from the siding over into the shed for loading/unloading. This is automated and once triggered will loop and run indefinitely until the command station is reset. One thing happening behind the scenes is that the headshunt gets "reserved" before the loco enters the section and the reservation is ended once the loco gets back to the sensor within the sidings. The automation script for the circling loco also contains this reservation rule and will try to make the reservation on the approach to the junction. if the block cannot be reserved the loco has to stop and wait for the block before it can proceed. The rules are quite similar to real block signalling in this regard however there are no actual physical block sections set up on the track and a block can be defined in the programming based on any 2 sensors anywhere on the layout. I am noticing that the sensitivity of the sensors varies depending on the time of day, i.e the amount of ambient light in the room seems to have an effect with wagons being harder to detect, however an effective workaround for this has been to stick a reflective white glossy circle cut from a blank label out of my label maker onto the bottom of the rolling stock. This also gives the advanage of being able to stick the label on different parts of the underframe to tune the exact point at which a given piece of rolling stock triggers a sensor, this explains how tidily it is able to park the van within the shed IMG_2763.mp4 signal 3 has been programmed in, it is connected to the 3 way point and changes to green when both points are set for the oval ALIAS(MAIN_LOCO, 3) ALIAS(SHUNT_LOCO, 4) ALIAS(HEADSHUNT_BLOCK, 1) ALIAS(APPROACH_SENSOR, 22) // Before headshunt, counterclockwise approach for ROUTE(10) ALIAS(EXIT_SENSOR, 23) // After headshunt, bidirectional ALIAS(SIDING_SENSOR, 24) // In first siding, counterclockwise entry ALIAS(SIDING2_SENSOR, 25) // In second siding, counterclockwise entry ALIAS(HEADSHUNT_SENSOR, 26) // Middle of headshunt, for shunting loco ALIAS(BACKSCENE_SENSOR, 27) // In backscene, for counterclockwise stop/signals ALIAS(ENTRANCE_SENSOR, 28) // At entrance from backscene, for signals ALIAS(DIRECTION, 0) // 0 = counterclockwise signals (startup default), 1 = clockwise signals ALIAS(T1, 1) // First siding: THROW=oval, CLOSE=siding/headshunt, DCC address 1 ALIAS(T2, 2) // Second siding: THROW=oval, CLOSE=siding/headshunt, DCC address 2 ALIAS(T3, 3) ALIAS(S1, 48) // Signal 1 at headshunt exit (red/green) ALIAS(S2, 50) // Signal 2 at backscene entrance (red/green) ALIAS(S3, 52) // Signal 3, red unless headshunt free and turnouts thrown //Turnout definitions TURNOUTL( 1, 1) TURNOUTL( 2, 2) TURNOUTL( 3, 3) // Signal definitions (2-aspect, red/green) SIGNAL(48,0,49) // Signal 1 at headshunt exit SIGNAL(50,0,51) // Signal 2 at backscene entrance SIGNAL(52,0,53) // Signal 3, red unless headshunt free and turnouts thrown // This is the startup sequence, AUTOSTART GREEN(S1) GREEN(S2) RED(S3) START(101) DELAY(500) POWERON DELAY(2000) CLOSE(T1) DELAY(500) THROW(T1) DELAY(1000) CLOSE(T2) DELAY(500) THROW(T2) DELAY(1000) THROW(T3) DELAY(500) CLOSE(T3) DONE // This just ends the startup thread, leaving 101 running. //Frog Juicing ONTHROW(T1) SET(30) DONE ONCLOSE(T1) RESET(30) DONE ONTHROW(T2) SET(31) DONE ONCLOSE(T2) RESET(31) DONE ONTHROW(T3) RESET(32) DONE ONCLOSE(T3) SET(32) DONE // Counterclockwise signal logic SEQUENCE(101) AFTER(EXIT_SENSOR) RED(S1) // Signal 1 red (train passed headshunt exit) AFTER(BACKSCENE_SENSOR) GREEN(S1) // Signal 1 green (train in backscene) RED(S2) // Signal 2 red (train in backscene) AFTER(ENTRANCE_SENSOR) GREEN(S2) // Signal 2 green (train passed entrance) FOLLOW(101) DONE //point signal logic // When Turnout 1 is thrown, check Turnout 2's state ONTHROW(T1) IFTHROWN(T2) // If Turnout 2 is also thrown GREEN(S3) ELSE RED(S3) ENDIF DONE // When Turnout 1 is closed, set red ONCLOSE(T1) RED(S3) DONE // When Turnout 2 is thrown, check Turnout 1's state ONTHROW(T2) IFTHROWN(T1) // If Turnout 1 is also thrown GREEN(S3) ELSE RED(S3) ENDIF DONE // When Turnout 2 is closed, set red ONCLOSE(T2) RED(S3) DONE ROUTE( 1, “LOOP” ) SETLOCO(3) REV(50) // Counterclockwise (DCC forward = counterclockwise) AT(APPROACH_SENSOR) // Approach headshunt RESERVE(HEADSHUNT_BLOCK) // Wait if occupied THROW(T1) // Ensure oval path THROW(T2) REV(50) // Through headshunt AFTER(EXIT_SENSOR) // Clear headshunt FREE(HEADSHUNT_BLOCK) // Free block DELAY(3000) REV(30) AT(BACKSCENE_SENSOR) // Reach backscene STOP // Stop main train DELAY(10000) // Pause FOLLOW(10) // Loop // Shunting loco: Cycle from first siding to second siding and back, repeats indefinitely ROUTE( 2, “SHUNTING” ) // From first siding to headshunt SETLOCO(4) RESERVE(HEADSHUNT_BLOCK) // Reserve headshunt (in first siding) CLOSE(T1) // Exit first siding to headshunt FWD(30) // Clockwise to headshunt AT(HEADSHUNT_SENSOR) // Detect in headshunt DELAY(2000) THROW(T1) CLOSE(T2) // Set for second siding REV(30) // Counterclockwise to second siding AT(SIDING2_SENSOR) // Detect in second siding STOP // Shunt in second siding FREE(HEADSHUNT_BLOCK) // Free block (loco in second siding) DELAY(15000) // Simulate shunting // From second siding to headshunt RESERVE(HEADSHUNT_BLOCK) // Re-reserve headshunt THROW(T1) // Set for headshunt from second siding CLOSE(T2) // Set for headshunt from second siding REV(30) // Clockwise to headshunt AT(HEADSHUNT_SENSOR) // Detect in headshunt DELAY(2000) CLOSE(T1) // Set for first siding FWD(30) // Counterclockwise to first siding AT(SIDING_SENSOR) // Detect in first siding STOP // Stop in first siding FREE(HEADSHUNT_BLOCK) // Free block DELAY(15000) // Simulate shunting FOLLOW(22) // Restart cycle This is the code thus far and it seems to be working well. the 2 text blocks at the very bottom titled route are the automation scripts. The advantages of learning this coding is that it is relatively simple to script events however much more importantly, all of this runs directly on a very inexpensive command station and there is no need to have a computer connected to do all of the heavy lifting, simplying hardware needs massively. Edited 3 hours ago by Sean Quote
Recommended Posts
Join the conversation
You can post now and register later. If you have an account, sign in now to post with your account.