Geoff Bunza geoffb

This is the next evolution of the original $5 Mobile/Accessory/Multifunction 17 Channel Configurable DCC Decoder.  This edition: 1.expands major functionality to drive a stepper motor, dual motor control with sound, and even triggered sounds (like a driver cam), servos, and LEDs with 17 function pins, 2.implements long DCC addresses for both mobile decoders and accessory decoders, and 3.and now uses the updated NmraDcc library compatible with the ATTiny84/85 and Teensy 3.x processors. As before, the functions per pin are reconfigurable via CV control. The PC Boards described here can also be used as an add-on daughter board, or in Arduino terms a “shield” for the Pro Mini, including non-decoder projects. NEW Library UPDATED: August 7, 2018. 7th Decoder Pin Function added Jan 20, 2020 https://forum.mrhmag.com/post/sma20-low-cost-17-channel-dcc-decoders-ver-6-01-with-soundtriggered-soundstepperdual-motorled-and-12201920  Increased power and other enhancements described  here:  SMA34 More Power to SMA20 Decoders with Tips and Additions https://forum.mrhmag.com/post/sma34-more-power-to-sma20-decoders-with-tips-and-additions-12215355

ecoder-s.JPG 

Geoff Bunza's Blog Index: https://mrhmag.com/blog/geoff-bunza
More Scale Model Animation videos at: https://www.youtube.com/user/DrGeoffB
Home page: http://www.scalemodelanimation.com

Reply 1
Geoff Bunza geoffb

Making Decoders Easier to Build

This all started in August of 2014 with a nice, simple idea in a blog post to control animations in process. Commercial DCC decoders and Arduino’s had already been tamed to create animated scenes like this:

https://www.youtube.com/embed/wvwJnPTxspk

However, with the encouragement and interest from many modelers, things naturally evolved, or should I say got completely out of control! [smile]

Many modelers have asked for printed circuit boards to make the construction a bit easier. There are two new boards to help construction: one with a 100ma voltage regulator and one with a 1 Amp regulator. A dual H-Bridge can be added which allows for decoder control of 2 motors. Optionally, the H-Bridge circuit can be omitted. The on-board power supply, which powers the board from the DCC bus directly, can also be dropped. This allows for a higher power, local 5 volt power source from batteries, power adapters, and other power supplies. This new board attaches to the Arduino Pro Mini board directly, via header connectors, pins and sockets, or plain wire. The LEDs and Servos are connected directly to the Pro Mini board as before. The new motor connections are located on the new daughter board. Circuit diagrams are shown below.

%20board.jpg   %20board.jpg 

DCC_Decoder3 Board                                                                   DCC_Decoder3P Board

chematic.jpg   chematic.jpg 

DCC_Decoder3 Schematic                                                           DCC_Decoder3P Schematic

Please note: these boards are exactly the same size. The only difference between the two is the “on-board voltage regulator,” which lowers the rectified DCC signal to 5 volts for use by the circuits. The Decoder3P is configured to accept a larger package component like a L7805 (1.5 Amp) regulator. The Decoder3 uses either a 78L05 smaller (100ma) regulator, or a 250ma L4931. Depending on your application, you might want to use the smaller package to fit in a smaller volume if you don’t need the power. The value of R18 has been increased to 1.3K Ohms and changes to ¼ Watt, as it can get a bit warm to the touch. The other resistors can be as small as 1/8 Watt. The value of C1 is listed at 22uf, but I use whatever the largest capacitor I have on hand and can fit in the space with a 25-35 volt rating. The 1N4148 diode can be almost any small signal diode with a 30 volt or more reverse voltage specification.

Also new is the addition of the SN754410 Dual H-Bridge chip. This is a bi-directional DC driver for two motors! Before I get the next 500 change requests, the “Decoder_MotDrive_11LED_4Function” sketch implements what one might call a mobile function decoder, with the usual throttle/speed control. However, there are no speed tables, jump starts, momentum effects, back emf, do-dads, whizzies, or anything else but a direct mapping from the 0-127 speed setting to the motor Pulse-Width-Modulation plus direction control of the selected motor. I have no plans to do any of this! (I think I said that once or twice before.) However, I can be bribed with exquisite brass locomotives, micro drives and gears, and fine, aged 30 year old Port.[smile] If you power the little board(s) with an external 5 volt supply or batteries, omit B1, C3, and IC1. With an external 5 volt source, if you intend to drive the motor(s) you can only omit B1, as the DCC signal is rectified and used as motor power through the H-Bridge. If you do not intend to power any motor(s) you can omit the SN754410, as well as C6 and C7.  (C6 and C7 are the surface mounted capacitors on the underside of the driver board.)

Construction

The Board layouts get modelers to the end design quicker, and they can take that layout to a multitude of fabricators to get their boards done, with my blessing. In fact, now I am aware of several people providing this as a service to modelers by manufacturing these and selling them -- if I remember correctly there is one shop in Germany, one in the UK and recently Model Railroad Control Systems in CA, among them. I have no financial or business interest with any of them, and make all my designs to-date available free to everyone.There are likely several hundred modelers that are using these, with over 2000 of these built, by my best estimates (guesses).

Either or both of the PC Boards can be ordered from this board fabricator:   oshpark.com            

The boards are 2.51x0.77 inch (63.75x19.51 mm) 2 layer boards. OSHPark offers a public service fabricating very high quality, low cost PC boards in low quantities. Download the (Eagle PCB layout) board files (.brd) from here:  http://mrhpub.com/files/users/geoffb/decoderpcbs.zip

Set up an account at OSHPark (really easy) and upload the board file(s) you want to fabricate and specify the quantity (always in multiples of 3—their rules) either of these will cost $9.60 for 3 (3.20 per board). They accept Paypal and will ship international. I have no vested interest in OSHPark – I’m just a satisfied customer. Please feel free to use whatever fabricator you know. I know of no source for fully built boards. That could change in the future.

The bare boards are shipped “panel-ized” so break or cut them apart. Follow the component diagrams below and solder the components to the board. I add the pins and/or sockets, last. Use a low temperature soldering iron or a low wattage soldering iron for these.

ardTop-s.JPG 

Bare Boards (Panelized in groups of 3) Top

Bottom-s.JPG 

Bare Boards (Panelized in groups of 3) Bottom

The Arduino Pro Mini can either be attached by soldering header pins to the driver board as shown in the pictures (the header pins are sometimes included with the Pro Mini), or it may be socketed with peel-away-socket-strips from Allelectronics.com—also shown below.

