Welcome to My HO Model Railroad Blog
This Blog is about my HO Model Railroad Hobby and how I model the Southern Pacific from my memories of the mid 1950s era as a teenager. I wrote a short synopsis of my back ground that can be found by going to my About Me page.

My layout is set in the mid 1950s in the Southern New Mexico/West Texas area. I grew up in El Paso Texas during the end of the Steam Era and lived in Alamogordo, NM during the 1960s & 70s. My wife and I are both retired and now reside in Bakersfield California. We have lived on both ends of the Southern Pacific Cab Forward Southern Route.

This is a simple track layout drawing of my Model Railroad.

You can click on the colored text to follow the links.

I moved the About Me & My Layout articles to their own page because they seldom change.
Updated December 5, 2014

To go to my current Locomotive Inventory click here.
Updated September 14, 2015

To go to my additional pages scroll down to the bottom of my Blog, there are links to navigate my blog as well as other model railroad interests.

You can send comments or ask questions at 

Thanks for taking the time to visit my Blog!

January 21, 2019 Arduino NANO Tower Beacon Flasher

I have finally come up with a flashing tower beacon driver that looks very realistic.  I'm using an Arduino NANO with a NPN Darlington MPSA13 transistor to drive a 2mm 12 volt Grain of Wheat bulb.  The bulb draws 70ma at 12 volts and as normal I'm running the bulb at about 70% for max realism and longer bulb life.  The MPSA13 has 500ma sinking capacity so it will easily handle the bulb current.

The MPSA13 drops the voltage by .7 volts so I'm actually operating the NANO at 9¼ volts to achieve the 8½ volts to the bulb.

I couldn't find any premade NANO expansion boards so I cut up some 18 x 24 hole perfboards.  I can get three NANO expansion boards from one perfboard.

This is a drawing of the Mel NANO expansion board.

Here is a 30 second video of the flashing beacon with my Arduino NANO test socket.  I prewired a Mel test socket with seven 12 volt Grain of Wheat bulbs.  I don't plan on using more than 7 high current outputs from a NANO.

Here it is flashing the tower beacon.

The NANO Sketch (Program) is below, a simple copy & Paste to the Arduino IDE should work OK.



 This example shows how to fade an LED on pin 3
 using the analogWrite() function.

 This example code is in the public domain.

 More info: http://www.ardumotive.com/how-to-fade-an-led-en.html

int led = 3;           // the pin that the LED is attached to
int brightness = 0;    // how bright the LED is
int fadeAmount = 5;    // how many points to fade the LED by

