Good Evening all
I’m new to using Arduino
I need assistance with controlling linear actuators using Arduino
Project I’m working on has couple of linear actuators, all linear actuators have hall sensor built in. Linear actuators have 6 wires, 2 to powering up the motor in actuator and 4 for hall sensor
First of all, I would like to know what all parts I need to be able to control linear actuators using Arduino?
Second, I want actuators to follow a pattern when activated or switched on and reverse to happen when switched off
When I say switched on/off, I don’t mean when power is turned on or off. The actuators will have a bi-directional switch, when pressed in one direction actuators will extend and pressing the switch in other direction will retract them.
So I need them to follow a certain order when that happens
Any assistance will be greatly appreciated
Good Evening all
There is not much information there to go on, as there are many varieties of linear actuator and many different uses.
You will need a motor driver to start with, for instance something built around a DRV8833. The most appropriate unit depends on the voltage and current requirements of your motor. Make sure your motor works with the selected driver - some linear actuators require very specific motor control sequences. Depending on the device it might not be even possible to select the motor direction without monitoring the sensors.
You haven’t mentioned what you would use the hall effect sensors for. If you are using limit switches then they might not be required. If the pattern of movement is more than simply left or right, then you would likely need to use the sensors. If they are analogue sensors then you can connect them to the Arduino analog pins; if they are digital sensors then you can connect them to either analog or digital pins. Your code will read the sensor values and proceed accordingly.
Your direction switch will connect to the Arduino digital pins. You could use interrupt handlers or you can simply test the state of the switches in the main loop. The code will be an extension of any of the simple examples for switch testing, such as:
I would recommend starting with two pushbutton switches and the motor driver. Configure it so you can push one button to move forward, the other button to move back, and no buttons to stop. From there you can work out how you are going to implement the patterns.
The actuators are 12v with a maximum current requirement of 5A, hall sensors will be used to synchronise two actuators so that 2 actuators are moving together
The Hall devices could be position encoders as seen on milling machines, lathes etc. The relative position of mill head or lathe tool etc is displayed with respect to a reference point. Digital caliper is a common example of this sort of thing.
The 6 wires are not for a stepper motor are they?
2 are to power the motor and other 4 are for hall sensor that is installed
That’s a pretty hefty load. The biggest unit I can see in the Core catalog is 2A. That might be enough, depending on the application. Another option is to use a much smaller driver and roll your own current amplifier.
Are they operating as limit switches, or are they encoded to indicate actual position? If they are digital, like a limit switch, then you can use them in the same way as any other switch. If they are digital with encoded position then you will have to use interrupts and counting to determine position. If they are analog then you will need to determine the exact specifications.
Good Afternoon All
So latest update, I have sourced a PWM control board that will allow me to connect actuators and operate them. The actuators connected to board will move in sync. I have got that part sorted.
Where I’m stuck is, how to connect PWM control board to Arduino? There are 3 wires from control board, let’s say they are A, B and C.
Wire C supplies 5V regulated voltage, wire A is to make the actuators go forward and wire B is to make actuators retract.
So, to which Arduino Pins do I connect these wires?
There will be 3 sets of wires that will need to be connected to Arduino
Really appreciate your assistance
If wire “C” supplies 5V what happens to the negative or ground side of the supply? Magic???
You will likely get more precise responses if you indicate exactly which controller you are using. For a general description, there are many tutorials available, such as this.
There is a common ground point for the Arduino, the controller and the logic power supply. There is no need for a separate ground connection between the controller and the Arduino.
Motor control board that I have sourced is made by Electromen, part number is EM-239
Which Arduino board will be better fit for the application?
It appears that the manufacturer preferred mode of operation for this device is the EM-236A Interface Unit. This seems to have a serial interface of some sort. The Arduino can support most types of serial interfacing (in some cases with simple add-ons), but they seem to be keeping the interface details very secret, and presumably the control protocol is going to be similarly difficult to access. On the face of it this would be the preferred method of controlling the device, but it’s not clear what benefits this gives, and whatever the benefits are they might not be applicable to your circumstance.
If that is so then the other option is to wire up to the forward and backward switches. These are defined as logic low = 0v and logic high = 4+v into 10k ohms. The Arduino would be able to do this through any of the analog or digital ports. Note that the 20mA available from the 5v supply from the device is not enough to drive an Arduino, so you will need a separate 5v source.
You have only mentioned three wires but you should also be using the fault output and the stop/safety input to ensure safe operation. These should also connect directly to the Arduino pins as input and output respectively.
Any model of Arduino has sufficient GPIO pins for this purpose. Your decision will probably be dictated by whatever other features you need, such as Bluetooth for remote control or a LCD display to see what’s happening.
So that means, Wire C coming from control board is not required as power would be supplied by Arduino
No. It means that Wire C coming from the control board is not required because it cannot be used to supply power to the Arduino, and the Arduino power will have to come from some other source. Power for the control board logic will be managed internally from the motor supply.
20mA won’t power much more than a small LED, so it is unclear why it is even provided. However the diagram shows it connected to the Interface Unit, which is specified as requiring 30mA. So it seems to be “20mA if you want to use it for your own purposes but 30mA when we use it for our equipment”! Whatever, you are better off with a dedicated power supply for the Arduino.
To make the actuator go forward, one had to connect Wire A( Pin 9 ) and Wire C( Pin 14 ), similarly Wire B( Pin 10 ) and Wire C( Pin 14 )
are connected to retract
The interface unit, EM-236, is used to set 14 parameters for the control board. Once set it is not required, unless you want to do fault analysis and re-program it
That would be the case if you were using simple n/o switches. Arduino outputs are not switches like that - they are a voltage source, so Pin 14 is not relevant in that configuration. If the output was adequate you could use it to power the Arduino, but 20mA is not enough.
That’s fair enough, I was going to power Arduino separately
If you are just going to use switches or push buttons to move forward and back what will the Arduino be doing. If it is just going to repeat these switches probably not required.
I’ll be using Arduino to program the sequence in
The project I’m working on has 3 sets of actuator that need to open and close in a specific sequence
Each of EM-239, can operate one set of actuator, so I’ll need 3 control boards.
Instead of having to press open/close, three times, I should be able to program Arduino. So when Open( switch/push button/touchscreen) is pressed, the whole assembly will open and vice Vera when Close is pressed
So I’ll connect switch to Arduino on the input side and program which circuits are to be completed & when which output pin gets the power