Arduino EmoRo2560 controlling Acuuonix L16 Actuators

Hello All,
I'm a newbie here and trying to get some guidance....so I thank you in advance for your help.

Trying to control an Actuonix L16 R Series Linear Actuator with the Arduino Emoro2560 board. The Arduino docs said it can control up to 8 actuators which is perfect for my application.

I am not certain though, if I in fact, need a separate power supply to power these actuators or can the Emoro2560 power them via the connections?

Here is the link to the specific actuator:

If I need a separate power supply then how to I hook it up? Just black/red to the power supply and then connect the 3rd wire to the Emoro2560? If that's the case I don't see the benefit of the Emoro 2560 board at all? I assumed it would just be a plug and play in terms of using R Series 6V actuators wiring?

thank you!

Search the data sheets for the need of power for the actuators. Then check how much the controller can support. Most likely You need a separate supply of pwr for the actuators.

Thanks for the quick response Railroader.

Here's what it says:

-R actuators are ideally suited to use in robotics and radio control models. The –R actuators or ‘linear servos’ are a direct replacement for regular radio controlled hobby servos. The desired actuator position is input to the actuator on lead 1 as a positive 5 Volt pulse width signal. A 1.0 ms pulse commands the controller to fully retract the actuator, and a 2.0 ms pulse signals it to fully extend. If the motion of the actuator, or of other servos in your system, seems erratic, place a 1–4Ω resistor in series with the actuator’s red V+ lead wire.

L16 –R Linear Servos are the only 6 volt models in the L16 range because they are designed to work with typical RC receivers and battery packs. Consequently they also are compatible with Arduino control boards, VEX Microcontrollers and many other similar boards designed for robotics.

What I'm confused about is the Arduino Emoro2560 documentation seems to indicate that you just plug these into the board and they can power the actuators/servos?

I plugged the USB cable into the Arduino board (as well as one actuator) uploaded a Servo Sketch from the library but nothing happens. Would powering the Emoro Board with a 12V adapter work any differently thank the USB? The documentation on the Emoro2560 seems to be very scarce?

Thank you for your help.

You need to supply us with facts, specs etc.. Attach the code You have as well as wiring diagram. As I don't know the Emoro2560 I can only guess about pwr. 12 volt handled by the controller? I doubt it. Dig up specs and data sheets!
Discussing sensor strategy without knowing the physical arangement is hard.

Here is the spec for the Emoro2560 Board....its built on the Mega2560 platform. Maybe you can understand this better than I?

It seems to me that if I power up the Emoro2560 with a separate power supply it will drive the actuators/servos no?

http://www.emoro.eu/shop/system/download/EMoRo2560_and_GLAM_brochure.pdf.0b83da8ad90db30722cca3a5d2529494

Thank you again.

Using an external pwr supply the board can supply totaly 3 Amps for some servo outputs and 2 Amps in total for all the other outputs if they are using 5 volt supply. Go deaper into the real spec to check what a single output can handle. If the actuators run from 5 volt, yes, there is a chance.

So I was able to hook up a 12V / 2Amp DC adapter (purchased off Amazon) to the board and use the sample sketch for SINGLE SERVO and it runs great. I also tried the sample sketch for 3 servos and that too works.

Next question: When I use either of the sample sketches how do I modify them to do the following:

(Basically think of this example as it’s like a vending machine)

Get an incoming signal from a POS terminal (this will come into the board as either a PULSE or a SERIAL signal…please let me know which is easier for the Arduino board to accept…PULSE or SERIAL).

Once I have that signal coming into the program I want it to activate Servo_0 for one complete cycle. This means extend the actuator/servo from 1000 to 2000. I have that working repeatedly now with the sample program but I need it to stop after one cycle. At the moment it just keeps looping.

After we have this working I’d like the next time a signal comes in from the POS to instead activate Servo_1. This will continue each time a signal is sent from the POS using Servo_2, then Servo_3, Servo_4, etc…up to Servo_7…then start back from Servo_0 again.

I also want to insert an optical sensor right after each actuator/servo cycles to give the system feedback that a unit has been dispensed. There would only be ONE optical sensor that would be used for all 8 servos/actuators.

Thank you in advance!

Here is the sample code so far:

//
/
Inovatic-ICT d.o.o /
/
/
/
EMoRo Example: SingleServo /
/
Board name: EMoRo 2560 v3.2 /
/
MCU name: ATMEGA2560-16 /
/
Clock: 16 MHz /
/
File description: /
/
This sketch controls the servo motor attached to defined servo port end sends coresponding /
/
description to console port. EmoroServo.attach(); initialize servo on desired port. /
/
After initialization with EmoroServo.attach(); pulse width is automatically set to /
/
1500us. It is possible to use max. 8 servo motors on ports SERVO_0 to SERVO_7. After /
/
initialization, servo pulse is controlled by EmoroServo.write(, ); Background /
/
engine will repeat that pulse width every 20ms automatically until it is not changed by new /
/
EmoroServo.write(, ); or terminated with EmoroServo.detach(); /
/
EmoroServo.read(); will return current pulse width in us (micro seconds). /
/
The circuit: /
/
Connect servo motor with JR cable to SERVO_0 (white triangle (pin 1) is ground (black wire)) /
/
/
/
Necessary equipment: /
/
EMoRo 2560 controller /
/
Servo motor with JR cable /
/
More info: www.emoro.eu /
/
/

int servoPort = SERVO_0; // select the pin for the servo motor
int waitState = 2000; // time in milliseconds between actions

void setup(void){
Serial.begin(9600); // initialize serial communication:
Serial.println(“Example: SingleServo”); // send example name to console
EmoroServo.attach(servoPort); // initialize servo motor on selected port

Serial.print(“Pulse width: “); // print string
Serial.print(EmoroServo.read(servoPort)); // print current servo pulse width
Serial.println(” us\n”); // print string

}

void loop(void){

// Set servo pulse to 1000us. For position servo motors this will set the left position,
// for servo motors with continuous rotation this will set continuous rotation in CCW direction
EmoroServo.write(servoPort, 1000);

// print action to console
Serial.println(“Set servo pulse to 1000us”);
Serial.println(“Standard servo: set left position”);
Serial.println(“Rotation servo: rotation in CCW direction\n”);

// wait for specified time in milliseconds
delay(waitState);

// Set servo pulse to 1500us. For position servo motors this will set the middle position,
// for servo motors with continuous rotation this will stop rotation
// EmoroServo.write(servoPort, 1500);

// print action to console
Serial.println(“Set servo pulse to 1500us”);
Serial.println(“Standard servo: set middle position”);
Serial.println(“Rotation servo: stop\n”);

// wait for specified time in milliseconds
delay(waitState);

// Set servo pulse to 2000us. For position servo motors this will set the right position,
// for servo motors with continuous rotation this will set continuous rotation in CW direction
EmoroServo.write(servoPort, 2000);

// print action to console
Serial.println(“Set servo pulse to 2000us”);
Serial.println(“Standard servo: set right position”);
Serial.println(“Rotation servo: rotation in CW direction\n”);

// wait for specified time in milliseconds
delay(waitState);

// Set servo pulse to 1500us. For position servo motors this will set the middle position,
// for servo motors with continuous rotation this will stop rotation
// EmoroServo.write(servoPort, 1500);

// print action to console
Serial.println(“Set servo pulse to 1500us”);
Serial.println(“Standard servo: set middle position”);
Serial.println(“Rotation servo: stop\n”);

// wait for specified time in milliseconds
delay(waitState);

}

//
/
end of file /
/
/