Galil PCI Optima series 3 axis motion controller DMC1830 revision C Condition: tested with both servo and stepper, OK. Cable-100-1m included (175$ value); axes currently configured by me (jumpers and EEPROM) for: X = servo, Y and Z = step. CD (copy of the original one) includes: drivers, utilities, manuals and command references. It can control the position, speed, ac/deceleration of 3 motors according to a program; it reacts to 8 discrete inputs (useable for turning on/off, changing the sense/speed etc); it considers 8 analog inputs (so the speed can be adjusted from a potentiometer or a sensor); it has 8 discrete outputs, that together with the 8 + 8 inputs can implement a small PLC; the program resides in an EEPROM and can have 8 threads. Usable also as 8 channel oscilloscope, 8 channel logic analyzer, 8 channel TTL waveform generator for slow signals. Motor types: each axis can be configured for servo brush (16 bit DAC => +/- 10V and PWM), servo brushless (which takes two axis, sin and cos), step (step and direction) For each axis there are these inputs: 2 from quadr encoder, index, home, fw limit, reverse limit; and these outputs: amp enable, motor voltage (-10V to 10V, for brush), sign and PWM (for brush), direction and step (for step) Modes of motion: point-to-point, position tracking, jogging, linear and circular interpolation, tangential following, helical, gearing, gantry, cam, contouring, teach and playback Filter: PID with velocity and acceleration feedforward, dual-loop (an auxiliary encoder attached to the load, used for backlash compensation), integration and torque limits, offset; trapezoidal and 'S' velocity profiles Position: 12Mcounts/s on 32 bit Velocity: up to 12Mcnt/s for servo, up to 3Mstep/s for stepper Acceleration: up to 67Mcnt/ss Feedback inputs: differential or single-ended quadrature A+/A-/B+/B- (TTL-12V), home, forward limit, reverse limit (optical isolation) for each axis; position latch and output compare; dual encoder; abort input and enable output Analog inputs: 8, +/-10V Digital inputs: 8, TTL (optical isolation) Digital outputs: 8, TTL (optical isolation) Program: 1000 lines on non-volatile memory; 8 threads Factory price: 1,895$. Link to card. Size: it is a long board, 28.4x11.4cm, 11.12"x4.5" SW utilities (newer versions on website): SmartTerminal - drivers and terminal program for sending commands, editing/downloading/saving programs and arrays, updating firmware, displaying digital in/outputs, home and limit switches, axis positions/velocity/torque/motion status (on CD); the second picture shows it after running the program exemple 1 (see below); the upper left window is for sending commands, the lower left window displays messages from the controller, the right hand window is for multiline program editing and debugging (breakpoints, variables watch); the program can be downloaded to the controller or saved on disk as a *.dmc text file. DMCSetup - display and edit the configuration parameters: motor and encoder type, position and torque limits, PID constants, speed, acceleration, outputs etc; also displays current position/velocity/torque, switches status, analog and digital inputs values (on CD); use it to change the EEPROM content DMC.NET - class library to control the card from a VB.NET or C# application (on website); add a reference in your Visual Studio project to the DMCNet COM library and then you can send Galil commands or ask it to execute a *.dmc program that you wrote, debugged and saved with SmartTerm; more info. Installation: install DMCsmartterminal, shut down PC and install the board; when 'Add new hw' wizard starts, select 'Install from a list or specific location', 'Include this location' and [Browse] to Program Files\Galil Common\DevInstall. Program examples: * DMC 1. Home routine for X (linear) - it moves end to end and sets the position from 0 to maximum: #HOME_X; 'label SHX; 'x axis on (signal 'enable x' = high, for the amplifier) JGX=-10000; 'move backwards with 10000cnt/s BGX; 'start AMX; 'after reaching the limit DP 0; 'set position = 0 JGX=10000; 'move forward with 10000cnt/s BGX; 'start AMX; 'after reaching the limit MG "MAX FW=",_TPX; 'display the max position MOX; 'motor off (enable x = low) EN; 'end program 2. Control the X axis spin speed from a potentiometer at input 1 (pin 91): BGX; 'begin motion #LOOP; 'label JGX = @AN[1] * 1000; 'read voltage and update speed JP #LOOP; 'repeat EN ; 'end program 3. Signal generator - it can generate 8 TTL waveforms at the outputs: #A; 'label AT 0; OP 255; '1111 1111 @ 0ms AT 2; OP 0; '0000 0000 @ 2ms AT 10; OP 10; '0000 1010 @ 10ms ... AT 50; JP #A; 'repeat after 50ms EN; 'end program * VB.NET 1. send commands to the controller (brdGalil is a DMCAPI type object; DMCAPI defined in the imported DMCNet lib): brdGalil.sCommand("SHX; JGX=-10000; BGX; AMX; DP 0; JGX=10000; BGX; AMX;") 2. execute a *.dmc file: brdGalil.apiDownloadAppProgramFromFile("C:\...your path here...\Xinit.dmc", "") 3. a linear servo actuator follows side to side your mouse dragged cursor of a trackbar (like the one you use to adjust the volume on your computer) named trbPosition, placed on the form. The subroutine that handles the event triggered by the dragging: Private Sub trbPosition_Scroll(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles trbPosition.Scroll brdGalil.sCommand("PAX=" & trbPosition.Value.ToString & ";BGX;AMX;") End Sub Or you can control the speed of a spinning motor if you replace PAX with JGX. 4. now, vice versa: you push-pull the shaft of the actuator and the cursor on the screen follows it; define a timer control in your program for sampling and: Private Sub Timer1_Tick(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Timer1.Tick trbPosition.Value = CInt(brdGalil.sCmdTrim("TPX")) End Sub You can save these successive position values and draw a waveform of the movement or reproduce them later (record and playback). In the contour mode you can have all 3 axes doing that. More examples. And a good programming manual. A complete system consists of: PC with the DMC board + cable + drive (amplifier) + motor. I used, for example, drives with L297 and L6204 integrated circuits (from ST Microelectronics) for step motor, and OPA548 (from Texas Instruments, voltage to current amp) for a small DC motor; and Renishaw RGH25 as linear encoder for position feedback. Powered by eBay Turbo Lister Powered by eBay Turbo Lister
By clicking "Accept All Cookies", you agree to the storing of cookies on your device to enhance site navigation, analyze site usage, and assist in our marketing efforts.