'{$STAMP BS2} '************************************************************************* '* <4 Phase stepping motor controller> * '* by * '* Dr.Godfried-Willem RAES * '* Stamp2 Hardware version 1.0 * '* Filename : * '* Code version 1.3 * '************************************************************************* ' 30.07.2002: starting from vibi stepper code, this prg. developped. ' 1-127 runs clockwize ' 128-255 runs counterclockwize ' 10.09.2002: Stepper data: Type: HY200 3424 470A8 - A436820R1 ' 4 phases - 200 steps per revolution ' Single coil resistance: 0.425 Ohm ' Single coil inductance: 1.2mH ' Series resistors in phase windings: 2.2 Ohms ' Operating voltage: 12V dc ' Version with 8-step mode saved for backup as FlexStepper_V11.bs2 ' 4-step mode kept, since it leads to the highest torque. ' 26.12.2002: FlexStepper.bs2 renamed to FlexBows.bs2, for faster code version for bows. ' Bow motors can turn in both directions. ' A zero should switch then off. ' DECLARATIONS: Centrobyte VAR byte ' incoming byte, from demux board Period VAR word 'Pincode VAR byte Status VAR byte ' INITIALISATION: ' parallel input bits 0 to 7 ' make this byte an input: DIRL = 0 ' pin 9 is used as pulsout DIR8 = 1 ' output pin - not used here DIR9 = 1 ' output pin DIR10 = 0 ' input pin - not used here DIR11 = 0 ' input pin - not used here 'DIR12 = 1 :' phase 1 output 'DIR13 = 1 :' phase 2 output 'DIR14 = 1 :' phase 3 output 'DIR15 = 1 :' phase 4 output ' these pins steer the gates of 4 logic level 12 Amps power mosfets. ' type IRL620 DIRD = $F OUTD = 0 ' make outputs low. LOW 8 ' keybit ' Initialisation of variables: Status = 0 ' 0 means motor running clockwize ' 1 means motor running counterclockwize ' Initialisation code:*************************************************** DEBUG "Flex Bow stepping motor controller V1.3 ", cr DEBUG "by dr.Godfried-Willem Raes, 2002", cr ' START OF RUN-CODE:***************************************************** Begin: Centrobyte = INL IF CentroByte = 0 then MotorOff ' centrobyte 0 switches motors off, Status = IN7 ' 0 or 1 Centrobyte = Centrobyte & 127 ' mask highest bit ! Period = 128 - Centrobyte ' 127 - 1 ' minimale praktische waarde voor Period is ... Period = Period << 4 ' = * 16 ' 1 unit of period for BS2-stamp is 2 microseconds Period = Period + 234 ' nu is de minimumwaarde = 234 +16 = 250, of 500micro-s = 0.5ms ' dus wordt het snelste tempo: 200 * 0.5ms = 100 ms / omwenteling ' of = 10 Hz ' en de traagste snelheid: ' 2032 + 200 = 2232 * 2 = 4.464 ms ' dus wordt het traagste tempo: 200 * 4.464 = 0.892 s per omwenteling ' of, 1.12Hz BRANCH Status, [Clock4Step, AntiClock4Step] Clock4step: ' 1 4 x 15 steps = 100 steps, 1/2 revolution PulsOut 9, Period OUTD = 3 PulsOut 9, Period OUTD = 6 PulsOut 9, Period OUTD = 12 PulsOut 9, Period OUTD =9 ' 2 PulsOut 9, Period OUTD = 3 PulsOut 9, Period OUTD = 6 PulsOut 9, Period OUTD = 12 PulsOut 9, Period OUTD =9 ' 3 PulsOut 9, Period OUTD = 3 PulsOut 9, Period OUTD = 6 PulsOut 9, Period OUTD = 12 PulsOut 9, Period OUTD =9 ' 4 PulsOut 9, Period OUTD = 3 PulsOut 9, Period OUTD = 6 PulsOut 9, Period OUTD = 12 PulsOut 9, Period OUTD =9 ' 5 PulsOut 9, Period OUTD = 3 PulsOut 9, Period OUTD = 6 PulsOut 9, Period OUTD = 12 PulsOut 9, Period OUTD =9 ' 6 PulsOut 9, Period OUTD = 3 PulsOut 9, Period OUTD = 6 PulsOut 9, Period OUTD = 12 PulsOut 9, Period OUTD =9 ' 7 PulsOut 9, Period OUTD = 3 PulsOut 9, Period OUTD = 6 PulsOut 9, Period OUTD = 12 PulsOut 9, Period OUTD =9 ' 8 PulsOut 9, Period OUTD = 3 PulsOut 9, Period OUTD = 6 PulsOut 9, Period OUTD = 12 PulsOut 9, Period OUTD =9 ' 9 PulsOut 9, Period OUTD = 3 PulsOut 9, Period OUTD = 6 PulsOut 9, Period OUTD = 12 PulsOut 9, Period OUTD =9 ' 10 PulsOut 9, Period OUTD = 3 PulsOut 9, Period OUTD = 6 PulsOut 9, Period OUTD = 12 PulsOut 9, Period OUTD =9 ' 11 PulsOut 9, Period OUTD = 3 PulsOut 9, Period OUTD = 6 PulsOut 9, Period OUTD = 12 PulsOut 9, Period OUTD =9 ' 12 PulsOut 9, Period OUTD = 3 PulsOut 9, Period OUTD = 6 PulsOut 9, Period OUTD = 12 PulsOut 9, Period OUTD =9 ' 13 PulsOut 9, Period OUTD = 3 PulsOut 9, Period OUTD = 6 PulsOut 9, Period OUTD = 12 PulsOut 9, Period OUTD =9 ' 14 PulsOut 9, Period OUTD = 3 PulsOut 9, Period OUTD = 6 PulsOut 9, Period OUTD = 12 PulsOut 9, Period OUTD =9 ' 15 PulsOut 9, Period OUTD = 3 PulsOut 9, Period OUTD = 6 PulsOut 9, Period OUTD = 12 PulsOut 9, Period OUTD =9 ' 16 PulsOut 9, Period OUTD = 3 PulsOut 9, Period OUTD = 6 PulsOut 9, Period OUTD = 12 PulsOut 9, Period OUTD =9 ' 17 PulsOut 9, Period OUTD = 3 PulsOut 9, Period OUTD = 6 PulsOut 9, Period OUTD = 12 PulsOut 9, Period OUTD =9 ' 18 PulsOut 9, Period OUTD = 3 PulsOut 9, Period OUTD = 6 PulsOut 9, Period OUTD = 12 PulsOut 9, Period OUTD =9 ' 19 PulsOut 9, Period OUTD = 3 PulsOut 9, Period OUTD = 6 PulsOut 9, Period OUTD = 12 PulsOut 9, Period OUTD =9 ' 20 PulsOut 9, Period OUTD = 3 PulsOut 9, Period OUTD = 6 PulsOut 9, Period OUTD = 12 PulsOut 9, Period OUTD =9 ' 21 PulsOut 9, Period OUTD = 3 PulsOut 9, Period OUTD = 6 PulsOut 9, Period OUTD = 12 PulsOut 9, Period OUTD =9 ' 22 PulsOut 9, Period OUTD = 3 PulsOut 9, Period OUTD = 6 PulsOut 9, Period OUTD = 12 PulsOut 9, Period OUTD =9 ' 23 PulsOut 9, Period OUTD = 3 PulsOut 9, Period OUTD = 6 PulsOut 9, Period OUTD = 12 PulsOut 9, Period OUTD =9 ' 24 PulsOut 9, Period OUTD = 3 PulsOut 9, Period OUTD = 6 PulsOut 9, Period OUTD = 12 PulsOut 9, Period OUTD =9 ' 25 PulsOut 9, Period OUTD = 3 PulsOut 9, Period OUTD = 6 PulsOut 9, Period OUTD = 12 PulsOut 9, Period OUTD =9 GOTO BEGIN AntiClock4step: ' 1 ' 25 x 4 steps = 100 steps, or half revolution PulsOut 9, Period OUTD = 9 PulsOut 9, Period OUTD = 12 PulsOut 9, Period OUTD = 6 PulsOut 9, Period OUTD =3 ' 2 PulsOut 9, Period OUTD = 9 PulsOut 9, Period OUTD = 12 PulsOut 9, Period OUTD = 6 PulsOut 9, Period OUTD =3 ' 3 PulsOut 9, Period OUTD = 9 PulsOut 9, Period OUTD = 12 PulsOut 9, Period OUTD = 6 PulsOut 9, Period OUTD =3 ' 4 PulsOut 9, Period OUTD = 9 PulsOut 9, Period OUTD = 12 PulsOut 9, Period OUTD = 6 PulsOut 9, Period OUTD =3 ' 5 PulsOut 9, Period OUTD = 9 PulsOut 9, Period OUTD = 12 PulsOut 9, Period OUTD = 6 PulsOut 9, Period OUTD =3 ' 6 PulsOut 9, Period OUTD = 9 PulsOut 9, Period OUTD = 12 PulsOut 9, Period OUTD = 6 PulsOut 9, Period OUTD =3 ' 7 PulsOut 9, Period OUTD = 9 PulsOut 9, Period OUTD = 12 PulsOut 9, Period OUTD = 6 PulsOut 9, Period OUTD =3 ' 8 PulsOut 9, Period OUTD = 9 PulsOut 9, Period OUTD = 12 PulsOut 9, Period OUTD = 6 PulsOut 9, Period OUTD =3 ' 9 PulsOut 9, Period OUTD = 9 PulsOut 9, Period OUTD = 12 PulsOut 9, Period OUTD = 6 PulsOut 9, Period OUTD =3 ' 10 PulsOut 9, Period OUTD = 9 PulsOut 9, Period OUTD = 12 PulsOut 9, Period OUTD = 6 PulsOut 9, Period OUTD =3 ' 11 PulsOut 9, Period OUTD = 9 PulsOut 9, Period OUTD = 12 PulsOut 9, Period OUTD = 6 PulsOut 9, Period OUTD =3 ' 12 PulsOut 9, Period OUTD = 9 PulsOut 9, Period OUTD = 12 PulsOut 9, Period OUTD = 6 PulsOut 9, Period OUTD =3 ' 13 PulsOut 9, Period OUTD = 9 PulsOut 9, Period OUTD = 12 PulsOut 9, Period OUTD = 6 PulsOut 9, Period OUTD =3 ' 14 PulsOut 9, Period OUTD = 9 PulsOut 9, Period OUTD = 12 PulsOut 9, Period OUTD = 6 PulsOut 9, Period OUTD =3 ' 15 PulsOut 9, Period OUTD = 9 PulsOut 9, Period OUTD = 12 PulsOut 9, Period OUTD = 6 PulsOut 9, Period OUTD =3 ' 16 PulsOut 9, Period OUTD = 9 PulsOut 9, Period OUTD = 12 PulsOut 9, Period OUTD = 6 PulsOut 9, Period OUTD =3 ' 17 PulsOut 9, Period OUTD = 9 PulsOut 9, Period OUTD = 12 PulsOut 9, Period OUTD = 6 PulsOut 9, Period OUTD =3 ' 18 PulsOut 9, Period OUTD = 9 PulsOut 9, Period OUTD = 12 PulsOut 9, Period OUTD = 6 PulsOut 9, Period OUTD =3 ' 19 PulsOut 9, Period OUTD = 9 PulsOut 9, Period OUTD = 12 PulsOut 9, Period OUTD = 6 PulsOut 9, Period OUTD =3 ' 20 PulsOut 9, Period OUTD = 9 PulsOut 9, Period OUTD = 12 PulsOut 9, Period OUTD = 6 PulsOut 9, Period OUTD =3 ' 21 PulsOut 9, Period OUTD = 9 PulsOut 9, Period OUTD = 12 PulsOut 9, Period OUTD = 6 PulsOut 9, Period OUTD =3 ' 22 PulsOut 9, Period OUTD = 9 PulsOut 9, Period OUTD = 12 PulsOut 9, Period OUTD = 6 PulsOut 9, Period OUTD =3 ' 23 PulsOut 9, Period OUTD = 9 PulsOut 9, Period OUTD = 12 PulsOut 9, Period OUTD = 6 PulsOut 9, Period OUTD =3 ' 24 PulsOut 9, Period OUTD = 9 PulsOut 9, Period OUTD = 12 PulsOut 9, Period OUTD = 6 PulsOut 9, Period OUTD =3 ' 25 PulsOut 9, Period OUTD = 9 PulsOut 9, Period OUTD = 12 PulsOut 9, Period OUTD = 6 PulsOut 9, Period OUTD =3 GOTO BEGIN ' end 4-step counterclockwize MotorOff: OUTD = 0 ' = LOW 12, LOW 13, LOW 14, LOW 15 GOTO BEGIN STOP