Everything on model trains, model railroads, model railways, locomotives, model train layouts, scenery, wiring, DCC and more. Enjoy the world's best hobby... model railroading!
Arduino Coding for a Turntable
Tony models OO and asks:
“Does anyone have a simple Arduino coding for a turntable? I’ve made a simple 3d printed turntable for the model railway I’m building for my grandson and want to control it from an Arduino. It’s a simple one-on one-off system. I intend to use a Hall Effect sensor to align it with the tracks. Ta in advance for your help.”
Add your comments or code to assist Tony below.
4 Responses to Arduino Coding for a Turntable
Leave a Reply
There is an absolutely brilliant thread on RMWeb that deals with this very issue. He covers both the motorisation of the turntable using a stepper motor, using the hall sensor for alignment and then a step by step explanation of the arduino code which culminates in controlling the whole thing via DCC. Even if this doesn’t give you exactly the code you need for your particular setup, by the time you’ve gone through it you’ll have such a good understanding that you’ll know exactly how to make the amendments you need.
You’ll find the thread here:
https://www.rmweb.co.uk/community/index.php?/topic/78578-dcc-controlled-peco-turntable-project-using-a-arduino-uno/
Good luck!
Nigel.
I am trying to upgrade my turntable using similar techniques to those shown in the tread attached to your transmission of Oct 6 2021. My browser will not open the various JPG files attached to the instructions. I get a message -“This XML file does not appear to have any style information associated with it. Can you assist in proividing copies of the various JPG files or direct me to where I might obtain same
Regards, Ken
If you’re using the Arduino, Stepper-motor module, I tweaked the code to include a FWD and REV button to manually swing the table. You’ll have the stepper.h file in the Arduino library.
For your application you’ll have to include an input for your Hall Effect sensor, too.
The other issue is to find the right shaft-coupler for the turntable. The diameter of the Arduino stepper motor is 5mm.
Here’s the code…
//FORWARD/REVERSE Control of Stepper Motor – Rev XX
//26/3/2020 – Use Rubber coupler to motor. (StepsperRev set to 10)
//24/4/2020 – Use Lego gears to motor. (StepsperRev set to 64)
//27/04/2020 – Found a plastic shaft-coupler – Works a treat!
//26/05/2020 – Change StepsPerRev to 5
#include
// Constants used to set pin numbers:
const int CWbuttonPin = 2; // the number of the Clock-wise pushbutton pin
const int ACWbuttonPin = 3; // the number of the Anti-Clock-wise pushbutton pin
const int stepsPerRevolution = 5; // 10 – Gives ~10 degrees;64;200;change this to fit the number of steps per revolution
// for your motor
// initialize the stepper library on pins 8 through 11:
Stepper myStepper(stepsPerRevolution, 8, 10, 9, 11); //NOT 8, 9, 10, 11 as shown in examples!!!
// variables will change:
int CWbuttonState = 0; // variable for reading the pushbutton status
int ACWbuttonState = 0; // variable for reading the pushbutton status
void setup() {
// put your setup code here, to run once:
pinMode(CWbuttonPin, INPUT);
pinMode(ACWbuttonPin, INPUT);
// set the speed at 200 rpm:
myStepper.setSpeed(200); //60 initially
}
void loop() {
// Here’s the main code, to run repeatedly:
//Clockwise Push-button code
// read the state of the CWpushbutton value:
CWbuttonState = digitalRead(CWbuttonPin);
// check if the pushbutton is pressed. If it is, the buttonState is HIGH:
if (CWbuttonState == HIGH) {
myStepper.step(stepsPerRevolution);//Rotate clockwise
} else {
CWbuttonState = 0;
}
//Anti-Clockwise Push-button code
ACWbuttonState = digitalRead(ACWbuttonPin);
// check if the pushbutton is pressed. If it is, the buttonState is HIGH:
if (ACWbuttonState == HIGH) {
myStepper.step(-stepsPerRevolution);//Rotate anti-clockwise
} else {
ACWbuttonState = 0;
}
}
Oh..Sorry. That looks terrible!
Perhaps the file…See attached
By the way , it was the Arduino, XC-4458, 5V Stepper Motor + Controller
I was hooking up to a PECO NB-55 (N-guage) table, and I ended up using a length of LEGO Technic shaft glued into the turntable rotor to make the connection possible. I see you’re in OO, so you’ll have to figure out a way to hook your table up.