Firgelli L16 Motion Platform

First time poster and fairly new to arduino programming.

I am building desktop motion platform controlled by an arduino to get my feet on the ground with the concept before building a much larger platform in the future. The mechanics I have figured out but I 'm struggling with control. I have picked out actuators and control boards and have successfully made things move independently without an arduino. Now I am starting to incorporate an arduino and any guidance would greatly be appreciated.

Hardware:
Arduino Uno (x1)
Firgelli L16-100-35-12-P Linear Actuators (x6) http://www.firgelli.com/Uploads/L16_datasheet.pdf
Firgelli LAC Board (x6) http://www.firgelli.com/Uploads/LAC_Datasheet.pdf
10k Linear Slide Potentiometer (x6)
12v dc power supply for actuators
PC running Windows 7 for programming.

Goals of project:
Control actuators - using input from 10k linear slide pot. into Arduino and output PWM signal to control board.
Record movements and replay movements on demand.

Thanks in advance for the help!

Looking at the actuator and controller data sheets, it appears that the actuator/controller can be configured to act as a servo. That being the case, you can do some testing using the servo "knob" IDE example code.

zoomkat:
Looking at the actuator and controller data sheets, it appears that the actuator/controller can be configured to act as a servo. That being the case, you can do some testing using the servo "knob" IDE example code.

I tried the "knob" example with no luck. There was no activity in the actuators. I don't know if the code is giving the appropriate PWM signal to the control board of the actuator. I have tried using the code below with some luck. However, the actuator doesn't stay still when you stop moving the pot. It moves in and out about 1/8" in a consistent sequence of moves. It does stay still in the fully in or out position. Again I am not positive the pulse is being sent correctly or at the correct freq. Is there a way to check this with out an oscilloscope?

int inputPin = A0; // set input pin for the potentiometer
int inputValue = 0; // potentiometer input variable
int ledPin = 3; // set output pin for the LED

void setup() {
// declare the ledPin as an OUTPUT:
pinMode(ledPin, OUTPUT);
}

void loop() {
// read the value from the potentiometer:
inputValue = analogRead(inputPin);

// send the square wave signal to the LED:
analogWrite(ledPin, inputValue/4);
}

Keep in mind that your analog input is going to limit you to 256 positions (that's life in the 8 bit world). Personally, I think that you would be better off using a LM317 setup in constant current mode and then use the 4 - 20ma input on your Linear Actuator Control Board.

http://www.ae5d.com/images/Lim.png

So you plan on manually positioning your slide using a pot?

rootboy:
Keep in mind that your analog input is going to limit you to 256 positions (that's life in the 8 bit world). Personally, I think that you would be better off using a LM317 setup in constant current mode and then use the 4 - 20ma input on your Linear Actuator Control Board.

http://www.ae5d.com/images/Lim.png

So you plan on manually positioning your slide using a pot?

Thanks for the suggestion. The original thinking was with a stoke of only 100mm the 256 steps would be fine. However,the LM317 setup would give me better resolution when I go with larger actuators in the future. I will explore this. To answer your question, yes. I am trying to show how a motion platform can be used in live theatre and am building a working model of the concept. The final goal is to be able to have a "master" platform that I manipulate offstage and record the movements of and have a "slave" platform repeat those movements on stage when cued. Hence why I am trying to incorporate an arduino so I can record and play back various movements or positions on demand.

Some servo/pot test code that might work if the actuator controller is setup to receive RC servo control pulses.

//zoomkat dual pot/servo test 12-29-12
//view output using the serial monitor

#include <Servo.h> 
Servo myservoS1;
Servo myservoS2;

int potpinS1 = 0;  //analog input pin A0
int potpinS2 = 1;

int newvalS1, oldvalS1;
int newvalS2, oldvalS2;

void setup() 
{
  Serial.begin(9600);  
  myservoS1.attach(2);  
  myservoS2.attach(3);
  Serial.println("testing dual pot servo");  
}

void loop() 
{ 
  newvalS1 = analogRead(potpinS1);           
  newvalS1 = map(newvalS1, 0, 1023, 0, 179); 
  if (newvalS1 < (oldvalS1-2) || newvalS1 > (oldvalS1+2)){  
    myservoS1.write(newvalS1);
    Serial.print("1- ");
    Serial.println(newvalS1);
    oldvalS1=newvalS1;
  }

  newvalS2 = analogRead(potpinS2);
  newvalS2 = map(newvalS2, 0, 1023, 0, 179);
  if (newvalS2 < (oldvalS2-2) || newvalS2 > (oldvalS2+2)){  
    myservoS2.write(newvalS2);
    Serial.print("2- ");    
    Serial.println(newvalS2);
    oldvalS2=newvalS2;
  }
  delay(50); //slow down looping to better read serial monitor 
}

turbo31:

rootboy:
Keep in mind that your analog input is going to limit you to 256 positions (that's life in the 8 bit world). Personally, I think that you would be better off using a LM317 setup in constant current mode and then use the 4 - 20ma input on your Linear Actuator Control Board.

http://www.ae5d.com/images/Lim.png

So you plan on manually positioning your slide using a pot?

Thanks for the suggestion. The original thinking was with a stoke of only 100mm the 256 steps would be fine. However,the LM317 setup would give me better resolution when I go with larger actuators in the future. I will explore this. To answer your question, yes. I am trying to show how a motion platform can be used in live theatre and am building a working model of the concept. The final goal is to be able to have a "master" platform that I manipulate offstage and record the movements of and have a "slave" platform repeat those movements on stage when cued. Hence why I am trying to incorporate an arduino so I can record and play back various movements or positions on demand.

I may be showing my age, but we used to do this sort of thing with what was called a "Motor Operated Pot" (or a MOP). Because interfacing things like dancer arms on wind-ups and let-offs could be tricky, someone came up with the kludge of using a motor to control the position of your pot. Honestly, it looked pretty silly at the time, too. :slight_smile:

In your case it makes sense, and would be a snap. Get yourself a nice ten turn pot that will do the job for you (I would avoid "audio taper" unless you compensate for the log taper. Just get yourself a linear taper instead). Try it out and make sure that it suits you.

Now find the teeniest stepper motor that you can find. The smaller the better. Attach the shaft of the stepper to the shaft of the pot using a pair of pulleys to slow down the pot's speed (multiplies the torque of the stepper for you, and gives you better resolution to boot).

Now run your stepper to adjust your pot. Ten turns of the stepper multiplied by your "gear" ratio will give you full span.

Now for the cute part. Your small stepper shouldn't develop enough torque to damage the pot, so to home your pot, simply drive the stepper to zero, and keep running the stepper for one additional revolution. Sure, the stepper will stall out and chatter, but neither the stepper or the pot should be harmed. You could even go as far as to lower your stepper driver's current limit through the 'Duino during the homing process if it bothers you.

For reference, I have a Spectrol brand ten turn pot (a MOD 534-7156) and in one direction it can be forced (with considerable effort) to move past its stop. However, in the other direction, whatever it hits, it doesn't seem to want to go any further. Make this your zero position and wire the pot to make that electrically zero too.

This will get you pretty close to infinite control (on a budget no less) as I can imagine.