Kremford Hyperdrive Programmable Stepper Motor Controller
Hyperdrive-3 Programming Examples
Below are some examples of programs for the Hyperdrive-3 stepper motor controller. Additional examples and a discussion of getting started along with a description of the SPL language are provided and described in the Hyperdrive-3 User Manual, and the reader should refer to this for help in understanding these examples. However, the extensive use of comments here should help in understanding what is happening.Because program editing is often performed within a text editor such as Notepad++ and then the program subsequently downloaded to the Hyperdrive for testing/use, each example begins with the Program command to switch the Hyperdrive from Command mode to Programming mode. The concluding End command switches back to Command mode so that when the download concludes it can be immediately tested.A Loop ExampleThis example has a single loop that is executed twice. It first sets the motor speed to 50 RPM with an acceleration time of 500 RPM/sec^2, and then starts the motor rotating clockwise for 3200 steps. Once this completes it pauses for half a second, changes the speed to 100 RPM, and starts the motor rotating anti-clockwise for 1600 steps..program ; switch to programming; A program to demonstrate the program loop; functionality and how to change direction.090 StepMode 3 ; set 0.225 degree steps100 Loop 2 ; execute the loop twice110 SetRPM 50 ; set max speed at 50 rpm120 Accel 500 ; set accel/decel time to 500 mSecs130 Dir cw ; rotate clockwise140 Step 3200 ; ..for 3200 steps150 WaitFor ; wait until finished160 Delay 500 ; pause for 500 mSecs170 SetRPM 100 ; set max speed at 100 rpm; Now change direction180 Dir ccw ; rotate anticlockwise190 Step 1600 ; ..for 1600 steps200 WaitFor ; wait until finished210 Delay 500 ; pause for 200 mSecs220 ELoop ; end of loop230 End If we assume the motor has a 1.8° basic step angle, then the step mode instruction StepMode 3 at line 90 will configure the motor to move 1.8 / 8 = 0.225° for each step. The first Step 3200 instruction will therefore rotate the motor through 0.225 * 3200 = 720° or two revolutions. The WaitFor instruction will pause the program until the two rotations have completed. When the motor stops, the Delay 500 delay instruction will pause the program for 500 mSecs before the next three instructions start the motor for 1600 steps in the opposite direction.
Using Input Controls
The Hyperdrive has four isolated input lines and two isolated output lines for interface to various external switches, sensors and controls. A comprehensive set of instructions are available for motor control with these lines. This next example shows how the state of the IN1 line can be used to select alternate paths through a program. Program ; Using the JumpIf instruction to alter program flow. 100 loop ; loop forever 110 JumpIf 1, on, 140 ; jump if IN1 is on 120 SetRPM 100 ; set speed 100 RPM 130 GoTo 150 140 SetRpm 20 ; set speed to 20 RPM 150 step 2000 ; do the steps 160 waitfor 170 delay 5000 ; wait 5 secs 180 eloop 190 endIf the IN1 line is on, then the motor will perform the 2000 steps at 20 RPM. If off the move is performed at 100 RPM. Note that the IN1 through IN4 terminals are optically isolated and can be switched from DC voltages ranging from 5 to 24 volts. Note also that case does not matter in instructions.A Speed ExampleMany applications are not concerned that a specific number of steps are required for the motor, only that the motor accelerate to and maintain a specific speed as it drives the machine between two positions that are defined externally by various types of position sensors. In the simplest case these could be two limit switches. This next example shows a motor being started by a sensor on IN2 switching on as it detects an item. It accelerates to 300 RPM at a 10,000 Rpm/Sec^2 rate and continues at this speed until a sensor on IN1 also switches on. It then decelerates to a stop at the same rate and pauses for 40 milliseconds before returning to the loop start and once again waiting for the IN2 sensor.Program; A sensor on IN2 switching on starts the motor.; A sensor on IN1 switch on stops the motor.; A LED on OUT1 indicates the motor is running 100 Mode speed ; use speed mode110 Power 3 ; power mode 3120 DcyMode 3 ; decay mode 3130 StepMode 2 ; step mode 2140 Out 1, off ; turn off LED150 Accel 10000 ; 10,000 Rpm/Sec^2160 Loop ; forever170 ContWhen 2, on ; wait for IN2 on (start)180 MonSkip 1, on, 240 ; arm a jump when IN1 on (stop)190 Out 1, on ; turn on LED200 SetRpm 300 ; start running at 300 rpm; The motor is now running.210 Delay 1000 ; only run for this time220 GoTo 280 ; should never get here240 DecelNow ; decel immediate250 Out 1, off ; turn off LED 260 Delay 40 ; 40 mSec wait270 ELoop ; loop280 Halt ; emergency stop290 End When encountered, the ContWhen instruction at line 170 means the program will not continue until the sensor connected to IN2 has turned on. This switch changing state allows the program to continue. The MonSkip 1, on, 240 instruction at line 180 arms the Hyperdrive to continuously monitor the IN1 line in the background for an ON signal and jump to line 240 if that should occur. An LED is connected to the IN1 output line and the Out 4, on instruction at line 190 will turn it on, indicating the motor is running.The SetRpm 300 instruction accelerates the motor to 300 RPM and the program then pauses for 1 second at line 210. For this machine the usual cycle time from limit switch to limit switch is typically about 600 milliseconds, so the sensor on IN1 will normally switch on long before the delay times out. However, should the sensor fail, the next GoTo instruction immediately jumps out of the loop to line 280 which stops the motor and the program concludes. So the motor stopped and the LED on means the sensor failed.In normal operation when IN1 does goes low the program immediately jumps to line 240, stopping the motor. The LED is turned off at line 250 and after a short delay the program returns to waiting on IN2 at line 170.A Complete ExampleThe last example shows the program for a specific machine. The comments at the start describe the machine function and how the IO terminals are used. The program is initially saved to the Hyperdrive non-volatile storage with the Save command, and the controller is configured to automatically load and run that program when power is applied with the RunUp command. The machine is thus ready to run after being turned on.Note how the machine can be reset from an unknown position (ie after a power failure) by detecting that the emergency stop switch is held down while power is applied. This starts a sub program that carefully seeks out the EXTENDED limit switch and, once that position is known, proceeds to the now known start position. Note also how this Hyperdrive can start and stop the "cross motor" at a known position of the plunger via its output line OUT2.;***************************************************************; MIXER TABLE PROGRAM;; This program manages a screw-jack driven table. For control; there is a START button and up and down limit switches.;; The Start push-button is SPDT and connected to IN3.; The Down limit switch is SPDT and connected to IN1.; The Up limit switch is SPDT and connected to IN2.;; For detailed connections please refer to drawing KF083-1-22.;; After the START button is pressed the motor accelerates to ; 800 rpm and moves the table up for the set number of steps.; At this point it decelerates to a stop and restarts at 200 rpm,; at the same time starting the auger motor via IO4. When the ; table trips the up limit switch the motor stops for 15 secs; before starting down at the same 200 rpm.;; After a set number of steps the auger motor is signalled to; stop, the stepper comes to a halt, and then starts down again; at 800 rpm until it activates the down limit switch.;; Should power be lost the Hyperdrive will not know if it is ; in the correct down position when power is re-applied. On; power up it moves down a half turn of the screw. This assumes; it is at the normal down position but ensures the switch is; activated. If the low switch is not activated at this point; it continues moving down until it is. At this point for both; cases the table is below the low limit, so the motor starts; up until the switch de-activates. To ensure the table position; overtravel matches the normal, the motor runs up for a set; time and then starts down at the nominal speed, coming to; a stop at the normal position when the low limit activates.;; Notes:; Clockwise is down.; Ativated switches are low.;;***************************************************************pg;; First must ensure we are at the down limit stop.100 StepMode 2 ; step mode 2 (0.9 degree steps)110 Power 2 ; power setting 2120 Out 2, OFF ; wait until start button not pressed130 SetRPM 400 ; set 400 rpm140 Accel 3000 ; accel at 3000 rpm/sec2150 Debounce 1, 10 ; 10 mSec debounce for all switches160 Debounce 1, 10170 Debounce 1, 10;; Move down a small distance so if at down position,; the switch is definitely activated.;180 Dir CW ; go down190 Step 200 ; 200 steps (180 degs)200 WaitFor ; run210 Delay 500 ; half second delay;; Should now be below the low switch normal position.; If not we continue moving down until it is.;220 JumpIf 1, OFF, 290 ; jump if low switch is activated230 Monitor 1, L, 260 ; arm a jump for when switch activates240 Step250 WaitFor;; The low switch position has been reached.;260 DecelNow ; stop here270 Waitfor280 Delay 500;; The low switch has been activated. Now move up until the; switch de-activates.;290 Monitor 1, ON, 330 ; arm a jump for when switch de-activates300 Dir CCW ; go up310 Step ; start (should enter a max step here)320 WaitFor ; run;330 DecelNow ; switch has de-activated340 Delay 500 ; half second wait;; Next step is to move up far enough so that when the table; is driven back down, its speed will match the machine ; normal down cycle.;350 Dir CCW ; go up360 Step 2000 ; 2000 steps (5 turns)370 WaitFor ; run380 Delay 500 ; half second wait before continuing390 SetRPM 800 ; set accel rate to match normal (3000 rpm/sec2)400 Dir CW ; go down410 Monitor 1, L, 440 ; arm a jump for when switch activates420 Step ; start (should enter a max step here)430 WaitFor ; run;; switch has activated (ie table in down position);440 DecelNow ; decelerate to a stop 450 WaitFor ; wait until stopped460 Delay 1000 ; one second delay462 Power 4463 DcyMode 4;; The program now remains in the following loop forever.;470 Loop480 Accel 1000 ; set accel rate to 1000 rpm/sec2490 ContWhen 3, H ; wait until start button pressed;500 Dir CCW ; go up510 StepMode 2 ; step mode 2 (0.9 degree steps)520 SetRPM 800 ; set speed to 800 rpm 530 Step 12000 ; 30 rotations = max high speed travel540 WaitFor ; run;; Table is now at the position from where we start the auger; motor and resume the upward movement at a slower rate.;550 Out 2, ON ; start the auger motor560 SetRPM 200 ; set speed at 200 rpm570 Monitor 2, L, 600 ; arm a jump for when the up limit switch activates572 Step 4000574 WaitFor576 Delay 100578 SetRPM 60580 Step ; start (should enter a max step here)590 WaitFor ; run;; Up limit switch has activated.;600 DecelNow ; decelerate610 WaitFor ; wait until done620 Delay 15000 ; pause at top for 15 seconds;630 Dir CW ; go down632 SetRPM 200640 Step 2000 ; 2000 steps (5 rotations)650 WaitFor ; run660 Out 2, OFF ; turn off the auger motor670 Accel 3000 ; set accel rate to 3000 rpm/sec2680 StepMode 2 ; step mode 2682 SetRPM 800 ; set speed to 800 rpm690 Monitor 1, L, 720 ; arm a jump when the down limit switch activates700 Step ; start (should enter a max step here)710 WaitFor ; run;; Down limit switch has activated.;720 DecelNow ; decelerate730 WaitFor ; wait until done740 Delay 2000 ; 2 second wait before start switch is active750 ELoop760 EndFor information or help with any aspects of these example programs or those bundled on the distribution CD, please email firstname.lastname@example.org..