Showing posts with label receiver. Show all posts
Showing posts with label receiver. Show all posts

Sunday, May 31, 2026

How I reprogrammed a Micron MR603 receiver

Recently, I needed to reprogram a Micron MR603 receiver so it could be used to trigger all the sound effects on a Micron Mini Sound module (MSND01). As this module uses the same firmware as MyLocoSound modules, this reprogramming would also be appropriate for these.

 The sound module has seven functions triggered by inputs on seven pads (or screw terminals):

  • F1 - Whistle
  • F2 - Bell 
  • F3 - "All aboard" (or guard's whistle)
  • F4 - Safety valve
  • F5 - Brake pump 
  • F6 - Injector / Coal shovelling
  • F7 - Chuff cam
 The receiver was going to be used with a Micron Tx22X transmitter .....

.... which has two two-way switches and two push-buttons for triggering outputs from the receiver, ....
  • S1 A - sends Channel 3 high
  • S1 B - sends Channel 3 low
  • S2 - sends Channel 4 low
  • S3 C - sends Channel 7 high
  • S4 D - sends Channel 7 low
  • Bind button - sends Channel 5 low

 .... thus allowing all six of the additional sounds on the Micron or MyLocoSound modules to be triggered.

The Micron MR603 has ten output pads which, as delivered, provide the following outputs:

  • P1 - Front light / LED2
  • P2 - Rear light
  • P3 - 0v - 3.3v when Channel 3 is low
  • P4 - 0v - 3.3v when Channel 3 is high
  • P5 - 0v - 3.3v when Channel 5 is low
  • P6 - 3.3v - 0v when Channel 5 is low
  • A - Front light
  • B - Rear light
  • C - 0v - 3.3v when Channel 5 is low
  • D - 0v - Toggle 3.3v/0v when Channel 5 is low

The Micron Mini sound card inputs (and the MyLocoSound inputs) are trigged when they are connected to 0v and so, to make use of all the features, I needed to change some of the outputs from the pads to give 0v when the channels used by the buttons and switches on the Tx22X went high or low.

So, I decided to reprogram the receiver's output pads as follows:

  • P1 - Unchanged (i.e. Front light)
  • P2 - Unchanged (i.e. Rear light - not used)
  • P3 - 0v when Channel 3 is low (i.e. when S1 A is clicked on the Tx)
  • P4 - 0v when Channel 3 is high (i.e. when S1 B is clicked on the Tx)
  • P5 - 0v when Channel 4 is low (i.e. when S2 on the Tx is pressed)
  • P6 - Unchanged (i.e. 0v when Channel 5 is low (i.e. the bind button is pressed on the Tx))
  • A - Unchanged (i.e. Front light - not used)
  • B - Unchanged (i.e. Rear light - not used)
  • C - 0v when Channel 7 is low (i.e. when S3 C is clicked on the Tx)
  • D - 0v when Channel 7 is high (i.e. when S3 D is clicked on the Tx)

 

 Working out the reprogramming code sequence

To determine the code needed to make these changes, the programming chart for the MR603 receiver on the Micron website was consulted.

This is probably the part of the process which most people find confusing, so I will try to describe how it works as clearly as I can.

 Let's take the changes needed for P3 as an example. The pad needs to be reprogrammed so that it provides a 0v output when the receiver detects that Channel 3 has gone low.

So, working our way across the section of the table shown above:

  • The first value we need to note down is 3 which tells the receiver we want to reprogram an on/off feature
  • Moving to the next column, we need to tell the receiver we want to reprogram pad 3. So 3 is our next value to be noted.
  • Moving to the third column, we want the output from the pad to be momentary - i.e. we only want the output to happen while the button or switch on the transmitters is being pressed or clicked. As soon as the button is released the output from the pad will revert to whatever it was doing when the receiver was switched on. So, our next value is 1.
  • The fourth column, specifies the Channel we will be using. In this case it is Channel 3 and so 3 is the next value to be noted.
  • The final column specifies what sort of output we want dependent on the state of the selected Channel. We want the output to start high (on) but switch to low (off) when the Channel goes low. So, we want this value to be 4 (i.e. When Channel 3 goes low, turn off the pad (i.e. it has 0v output))

So, the reprogramming code we need for this change is - 3, 3, 1, 3, 4

 Let's skip to the last output in our list, Pad D. This needs to provide a 0v output when Channel 7 goes high.

  • Again, our first value is 3, indicating we want to reprogram an on/off setting
  • This time we want to reprogram Pad D - so we note down our next value as 10
  • Again, we want the output to be momentary, and so our third value is 1
  • We are using Channel 7, so our next value will be 7
  • And finally, as we want a 0v output when Channel 7 goes high, the value we need is 6
 The coding for this change is therefore: 3, 10, 1, 7, 6 
 
So, on this basis, the codes needed for each of the pads which need to be reprogrammed are:

  • P3 - 3, 3, 1, 3, 4 (for 0v when Channel 3 is low) 
  • P4 - 3, 4, 1, 3, 6 (for 0v when Channel 3 is high)
  • P5 - 3, 5, 1, 4, 4 (for 0v when Channel 4 is low)
  • C - 3, 9, 1, 7, 4 (for 0v when Channel 7 is low)
  • D - 3, 10, 1, 7, 6 (for 0v when Channel 7 is high)
  •  

    Putting the receiver into programming mode 

    To actually make these changes, we firstly need to make sure the MR603 receiver has been bound to a transmitter which has a reversing switch (i.e. which can give a high and low output on Channel 3). In the Micron range, this would include:

    To put the receiver into reprogramming mode, the transmitter and receiver must be switched on. After a few seconds, the morse code for SOS (dot, dot, dot, dash, dash, dash, dot, dot, dot) has to be tapped out on the bind button. The dots must be less than a second in duration and the dashes more than a second but less than five seconds. The pauses between dots and dashes must be less than 5 seconds.

    When the receiver has entered programming mode, its LED will flash once every second (referred to as 1-flash)

     

     Reprogramming

    We can now start the reprogramming process.

    Taking our first set of values needed to reprogram Pad 3 (i.e. 3, 3, 1, 3, 4), we need to change that initial 1-flash to a 3-flash (i.e. three one second flashes, followed by a pause). To increment the number of flashes, the reversing switch on the transmitter need to be moved to the "reverse" or "down" position and then returned to the mid-position. Clicking it once will increase the flash-count by one. Clicking it again will increase the flash-count by another one. Thus, the LED should now be flashing three times before a pause. This is the value we need for the first code in our list (i.e. telling the receiver that we want to reprogram an on/off setting). To tell the receiver to "accept" that value, we move the reversing switch to "forward" or "up".

    The LED will now start flashing once per second. We need to it flash three times, so we increment the number of flashes twice (by clicking the reverse switch twice in the "reverse" or "down" direction). Once it has reached 3-flash (three flashes then pausing), we "accept" this by clicking the reverse switch "forward" or "up". This tells the receiver we want to reprogram Pad 3.

    LED should now flash 1-flash again (because Pad 3 is already set for momentary on/off). So we just click the reverse switch forward or up to accept this value.

    The LED should now start flashing 3-flash, as P3 is already set to respond to Channel 3. So click the reverse switch to forward or up to accept this.

    Finally, the LED should now start flashing 1-flash as the default for P3 is to give a 3.3v output (i.e. go high) when Channel 3 goes low. We need to change this to start high and go low when Ch3 goes low, so we need to change this value to 4-flash by incrementing the flashes by three reverse or down clicks and then accepting the 4-flash by clicking forward or up.

    If you accidentally increment the number of flashes by too many, then keep incrementing until the LED reverts to 1-flash, then increment to the desired value.

     After entering the final value in our list, the LED should stop flashing and revert to solidly on.

    To program another pad, we need to re-enter programming mode with the SOS morse code sequence on the bind button.

    All that might sound a bit daunting but, once you've done it a couple of times, it is really easy - albeit slightly tedious.

    Here's proof that all that effort is worthwhile.

     

    Deltang or RC Trains transmitters

    Deltang or RC Trains receivers with reversing switches can also be used to reprogram Micron receivers provided they will bind with the receiver. Some of the very early Deltang receivers are unable to bind with Micron receivers and will need their transmitter boards replacing to enable them to do so. This is a job which can be done by Andy at Micron or by Phil at RC Trains. Alternative, if you are handy with a soldering-iron, it is a relatively straightforward job you can do yourself, once you have purchased the Micron transmitter module.
     

     

    Monday, May 04, 2026

    How I converted an Ixion / EFE Bachmann 0 gauge Hudswell Clarke 0-6-0T to battery and radio control

     Although my own railway is 45mm narrow gauge, I sometimes carry out battery/RC conversions for other people. Most recently, I was asked if I could tackle an Ixion/EFE Bachmann 0-6-0T loco. Having previously converted a Dapol Terrier Tank, I decided this couldn't be much more difficult. However, it turned out to be an even tighter squeeze, but the experience gained with the Terrier Tank was useful.

    The loco .......

    ..... came with a helpful leaflet showing step-by-step how it could be dismantled.

    The first step was to remove the tank filler cap .......

    .... beneath which was a self-tapping screw.


     The next job was to remove the pipework and handrails. These proved to be a push-fit and so could be prised off with a pair of tweezers.




     With all the pipework removed, the tank could be lifted off. The instructions warned about being careful not to snap off the lugs holding the tank to the cab section, but it looked as if someone had already beaten me to it as they had already been snapped off.

    The circuit board and connector for a DCC decoder could now be accessed. This was supported by a grey plastic structure which was easily removed.

    With access to leads to the motor and the pick-ups, I didn't need to progress further (although I did removed the three screws holding the lower part of the tank in place to inspect the worm)

    The next stage was to remove the cab. Two screws under the rear of the cab were removed .....


     .... and the cab lifted off.

     The cab floor was then removed by unscrewing the four screws holding it in place.


     The next task was to measure the space for the battery pack and figure out where a switch and charge-socket could be fitted.

    Initially, I thought of putting the switch inside the cab and doing away with a charge socket in favour of charging through the wheels. However, although a switch could have been fitted in the cab beside the firebox, it would have been very tricky to operate. I wasn't happy about using the wheels as charge contacts they would be 'live' when the switch was in the charge position and it would be all too easy to short-circuit the batteries - not a particularly good idea!

    Measuring the space beneath the loco's circuit-board, I decided I could just manage to squeeze in three 120mAh 402030 lipo packs, giving a nominal output of 11.1v.


    There was also just enough space inside the tank for a 3S battery protection (BMS) board and a Micron MR601 receiver/controller. Eventually, I decided that, as with the Dapol Terrier Tank, I could just manage to insert a micro JST ZH socket and a sub-miniature SPDT slide switch into the tender. 

    Having decided on using the bunker, the next problem was how to take the wiring from there, through the cab, to the batteries and receiver in the tank. With the Terrier Tank, I used thin ribbon cable and cut a slot for it beneath the floor of the cab. The cab floor of the Hudswell Clarke was too thin for this tactic and so I decided to cut three 3mm wide strips of brass shim and use those as connectors.

    Holes were drilled in the cab floor and the ends of the strips cut where they protruded, leaving sufficient to act as solder tags for the leads.

     Once the parts arrived I could start work on the rest of the wiring-up. 

    The switch and charge socket were initially mounted on a piece of plasticard to test-fit them in the tender.


     Once I was satisfied with their positions, I designed and 3D printed a more substantial, tailored mounting plate.


     Holes were drilled into the base of the bunker for the leads ......

    .... and the mounting plate carefully slotted into place.


     The leads from the switch and charge socket were trimmed, ......

     ..... and soldered to the brass shim tags protruding through the cab floor with heatshrink sleeving to prevent accidental short circuits.

    Wires were then soldered to the other ends of the shim strips ......

    .... and, after being shrouded in heatshrink, were passed through holes drilled in the sides of the firebox to allow them to be taken up into the tank.

    The floor was then screwed back on to the cab.

     Double-sided sticky pads were stacked beside the worm gear housing to support the battery pack.

    The three lipo cells were made into a pack, covered with clear heatshrink and connected to a 3S BMS board. This helps to prevent the cells from becoming overly charged or overly discharged and also to protect them from accidental short circuits.

    The Micron MR601 receiver/controller was then connected and the loco tested. 

    It was a tight squeeze, but the battery pack, protection board and receiver were fitted into the tank before the loco was reassembled. 



    The switch and charge socket aren't invisible inside the empty bunker, but some strategically placed piles of coal should help them to disappear.



     Test runs show the loco to be highly controllable and achieve impressive slow-running.

    I thought the Dapol Terrier Tank was a challenge, and I must admit that, at one point, I almost admitted defeat with this conversion - until I managed to track down a sufficiently small charge socket to fit into the bunker.

    Saturday, February 10, 2018

    How I programmed a Deltang Rx65b for auto station stop with a Tx20

     One of the great built-in features of the Deltang Rx65b receiver/controller is that it includes, as standard, auto-station stop, auto-shuttle and auto-buffer stop. A reed switch, mounted on the loco and connected to one of the pads on the Rx65b will trigger the effect wherever you want it to happen on your railway.

    Having previously programmed a Deltang Rx65b receiver for auto-shuttle using a Prog4 Programa module (see How I programmed Deltang Rx65b for auto-shuttle), I decided I wanted to program the receivers in a couple of my locos for auto station stop so the locos would run around the railway slowing down and stopping at each station briefly before accelerating away again.

    Although I like to run my railway prototypically with timetabled passenger trains and goods trains managed by a computerised freight management program (see A typical operating session), there are occasions when I just have a train running or two running around while I do some gardening or entertain family and friends with a barbecue.

    Rather than using a Programa module, I thought it might be useful for others to see how the programming can be done with a Deltang Tx20 transmitter.

    The process

    1. Preparations
    2. Wiring up the receiver and reed switch
    3. Looking up the programming code
    4. Putting the receiver into programming mode
    5. Programming
    6. Testing
    7. Conclusion

    1. Preparations

    Before doing the modifications to the loco and the receiver, I needed to make a few decisions. 
    • Which locos was I going to use?
    • Which output pad on the receiver was I going to use?
    • Where was the reed switch going to be located on each loco?

    Which locos?

     Having fifteen battery powered / radio controlled locos at my disposal (see 2015 Loco Stock Roster), I had to decide which ones would be:
    a) the most reliable when left to their own devices
    b) had sufficiently large batteries to be able to run for several hours
    c) would be the easiest to modify.
     In the end, I selected the two locos which were the among the earliest I added to the railway - Peckett Loco No. 1 (Peckforton)........

    and Hunslet Loco No. 3 (Bickerton)

     These were both constructed from GRS (Garden Railway Specialists) kits and both make use of the LGB ToyTrain 0-4-0 motor blocks. They are both powered by three 18650 li-ion batteries and both have Deltang Rx65b receiver/controllers fitted. As they are 0-4-0s, they don't have any pony trucks or bogies to become derailed and their mechanisms are very reliable. They are also both easy to dismantle to gain access to the receivers.

    Which output pad would I use?

     I opted for Pad 8 on the Rx65b (shown in red).

    This is because its default setting is for Channel 1 servo output, which I seldom use, and also because it is close to the three negative pads one of which I would be using for a capacitor (see below).

    Where was the reed switch going to be mounted?

    Another reason for choosing two locos which use the ToyTrain loco blocks was that their undersides have a recess which is ideal for mounting the reed switch.

    Furthermore, I realised I could make use of the wiring system which was built into the motor blocks for the wheel pickups (see below)

    2. Wiring up the receiver and the reed switch

    This is probably the trickiest bit of the whole process. It needs a soldering iron with a small bit and a steady hand.

    Connecting a 0.1uF ceramic capacitor

    To minimise the possibility of electromagnetic interference (EMI) disrupting the connection from the reed switch to the receiver a 0.1uF capacitor needs to be soldered from the output pad to the negative supply.
    These can be bought cheaply on eBay (I think I bought 20 for £2.50 including postage). I soldered mine between Pad 8 and the nearest negative pad.

    I then soldered a wire to Pad 8 and another wire to another negative pad (the grey wire on Pad 9 is being used as a trigger for a sound effect on the Dallee Sound Card).

    The receiver was then shrouded in a shrink wrap sleeve.

     I then removed the bottom plate of the motor block by unscrewing the screws holding it in place and re-installed the L-shaped metal connectors originally used for the track pick-ups. I bent up the last 10mm of these through 90º.

    I then drilled a couple of 2mm diameter holes in the base plate after carefully measuring the location of the two metal 'spikes'. The base plate was then threaded over the spikes.

    The spikes were then folded over and a reed switch soldered on to them.

    An LGB push connector was soldered to the end of the (orange) wire leading to Pad 8 and the end of the negative wire was soldered to the central pin of a sub-miniature SPDT toggle switch. Another black lead was soldered to another of the pins and an LGB push connector soldered to the other end.

    The switch was mounted discretely beneath the saddle tank

    This switch will be used to disable the auto station stop feature by isolating the reed switch. This will enable be to use the loco for normal duties.

    The LGB connectors were then pushed on to the ends of the old track pickup contacts protruding from the top of the motor block (the central orange and black wires). The other two wires connect the motor to the Rx65b.


    3. Looking up the programming code

    The codes needed for reprogramming Deltang receivers are located on the Deltang website. The programming chart for the Rx65b receiver controller is startlingly long - a reflection of the potential and complexity of this little technological marvel. It can seem a bit daunting at first sight, but it does actually make a lot of sense if you persevere with it.

    The section I needed for the auto station stop is in Menu 3 under the heading Automation.
    Automation
    3 1-8 = P1-P8

    8 = Buffer Stop
    [BUFFER1]

    Time to stop:
    1-6 = 1-6 seconds
    Reactivate trigger:
    1-6 = 10-60s
    (time to 'back out')

    ONE pad can detect external trigger to control H1
    Action: Slow to a stop
    Close throttle to rearm (manual).

    3 1-8 = P1-P8

    9 = Stop & Reverse
    [BUFFER2]

    Time to stop:
    1-6 = 1-6 seconds

    Fixed pause time:
    1-6 =
    4,8,15,30,45,60s
    Random pause time:
    7 = 4-8s
    8 = 8-15s
    9 = 15-30s
    10 = 30-45s
    11 = 45-60s

    ONE pad can detect external trigger to control H1
    Action: Stop-Pause-Reverse (auto).

    3 1-8 = P1-P8

    10 = Station stop and continue
    [BUFFER3]

    Time to stop:
    1-6 = 1-6 seconds

    Pause time:
    As above
    ONE pad can detect external trigger to control H1
    Action: Stop-Pause-Continue (auto).

    Looking at the third option in this section I noted down the series of codes I needed for the auto station stop:

    3, 8, 10, 6, 11

    Cross referencing this with the bottom row of the chart, you will see that each number instructs the receiver to do something:
    • 3 = Menu 3
    • 8 = Pad 8
    • 10 = Auto station stop
    • 6 = 6 seconds to slow down to a stop
    • 11 = 45-60 seconds stopping before restarting

    4. Putting the receiver into programming mode

    I could have used a Prog4 (eg see Programming with a Prog4), a Prog3 eg see Programming with a Prog3) or a Tx20 (see Programming with a Tx20). I opted for using a Tx20 as this is my preferred programming technique. I find it to be the quickest and easiest method, particularly for a relatively simple programming task such as this.

    Firstly the receiver in the loco was bound to the Tx20 by:
    1. switching on the receiver
    2. waiting for around 15 seconds until it went into bind mode (its LED flashed rapidly).
    3. holding down the bind button on the transmitter
    4. switching on the transmitter (with the bind button held down)
    5. releasing the bind button
    6. waiting until the LEDs on the receiver and the transmitter stopped flashing to show they were now bound
     I then put the Rx65b into programming mode by:
    1. switching off the receiver
    2. holding down the F1 (Channel 2) and F2 (Channel 4) button on the Tx20
    3. switching on the Tx20 (with the buttons still held down)
    4. switching on the receiver
    5. checking that the receiver was in programming mode (signified by very rapid flashing of its LED)
    6. releasing the buttons on the Tx20
     

     5. Programming

    The LED on the Rx65b was flashing once per second. This showed it was ready to receive instructions for Menu 1. As I wanted to change items under Menu 3:
    1. I clicked the Direction Switch on the Tx20 in the REVERSE direction. 
    2. The LED on the Rx65b flashed rapidly
    3. When I returned the Direction Switch to the central NEUTRAL position the LED started flashing twice per second. 
    4. I then flicked the Direction Switch in REVERSE once more and returned it to NEUTRAL 
    5. The LED on the Rx started flashing three times. This meant it was ready to receive instructions for Menu 3
    6. I flicked the Direction Switch to the FORWARDS position and back to NEUTRAL to confirm that was what I wanted.
    The Rx65b was now waiting for the next code number (ie which pad I wanted to change). I wanted to use Pad 8 and so:
    1. I flicked the Direction Switch in the REVERSE direction 7 times to increment the flashes (pausing between each flick of the switch and sometimes counting the number of flashes to see how far I had reached)
    2. I checked that the LED on the Rx65b was flashing 8 times
    3. Then I clicked the Direction Switch in the FORWARDS direction to confirm this setting
    The Rx65b was now waiting to be told what instruction was being attached to Pad 8. I was wanting to use it as the input from the reed switch for auto station stop (ie the value of 10) and so:
    1. I flicked the Direction Switch in the REVERSE direction 9 times to increment the flashes (pausing between each flick of the switch)
    2. I checked that the LED on the Rx65b was flashing 10 times
    3. Then I clicked the Direction Switch in the FORWARDS direction to confirm this setting
    The next setting was for the number of seconds I wanted for the loco to slow down (ie 6 seconds) and so:
    1. I flicked the Direction Switch in the REVERSE direction 5 times to increment the flashes (pausing between each flick of the switch)
    2. I checked that the LED on the Rx65b was flashing 6 times
    3. Then I clicked the Direction Switch in the FORWARDS direction to confirm this setting
    Finally, the Rx65b was waiting to be told how long the loco would wait in the station before resuming (ie 45-60 seconds, represented by 11 flashes) and so:
    1. I flicked the Direction Switch in the REVERSE direction 10 times to increment the flashes (pausing between each flick of the switch)
    2. I checked that the LED on the Rx65b was flashing 8 times
    3. Then I clicked the Direction Switch in the FORWARDS direction to confirm this setting
    At this point the LED on the Rx65b remained on steadily, showing that it had processed all the information I had just given it. The loco was now ready for testing.

    6. Testing

    Bench testing came first. Once I had checked all the wiring was correct, I powered up the loco and inverted it. I used the transmitter to get the wheels to start rotating as if the loco was moving forwards. I then waved a magnet over the reed switch and to my delight (and relief) the wheels slowed and stopped. After around 50 seconds, the wheels started rotating once more. All seemed to be fine. I tested it another couple of times, at different speeds and with the wheels rotating in reverse.

    I was then ready for testing outside on the track. I fixed a magnet to one of the sleepers in the station area, fixing it down with a couple of twists of wire. When I ran the loco over it, nothing happened. I then attached another magnet to the first, thus doubling its height (and increasing its strength) and this time the loco coasted gently to a halt as it passed over the magnet.

    I then made a video of the next test run (my camera running out of battery at the last moment!

    Conclusion

    The most difficult part of this modification is, as has been stated, soldering the leads on to the receiver. I would suggest, if you are not confident with handling a soldering iron, that you ask someone who is to do it for you as a favour. When I was running RC Trains, I had a couple of receivers returned to me which had suffered damage because people had overheated them with soldering irons. The PCB tracks on the Rx65b are quite delicate and can easily be broken if too much heat is applied.

    Other than that, deciding where and how to fix the reed switch is the next most difficult task. With a Tx20 (or even a Prog3), the actual programming is a breeze and probably the most satisfying part of the process.

    The built-in auto capabilities of the Rx65b are a nice added bonus and it does seem a shame not to make use of them in some way. I hope this blog post encourages you to have a go.