Ive been using the pololu 6 servo driver for many years and the last few using the maestro 6 in my camera mount system to run 2 CR servos and 2 STD ones
One issue has always been the fact I have to re-map the servo ranges in my software to the joystick ranges.
No big deal however over the years there are so many servos with slight variations that I have to use averages to cover most and this costs range as well as lags at end points.
It drives servos to mechanical limits to get about 180 degree and find the 7bit range fine enough to give good resolution but if the range in software is not exactly the same as the range the servo handles then the software sends position above what the servos handles.
Not a problem because I have the absolute limits saved in maestro board so it doesn’t over drive the servo but the software does scale past the stored end point and it has to come back which causes some delay just at the end point, this being because servos vary a bit even though Ive used the same brand and model servo for many years.
The other side of the coin as that if the software range is a bit lower then the servo limit set in maestro then the servos never reaches full range.
It’s been a minor issue up till now with new servos I got a box of vary slightly in end points to previous ones so now the maestro settings are a little more off the 2 above issues are even worse and noticeable.
Problem is a cant just change the range values in software to suit new servos because the software has to work for all older units over years as well and Ill have to have version for each servo types.
Older owners loose their software and then need to dload a copy so I need to be able to stick to the same version for all owners.
So I decided to only way around this is to use SSC commands to remap the input to 0-254 8 bit and that way I can set the new end points in maestro for the servos on that unit and use SSC limits hard coded on software to deal with it.
The 255 range is just too coarse control for the servos and spread over 180 degree stop to stop each value increase jumps noticeably so it no good.
So next brain storm I decided Ill just send position command with a value well above the end points saved on board and then use “get position” and hopefully the board ignore values above the stored value I sent to it and I get back a “get position” value that gives me the maximum value saved on board the maestro.
Then do same for min value.
However to do this on start up Ill need another really to turn off servo power so the thing doesn’t starting moving all over the place just to find it min and max position range in the maestro board.
What I really need is a command like 'Get Position" that is “Get Min/Max” that returns the min and max position values stored in the maestro board.
Same as “Get position” from a given device number and servo but “Get Min/Max” just returns the end points set into the maestro for that servo number.
That way I can set the maestro board with the USB to put hard limits into it for the servos on the unit, then all the software needs to do is “Get Min/Max” values to be able to map it range to the joystick input values.
Also needed for the 2 constant rotation servos that have slight variation in center point that stops the servo moving.
using maestro control panel I can set the range so the centre of the range is exactly centre for the CR servo on that channel to assure no drift on centre as well as the same speed in each direction.
I have a setup in software to set this deadband and centre for the servo but every time the owner installs a new they have to do this setting and its not so easy for them.
Being able to set the CR servo values in maestro and just grab the end points with a command for each servo number at software start means the software can calibrate itself to the ranges set in maestro for constant rotation without the software users having to do it manually.
The one thing that is great about maestro over the old pololu6 is it can save the range values in it so its great to ensure no software errors can mechanically over drive the servos.
It just a shame we cant get the servo min/max range values back from it, from the software side I still have the issues that came with the polou 6 and cant make use of the stored values in maestro 6 to have the software benefit from the things the maestro can do the old one could not.
SSC is a poor fall back to re-mapping ranges from input to output.
Can this command be added ?
It can already get the position values stored for each servo, just not the min and max values set for each servo
That would be very useful for anyone controlling servos with a joystick or some other input to allow their software to re-map the input to put properly each time.
They can even use the software on various boards with different servo ranges and values in them, so long as the software can get the range values from the maestro in a simple command it can re-map easily to the input range.
At some point I am going to have so many version of software for each unit Ill end up sending someone the wrong one and it will have bugs and then trouble will start because they all use the gear for work not pleasure.
So far Ive set the hard limits in maestro board for each unit to suit the servos on it, dozens over some years.
If I can get this command added to maestro to get min and max stored values for each servo I can supply every owner the same software and know it wont have problems with servos not going to full range or lags at end points, or drifting of CR servos.