11-09-2007 11:17 AM
Kevin,
Cool! I will definately give this a whirl and see how it goes. I have replaced ALL wiring with shielded twisted pairs, so I'm confident that there's minimal/no crosstalk.
Thanks!
To All,
I really appreciate the advice!
.jim
11-13-2007 02:49 PM
Kevin,
So a couple of new updates: The encoder output isn't differential, rather complementary (when A+ = 5v, A- = 0v, not -5v).
Both ranges go between 0-5 volts relative to the digital ground, so it's not a threshold issue, as far as I can tell... Is the differential-to-ttl circuit still potentially the way to go?
.jim
11-14-2007 07:47 AM
11-16-2007 05:36 PM
Kevin,
This one keeps getting stranger and stranger (I hope that means I'm closer to a solution :)). Circuitry is in place to verify that the signals from the differential encoder A,B,A-,B- to the PCI-6602 are in the appropriate range/values relative to digital ground.
After some extensive scoping, I've verified this discovery: The motor controller causes the motor to dither back and forth at the current encoder position. When we scope channels A and B, we see that when the motor is dithering around a channel A position we don't see any drift. However, when the motor is dithering around a channel B position, we get our slow positive drift! This seems to be very repeatable, too.
Would this be a software issue in the Labview encoder counting subroutine? We've tried to use X1 and X2 with little improvement...
Any thoughts?
Thanks!
.jim
11-19-2007 01:23 PM - edited 11-19-2007 01:29 PM
If it is an issue with the LabVIEW counting subroutine, we can try to reproduce it by manually driving the motor, like you did on your first post, and try it with this example code: “Measure Angular Position.vi” what I would like to do is to isolate “angular encoder” task from other tasks you have in your code. I replicated your issue by manually driving an encoder very slowly and everything worked fine, even though simulate the back and forth movement of the motor and I do understand there are some differences with your setup and mine but is the closest I can get to your system.
If it works we can try running the previous VI at the same time with “gen pulse train change freq”, I’m not really sure how your motor should be controlled (I guess is PWM) but this is a counter output code in which you can change the freq on the fly you might just need to adapt it a little bit to your code.
After an extensive conversation with one of our Motion Control teams since I’m leaning towards one of two either a problem with the encoder no changing the phase when it jitter back and forth; we can check this if you read A and B at the same time, or the way the loop control is been coded in LabVIEW. My colleague also advise me that you might be interested in a Low-Cost 2-Axis Stepper Motor Controller and I know you probably have already have everything setup but this might help for future references.