Request: How to wire a Firgelli L16P to an arduino

Hi, everybody.

If you followed my instructables you know I'm always building robots.  I'm trying to assemble a Stewart platform using Firgelli L16P linear actuators.  My problem is that I can't seem to get the Arduino PWM to talk to the firgelli RC servo interface.  I have...
- 12v running to controller pins 1 (-) and 2 (+)
- arduino PWM pin 3 to controller pin 3
- controller pin 1 to arduino GND (for common ground)

and I'm running a version of the servo sweep example sketch, modified to run on pin 3.
The actuator doesn't move.

I've tested the control board with the PC control software from Firgelli (works) and I've tested the arduino with a TowerPro SG5010 I had lying around (also works).

Notice the controller LED will NOT come on in this configuration, but once I remove the common ground the light turns on.

So what am I missing?

Picture of Request: How to wire a Firgelli L16P to an arduino
sort by: active | newest | oldest
1-10 of 43Next »

Introduce myself, my name is Agung Pambudi. I'm working on stewart platform robot 6 DoF with 6 Firgelli L16P linear actuator and LAC (Linear Actuator Control).

I have two questions :

a. Do you know how to set PID controller on LAC? maybe you have reference about PID controller on LAC. Because the goal is to make 6 firgelli linear actuator have identical the same, example given PWM with value x then firgelli linear actuator will extend along m in time t, so 6 linear actuatir firgelli identical.

b. I am confused with kinematics for inverse and forward and confused with modeling for stewart platforms. I'm have searched for paper but not found can I easily understand and how can put into the program. Do you have reference for kinematics and dyamic modeling this?

I hope this message is replied. Thanks.

If i have the L12-P, LAC board, adafruit shield, and the arduino uno, is it possible to obtain functionality in my linear actuator without an external power source?

behzadjk4 years ago
Hello all,

this might come along as a redundant, but i have not found a single piece of info regarding how to run and control this.
i connect the linear actuator to the arduino: red to +5V, black to GND and yellow to pin9. the actuator turns on and extends to full length. then...nothing!!!
please help me out. am i missing something?
then i went and bought a adafruit motor shield and now i am not sure how to connect it to arduino.i did connect it (i guess) and ran the "sweep" code but nothing!!!
please help might well be a small issue but it for sure is quite urgent. i appreciate any help.
my L12 actuator is -P version, if that helps...
aggrav8d (author)  behzadjk4 years ago
the firgellis have DC motors in them. they come with a control board that receives a PWM signal and then moves the DC motor until the linear potentiometer in your firgelli matches the PWM signal.

If you ignore the potentiometer/control board and apply 5v/gnd all you will get is movement out to one end. keep power going and you will probably damage it. reverse the current and the actuator will go the other way.

The pot should have three lines: in, gnd, and signal. put the 3.3v line to the pot and to aref, gnd to gnd, and signal to A0. then you should be able to read the pot and adjust the current to the DC motor through the adafruit shield. Might need a PID, too. Does any of that make sense? I am writing in a bit of a hurry.
Dear aggrav8d

Thank you for your kind response. I did not however quite understand: so I am not going to be able to run the actuator solely on the basis of JUST the Arduino Mega 2560?
Secondly, if not, how do I connect the ADAfruit to the Arduino Mega 2560? and I did not catch the part for the you definitely know there are 5 pins to the actuator: yellow, black, red, purple and orange...
Would you please advise?
Also, is there a sample code for the Firgelli L12 -P linear actuator, to run and control basic motion?

Many thanks,
aggrav8d (author)  behzadjk4 years ago
I haven't tried connecting without a control board. Without hardware to test I cannot give you a definite how-to answer. The Firgelli has five lines, yes. three for the pot and two for the motor. The documentation on the firgelli website should explain which one does what. I have not used firgelli in over two years. I'm sorry I can't help more. :(
Dear Aggrav8d

This is my setup: Arduino Mega 2560 + Adafruit v.2 + L 12 Firgelli -P Linear Actuator

(Picture Attached below this message for your attention)

I can only power up the actuator via the terminal block (shown with a RED arrow).
How could I make it move back and forth?

Many Thanks in Advance,
aggrav8d (author)  behzadjk4 years ago
The terminal block you've pointed to is the incoming power supply for the motors/steppers attached to M1-M4. Your firgelli red and black lines should go to M1 and then follow the Arduino Motor Shield v2 example code for a DC motor.

The other three wires are for the potentiometer - attach them to gnd, power (3.3v? 5v?), and A0, then use analogread(A0) to find out what the pot is doing and maybe a software PID to position yourself with accuracy.
I have followed the first part of your comments, exactly as you mentioned, as i previously did. but no movement. is there a specific sequence that i am not following? here is the code:

#include <Wire.h>
#include <Adafruit_MotorShield.h>
#include "utility/Adafruit_PWMServoDriver.h"

// Create the motor shield object with the default I2C address
Adafruit_MotorShield AFMS = Adafruit_MotorShield();
// Or, create it with a different I2C address (say for stacking)
// Adafruit_MotorShield AFMS = Adafruit_MotorShield(0x61);

// Select which 'port' M1, M2, M3 or M4. In this case, M1
Adafruit_DCMotor *myMotor = AFMS.getMotor(1);
// You can also make another motor on port M2
//Adafruit_DCMotor *myOtherMotor = AFMS.getMotor(2);

void setup() {
  Serial.begin(9600);           // set up Serial library at 9600 bps
  Serial.println("Adafruit Motorshield v2 - DC Motor test!");

  AFMS.begin();  // create with the default frequency 1.6KHz
  //AFMS.begin(1000);  // OR with a different frequency, say 1KHz
  // Set the speed to start, from 0 (off) to 255 (max speed)
  // turn on motor

void loop() {
  uint8_t i;

  for (i=0; i<255; i++) {
  for (i=255; i!=0; i--) {

  for (i=0; i<255; i++) {
  for (i=255; i!=0; i--) {



for the second part, the purple shows the signal pin, which i believe goes into A0 (as you suggested) but the yellow and orange will apparently go to +5 and GND. thank you.
aggrav8d (author)  behzadjk4 years ago
I don't see anything wrong with your code. Send me a pic of your wiring exactly as it is now, please.
1-10 of 43Next »