Cross Talk between SnapAmp channels

Moderators: TomKerekes, dynomotion

Post Reply
ZooBDoo
Posts: 30
Joined: Tue May 07, 2019 4:35 pm

Cross Talk between SnapAmp channels

Post by ZooBDoo » Sat Jan 04, 2020 1:14 am

I noticed that current demand on one Snap Amp channel affected the other motor. I have dual Snap Amps with three motors. One Snap Amp has a brushless Servo and an open loop microstepper. The other Snap Amp has a single brushless motor. When the brushless motor on the stepper/servo amp is running slowly (2 seconds per rev) I noticed that the stepper motor shifts slightly back and forth as the servo rotates through it's phases. I haven't actually measured this but I can feel it on the motor shaft which has a pulley on it. This would cause some surface finish problems in my application so I'm going to move the stepper to the other Snap Amp and put both brushless servos on the same amp.

It doesn't appear to be a noise issue but more of a current feedback crosstalk issue so I expect that this will disappear once I'm using separate amps and I can then see if I get a similar effect between the two brushless motors.
.
Have you seen or heard of this phenomenon?

AZ

User avatar
TomKerekes
Posts: 739
Joined: Mon Dec 04, 2017 1:49 am

Re: Cross Talk between SnapAmp channels

Post by TomKerekes » Sat Jan 04, 2020 6:23 pm

Hi AZ,

No I haven't heard of this. Can you see current changes on the stepper motor outputs in the current measurements? The Stepper motor coil with the lowest current has the most influence on the position. What are your coil currents?

You might record then plot the currents. Below is example code to read the SnapAmp Currents and convert units to Amps.

Code: Select all

#include "KMotionDef.h"

main()
{
	float Current0, Current1, Current2, Current3;

	Current0 = SNAP_CONVERT_ADC_TO_AMPS(ADC_BufferInSnap[0]);
	Current1 = SNAP_CONVERT_ADC_TO_AMPS(ADC_BufferInSnap[1]);
	Current2 = SNAP_CONVERT_ADC_TO_AMPS(ADC_BufferInSnap[2]);
	Current3 = SNAP_CONVERT_ADC_TO_AMPS(ADC_BufferInSnap[3]);

	printf("Currents in Amps = %6.2f %6.2f %6.2f %6.2f\n",Current0, Current1, Current2, Current3);
}
Regards,

Tom Kerekes
Dynomotion, Inc.

Post Reply