This post is to understand the feasibility of my project, with a reasonable budget, and to define the motor and sensors for the purpouse.
I provide here below some insight of the project:
A flat plate attached to a rotating shaft is immersed in water. The shaft shall by driven by a motor that has to be accelerated from rest up to the required velocity.
A 90° rotation is to be achieved in an estimated timeframe of 0.5s, yielding a final angular velocity of 75RPM, as a minimum. Once the final position is reached(90°) the motor shall be turned into free-wheel mode. The rotation is stopped by a lever arm, integral to the shaft, that will touch a force sensing system.
REQUIREMENTS:
The motor shall provide an average torque in the orded of 1Nm or greater. This value is based on the resistive force developing during the plate motion in water and to be overcome by the motor.
The motion shall be controlled with a specific motion law, say sinusoidal and shaft angular position vs. time shall be monitored for subsequent velocity and acceleration calculations.
Arudino UNO will drive the motor and acquire the signals from the angular position sensor and the force sensor.
A sketch of the setup is attached for clarity.
Questions:
Is a servo motor or a stepper motore better suited for the task in terms of performance and price?
What type of driver do I need for either motor?
Is Arduino UNO capable of driving such motors in a precise manner at the specificed speed and in such a short time?
What type of angular position sensor do I need (encoders, hall sensors, etc.) ?
Is a system based on strain-gauges, eventually home-bulit, adequate for measuring the force? Consider forces in the order of few kilograms with slow dynamic behaviour (few seconds).
Is a servo motor or a stepper motore better suited for the task
Nether. A stepping motor does not have a very free free wheel mode. A servo motor has feedback electronics in it and does not have a free wheeling mode.
Is Arduino UNO capable of driving such motors in a precise manner at the specificed speed and in such a short time?
The Arduino is as capable as any other processor of doing this.
What type of angular position sensor do I need
An absolute rotary shaft encoder. They come in many types. Perhaps the cheapest is a hall effect one.
More than viscosity, the force measurement is linked to fluid inertia.
1.Nether. A stepping motor does not have a very free free wheel mode. A servo motor has feedback electronics in it and does not have a free wheeling mode.
However, the servo might me disabled once the final position is reached, right?
Even though the step motor doesn't have a true free whell mode, a small torsional resistance might be acceptable. How can I evaluate it? Is it specified in the motor datasheet?
4.An absolute rotary shaft encoder. They come in many types. Perhaps the cheapest is a hall effect one.
What are the advantages of magnetical vs. optical encoders?
However, the servo might me disabled once the final position is reached, right?
No, the gearing in a servo will ensure that there is still considerable resistance even if all the power is removed.
Even though the step motor doesn't have a true free whell mode, a small torsional resistance might be acceptable. How can I evaluate it? Is it specified in the motor datasheet?
No there is no such measurement in the data sheet. Just take a stepping motor and try and turn it by hand. It is a considerable break. You can even light an LED off a stepping motor turned just a fraction of a rotation by hand. In my opinion this will be too much of a break. The more torque a motor can put out the worse this gets.
What are the advantages of magnetical vs. optical encoders?
Most optical shaft encoders are incremental, not absolute. The absolute ones are very expensive and there is not that much resolution. Hall effect ones are relatively cheap, about £7.00 for a 10 bit resolution one like the AS5040.
No, the gearing in a servo will ensure that there is still considerable resistance even if all the power is removed.
The free wheel thing could actually be not a real problem. Considering that plate/shaft motion is restrained by the lever arm and some "gaps" are intrinsically present in the motor, most of the load would be transfered to the force sensor anyway. I believe this is true for servos more than for step motors.
The aim is to measure the torque to stop the plate motion so any additional spurious torque would affect the measurement accuracy and should be somehow minimized.
Hall effect ones are relatively cheap, about £7.00 for a 10 bit resolution one like the AS5040.
I've made some searches abour AS5040 and it's hard to find a breakout board with the IC already itegrated. Could you give me some links? Is it possible to find it pre-programmed? I would avoid additional hardware programming if possible.
I solderd the A5040 onto a breakout board that I got off eBay.
You do not program it you just read it through an SPI interface.
Freewheeling a servo will very quickly damage the gears. Also you have no control over the velocity of a servo, it just goes at the speed it does. Well OK you can slow it down by giving it short movement commands but that is not what you want to do.
Maybe i didn't make myself clear. When the motor has performed a 90° rotation, the shaft rotation is stopped by an arm in contact with say a load cell. Therefore the applied torque will not spin the motor any further as the torque will be counteracted by the force on the load cell.
So you say it's not possible to control the servo with a specified motion law?
I'm going to investigate the implementation of the A5040.
OK you ask for advice and I give it.
If you are not willing to accept it then I am just wasting my time. Let's hope you are not, but at least it is your time.
Bye.
I'm just asking question to fully understand the matter.
Your advises are more than welcomed. I didn't want to be pretentious at any extent.
Sorry Mike, if I may have been unpolite.
I have seen an assembled AS5040 breakout board here. There is also a link to some code for reading the SSI output. The mounting of the magnet and the axial positioning of the AS5040 may be difficult depending on the motor and shaft arrangement.
You may also want to take a look at the Bourns EMS22 which is a packaged absolute encoder built with an AS5040.
Thank you cattledog fot the links you provided. The code will be definetly usefull.
I also found that a max quantity of 3x AS4050 are sold and shipped in the AMS website (http://ams.com/eng) completely for free! I might go for this so that i'll also learn how to solder the IC on a PCB!
Back to the motor selection question, in case of using a DC motor to accelerate the load, instead of servo or stepper, could I derive the applied torque by measuring the rotor current? Can I generate a motion low by playing on the supplied voltage vs. time?