SUBSCRIBE TODAY!
Subscribe to our popular newsletter, Motion Control News, to get the latest announcements, technical papers, and solution notes delivered right to your inbox.
Frequently Asked Questions
User guides, manuals, and product datasheets can be found in our Resource Center.
To find out about the latest versions of our motion control ICs, modules, and boards, we recommend that you contact sales. Existing customers should reach out to our Service & Support team.
To access Release Notes, we recommend that you contact sales. Existing customers should reach out to our Service & Support team.
PMD's Headquarters is located at 80 Central Street, Boxborough, MA 01719. For driving directions, click here.
On a multi-axis product, it may be desirable to have a motion error event on one axis cause the motion on all axes to shut down. The default response to a motion error is the disabling of the position loop on the axis on which the motion error occurred. By default, any other axes on that product will not be affected. To create a system where all axes will react to a motion error on any axis, the BreakPoint feature is utilized. A breakpoint needs to be setup on each axis that is triggered by a breakpoint or motion error on another axis. In this example, the breakpoint on Axis1 will be triggered by the occurrence of a Motion Error or BreakPoint1 on Axis2. The breakpoint on Axis 2 will look at events on Axis 3. Axis 3 looks at Axis 4 and Axis 4 looks at Axis 1. In this way, the motion error event is cascaded across all axes.
SetBreakPointValue (Axis1, 0, 0x00140014) // Looks at BreakPoint1 and MotionError
SetBreakPoint (Axis1, 0, Axis2, <action>,8) // Look at Axis 2 EventStatus
SetBreakPointValue (Axis2, 0, 0x00140014)
SetBreakPoint (Axis2, 0, Axis3, <action>,8) // Look at Axis 3 EventStatus
SetBreakPointValue (Axis3, 0, 0x00140014)
SetBreakPoint (Axis3, 0, Axis4, <action>,8) // Look at Axis 4 EventStatus
SetBreakPointValue (Axis4, 0, 0x00140014)
SetBreakPoint (Axis4, 0, Axis1, <action>,8) // Look at Axis 1 EventStatus
There are several choices for the argument. A command choice for this argument would be "5", which is "Disable Position Loop and Higher Modules".
The following commands are needed to configure the product for Stall Detection (i.e. MotionError). The ratio between the number of encoder counts per revolution versus the number of steps per revolution must be defined.
// actual position is expressed as encoder counts
SetActualPositionUnits( &hAxis1, 0 )
SetEncoderSource( &hAxis1, PMDEncoderSourceIncremental );
SetEncoderToStepRatio( &hAxis1, 4096, 200); // In this case the system has an encoder with 4096 counts per revolution and a 200 (1.8°) step motor.
// set the error limit to 10 steps
SetPositionErrorLimit( &hAxis1, 10 );
When the MotorType is set to 2-phase microstepping, the ratio between encoder counts to microsteps should be used in the arguments to SetEncoderToStepRatio.
Here is an overview of a typical home sequence:
When the home switch is located, its position must be captured. By default, the capture hardware looks for a high-to-low transition of the signal. If the input signal has a low-to-high transition, the sense logic can be inverted using the SetSignalSense command.
SetSignalSense( &hAxis1, PMDSignalEncoderHomeMask );
The first step is to test if the axis is currently located in the home switch. If the switch is active, move the axis away from it until it becomes inactive.
GetSignalStatus(&hAxis1, &status);
if ( status & PMDSignalEncoderHomeMask )
{
SetProfileMode( &hAxis1, PMDVelocityContouringProfile );
SetVelocity( &hAxis1, 65536 );
SetAcceleration( &hAxis1, 256 );
Update( &hAxis1 );
do
{
GetSignalStatus( &hAxis1, &status );
} while ( status & PMDSignalEncoderHomeMask );
SetStopMode( &hAxis1, PMDSmoothStopMode );
Update( &hAxis1 );
}
The next step is to move into the home switch and capture the position.
SetProfileMode( &hAxis1, PMDVelocityContouringProfile );
SetVelocity( &hAxis1, -65536 );
SetAcceleration( &hAxis1, 256 );
// now prepare for the capture
SetCaptureSource( &hAxis1, PMDCaptureSourceHome );
// this clears the latched capture bit
ResetEventStatus( &hAxis1, ~PMDEventCaptureReceivedMask );
// this clears the capture hardware
GetCaptureValue( &hAxis1, &value );
// start the move into the home switch
Update( &hAxis1 );
// wait for the capture
do
{
GetEventStatus( &hAxis1, &status );
} while ( !(status & PMDEventCaptureReceivedMask) );
// now that we have the capture, stop the axis
SetStopMode( &hAxis1, PMDSmoothStopMode );
Update( &hAxis1 );
GetCaptureValue( &hAxis1, &home_pos );
The captured position can now be used to program an offset to the actual position using AdjustActualPosition. The home position will now be position zero.
AdjustActualPosition( &hAxis1, -home_pos );
If you are interested in more, please reach out to our Service & Support team for Application Notes on home sequencing.
denominator = sqrt(x_length2 + y_length2); // for the x axis x_vel = x_length/denominator * linear_vel; x_acc = x_length/denominator * linear_acc; x_jerk = x_length/denominator * linear_jerk; // for the y axis y_vel = y_length/denominator * linear_vel; y_acc = y_length/denominator * linear_acc; y_jerk = y_length/denominator * linear_jerk;
Linear_xxx is the desired vector velocity/accel/jerk.
Velocity, acceleration, and jerk have the position loop “cycle” as their time base. The default cycle period varies, depending on the product and number of axes. The GetSampleTime command can be used to determine the current cycle period return in microseconds. In the calculations below, you should substitute the current cycle period in units of microseconds for the product you are using.
Cycle times are listed in the Technical Specification manual.
To convert from counts/second to counts/cycle use this formula:
counts per cycle = (counts per second) * (<cycle period>/1000000)
Finally, to convert to the IC fixed-point format (16.16), multiply by 65536 and use only the integer portion of the result as the value for the SetVelocity command.
To convert from counts/second2 to counts/cycle2 use this formula:
counts per cycle2 = (counts per second) * (<cycle period>/1000000)2
Finally, to convert to the IC fixed-point format (16.16), multiply by 65536 and use only the integer portion of the result as the value for the SetAcceleration command.
To convert from counts/second3 to counts/cycle3 use this formula:
*counts per cycle = (counts per second3) * (<cycle period>/1000000)3
Finally, to convert to the IC fixed-point format (0.32), multiply by 232 and use only the integer portion of the result as the value for the SetJerk command.
Example Default Cycle Periods
Product | Cycle Period |
---|---|
4-axis Magellan IC | 256us |
2-axis Prodigy Board | 150us |
1-axis MC58113 | 51.2us |
1-axis MC73110 | 102.4us |
ION Drive | 102.4us |
Yes.
For those using Magellan V1.x, Navigator, Pilot, or Navigator Motion Boards. The concept of an EventAction does not exist in many PMD legacy products. Instead, the MotionError behavior is controlled by the SetAutoStopMode command. The answer is the same, however, when AutoStopMode is disabled; a MotionError will still cause the bit in the EventStatus to get set.
At the end of a move, set a breakpoint to be triggered when the axis-settled bit is not active. The breakpoint will only trigger once the axis is out of the settle window (a programmable value) for the specified settle time (a programmable value). Set the breakpoint action to “motor off”. Before the next move is commanded, turn off the breakpoint.
Example pseudo code is shown below.
// Using the settled window to stop motor output
// if the settle window is exceeded
selection_mask = PMDActivityAxisSettledMask;
sense_mask = 0;
SetSettleWindow( &hAxis, 1000 );
SetSettleTime( &hAxis, 100 );
SetBreakpointValue( &hAxis, PMDBreakpoint1, (selection_mask<<16)|sense_mask );
SetBreakPoint( &hAxis, PMDBreakpoint1, PMDBreakpointActionDisablePositionLoopAndHigherModules, PMDBreakpointActivityStatus );
The same method can be used with the tracking window. That is, if the axis goes outside of the tracking window, output to the motor will be switched off. Depending on the individual application, it may be preferable to have some other action taken such as an abrupt stop.
// using the tracking window to stop motor output
// if the tracking window is exceeded
selection_mask = PMDActivityTrackingMask;
sense_mask = 0;
SetTrackingWindow( &hAxis, 1000 );
SetBreakpointValue( &hAxis, PMDBreakpoint2, (selection_mask<<16)|sense_mask );
SetBreakPoint( &hAxis, PMDBreakpoint2, PMDBreakpointActionDisablePositionLoopAndHigherModules, PMDBreakpointActivityStatus );
For those using Magellan V1.x, Navigator, Pilot, or Navigator Motion Boards
The PMDBreakpointActionDisablePositionLoopAndHigherModules action does not exist on earlier products. PMDBreakpointActionMotorOff should be used instead.
By default an abrupt stop will occur in response to a Limit Switch event. The SetEventAction command can be used to alter the behavior associated with a LimitSwitch event. Executing the command below will alter the behavior such that a SmoothStop will occur on all future Positive LimitSwitch events.
SetEventAction (PMDEventActionEventPositiveLimit, PMDEventActionSmoothStop
For those using Magellan V1.x, Navigator, Pilot, or Navigator Motion Boards
Note: The SetEventAction command does not exist on older products and an alternate method described below must be used.
The method involves using a breakpoint or an interrupt service routine (ISR). The benefit of the ISR approach is that additional action may be taken in response to the limit event as opposed to simply performing a smooth stop. In either case, the default action must first be disabled. This is done as follows:
SetLimitSwitchMode( &hAxis, PMDLimitDisabled );
Executing a smooth stop after a limit event using a breakpoint. The following code sets a breakpoint that generates a smooth stop when the limit switches are low. To use “active high” logic set the sense mask equal to the selection mask. If the breakpoint triggers it must be re-set.
selection_mask = PMDSignalPositiveLimitMask | PMDSignalNegativeLimitMask;
sense_mask = 0;
SetBreakpointValue( &hAxis, PMDBreakpoint1, (selection_mask<<16)|sense_mask );
SetBreakpoint( &hAxis, PMDBreakpoint1, PMDBreakpointActionSmoothStop,
PMDBreakpointSignalStatus );
Executing a smooth stop after a limit event using an ISR routine. The following code sets a breakpoint that simply sets the breakpoint bit in the event register when the limit switches are low. To use “active high” logic, set the sense mask equal to the selection mask. If the breakpoint triggers it must be re-set.
selection_mask = PMDSignalPositiveLimitMask | PMDSignalNegativeLimitMask;
sense_mask = PMDSignalPositiveLimitMask | PMDSignalNegativeLimitMask;
SetBreakpointValue( &hAxis, PMDBreakpoint1, (selection_mask<<16)|sense_mask ); SetBreakpoint( &hAxis, PMDBreakpoint1, PMDBreakpointNoAction,
PMDBreakpointSignalStatus );
SetInterruptMask( &hAxis, PMDEventBreakpoint1Mask );
The interrupt service routine for the PMD IC should include the following:
GetEventStatus( &hAxis, &status );
if (status & PMDEventBreakpoint1Mask)
{
// stop the axis
SetStopMode( &hAxis, PMDSmoothStopMode );
Update( &hAxis, PMDSmoothStopMode );
ResetEventStatus( &hAxis, ~PMDEventBreakpoint1Mask );
}
Yes, the CME SDK contains the C-Motion.dll along with the source project for building the C-Motion.dll.
Please visit our Software Downloads page for the latest versions of C-Motion and Pro-Motion.
C# and Visual Basic examples are available which can be used to control Magellan based ICs, Prodigy boards and ION drives. These examples link to the C-Motion.dll.
VB-Motion (legacy software) is a software library containing pre-made COM DLLs. The library also contains examples of using the COM DLLs to interface PMD products. Included are VB.NET examples. (The existence of VB 6.0 examples are there for legacy purposes and VB 6.0 is not recommended for new designs.)
Please visit our Software Downloads page for the latest versions of C-Motion and Pro-Motion.
Use the command GetSignalStatus. This command is described in the PMD Resource Access Protocol Programmer's Reference and the User Guides.
Visit our Resource Center for the most recent versions of PMD Documentation.
Interfacing a resolver to a PMD product will involve the use of a Resolver to Digital converter (RtoD). If the RtoD generates an incremental quadrature encoder signal, that signal can directly interface to a PMD product however the absolute position information will not be available. Typically the RtoD will also output absolute position information in a digital format. In this case, additional circuitry is required to convert that information into a “parallel word” format. This can be used with products that support a “Parallel Word” encoder such as Magellan IC set and Prodigy boards. There is a reference design on the Application Notes webpage (Parallel Word AD2S80). Some RtoD’s are available on 3rd part Development Boards like the Analog Devices AD2S1200DK.
The standard MC73110 does not support the Parallel Word interface, but custom solutions are available. Contact us for more information.
The IC cannot use both types of position input simultaneously. Only one of the two inputs can be selected as the primary input source for a given axis using the command SetEncoderSource.
If an incremental encoder is a source, you can read the value of a parallel output position device by mapping it to the User I/O space. The value can then be retrieved using the command ReadIO. Refer to the User Guides and Electrical Specifications for more information regarding the User I/O space.
Visit our Resource Center for the most recent versions of PMD Documentation.
PMD products will drive the majority of motors to their maximum rated speed. For example, the ION has been used to drive a Brushless DC motor at over 1000 Electrical cycles per second, which equates to over 60,000RPM for a 2-pole brushless motor, or 30,000 RPM for a 4-pole brushless DC motor.
It is possible however that special Brushless DC motors, which need to be driven above 1,000 electrical cycles per second, may not be controlled effectively. Note that for maximum speed using the ION, field-oriented control mode should be used.
Read more about field-oriented control.
As the IC powers down, the PWM signals output by the IC may not all go to GND at the same time. In some cases, this can result in sudden shoot-through currents. To prevent this condition from occurring the PWM signals should be connected to weak pull-down resistors.
The part# is P50E-100S-TG. It is a Robinson Nugent part but 3M bought out this company.
We recommend splitting the clock output and placing 33-ohm resistors on each branch as close as possible to the oscillator. Then connect the signal to the IO IC clock input.
Sockets and clamshells can be obtained from YAMAICHI socket: IC234-0644-27P clamshell: IC51-0644-807
Sockets can be obtained from YAMAICHI CP socket: IC149-144-045-B5 IO socket: IC149-100-025-B5 Clamshells can be obtained from IronWood Electronics CP clamshell: PA-QFE144SC-C-Z-01 IO clamshell: PA-QFE100SC-P-Z-01
Future Technology Devices International make USB to serial interface ICs that will work with PMD ICs. Their home page is www.ftdichip.com
A USB to RS-232 Serial adapter is available from PMD. Order ADAPT-USB232-01.R.
A USB to RS-232 Serial adapter is available from PMD. Order ADAPT-USB232-01.R. This is a common solution for PCs or laptops that do not have a serial port.
The electrical properties vary by product and pin number, reference the pin description in the Electrical Specifications document for the IC you are using.
The Application Notes section of the Magellan Electrical Specifications contains ADC reference designs.
VCCA: Analog supply voltage should be isolated from the digital supply to preserve accuracy and noise immunity of A/D conversion.
VSSA: Analog ground, should be isolated from the digital ground to preserve accuracy and noise immunity of A/D conversion.
VREFHI: ADC hi reference, VCCA => VREFHI > VREFLO>= VSSA VREFLO: ADC lo reference, VCCA => VREFHI > VREFLO>= VSSA
VREFHI and VREFLO are usually adapted to the range of analog input voltages to take maximum advantage of the range of the ADC. For example if input analog voltages are 0-1V and VREFHI is 3.3V and VREFLO is 0V, then the full range of the ADC conversion will not be utilized and the resolution will not be optimal. Instead use a VREFHI of 1V to optimize the resolution.
The ADC is a 10-bit conversion. The upper 10-bits of the 16-bit value returned by ReadAnalog will contain the converted value. (Use GetAnalog on the MC73110)
Interested in learning how to reduce motor noise? Here are resources that may help:
It is logic level high.
Yes, but you must wire it to the limit signal as well as the home signal.
Manufacturer | Part Number |
---|---|
Alliance Semi | AS7C513-15 |
G-Link Tech | GLT751216-15 |
Integrated Device | IDT71008S-15 |
Integrated Silicon Solution | IS61C3216-15 |
Paradigm Tech | PDM41516LA-15 |
Paradigm Tech | PDM41516SA-15 |
Samsung Semi | KM616513-15 |
Only when the Magellan IC set is being used with an IOABN version label on the IO IC is synchronization required. In this case, the release of the ~Reset signal must be synchronized to the IOClock. The new Magellan IO ICs (ending in IOAD8 or IOSE8) do not require synchronization of the ~Reset signal release.
The ~Reset signal is active low. On all Magellan ICs with the exception of the MC58113, MC73119 and Navigator and Pilot ICs, it must remain active (low) after Vcc and Clock are present for a minimum amount of time as described in the respective IC’s Electrical Specifications. When the ~Reset signal is brought high, communication with the processor can begin after a fixed amount of time (reference manual). Afterward the ~Reset signal can be pulsed low to force another reset event if/when desired. Caution: The Reset pin becomes a temporary output in response to a SW Reset command. Add appropriate pull up resistor to avoid contention. Output signals such as AxisOut and PWM are in an undefined state when ~Reset is active.
The best reference for the proper start up command sequence comes from the Pro-Motion configuration. Initially the system should be configured by using Pro-Motion. When the user is ready to start their SW development, Pro-Motion can use be used to generate a file containing the initialization command sequence. Go to the Pro-Motion FILE menu and select either “Export as C-Motion” or “Export as Script”.
When using a IC level product, after power-on, a hardware reset must be performed. In addition the Reset instruction can be executed by a host application at any time. This instruction will place the motion processor in its “power on” state, setting all internal parameters to their default values. Refer to the Programmers Reference for a complete description of this command and the default settings for each internal register.
After a hardware reset, or following a Reset instruction being executed, the product will be in the reset state. The GetInstructionError command can be used to detect and clear any pending Errors.
// reset the IC
Reset( &hAxis1 );
// confirm that the IC reset correctly
GetInstructionError( &hAxis1, &status );
if ( status!= PMD_ERR_ChipsetReset )
{
printf(“IC reset error occurred\n”);
}
When using a board level product, there is a non-volatile register that can be queried at startup. The command MBGetResetCause will report the reason for the previous reset. MBClearResetCause should then be used to clear this register.
The ION digital drive does not support the GetResetCause command but instead supports the GetDriveFaultStatus command. After the ION has entered a hard fault condition, power must be cycled. Afterwards, the GetDriveFaultStatus will report the reason for the previous hard fault. Using this command will also clear the register.
For those using Magellan V1.x, Navigator, Pilot, MC73110, or Navigator Motion Boards
The command GetHostIOError should be used instead of GetInstructionError in the sample code above.
The AxisOut pin is normally used to reflect the state of an internal register bit on a digital output. This is done using the SetAxisOutMask and SetSignalSense commands. It is also possible to set the state of this signal directly using the same commands.
To operate the AxisOut signal manually, first set the “source” to “none”.
SetAxisOutMask (&hAxis, PMDAxis1, 0, 0, PMDAxisOutSourceNone) ;
This will set the signal to its active state as defined by bit 10 of the signal sense register. By default the signal will be active low. You can then set the active level (and hence the state) of the signal using the SetSignalSense command.
In pseudo code, to set the output signal low:
signal_sense = GetSignalSense( &hAxis );
SetSignalSense( &hAxis, signal_sense & ~0x400 );
In pseudo code, to set the output signal to high:
signalsense = GetSignalSense( &hAxis ); SetSignalSense( &hAxis, signalsense | 0x400 );
The most common use of the Magellan SPI interface is for connecting to an Atlas drive. The same interface can also be used to output a 16-bit motor command to an SPI DAC. The SPI DAC option is only available when the MotorType is set DC Brushed and will represent the numerical output of the position loop.
The MC58113 has an additional SPI interface which can be used as the primary command interface. All commands are supported on this SPI interface.
The SPI interface on the MC73110 is used to send a 16-bit reference value to the MC73110. The interpretation of the value depends on which loops are currently enabled. If the velocity loop is enabled this value represents the desired velocity. If only the current loop is enabled the SPI value represents the desired peak of the current waveform. Note: the command set is not supported on the SPI interface. Only the UART interface (RS232/485) supports the full command set.
If the IO IC HostRdy signal (pin 8) is used for IC busy detection, the first instruction sent to the IC set after a device reset may be ignored or may produce a checksum error. It is recommended that in this configuration a NoOperation command be sent to the IC set as the first instruction after a power on or reset. If the ReadStatus operation is used to check the HostRdy state this problem does not occur.
The serial (and CAN) configuration is defined by the data bus after reset with the exception of the MC58113. On the MC58113 the default configuration is defined by NVRAM. In case the configuration was corrupted, initial attempts at communication should be attempted at the lowest baud rate if a point-to-point serial interface is being used. In that case the user should see some activity on the SrlXmt after sending a command. Of course the response may not make sense since the baud rate is incorrect but the existence of activity on SrlXmt should be verified first and then worry about the configuration later. Also, if using a Magellan processor, ensure that the READY signal (pin 120 on CP) is high. This can cause failures using all interface types.
CAN has communication error checking built in and will report a CAN bus error if there is no slave device at a matching baud rate on the CAN bus. If no CAN bus level communication error was reported then other CAN IDs should be attempted.
The serial configuration is defined by either the User programmable flash or an external EERPOM. In case the configuration was corrupted, initial attempts at communication should be attempted at the lowest baud rate if a point-to-point serial interface is being used. In that case the user should see some activity on the SrlXmt after sending a command. Of course the response may not make sense since the baud rate is incorrect but the existence of activity on SrlXmt should be verified first and then worry about the configuration later.
Yes. We invite you to check out a paper, Mechanical Resonant Frequency and How to Analyze It, written by Tom Keller. Contact us if you'd like to learn more.
Communication takes place using message IDs 0x580+NodeID and 0x600+NodeID. The contents of the packet use the PMD motion control API. It is very simple to construct the messages and we have "C" code to demonstrate this.
This is usually a result of the HostMode0 and HostMode1 pins being in the wrong state. For the 16/16 interface they should be tied low. For 8/16 mode, HostMode0 should be low and HostMode1 should be high.
All commands in parallel mode are from 1 to 4 words long and they all have from 0-3 words of data sent back giving a total number of words transferred for each command ranging from 1-7.
We do not have any commands that actually take a full three words of data and three words returned, so 7 words is longer than any real command. For this comparison we assume that the average amount of data is two words including both sent and received. That gives a total time for a parallel command as:
12.5usec * 3 words (1 command, 2 data) = 37.5usec
resulting in a theoretical maximum rate of 26,667 cmds/sec.
Now, serial commands all have an overhead of 4 bytes plus data, and a return packet of 2 bytes plus data. Assuming that we average 2 words (4 bytes) of data for each command, that gives us 10 bytes/command. Also, assume 10 bits for each byte (8 data, 1 stop, 1 start) which is a minimum and we get a total time of 10/baud * 10 bytes = total time.
Here are the times for the typical baud rates:
Baud | Command time (usec) | Rate (cmd/usec) |
---|---|---|
9600 | 10,416.7 | 96 |
19200 | 5,108.3 | 192 |
57600 | 1,909.7 | 524 |
115200 | 954.9 | 1,047 |
230400 | 434 | 2,304 |
460800 | 217 | 4,608 |
First, the host processor to PMD IO IC connection should be tested.
This data should match exactly what you wrote. If the data doesn't match, the most common problems are: 0. Open connect on one of the data/control signals. 0. Reversed or incorrect connection on one of the data/control signals. 0. Incorrect timing.
An invalid command can be defined as a command that does not exist on the motion processor. For example, theSetNumberPhases command is not available on the brushed motor control products. If the invalid command that is sent by the host has parameters, this error can occur.
When the motion processor receives the command, instead of replying with an “invalid instruction” error, it responds “bad checksum” error. This is because it assumes that any invalid command has zero parameters, hence the checksum verification will fail before it attempts to process the (invalid) command. Because the IC sees the serial data as a constant stream, it assumes that the next byte received is the start of the next packet. In reality, the next byte or bytes are the data from the invalid command. The serial communication is now out of sync. To recover you need to re-sync communication with the IC. To do this send a zero byte until the IC responds with a zero byte.
J2: MSD16K-ND, J5: MSD20K-ND
A ribbon cable with mating connectors for J5 is also available from PMD. Order CABLE-4371-01.R.
View the datasheet for all power specifications
The Atlas can receive commands approximately 250 ms after power up.
The ~Enable pin has an internal pull-up to 3.3V
Open collector.
The maximum SPI clock frequency for the Atlas is 8Mhz. Up to 20,000 torque commands per second can be sent to the Atlas. Other status related commands may be sent simultaneously at a maximum rate of 10,000 per second.
The maximum speed will be affected by many system properties. The device sending commands to the Atlas is responsible for the commutation calculation and must therefore provide information about the current commutation angle to the Atlas. This information can be provided to the Atlas up to 20,000 times per second. When using the Atlas with a Magellan, the Magellan will update the commutation angle on every axis at 10,000 times per second. (For the Magellan MC58113, the commutation angle is updated at 20,000 times per second.)
When using a Magellan processor to run the Atlas and the Magellan Output mode is configured for “ATLAS”, the Magellan will assert the “NotConnected” bit in the Drive Status register if the Magellan cannot communicate with the Atlas. If a customer supplied processor is running the Atlas, the processor can send a command to the Atlas and verify the checksums in the response of the Atlas.
When the Atlas is in SPI communication mode, every time a command is sent to the Atlas, the Atlas will respond with a status word containing information about various conditions such as over temperature, over/under voltage, drive enable/disable, and command error. In addition, a specific command such as GetEventStatus, GetDriveStatus, and GetSignalStatus can be sent to the Atlas in order to retrieve more detailed information on the state of the Atlas.
The primary use of the SPI interface on the Atlas is to send torque commands which define the instantaneous desired current in the motor windings. The SPI interface can also be used for receiving status and trace information back from the Atlas.
No. The SPI interface to the Atlas is completely defined in documentation to allow a customer supplied processor with an SPI port to control the Atlas.
Get insight into force control in actuators, principles of motor selection, designing a low cost, high speed BLDC motor controller, our ION/CME 500, and more.
In this issue, motion control design choices (Build vs Buy), new single-axis ICs with profile generation and servo control, and how using a digital current loop will quiet step motor noise.
In this issue, we introduce you to our new ultra-compact PCB-mountable digital drive, share examples of how to build a 3-axis gantry, and more.
In this issue, we tackle the challenges with small motion control machine designs, servo motor tuning, a deep dive into FOC, and more.
In this issue, introducing a new motion control board with UDPM, motion control problems with portable automation and mobile robotics designs, ISO 13485 certification, and more.
In this issue, using the best pumps for precision fluid handling, new outer control ICs, how to fix step motor noise, and much more.
In this issue, new techniques combine servo performance with step motor cost, new velocity control ICs, how to solve servo motor noise, and much more.
PMD announced the availability of products through Mouser Electronics. Through this agreement, Mouser will now distribute PMD's Magellan, Juno, ION, Atlas, and Prodigy families.
PMD becomes one of the first companies in the motion control industry to achieve medical device ISO 13485:2016 certification.
Subscribe to our popular newsletter, Motion Control News, to get the latest announcements, technical papers, and solution notes delivered right to your inbox.
PERFORMANCE MOTION DEVICES, INC.
80 Central Street | Boxborough, MA 01719
P: 978.266.1210 | F: 978.266.1211 | info@pmdcorp.com