Go Down

Topic: Analog position to resolver converter: Will anyone build for me? (Read 252 times) previous topic - next topic

yorlik

I am new to the forum.  Hope this is good spot to post this request.

We have a need on some machines for 6 sets of little black boxes to convert motor drive analog output 0-10V signal, set as resolver absolute position over 1 motor rev, into a resolver signal. 

We need it as a resolver signal, not a digital word, AND we need the controller on these machines to feed the reference out...  So we are thinking of taking into our black box the 5khz reference, the absolute position in format 0-10Vdc = 0-360 degrees, and make a sine and cosine output from them...

I think it could be as simple as this:

        BEGIN PROGRAM
        define  an_in_1=AKD 0-10vdc position
        define  an_in_2=5khz reference input
        define  an_out_1=scaled resolver sine
        define  an_out_2=scaled resolver cosine

        LABEL:  Start_Here
        an_out_1=an_in_2 * sin(radians(an_in_1*36))
        an_out_2=an_in_2 * cos(radians(an_in_1*36))
        GOTO Start_Here

        END PROGRAM

        So in essence, we just pass the 5khz 10Vrms resolver reference input thru  to the outputs, modulated by the sin or cos of the 0-10v position...

We are looking for someone to build this for us?  We think the resolution can be 12 bit on the sin/cos output;  obviously 14bit would be way better...

        Can we get a small processor, program in machine language if necessary, to do the above loop in less than .002msec (500khz update time)?   The input 0-10vdc representing 1 motor rev can go to 67hz max;  so we figure 67hz * 4096= 260khz or so update time required per output bit change.

I can send more details, a spreadsheet showing the inputs and outputs over full 0-360 degrees if anyone is interested! 

Thank you for looking!

cedarlakeinstruments

#1
May 13, 2017, 02:50 am Last Edit: May 13, 2017, 02:52 am by cedarlakeinstruments
Is it doable? Certainly! With an Arduino doing all of this in software? I wouldn't count on it.

My thought on this is to take a hardware DAC, feed its reference with your 5Khz signal and the digital input is the sin/cos of the sampled 0-10V signal.
Hmmm. I have a couple of video DACs lying around; I should prototype this to see how it works.

As a result, the DAC only needs to have a 5Khz bandwidth and you only  need to sample the input at a minimum of 134Hz. Oversample 10x and it will probably work much better.

Send me a PM if you want to discuss this further: it could be fun!
Electronics and firmware/software design and assistance. No project too small

PaulMurrayCbr

5khz? That's .2 ms for a single cycle of your signal. 3200 processor cycles, divided by how fine you want to slice up the full cycle. And you want to do sine's and cosines and floating point multiplications on this? Might be possible if you sample the AKD every now and then and precalculate the sines and cosines.

But remember, the output will be a pulse-width modulated square wave, not a sine wave, and will have an accuracy of 8 bits.
http://paulmurraycbr.github.io/ArduinoTheOOWay.html

PaulMurrayCbr

#3
May 23, 2017, 03:31 pm Last Edit: May 23, 2017, 03:35 pm by PaulMurrayCbr Reason: linkage needs another pivot point
5khz? That's .2 ms for a single cycle of your signal. 3200 processor cycles, divided by how fine you want to slice up the full cycle. And you want to do sine's and cosines and floating point multiplications on this? Might be possible if you sample the AKD every now and then and precalculate the sines and cosines.

But remember, the output will be a pulse-width modulated square wave, not a sine wave, and will have an accuracy of 8 bits.

What you might want to do is just use the arduino to read the AKD thing and to operate a pair of digital potentiometers or something.

You know, you could acheive this with a mechanical arrangement. Get yourself a couple of sliding potentiometers, pivot them at one end and hook the sliders up to a common knob. Work out the locus through which this knob travels when the pair of sliders have mutually correct values, and cut a slot in some board to force the knob to travel along that path. Or maybe some sort of linkage might do the trick.

http://paulmurraycbr.github.io/ArduinoTheOOWay.html

Go Up