// the setup routine runs once when you press reset:
void setup()  {
  // declare pin 3 to be an output:
  pinMode(led, OUTPUT);

// the loop routine runs over and over again forever:
void loop()  {
  // set the brightness of pin 3:
  analogWrite(led, brightness);   

  // change the brightness for next time through the loop:
  brightness = brightness + fadeAmount;

  // reverse the direction of the fading at the ends of the fade:
  if (brightness == 0 || brightness == 255) {
    fadeAmount = -fadeAmount ;
  // wait for 30 milliseconds to see the dimming effect   


January 16. 2019 Arduino Multasking

It took me quite awhile to come up with an Arduino Sketch that would flash multiple bulbs for my layout.  My goal was to flash my emergency vehicle revolving beacons on my layout so that they are not in sync, randomly flashing but all at the same rate of about 60 flashes per minute.  I finally conquered the Arduino multitasking by using millis instead of delay.

The Arduino is a one at a time processor, when it sees a delay all functions stop for the delay period.  The answer is to use milliseconds for delays, that way the program doesn't stop running essentially multitasking.

The video below is my Arduino test UNO with a Mel test expansion module that has three TD62304AP seven channel high current drivers so that the 20 Arduino low current outputs can drive 12 volt Grain of Wheat bulbs.

The expansion module has standard Arduino male connectors and I made a matching female plug with 20 GOW bulbs for easy testing the Arduino outputs.

Each bulb flashes at about 60 times per minute totally out of sync.

The Arduino Sketch (Program) is configured for a Nano so I used D3 to D9 for the outputs.  I'm going to be using a Nano to drive my emergency vehicle lighting.

This is a Nano with the Mel Expansion Module and the seven channel TD62304AP driver IC.

As normal I went with my own way of adding the Arduino connectors to the boards.  The UNOs use the Arduino female connector on the board and the Arduino way is to mount the male connector on the Nano.  I went with the female to match the UNOs.

I cleaned up my sketch, it should copy and paste to the Arduino IDE.  The sketch will drive LEDs as is.  I'll post my drawing of the high current TD62304AP wiring later for those that need from 6 to 24 volts at up to 500ma per output.

// This is a working seven channel nonsynchronous emergency flasher
// These variables store the flash pattern
// and the current state of the LED

int ledPin1 =  3;      // the number of the LED pin
int ledState1 = LOW;             // ledState used to set the LED
unsigned long previousMillis1 = 0;        // will store last time LED was updated
long OnTime1 = 300;           // milliseconds of on-time
long OffTime1 = 400;          // milliseconds of off-time

int ledPin2 =  4;      // the number of the LED pin
int ledState2 = LOW;             // ledState used to set the LED
unsigned long previousMillis2 = 0;        // will store last time LED was updated
long OnTime2 = 310;           // milliseconds of on-time
long OffTime2 = 410;          // milliseconds of off-time

int ledPin3 =  5;      // the number of the LED pin
int ledState3 = LOW;             // ledState used to set the LED
unsigned long previousMillis3 = 0;        // will store last time LED was updated
long OnTime3 = 315;           // milliseconds of on-time
long OffTime3 = 380;          // milliseconds of off-time

int ledPin4 =  6;      // the number of the LED pin
int ledState4 = LOW;             // ledState used to set the LED
unsigned long previousMillis4 = 0;        // will store last time LED was updated
long OnTime4 = 335;           // milliseconds of on-time
long OffTime4 = 390;          // milliseconds of off-time

int ledPin5 =  7;      // the number of the LED pin
int ledState5 = LOW;             // ledState used to set the LED
unsigned long previousMillis5 = 0;        // will store last time LED was updated
long OnTime5 = 305;           // milliseconds of on-time
long OffTime5 = 395;          // milliseconds of off-time

int ledPin6 =  8;      // the number of the LED pin
int ledState6 = LOW;             // ledState used to set the LED
unsigned long previousMillis6 = 0;        // will store last time LED was updated
long OnTime6 = 325;           // milliseconds of on-time
long OffTime6 = 405;          // milliseconds of off-time

int ledPin7 =  9;      // the number of the LED pin
int ledState7 = LOW;             // ledState used to set the LED
unsigned long previousMillis7 = 0;        // will store last time LED was updated
long OnTime7 = 325;           // milliseconds of on-time
long OffTime7 = 405;          // milliseconds of off-time

void setup()
  // set the digital pin as output:
  pinMode(ledPin1, OUTPUT);     
  pinMode(ledPin2, OUTPUT);
  pinMode(ledPin3, OUTPUT);
  pinMode(ledPin4, OUTPUT);     
  pinMode(ledPin5, OUTPUT);
  pinMode(ledPin6, OUTPUT);
  pinMode(ledPin7, OUTPUT);

void loop()
  // check to see if it's time to change the state of the LED
  unsigned long currentMillis = millis();

  if((ledState1 == HIGH) && (currentMillis - previousMillis1 >= OnTime1))
    ledState1 = LOW;  // Turn it off
    previousMillis1 = currentMillis;  // Remember the time
    digitalWrite(ledPin1, ledState1);  // Update the actual LED
  else if ((ledState1 == LOW) && (currentMillis - previousMillis1 >= OffTime1))
    ledState1 = HIGH;  // turn it on
    previousMillis1 = currentMillis;   // Remember the time
    digitalWrite(ledPin1, ledState1);    // Update the actual LED
    if((ledState2 == HIGH) && (currentMillis - previousMillis2 >= OnTime2))
    ledState2 = LOW;  // Turn it off
    previousMillis2 = currentMillis;  // Remember the time
    digitalWrite(ledPin2, ledState2);  // Update the actual LED
  else if ((ledState2 == LOW) && (currentMillis - previousMillis2 >= OffTime2))
    ledState2 = HIGH;  // turn it on
    previousMillis2 = currentMillis;   // Remember the time
    digitalWrite(ledPin2, ledState2);   // Update the actual LED
    if((ledState3 == HIGH) && (currentMillis - previousMillis3 >= OnTime3))
    ledState3 = LOW;  // Turn it off
    previousMillis3 = currentMillis;  // Remember the time
    digitalWrite(ledPin3, ledState3);  // Update the actual LED
  else if ((ledState3 == LOW) && (currentMillis - previousMillis3 >= OffTime3))
    ledState3 = HIGH;  // turn it on
    previousMillis3 = currentMillis;   // Remember the time
    digitalWrite(ledPin3, ledState3);   // Update the actual LED
   if((ledState4 == HIGH) && (currentMillis - previousMillis4 >= OnTime4))
    ledState4 = LOW;  // Turn it off
    previousMillis4 = currentMillis;  // Remember the time
    digitalWrite(ledPin4, ledState4);  // Update the actual LED
  else if ((ledState4 == LOW) && (currentMillis - previousMillis4 >= OffTime4))
    ledState4 = HIGH;  // turn it on
    previousMillis4 = currentMillis;   // Remember the time
    digitalWrite(ledPin4, ledState4);   // Update the actual LED
    if((ledState5 == HIGH) && (currentMillis - previousMillis5 >= OnTime5))
    ledState5 = LOW;  // Turn it off
    previousMillis5 = currentMillis;  // Remember the time
    digitalWrite(ledPin5, ledState5);  // Update the actual LED
  else if ((ledState5 == LOW) && (currentMillis - previousMillis5 >= OffTime5))
  {    ledState5 = HIGH;  // turn it on
    previousMillis5 = currentMillis;   // Remember the time
    digitalWrite(ledPin5, ledState5);   // Update the actual LED
  if((ledState6 == HIGH) && (currentMillis - previousMillis6 >= OnTime6))
    ledState6 = LOW;  // Turn it off
    previousMillis6 = currentMillis;  // Remember the time
    digitalWrite(ledPin6, ledState6);  // Update the actual LED
  else if ((ledState6 == LOW) && (currentMillis - previousMillis6 >= OffTime6))
  {    ledState6 = HIGH;  // turn it on
    previousMillis6 = currentMillis;   // Remember the time
    digitalWrite(ledPin6, ledState6);   // Update the actual LED
  if((ledState7 == HIGH) && (currentMillis - previousMillis7 >= OnTime7))
    ledState7 = LOW;  // Turn it off
    previousMillis7 = currentMillis;  // Remember the time
    digitalWrite(ledPin7, ledState7);  // Update the actual LED
  else if ((ledState7 == LOW) && (currentMillis - previousMillis7 >= OffTime7))
  {    ledState7 = HIGH;  // turn it on
    previousMillis7 = currentMillis;   // Remember the time
    digitalWrite(ledPin7, ledState7);   // Update the actual LED




January 6, 2019 Scratch Built Sears Catalog Home

I have built a scratch built home for all of our children for my layout including one for my wife and I.  This house is Larry's house, he is a Public Works Director in New Mexico.  Before he became a PWD he was the local SP Yard Superintendent on my layout.  Each one of our children have a position on my layout as well as a home.  My wife and I are retired and live in a bungalow at the end of Red Canyon Road.
This is a delayed posting.  I made an HO scale scratch build from the plans on Antique Home Style web page back in 2012 for Larry.

I did a CAD drawing and reduced it to HO 1:87 scale then made paper templates to cut the pieces for the walls and roof.

This is my drawing of the floor plan glued to a HO scale size piece of 3/16" sheet Basswood.

The following pictures show the construction of the house back in 2012, I will only add text to the pictures that need it.

I make my own corner post, it's easier than ordering them.

Bottom view of the first floor

Here the brick foundation has been painted.


The finished house and garage sitting in place on it's module.


When I rewired the house and garage for the Arduino Random Lighting Controller I went with ⅛" X ⅜" Neodymium magnets to hold them in place on the module.  They really snap into place.

I recessed the garage magnets.

The house has 16 lights and the garage has 4.  All 20 lights come on and go off randomly.  The Random Light Controller makes it look lived in.

Removing the roof to revamp the lighting wasn't an easy task!  As expected I dinged several walls but I was able to repair the damage where it isn't noticeable.

The Random Lighting Controllers are well worth the time and cost for the great lighting effect. 

December 16, 2018 Arduino Crossing Gate Controller

I found some very slick Arduino IR Detectors on eBay at a very good price and I figured that they would be worth the investment of 45¢ to play with, 10 for $4.50.

They turned out to be very good for under the track type obstacle detectors.  So good I decided to give Geoff Bunza’s Crossing Gate Controller a shot.  The detectors and the Arduino Sketch work great!

Because this is a project the full post will be on a Projects Page, click here for the full post.

October 29, 2018 Updated Arduino UNO Random Lighting Project

I have added a Project Page Post on my Arduino Random Lighting Controller complete with wiring diagrams for the high current drivers as well as the Arduino Sketch for the 20 port version.  I have also included a Test Sketch for checking the operation of the Arduino and the high current driver extension board.

As not all of the information in the original post was totally accurate I have removed it.

The correct updated post can be found here: Arduino Random Light Controller 

August 18, 2018 Heavy Weight SP Club Lounge Pullman

This post is about the construction of my final Heavy Weight Pullman car.  Both the SP Lark and Owl passenger trains had a Club Lounge car. 

The 479 mile Lark Route was from San Francisco through the San Joaquin Valley over the Tehachapi Mountains to Los Angles and took 13 hours.  The SP Lark ran from 1910 until 1968.  The Lark used GS3-GS6 4-8-4 power for the valley floor and Cab Forwards from Bakersfield up the 2.2% grade over Tehachapi Mountains to negotiate the 19 tunnels between the Valley Floor and Tehachapi.  The Lark was streamlined in 1941 but still pulled with steam power until 1955.  Steam power was replaced with diesel Alco PAs on the Lark San Joaquin Valley Route in 1955.

The Club Lounge car started out as an Athearn #1893 SP Diner BB Kit. 

In all versions of my Athearn passenger cars I start by removing the Athearn weights and filling the center depression with #8 Bird Shot giving me more usable depth in the car for the interiors.

Because I power all of my passenger cars lighting from a single 4 volt power supply in the baggage car I run power the full length of every car.  Early on I used #28 AWG wire but have since changed over to ⅛" wide copper foil tape, one strip on each side of the bottom frame. 

The picture above shows the ⅛" wide copper foil tape attached to the side of the bottom frame wall.  The foil tape has an adhesive backing.  The foil is very thin and must be applied with care to prevent it from tearing.

All of my heavy weight Pullmans have a pigtail hanging out the end doors through the diaphragms to pass the 4 volts from the baggage (Power Supply) car to the observation car.  I rarely uncouple my passenger cars so the wires between cars isn't a problem and can't be seen because of the diaphragms.  Because I rarely uncouple them I use Kadee Scale Shelf Couplers on every car to reduce accidental uncoupling.

I use 2.54mm round pin header strip micro connectors on each end of every car with super flexible 30 AWG stranded copper wire. 

I polarize the between car connectors so that it keeps the correct polarity for the LEDs.  To see the connector modification process click here.

The picture above shows the standard 2.54mm round pin header strip micro connectors for connecting the shell to the frame, the 2KΩ potentiometer for setting the car light brightness.  The connector on the upper right is the power to the shell ceiling LEDs.  The center connector is for the power to the table lamps.  The lower connector towards the side is used as a terminal post for the incoming 4 volt power.

I attach the shell to frame connectors using Super Glue / CA.  I glue the floor female connector first then plug in the male connector then add glue to the connector and place the shell on the frame.  This aligns the connectors eliminating a wire jumper between the shell and frame.  For testing purposes I use a 12" male to female "extension cord"  

The picture below is the interior sub floor with the chairs, sofas and spaces for the magazine holding tables.  The chairs and sofas are my resin castings.

The white area is where the bar and staff rooms will be.

Here I've added the bar and staff rooms.

The curved bar is constructed from two layers of .02" sheet Styrene, the room walls are single .04" Styrene.

The magazine racks/table lamps have been added. 

The magazine rack/tables are made from  Evergreen 258 Rectangular Tubing, 3/16" x 5/16".  The table lamps are 3mm warm white LEDs with lampshades made from Evergreen 225 Tubing.  The lamp base is a 3mm plastic bead from Hobby Lobby.

All but three figures are my resin castings, I hand painted all the figures with Acrylic Crafters paints.

This is a waitress resting in the Waitress Staff Room with an off duty waitress.

The various colored chair scheme came from pictures of the real SP Lark Lounge interiors.

Happy wedding couple in the lounge.

A couple of pictures taken with reduced ambient lighting.

The finished and assembled Club Lounge car taken at reduced ambient lighting.  The digital meter shows the current of all the LEDs in this car, I adjusted the current of each car to about 2ma at 4 volts, some lower and some higher.  The total current for all 10 cars is about 25ma at 4 volts.