onsTop-s.JPG 

Decoder Top Construction Variations

Bottom-s.JPG 

Decoder Bottom Construction Variations

abeled-s.JPG 

Socketed Decoder

pinned-s.JPG 

Pin Soldered Decoders

abeled-s.jpg 

Top Component Placement

Bottom-s.JPG 

Bottom Component Placement

xtConn-s.JPG 

Alternate External Power Connection

Please note: In all cases DCC bus/rail connections are to DCC1 and DCC2 terminals on the left.

Additional note: If you ever intend to use a servo motor attached to pin 13 (or most anything else too) -- the same pin used to drive the built-in LED -- please unsolder the LED, or the LED dropping resistor on board, or cut the trace to the LED to disable it. The LED connection will often interfere with the servo control on that pin!

Example Materials:

Arduino Pro Mini atmega328  5V 16MHz   (from EBay:   http://tinyurl.com/kexh66b)   $1.95
(This price varies. Search Ebay for "Pro Mini." Price often includes free shipping.) These can also be obtained from many other sources like sparkfun.com and adafruit.com
Arduino Pro Mini USB FTDI TTL Programming Cable (Ebay: http://www.ebay.com/itm/111241824248)


/> Please note some programming cables sold have scrambled pin outs, and color coding is wrong! Please be careful. The correct configuration is:
Pin Wire     Signal on      Signal on
#   Color      Cable            Pro Mini Label

1  Black        GND               GND or BLK
2  Brown       CTS
3  Red          +5 Volts          VCC
4  Orange    TXD     
5  Yellow       RXD     
6  Green       RTS                DTR or GRN


This is the standard coloring and order that FTDI used. It is clear that some cables were manufactured incorrectly. I would be cautious of the wire colors too! I have found that red for +5 Volts and Black for ground is commonly used. If you have a voltmeter, plug your cable into your computer, but not into the Arduino Pro Mini and measure the voltage from the black wire to red wire-- it should be +5 volts. The set these 2 pins into the Pin 1 and Pin 3 socket as shown above.

Digikey example parts (http://www.digikey.com):
160-1791-ND                   6N137 OPTOCOUPLER HS 8-DIP                  0.81
LM78L05ACZXCT-ND      IC REG LDO 5V 0.1A TO92-3                         0.44
497-5838-1-ND                L4931 IC REG LDO 5V 0.25A TO92-3           0.37
497-15682-5-ND              L7805 IC REG LDO 5V 1.5A TO220              0.58 

PSU3-5   5V 1A Cool-running switch-mode voltage regulator. from EzSBC.com:
( http://www.ezsbc.com/index.php/products/psu3-5.html#.VpGVvV55yMQ )
493-5914-1-ND                CAP ALUM 220UF 25V 20% RADIAL              0.38
DF06M-ND                       DIODE BRIDGE 600V 1.5A 4-DIP                    0.41
478-8312-1-ND                CAP TANT 22UF 25V 10% 2312 SMD            1.22
P13476-ND                       CAP ALUM 100UF 20% 25V RADIAL              0.32
445-8421-ND                    CAP CER 0.1UF 25V 10% RADIAL                 0.29
BC1018CT-ND                  CAP CER 270PF 50V 5% RADIAL                  0.35
CF14JT10K0CT-ND          RES 10K OHM 1/4W 5% CARBON FILM         0.10
CF14JT5K10CT-ND          RES 5.1K OHM 1/4W 5% CARBON FILM        0.10
CF14JT1K30CT-ND          RES 1.3K OHM 1/4W 5% CARBON FILM        0.10
296-9911-5-ND                 IC HALF-H DRVR QUAD 16-DIP                      2.43

http://www.allelectronics.com/make-a-store/item/psip-80/peel-a-way-r-machine-pin-socket-strip/1.html
PSIP-80                           PEEL-A-WAY(R) MACHINE PIN SOCKET STRIP  2.50/50 socket pins

These socket strips will accept DIP packages, or 0.020 wire – like the Tichy phosphor bronze wire.

LEDs: try looking for some at Surplusgizmos.com like Part Number LBT30W2C-CUA-C   3mm LED 20ma Bright White 15,000 MCD  0.30  or at Allelectronics.com like CAT# LED-83  3mm diameter T-1 LED. Ultrabright white   0.95   I usually buy white LEDs and then color them with Clear Tamiya paint to suit the situation. Learn more about using LEDs here: https://forum.mrhmag.com/magazine-feedback-was-ezines-891776

Give Your Decoder Its Personality!

Build the decoder hardware variant of you want, and then look here for information on setting up and loading the decoder sketch (program) of your choosing. With that said, a step by step cookbook for loading the decoder, oriented to the modeler, can be found here:
Starting from Scratch with an Arduino Pro Mini (or Moteino):
http://mrhpub.com/2014-11-nov/land/#99

The “Arduino Pro Mini Controller” used here is one of a set of small processors (computers) on boards, set up to allow easy use by people who want to use them as a tool, rather than focus on the details of the technology. Arduinos were originally conceived as a teaching tool in Italy. All aspects of their design and construction are available for public use with no restrictions. These are manufactured and distributed by many companies worldwide, some for as little as $2 (quantity one) including shipping! With such a cheap and powerful tool, a series of tested, working, and packaged instructions (called Sketches or programs) to set up these versatile DCC decoders with many practical functions are made available. This is not a commercial product, but I dare say there are hundreds, maybe thousands of these that are in use by modelers around the world-- judging from the feedback.

In the original effort, I pointed out that I am not a proponent of asking modelers to learn how to program-- just learn how to use these new tools. You can stop there or take it as far as you want. These are used in high schools and colleges all over the world to teach basic concepts. I am not trying to do that here, merely trying to show others that these little guys can add a great deal to your modeling enjoyment.

If you really want to learn more, a good start for climbing the Arduino Learning curve would be the tutorials at:    http://arduino.cc/en/Tutorial/HomePage
and there are allot of topics there for searching and browsing or
http://arduino-info.wikispaces.com/TUTORIALS
or    http://arduino.cc/en/Guide/ArduinoProMini

Pre-Configured Decoder Versions With NEW FEATURES AND CAPABILITIES
 
There are now 19 preconfigured Decoders in the examples ready to roll:
 
Newest decoders have been added added featuring Stepper Motor support, Dual motor and audio play, and dual motor and triggered audio play features.

CV's can be changed with Ops Mode Programming with the address specified in the decoder, default in the examples is address 24. Note again that the Accessory decoders have dual addresses, one for the Accessory switches (default 40)and one to set up the CV's (default 24). But remember, that after the first power up of the decoder you need to REMOVE THE "//" as in the decoder lines;

// ******** UNLESS YOU WANT ALL CV'S RESET UPON EVERY POWER UP
// ******** AFTER THE INITIAL DECODER LOAD REMOVE THE "//" IN THE FOLOWING LINE!!
//#define DECODER_LOADED

Now after the reloading and second power-up when you modify the CV's they will stay modified in EEPROM  even after power cycling.  There are some CV's that once reset via Ops Mode will require power cycling to take effect -- like changing a function pin from LED control to servo, because the software in the Pro Mini needs to initialize the libraries correctly. This is a known limitation.

Also in Release 6.0 is long addressing for mobile and accessory decoders as well as CV 29 per NMRA  specification. Several minor bug fixes and testing for the new NmraDcc library version supporting more platforms including the Teensy. Timing for the audio decoders may be marginally compatible with servo timing for many functions simultaneously in use. This is NOT a bug. Deal with it.

Automatic servo attachment and detachment has been implemented for all
   servo control functions. When a servo has stopped at the end of its traverse,
   it will be "detached" by the software. This has been demonstrated
   to reduce power consumption greatly and reduce servo "chatter."

Servo timing has a timing modifier added for extra slow servo traverse
   #define servo_slowdown  3   //servo loop counter limit
   Can be set from 0 to 255  -- the higher the number the slower the traverse

In the fully configurable versions all 17 pins can be configured for any of 6 functions:
   0 = On/Off
   1 = Single LED Blink Variable Rate
   2 = Servo Control With Variable Rate
   3 = Double LED Blink
   4 = Variable Single Pulse Out
   5 = LED Fade On
( LED Control Can Also Be Used For Relay Control )

Pease note that the Pulse (4) and Fade On (5) Configurations are NOT timing compatible with the other configurations, and should be used by themselves in a decoder for as many pins as you want.

Several bug are fixed including all reported bugs as of June 2018,

19 Predefined decoder sketches are included, Note that the sketch name described the type of decoder it will implement:


Mobile Decoders:

    Dec_2Mot_3LED_TrigAud                  Dual motor 3 LED Triggerd Audio
    Dec_2Mot_4LED_Aud_8Ftn               Dual motor 4 LED Audio 8 Function
    Dec_2Mot_12LED_1Srv_6Ftn            Dual motor drive, 12 LED 6 Function
    Dec_7Serv_10LED_6Ftn                     7 Servo 10 LED 6 Function
    Dec_10Serv_7LED_6Ftn                    10 Servo 7 LED 6 Function
    Dec_13Serv_4LED_6Ftn                    13 Servo 4 LED 6 Function
    Dec_15Serv_2LED_6Ftn                    15 Servo 2 LED 6 Function
    Dec_17LED_1Ftn                                17 LED ON/OFF Control
    Dec_17LED_6Ftn                                17 LED 6 Function
    Dec_Dir_and_Fade                            17 LED with Dual Direction Control and FADE
    Dec_SMA12_LED_Groups                 LED Group Control for Euro Signaling
    Stepper_6Ftn                                      Stepper control w/13 LED/ftn pins
Accessory Decoders:
    AccDec_7ServoBackandForth6Ftn   7 Servo 10 LED 6 Function
    AccDec_7Servos_10LED_6Ftn           7 Servo 10 LED 6 Function
    AccDec_10Servos_7LED_6Ftn          10 Servo 7 LED 6 Function
    AccDec_13Servos_4LED_6Ftn          13 Servo 4 LED 6 Function
    AccDec_15Servos_2LED_6Ftn          15 Servo 2 LED 6 Function
    AccDec_17LED_1Ftn                           17 LED ON/OFF Control
    AccDec_17LED_6Ftn                           17 LED 6 Function

These 2 Configurations are simpler single LED drive per pin only:
Dec_17LED_1Ftn                          AcccyDec_17LED_1Ftn

Included in the library downloads are some additional versions that many modelers may not have seen before:
 
Dec_2Mot_3LED_TrigAud         Dual motor 3 LED with normal play and Triggerd Audio
This is a “mobile/function” decoder that decoder will control 2 motors and play audio clips by function:
F0=LED on pin 8, F1-F4 Controls playing specific audio tracks in the 3rd CV (start) at the volume in the 2nd CV (rate)
F5 Controls playing audio track in CV57 at the volume in CV56 ONLY when F5 is ON and Pin17/A3 is held low,
       and plays continuously until F5 turns off or Pin17 trigger goes HIGH or open
F6 plays one track selected randomly off the memory card
F13 and F14 select each separate motor which will respond to speed and direction controls
F7-F8 control LEDs by default PINS 18 and 19
 
Dec_2Mot_10LED_Audio_6Ftn             Dual motor drive, Audio Output, 10 LED 8 Function
This is a “mobile/function” decoder that adds audio play to dual motor control and LED functions. Audio tracks or clips are stored on a micro SD card for playing, in a folder labeled mp3, with tracks named 0001.mp3, 0002.mp3, etc. F0 is configured as an on/off LED function, F1-F5 play audio tracks 1-5 respectively. F6 plays a random selection in random order of tracks 1-6. F7-F9 control LEDs on Pro Mini Digital Pins 11-13.

Simple speed control is made via throttle speed setting for two motors. Motor selection is via motor select Function 13 (Motor1) and Function 14 (Motor2).  Motor speed for each can only be changed if the corresponding Function is on (F13 and/or F14). Motor speed is maintained if the corresponding motor select function is off. Thus, each motor can be controlled independently and run at different speeds. The other functions are configurable but are preset for LED on/off control.

dio_4357.JPG 
Audio applique setup
DFPlayer Audio Module Wiring to Decoder (Dec_2Mot_10LED_Audio_6Ftn)
DFPlayer Pin                      Other                                    Pro Mini Pin
1                                                                              +5 Volts / VCC
2              470 Ohm ¼ Watt Resistor             D7
3                                                                              D6
6              8 Ohm Speaker
7                                                                              GND (Ground)
8              8 Ohm Speaker
16                                                                           D5
 
Dec_Stepper_8Ftn   Single Stepper Motor Control
This is a “mobile/function” decoder that controls a single four wire stepper motor (5/12 Volt) via throttle speed setting and a multiplier which can be set in CV121.  Stepper speed is pre-set in the sketch but can be changed. The library also supports setting acceleration/deceleration for the stepper. The other functions are configurable but are preset for LED on/off control. No servo motor control is available. Steppers whose coils need less than 500 ma can be accommodated. Each coil of the stepper attaches to MOT1 and MOT2. You may have to reverse the connections of one or the other until you get the connections right. The number of steps moved is set by the speed setting multiplied by the contents of CV 121. Every Off to On activation of F2 will move the stepper the specified number of steps, in the direction set by the DCC speed direction.
 
per_4364.JPG 
Stepper motor connections to decoder (Dec_Stepper_6Ftn)

Dec_2MotDrive_12LED_1Srv_6Ftn
This is a “mobile/function” decoder that supports simple speed control via throttle speed setting for 2 motors – motor selection is via motor select Function 13 (Motor1) and Function 14 (Motor2).  Motor speed for each can only be changed if the corresponding Function is on (F13 and/or F14). Motor speed will be maintained if the corresponding Motor select function is off. Thus, each motor can be controlled independently and run at different speeds. The other 12 functions are configurable but are preset for LED on/off control. Please note, time dependent functions like servo control and motor speed control will interact. Function10 is pre-configured to operate a single servo. I have tested servo operation simultaneous with motor speed control and it worked, but motor timing was affected. I am using this with small motors (50ma drive) in situations where such timing is not at all critical. As such, I have neither plans nor interest to develop better timing control.  This is left as an exercise for the reader!  [smile]
Dec_Dir_and_Fade
Mobile decoder with configurable list defining how each of the 17 function pins operate:
“0” allows for normal On/Off control with fade on and fade off
“1” allows for normal control when the decoder sees a forward speed setting, reverse turns the LED off
“2” allows for normal control when the decoder sees a reverse speed setting, forward turns the LED off
byte led direction [] = {0,1,2,0,1,1,1,1,2,2,2,2,0,0,0,0,0};      //0=On/Off, 1=On Forward, 2=On Reverse
Dec_SMA12_LED_Groups
Mobile decoder with 5 pin Arbitrary Group Lighting Functions Set in 4-Function Groups with Fade On and Fade Off – requested to control German signals, perhaps others:
F0-F3 controls preset light group pins D3-D7,
F4-F7 controls preset light group pins D8-D12,
and F8-F11 controls preset light group pins D13-D17.

In these examples, servos are arbitrarily preconfigured on the lower numbered pins, contiguously, followed by the “LED” drivers. The name of the files says it all, so pay attention. Remember, you can configure  each pin to do to what function you would like, including a 17 servo driver. Load them into your Pro Mini and you are good to go! The new libraries and examples can be downloaded from here:
zip new-multifunction-decoderv6_1 MRH_V6_01_SMA.zip      

Installation to the Arduino Pro Mini is the same as described previously. Delete your previous version and replace it with the new NMRADcc folder into …\My Documents \Arduino\libraries folder. Old examples will not necessarily work with this edition. Make sure you load the provided, modified version of the SoftwareServo library too, into the same …\ My Documents \Arduino\libraries

The modeler new to this madness might be interested in the evolution of these decoders as found here:

SMA10 – Build a 17-Function DCC Decoder for about $5  http://model-railroad-hobbyist.com/node/19070
/> SMA12 - 17 Channel Configurable Multifunction $5 DCC Decoder For Servos  http://model-railroad-hobbyist.com/node/19446
/> SMA 13 - Update to the 17 Pin Configurable Multi Function Decoder / Accessory Decoder Version Added  http://model-railroad-hobbyist.com/node/19775
/> SMA15: New Dual Accessory-Multifunctionl 17 Channel Configurable DCC Decoders for about $5 with Configurable Servo Support  http://model-railroad-hobbyist.com/node/20739
/> Scale Model Animation 18: DCC Control for Random Building Lighting  http://model-railroad-hobbyist.com/node/23026

Included below is a brief description of one detailed working example for a 7 servo 10 LED configuration that may help people configure their own versions for their particular modeling needs. Before changing the CV settings take a look at the initial settings and make small changes first to observe the effects. This should give modelers a starting point, and a better understanding for customizing their decoders.

There has never been any intention to create a competitive commercial decoder—and there still is none. I wanted a simple reconfigurable decoder that I cold customize for my own model work. Undoubtedly now, there will be more of these to come, more variations, more learning, and more improvements. I hope those modelers reading this can take advantage of the effort, and share your variations with others. Literally hundreds of these have been built, perhaps many more that I am unaware. I doubt very much that I would have pursued all these variations, especially the accessory decoder variants, without the interest and enthusiasm shown by scores of modelers, literally, from around the world. To all of you—many sincere thanks! [smile]   Many thanks again to Alex Shepherd of New Zealand for his work on the NmraDcc library, and a special note to Franz-Peter Müller for his suggestions for code improvements.

Comments and appropriate suggestions are always encouraged.
Have Fun!  [smile]
Best regards,
Geoff Bunza


Decoder CV Configuration Details

The multifunction decoder examples all for 4 functions to be assigned to any of the 17 available pins: on/off control, single line blinking with variable rate, servo control with start position/stop position/transit rate CV setting and end to end control via the function (on/off), and paired line blinking with variable rate.

When first loaded the decoder is set to short DCC Mobile address 24 and/or Accessory decoder address 40. The decoder can be reset to the original parameters by loading CV 120 with 120 (decimal). This will reset everything including the decoder address, when the pushbutton on the Pro Mini is pushed (reset) or by powering the decoder off then on. You will know when the default CV setting are being reset as the decoder will flash Digital Pin 14 (A0) for one second. The multifunction decoder address can be changed to another short DCC address by changing CV 1. The accessory decoders have 2 addresses: the Accessory range start Address is in CV1 and the multifunction address (with which you can program CV's for the Accessory decoder functions) in CV 121 and 122

The 7 Servo 10 LED decoder configuration
Arduino Pro Mini Pins are set as follows: 3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19
Pro Mini Pin   Function
3              F0 Servo
4              F1 Servo
5              F2 Servo
6              F3 Servo
7              F4 Servo
8              F5 Servo
9              F6 Servo
10            F7 Single LED Blink
11            F8 Single LED Blink
12            F9 Single LED On/Off
13            F10 Single LED On/Off
14            F11 Single LED Blink
15            F12 Single LED Blink
16            F13 Double LED Blink F13 and F14 LEDs (Pins 16 & 17)
17            F14 Single LED Blink (Ignored because of F13)
18            F15 Double LED Blink F15 and F16 LEDs (Pins 18 & 19)
19            F16 Single LED Blink (Ignored because of F15)
(Blink rates are set differently for demonstration purposes)

Correspondingly, for the 7 Servo 10 LED decoder configuration, CV’s are initially set to the following:

{CV number, Value}    Description
  {1, 24}  Decoder Initial Address
  {30, 2}, //F0 Config 0=On/Off,1=Blink,2=Servo,3=DBL LED Blink,4=Pulsed,5=fade
  {31, 1},    //F0 Rate  Blink=Eate,PWM=Rate,Servo=Rate
  {32, 28},   //F0  Start Position F0=0
  {33, 140},  //F0  End Position   F0=1
  {34, 28},   //F0  Current Position
  {35, 2},  //F1 Config 0=On/Off,1=Blink,2=Servo,3=DBL LED Blink,4=Pulsed,5=fade
  {36, 1},    // Rate  Blink=Eate,PWM=Rate,Servo=Rate
  {37, 28},   //  Start Position Fx=0
  {38, 140},  //  End Position   Fx=1
  {39, 28},  //  Current Position
  {40, 2},  //F2 Config 0=On/Off,1=Blink,2=Servo,3=DBL LED Blink,4=Pulsed,5=fade
  {41, 1},    // Rate  Blink=Eate,PWM=Rate,Servo=Rate
  {42, 28},   //  Start Position Fx=0
  {43, 140},  //  End Position   Fx=1
  {44, 28},    //  Current Position
  {45, 2}, //F3 Config 0=On/Off,1=Blink,2=Servo,3=DBL LED Blink,4=Pulsed,5=fade
  {46, 1},    // Rate  Blink=Eate,PWM=Rate,Servo=Rate
  {47, 28},   //  Start Position Fx=0
  {48, 140},  //  End Position   Fx=1
  {49, 28},    //  Current Position
  {50, 2}, //F4 Config 0=On/Off,1=Blink,2=Servo,3=DBL LED Blink,4=Pulsed,5=fade
  {51, 1},    // Rate  Blink=Eate,PWM=Rate,Servo=Rate
  {52, 28},    //  Start Position Fx=0
  {53, 140},    //  End Position   Fx=1
  {54, 28},    //  Current Position
  {55, 2}, //F5 Config 0=On/Off,1=Blink,2=Servo,3=DBL LED Blink,4=Pulsed,5=fade
  {56, 1},    // Rate  Blink=Eate,PWM=Rate,Servo=Rate
  {57, 28},    //  Start Position Fx=0
  {58, 140},    //  End Position   Fx=1
  {59, 28},    //  Current Position
  {60, 2}, //F6 Config  Config 0=On/Off,1=Blink,2=Servo,3=DBL LED Blink,4=Pulsed,5=fade
  {61, 1},    // Rate  Blink=Eate,PWM=Rate,Servo=Rate
  {62, 28},    //  Start Position Fx=0
  {63, 140},    //  End Position   Fx=1
  {64, 28},    //  Current Position
  {65, 1}, //F7 Config 0=On/Off,1=Blink,2=Servo,3=DBL LED Blink,4=Pulsed,5=fade
  {66, 1},    // Rate  Blink=Eate,PWM=Rate,Servo=Rate
  {67, 1},   //  Start Position Fx=0
  {68,35},  //  End Position   Fx=1
  {69, 1},    //  Current Position
  {70, 1}, //F8 Config 0=On/Off,1=Blink,2=Servo,3=DBL LED Blink,4=Pulsed,5=fade
  {71, 1},    // Rate  Blink=Eate,PWM=Rate,Servo=Rate
  {72, 1},   //  Start Position Fx=0
  {73, 100},  //  End Position   Fx=1
  {74, 1},    //  Current Position
  {75, 0}, //F9 Config 0=On/Off,1=Blink,2=Servo,3=DBL LED Blink,4=Pulsed,5=fade
  {76, 1},    // Rate  Blink=Eate,PWM=Rate,Servo=Rate
  {77, 1},   //  Start Position Fx=0
  {78, 10},  //  End Position   Fx=1
  {79, 1},    //  Current Position
  {80, 0}, //F10 Config 0=On/Off,1=Blink,2=Servo,3=DBL LED Blink,4=Pulsed,5=fade
  {81, 1},    // Rate  Blink=Eate,PWM=Rate,Servo=Rate
  {82, 1},   //  Start Position Fx=0
  {83, 5},  //  End Position   Fx=1
  {84, 1},    //  Current Position
  {85, 1}, //F11 Config 0=On/Off,1=Blink,2=Servo,3=DBL LED Blink,4=Pulsed,5=fade
  {86, 1},    // Rate  Blink=Eate,PWM=Rate,Servo=Rate
  {87, 1},   //  Start Position Fx=0
  {88, 5},  //  End Position   Fx=1
  {89, 1},    //  Current Position
  {90, 1}, //F12 Config 0=On/Off,1=Blink,2=Servo,3=DBL LED Blink,4=Pulsed,5=fade
  {91, 1},    // Rate  Blink=Eate,PWM=Rate,Servo=Rate
  {92, 1},   //  Start Position Fx=0
  {93, 20},  //  End Position   Fx=1
  {94, 1},    //  Current Position
  {95, 3}, //F13 Config 0=On/Off,1=Blink,2=Servo,3=DBL LED Blink,4=Pulsed,5=fade
  {96, 1},    // Rate  Blink=Eate,PWM=Rate,Servo=Rate
  {97, 1},   //  Start Position Fx=0
  {98, 35},  //  End Position   Fx=1
  {99, 2},    //  Current Position
  {100, 0}, //F14 Config 0=On/Off,1=Blink,2=Servo,3=DBL LED Blink,4=Pulsed,5=fade
  {101, 1},    // Rate  Blink=Eate,PWM=Rate,Servo=Rate
  {102, 1},   //  Start Position Fx=0
  {103, 4},  //  End Position   Fx=1
  {104, 1},    //  Current Position
  {105, 3}, //F15 Config 0=On/Off,1=Blink,2=Servo,3=DBL LED Blink,4=Pulsed,5=fade
  {106, 1},    // Rate  Blink=Eate,PWM=Rate,Servo=Rate
  {107, 1},   //  Start Position Fx=0
  {108, 60},  //  End Position   Fx=1
  {109, 20},    //  Current Position
  {110, 0}, //F16 Config 0=On/Off,1=Blink,2=Servo,3=DBL LED Blink,4=Pulsed,5=fade
  {111, 1},    // Rate  Blink=Eate,PWM=Rate,Servo=Rate
  {112, 1},   //  Start Position Fx=0
  {113, 4},  //  End Position   Fx=1
  {114, 1},    //  Current Position
  {120, 0}   Master Reset CV When set to 120 and Power cycled resets all CV’s

Each Function is controlled by a maximum of 5 CV’s.
For example F0 is initially set for servo control:
  {30, 2},     // F0  Pin Function Configuration  2=Servo
  {31, 1},     // F0  Rate  Blink=Rate, Servo=Rate
  {32, 28},   // F0  Start Position  F0=0  Initially 26
  {33, 140},  // F0  End Position   F0=1  Initially 140
  {34, 28},    // F0  Current Position or State

F7 is initially set for single LED blinking control:
  {65, 1},    // F7 Pin Function Configuration  1=Blink
  {66, 1},    // Rate  Blink  1= Slowest
  {67, 1},    //  Start Count Set to 1 or 0
  {68,35},   //  End Count 2-255 -- 255 = Slow Blink
  {69, 1},    //  Current State of LED

F13 is initially set for double LED blinking control of F13 and F14 LED Pins:
  {95, 3},    // F13 Pin Function Configuration  3=Double LED Blink
  {96, 1},    // Rate  Blink  1= Slowest
  {97, 1},    //  Start Count Set to 1 or 0
  {98, 35},  //  End Count 2-255 -- 255 = Slow Blink
  {99, 2},    //  Current State of LED

F9 is initially set for single LED On/Off control:
  {75, 0},    //  F9 Pin Function Configuration  0=On/Off
  {76, 1},    //  Ignored
  {77, 1},    //  Ignored
  {78, 10},  //  Ignored
  {79, 1},    //  Ignored

Geoff Bunza's Blog Index: https://mrhmag.com/blog/geoff-bunza
More Scale Model Animation videos at: https://www.youtube.com/user/DrGeoffB
Home page: http://www.scalemodelanimation.com

Reply 1
Graeme Nitz OKGraeme

You Are...

...Amazing!

Great work.

I have no use for this sort of thing at present but I will be using them in the future.

Thanks.

Graeme Nitz

An Aussie living in Owasso OK

K NO W Trains

K NO W Fun

 

There are 10 types of people in this world,

Those that understand Binary and those that Don't!

Reply 0
pierre52

Applaudissements

Well done Geoff. You will have to bring some when you come to visit  

Peter

The Redwood Sub

Reply 0
dwtrains

THIS SHOULD BE A CLINIC AT INDIANAPOLIS

Geoff,

You have presented another great idea with the how-to for the hobby.

You should consider making this a clinic to be be presented at the NMRA National in Indianapolis this coming summer.

I would make it one of my definitely attend clinics.

I attended the three clinics you presented earlier this year.

I have seen many of your projects on the web, but it was completely different to see them first hand and to hear your presentation of your creations

Your presentation skills are exceptional. Your clinics were informative, entertaining and kept my undivided attention. I left with many ideas.

I encourage every modeler, regardless of hobby interest, to check out your web connections.

Don in Connecticut

 

Reply 0
Geoff Bunza geoffb

@Graeme

Hi Graeme.

Thanks for your kind words. Waiting will likely only get you more options and more things to do! (Vicious cycle-- you know?  )

Best regards,

Geoff

Geoff Bunza's Blog Index: https://mrhmag.com/blog/geoff-bunza
More Scale Model Animation videos at: https://www.youtube.com/user/DrGeoffB
Home page: http://www.scalemodelanimation.com

Reply 0
Geoff Bunza geoffb

@Peter re: Applaudissements

Hi Peter!

Thank you so much for your kind word(s)!

Are you still trying to improve my vocabulary? 

If I ever get to your beautiful country, I will have a bunch of these in my pocket for you!

Have fun! 

Best regards,

Geoff

Geoff Bunza's Blog Index: https://mrhmag.com/blog/geoff-bunza
More Scale Model Animation videos at: https://www.youtube.com/user/DrGeoffB
Home page: http://www.scalemodelanimation.com

Reply 0
Geoff Bunza geoffb

@Don re: Indianapolis

Hi Don,

Thank you for your very kind comments. I appreciate them.

I am looking into going to Indianapolis next year and presenting again. If I do, it may not be another 8 clinics, though -- that was a great deal of prep and effort. But they will likely engender more projects, blogs, and articles along the way.

Since you saw the clinics in Portland, could you comment on whether the clinics would be as good/effective if  some of the real models/animations were not in the room, but were replaced by videos? I'm concerned about transporting another full size bag full of demos to Indianapolis.

Thanks again for your very kind words.

Have fun! 

Best reagrds,

Geoff

Geoff Bunza's Blog Index: https://mrhmag.com/blog/geoff-bunza
More Scale Model Animation videos at: https://www.youtube.com/user/DrGeoffB
Home page: http://www.scalemodelanimation.com

Reply 0
Kevin Rowbotham

Just Wow!

I'm speechless!

Thank-you for all your hard work Geoff.

Best regards,

~Kevin

Appreciating Modeling In All Scales but majoring in HO!

Not everybody likes me, luckily not everybody matters.

Reply 0
dwtrains

Re: Indy Clinics

Geoff,

I can appreciate the burden of transporting a large number of models to a convention.

For myself, it made a big difference in actually seeing the actual model vs. a video.

It gave me a chance to see close up and in more detail in how you installed the components and achieved the end result. A video can only be so long and show so much. With the model in front of me I can study both before and after the clinic, giving me many more details and insights.

Having the models made the clinic unique and a nice change from the standard PowerPoint presentation.

I will admit you were on a clinic marathon in Portland with Animation, Lights, Sound and Cranes. And doing them twice each.

Maybe consider one clinic for Indy. You would be able to pour all your efforts into that one. Instead of splitting the time between several. And you would drastically reduce the number of show and tell items that you would have to transport.

Which ever route you may choose, I will be looking forward to what ever you may present.

Have a nice day, Don

Reply 0
Geoff Bunza geoffb

@Kevin

Hi Kevin,

Thanks! 

I hope you can take advantage of this too.

Have fun! 

Best regards,

Geoff

Geoff Bunza's Blog Index: https://mrhmag.com/blog/geoff-bunza
More Scale Model Animation videos at: https://www.youtube.com/user/DrGeoffB
Home page: http://www.scalemodelanimation.com

Reply 0
Geoff Bunza geoffb

@Don re: Indianapolis

Hi Don,

Thanks for taking the time to respond. Your thoughts are exactly like my own. It's seeing, hearing, and sometimes holding the actual models that can make a big difference. It's why I went for the gusto in Portland -- it's home and local, so moving things around was much easier than long distance travel. The rooms hold so many at national conventions that I began to provide both videos and actual models. The trick is trying to make the models contained, and rugged enough to pass around the room. I have been greatly heartened by the fact that I have always had all my demos returned to the front, undamaged, at every clinic I have given!

I have taken your comments to heart, and have more thinking to do.

Many thanks, again.

Best Regards,

Geoff

Geoff Bunza's Blog Index: https://mrhmag.com/blog/geoff-bunza
More Scale Model Animation videos at: https://www.youtube.com/user/DrGeoffB
Home page: http://www.scalemodelanimation.com

Reply 0
Blane

Technology Advances

It's great to see how people are able to take components and software for multipurpose use and find a way to make them work for our hobby. It's good to see innovation like this still exists in our hobby even during the computer age. I have a couple questions about these decoders though. 1. Do these decoders work with any DCC system currently on the market? 2. Are these decoders only useable as function only and accessory decoders? 3. Are the function only versions smaller than the accessory decoder versions or is it a standard design?

Blane

Reply 0
Geoff Bunza geoffb

@Blane re: Questions

Hi Blane,

Quote:

1. Do these decoders work with any DCC system currently on the market?

Reports back from modelers around the world indicate they are being used with Digitrax, NCE, EasyDCC, Hornby, Roco, and other DCC systems I don't remember. This is the benefit of the NMRA standardizing on the communication protocol. Like many other commercial offerings, only the basic CV's are consistently numbered.

Quote:

2. Are these decoders only useable as function only and accessory decoders?

No, with this edition, very simple motor control was added. Also remember that one can readily change the decoder functionality, beyond just reconfiguring via CV settings, as some modelers have done.

Quote:

3. Are the function only versions smaller than the accessory decoder versions or is it a standard design?

All use and are patterned after the Arduino Pro Mini form factor (as far as the PC board profiles I provided). If you follow the links to the previous blog posts, you will find that people have made and can make their own larger and smaller boards. All variations in this set will work with the boards provided, Pro Mini processor, and sketches included.

'Hope this helps. If not, ask more questions. Have fun!

Best regards,

Geoff Bunza

Geoff Bunza's Blog Index: https://mrhmag.com/blog/geoff-bunza
More Scale Model Animation videos at: https://www.youtube.com/user/DrGeoffB
Home page: http://www.scalemodelanimation.com

Reply 0
Kevin Rowbotham

@ Geoff

Hi Geoff,

Proto board works well enough but when custom boards are made available that are of this quality, this convenient and so inexpensive too boot, I would be crazy not to take advantage of what you have done for us all.

I will be ordering some of these boards for my own use.

Your generosity in giving back to fellow hobbyists is simply fantastic.

Tell me, how best does one ship a fine bottle of Port, to Portland, Oregon?

Best regards,

~Kevin

Appreciating Modeling In All Scales but majoring in HO!

Not everybody likes me, luckily not everybody matters.

Reply 0
Geoff Bunza geoffb

@Kevin re: Special Port Delivery

Hi Kevin,

Let us know how it goes.

Quote:

Tell me, how best does one ship a fine bottle of Port, to Portland, Oregon?

Such fine bottles of Port are accepted in person as my guest accompanying an equally good dinner!

Have fun! 

Best regards,

Geoff

Geoff Bunza's Blog Index: https://mrhmag.com/blog/geoff-bunza
More Scale Model Animation videos at: https://www.youtube.com/user/DrGeoffB
Home page: http://www.scalemodelanimation.com

Reply 0
Geoff Bunza geoffb

There have been some

There have been some questions as to how to connect power to these decoders with an external +5 Volt supply. These pictures show the Ground (White EXT GND or Negative) connection and the +5 Volt (Red EXT +5V Positive) connection:

abeled-s.jpg 

xtConn-s.JPG 

Note that these connections are 2 of the pin holes where the on board regulator would have been placed.

'Hope this makes it more clear.  Have fun! 

Best regards,

Geoff Bunza

Geoff Bunza's Blog Index: https://mrhmag.com/blog/geoff-bunza
More Scale Model Animation videos at: https://www.youtube.com/user/DrGeoffB
Home page: http://www.scalemodelanimation.com

Reply 0
stokesc

Arduino run turntable

Hi Geoff;

I have implemented your gate crossing and flashing lights program and it is now working flawlessly on my layout.

Adjusting the sensitivity of the sensors was a little tricky.  Thanks for the code and idea.

I am in the process of coding a sketch using Arduino uno, stepper motor (NEMA 17), Easy Driver and

a Rotary Encoder  to run my turntable.

By any chance have you done any work on running a turntable using arduino.?

Thanks for getting me interested in another aspect of this hobby.

Cecil in North Idaho...

 

Cecil

STOKES VALLEY R/R 

Reply 0
Geoff Bunza geoffb

@Cecil re: Turntable Control

Hii Cecil,

I'm glad you had such success with your grade crossing! 

Quote:

I am in the process of coding a sketch using Arduino uno, stepper motor (NEMA 17), Easy Driver and a Rotary Encoder  to run my turntable.

That's a good combination. Consider a couple of points: The "step angle" of those ungeared steppers is usually 1.8 degrees-- meaning it is supposed to take 200 steps to rotate through a full circle. While I strongly suspect this stepper will have plenty of power, if it is directly coupled to the axis of the turntable, you might see a jerky motion for small or slow steps. I would suggest an experiment to see if you are happy with the movement, however you decide on your arrangement, before committing to a permanent installation.

Steppers are great drives but every once in a while they can drop a "step." This was very important to me because I thought I could simple "count" steps to accurately position the stepper movement. This is certainly correct, except on the occassion when you drop a step. I also thought this would never happen if I simply ran the stepper slower -- again my experience showed otherwise. Yes, almost always it worked fine... except when it didn't! The moral of the story was that no matter how accurate the mechanical movement, it was a better arrangement to sense when the turntable bridge was properly aligned and use the sensor to stop the movement. There are many ways to accomplish this. The appraoch I like places a tiny rare earth magnet on the end of the bridge, and places tiny reed switches (like these: http://www.goldmine-elec-products.com/prodinfo.asp?number=G21009&mc_cid=350c5bdd88&mc_eid=7250f2d01b) in/on the wall of the pit to detect when the bridge is aligned precisely. By experimenting with the position of the magnet and the switch, you can achieve accurate results. Another "switch" that is also arduino compatible is a Hall Effect Device used with the bridge magnet too. Two types I use are the AH180-PL-A (the one with leads) and the TCS20DLRLF  (the surface mount device- SMD) both pictured below:

nsors640.JPG 

These can be obtained from digikey.com  They each take 5 volts and will switch its output to ground when detecting the presence of the magnet. The advantage of either of these schemes is no additional power or signal wires need go into the bridge, simplifying things a bit.

One last comment: while it may be overkill, I've seen two turntable examples use a solenoid activated pin or "V" push into the end of the bridge after stopping to force perfect mechanical alignment with the approach tracks. It guarantees perfect alignment (these did not use the previous sensor mechanisms).

Regardless of your chosen method, I would experiment with your own situation- size and weight of bridge, weight of locos, and number of tracks might affect your decisions.

Another consideration is your control mechanism. Clearly the arduino can move the stepper and sense switches, but it can also paint a picture on a small display (like a 2.8 inch TFT display with a tough screen! By simply touching the lead track on the screen you could direct turntable motion and update the display during its rotation (since you could potentially sense every movement of the bridge). It's one of those "neat" little things that might entertain your operators! 

Have fun! 

Best regards,

Geoff

Geoff Bunza's Blog Index: https://mrhmag.com/blog/geoff-bunza
More Scale Model Animation videos at: https://www.youtube.com/user/DrGeoffB
Home page: http://www.scalemodelanimation.com

Reply 0
stokesc

Arduino Turntable control

Geoff - thanks for your comments, the info will be useful.

Stepper motor missing steps has been a concern for me.

Using the Rotary encoder to move the motor should solve the missing steps, just keep moving the encoder

until alignment. 

Setting MS1 & MS2 on the easy driver to LOW will give 1800 steps per rotation and if it misses steps I won't notice.         But.....  using buttons to align the bridge to a specific location could be a problem missing steps.

I am using toothed pulleys and belt to move the motor. Which could have some slop.

So, getting close and then using your magnet ideas could be a solution.

Yes - having fun!

 

 

 

 

Cecil

STOKES VALLEY R/R 

Reply 0
jlrc47

I have not went back and read

I have not went back and read the other post on your low cost boards but I have a quick question.

My fellow modelers and I are in the beginning stages of converting the I&O Railroad to a JMRI CTC panel.

The I&O was featured on Train Masters TV on Sept 2014

Can the low cost boards work for signaling with JMRI through NCE system? I see that one version can do 17 lights so that could drive 8 or so double head signals ?

Now I will go back through the threads and read more.

Reply 0
Kay Sievert

Servo "jerk" during powerup

Hi Geoff,

Excellent project!
I have ordered the parts to make several decoders for my layout. Thanks again for your great work on this.

The only thing that I have noticed right away is that all servos seem to have an initial jerk when the Arduino gets powered up. Do you know of a way to eliminate this behavior? It doesn't take a large movement to throw an N scale turnout, so I would prefer to avoid this initial jerk of the servos if possible.

The only solution I have found so far is using a spare Arduino pin and turning power to the servo off via a transistor until a PWM pulse is available to control the servo.

Any thoughts on this?

Thanks,
Kay

 

Reply 0
Geoff Bunza geoffb

@Cecil re: Turntable Control

Hi Cecil,

Another quick comment-- be careful about the rotary encoder. It may not have the same resolution as the smallest step angle, and as such can also wind up being a small source of turning error. Been there done that too!

The magnets I refered to previously, can be obtained as small as 1x1x1 mm ! That's pretty small, so you can hide then easily.

Have fun!  

Best regards,

Geoff

Geoff Bunza's Blog Index: https://mrhmag.com/blog/geoff-bunza
More Scale Model Animation videos at: https://www.youtube.com/user/DrGeoffB
Home page: http://www.scalemodelanimation.com

Reply 0
Geoff Bunza geoffb

@Joe L re: Signaling

Hi Joe,

The decoders cannot be "read," but like any other mobile or accessory decoder can be set via JMRI or any other  DCC standard system.

'Hope this helps. Have fun! 

Best regards,

Geoff Bunza

Geoff Bunza's Blog Index: https://mrhmag.com/blog/geoff-bunza
More Scale Model Animation videos at: https://www.youtube.com/user/DrGeoffB
Home page: http://www.scalemodelanimation.com

Reply 0
Geoff Bunza geoffb

@Kay re: Servo Jerk

Hi Kay,

The initial "jerk" at power on can come from a couple of sources: the servo itself (not usually), the library initializing (I've seen this happen & don't know how to get around it), and the initialization sequence in the decoder sketch you are using-- used to set the servos and decoder to a known starting state, and which can deleted if you'd like).

The decoder sketch labeled "AccessoryDecoder_15ServosReleased_2LED_4Function" has a new feature. When each servo movement is competed (end to end), the servo is "detached." This means the Arduino will not be generating the position control signals for that specific servo that is not in motion. I have noticed (depending entirely on the servo involved) that this will decrease power consumption by as much as 50 ma (peak) for each servo controlled by the decoder-- that is a bunch! It also has a tendency to noticeably reduce servo "jitter." You might try using this sketch and see if it helps your situation.

I am planning on another update. I hope to incorporate the servo "detachment after movement" in all versions. Right now, it's available in the decoder sketch mentioned above. Please let me know what you find.

Have fun! 

Best regards,

Geoff Bunza

Geoff Bunza's Blog Index: https://mrhmag.com/blog/geoff-bunza
More Scale Model Animation videos at: https://www.youtube.com/user/DrGeoffB
Home page: http://www.scalemodelanimation.com

Reply 1
Reply