step rc

Committer:
MatteusCarr
Date:
Thu Apr 09 21:06:36 2020 +0000
Revision:
0:60609af7aa3e
Step RC nrf52

Who changed what in which revision?

UserRevisionLine numberNew contents of line
MatteusCarr 0:60609af7aa3e 1 #include "mbed.h"
MatteusCarr 0:60609af7aa3e 2 #include "AccelStepper.h"
MatteusCarr 0:60609af7aa3e 3 #include "PinNames.h"
MatteusCarr 0:60609af7aa3e 4 #include "stdio.h"
MatteusCarr 0:60609af7aa3e 5 //#include <avr/wdt.h>
MatteusCarr 0:60609af7aa3e 6
MatteusCarr 0:60609af7aa3e 7 Serial pc(USBTX, USBRX);
MatteusCarr 0:60609af7aa3e 8
MatteusCarr 0:60609af7aa3e 9
MatteusCarr 0:60609af7aa3e 10 //Pins
MatteusCarr 0:60609af7aa3e 11 #define STP1_PIN 2 //AnalogOut STP_PIN(nome do pino da placa) ##DESCOMENTAR ESSE BLOCO##
MatteusCarr 0:60609af7aa3e 12 #define DIR1_PIN 3 // AnalogOut DIR_PIN(nome do pino da placa)
MatteusCarr 0:60609af7aa3e 13 /*#define ENA_PIN 2 // DigitalOut ENA_PIN(nome do pino da placa)
MatteusCarr 0:60609af7aa3e 14 #define HOM_PIN 12*/ // DigitalIn HOM_PIN(nome do pino da placa)
MatteusCarr 0:60609af7aa3e 15
MatteusCarr 0:60609af7aa3e 16 //AnalogOut STP_PIN(PTB0);
MatteusCarr 0:60609af7aa3e 17 //AnalogOut DIR_PIN(PTB1);
MatteusCarr 0:60609af7aa3e 18 DigitalOut ENA_PIN(P1_13);
MatteusCarr 0:60609af7aa3e 19 DigitalIn HOM_PIN(P0_28);
MatteusCarr 0:60609af7aa3e 20
MatteusCarr 0:60609af7aa3e 21 //Max
MatteusCarr 0:60609af7aa3e 22 #define MAX_ACCEL_mms2 500.0
MatteusCarr 0:60609af7aa3e 23 #define MAX_SPEED_mms 75.0
MatteusCarr 0:60609af7aa3e 24 #define MAX_POS_mm 100.0
MatteusCarr 0:60609af7aa3e 25
MatteusCarr 0:60609af7aa3e 26 //Stepper Motor parameters
MatteusCarr 0:60609af7aa3e 27 #define STEPS_by_REV 400.0
MatteusCarr 0:60609af7aa3e 28 #define mm_by_REV 25.0
MatteusCarr 0:60609af7aa3e 29
MatteusCarr 0:60609af7aa3e 30 //Home Parameters
MatteusCarr 0:60609af7aa3e 31 #define HOME_SPEED_mms 10.0
MatteusCarr 0:60609af7aa3e 32 #define HOME_INCREMENT_mm 1.0
MatteusCarr 0:60609af7aa3e 33 #define HOME_PRESS_POSITION_mm 2.0
MatteusCarr 0:60609af7aa3e 34
MatteusCarr 0:60609af7aa3e 35 //Consts
MatteusCarr 0:60609af7aa3e 36 const unsigned int MAX_ACCEL_STEPS2 = (MAX_ACCEL_mms2 * STEPS_by_REV) / mm_by_REV;
MatteusCarr 0:60609af7aa3e 37 unsigned int MAX_SPEED_STEPS = (MAX_SPEED_mms * STEPS_by_REV) / mm_by_REV;
MatteusCarr 0:60609af7aa3e 38 const unsigned int HOME_SPEED_STEPS = (HOME_SPEED_mms * STEPS_by_REV) / mm_by_REV;
MatteusCarr 0:60609af7aa3e 39 const unsigned int HOME_INCREMENT_STEP = (HOME_INCREMENT_mm * STEPS_by_REV) / mm_by_REV;
MatteusCarr 0:60609af7aa3e 40 const unsigned int HOME_PRESS_POSITION_STEP = (HOME_PRESS_POSITION_mm * STEPS_by_REV) / mm_by_REV;
MatteusCarr 0:60609af7aa3e 41
MatteusCarr 0:60609af7aa3e 42 //vars
MatteusCarr 0:60609af7aa3e 43 unsigned int MaxPos_step = (MAX_POS_mm * STEPS_by_REV) / mm_by_REV;
MatteusCarr 0:60609af7aa3e 44 bool CycleOn = true;
MatteusCarr 0:60609af7aa3e 45 bool HomeDone = false;
MatteusCarr 0:60609af7aa3e 46
MatteusCarr 0:60609af7aa3e 47 void MotorGoHome(AccelStepper &stpr)
MatteusCarr 0:60609af7aa3e 48 {
MatteusCarr 0:60609af7aa3e 49 int CurrentPos = 0;
MatteusCarr 0:60609af7aa3e 50 pc.printf("Finding Home...");
MatteusCarr 0:60609af7aa3e 51 stpr.setCurrentPosition(0);
MatteusCarr 0:60609af7aa3e 52 stpr.setMaxSpeed(HOME_SPEED_STEPS);
MatteusCarr 0:60609af7aa3e 53 while (HOM_PIN == HIGH)
MatteusCarr 0:60609af7aa3e 54 {
MatteusCarr 0:60609af7aa3e 55 CurrentPos = CurrentPos - HOME_INCREMENT_STEP;
MatteusCarr 0:60609af7aa3e 56 stpr.runToNewPosition(CurrentPos);
MatteusCarr 0:60609af7aa3e 57 }
MatteusCarr 0:60609af7aa3e 58 stpr.setCurrentPosition(0);
MatteusCarr 0:60609af7aa3e 59 stpr.runToNewPosition(HOME_PRESS_POSITION_STEP);
MatteusCarr 0:60609af7aa3e 60 stpr.setCurrentPosition(0);
MatteusCarr 0:60609af7aa3e 61 HomeDone = true;
MatteusCarr 0:60609af7aa3e 62 pc.printf("Finding Home...");
MatteusCarr 0:60609af7aa3e 63 }
MatteusCarr 0:60609af7aa3e 64
MatteusCarr 0:60609af7aa3e 65 void setup(AccelStepper &stpr)
MatteusCarr 0:60609af7aa3e 66 {
MatteusCarr 0:60609af7aa3e 67 pc.baud(250000);
MatteusCarr 0:60609af7aa3e 68 //pinMode(10 , OUTPUT);
MatteusCarr 0:60609af7aa3e 69 //pinMode(STP_PIN , OUTPUT);
MatteusCarr 0:60609af7aa3e 70 //pinMode(DIR_PIN , OUTPUT);
MatteusCarr 0:60609af7aa3e 71 //pinMode(ENA_PIN , OUTPUT);
MatteusCarr 0:60609af7aa3e 72 ENA_PIN = HIGH;
MatteusCarr 0:60609af7aa3e 73 stpr.setMaxSpeed(MAX_SPEED_STEPS);
MatteusCarr 0:60609af7aa3e 74 stpr.setAcceleration(MAX_ACCEL_STEPS2);
MatteusCarr 0:60609af7aa3e 75 MotorGoHome(stpr);
MatteusCarr 0:60609af7aa3e 76 stpr.setMaxSpeed(MAX_SPEED_STEPS);
MatteusCarr 0:60609af7aa3e 77 stpr.setAcceleration(MAX_ACCEL_STEPS2);
MatteusCarr 0:60609af7aa3e 78 //wdt_enable(WDTO_2S);
MatteusCarr 0:60609af7aa3e 79 }
MatteusCarr 0:60609af7aa3e 80
MatteusCarr 0:60609af7aa3e 81 int main(){
MatteusCarr 0:60609af7aa3e 82
MatteusCarr 0:60609af7aa3e 83 AccelStepper stepper(2, P1_2, P0_23);
MatteusCarr 0:60609af7aa3e 84
MatteusCarr 0:60609af7aa3e 85 setup(stepper);
MatteusCarr 0:60609af7aa3e 86
MatteusCarr 0:60609af7aa3e 87 while(1){
MatteusCarr 0:60609af7aa3e 88 //wdt_reset();
MatteusCarr 0:60609af7aa3e 89 if (CycleOn)
MatteusCarr 0:60609af7aa3e 90 {
MatteusCarr 0:60609af7aa3e 91 if (stepper.currentPosition() == 0)
MatteusCarr 0:60609af7aa3e 92 {
MatteusCarr 0:60609af7aa3e 93 wait(500);
MatteusCarr 0:60609af7aa3e 94 stepper.moveTo(MaxPos_step);
MatteusCarr 0:60609af7aa3e 95 }
MatteusCarr 0:60609af7aa3e 96 else if (stepper.currentPosition() == MaxPos_step)
MatteusCarr 0:60609af7aa3e 97 {
MatteusCarr 0:60609af7aa3e 98 wait(500);
MatteusCarr 0:60609af7aa3e 99 stepper.moveTo(0);
MatteusCarr 0:60609af7aa3e 100 }
MatteusCarr 0:60609af7aa3e 101 }
MatteusCarr 0:60609af7aa3e 102 //analogWrite(10, map(stepper.currentPosition(), 0, MaxPos_step, 0, 250));
MatteusCarr 0:60609af7aa3e 103 stepper.run();
MatteusCarr 0:60609af7aa3e 104 if((HOM_PIN == LOW) && (HomeDone)) while(1);
MatteusCarr 0:60609af7aa3e 105
MatteusCarr 0:60609af7aa3e 106 if (pc.readable())
MatteusCarr 0:60609af7aa3e 107 {
MatteusCarr 0:60609af7aa3e 108 char Option = pc.getc();
MatteusCarr 0:60609af7aa3e 109 if (Option == 'P')
MatteusCarr 0:60609af7aa3e 110 {
MatteusCarr 0:60609af7aa3e 111 //float NewPos = serial.parsefloat();
MatteusCarr 0:60609af7aa3e 112 //stepper.moveTo((NewPos * STEPS_by_REV) / mm_by_REV);
MatteusCarr 0:60609af7aa3e 113 }
MatteusCarr 0:60609af7aa3e 114 else if (Option == 'C')
MatteusCarr 0:60609af7aa3e 115 {
MatteusCarr 0:60609af7aa3e 116 CycleOn = !CycleOn ;
MatteusCarr 0:60609af7aa3e 117 }
MatteusCarr 0:60609af7aa3e 118 else if (Option == 'S')
MatteusCarr 0:60609af7aa3e 119 {
MatteusCarr 0:60609af7aa3e 120 //float NewSpeed = parsefloat(); //pc.??
MatteusCarr 0:60609af7aa3e 121 //stepper.setMaxSpeed((NewSpeed * STEPS_by_REV) / mm_by_REV);
MatteusCarr 0:60609af7aa3e 122 }
MatteusCarr 0:60609af7aa3e 123 else if (Option == 'H')
MatteusCarr 0:60609af7aa3e 124 {
MatteusCarr 0:60609af7aa3e 125 MotorGoHome(stepper);
MatteusCarr 0:60609af7aa3e 126 }
MatteusCarr 0:60609af7aa3e 127 }
MatteusCarr 0:60609af7aa3e 128 }
MatteusCarr 0:60609af7aa3e 129 return 0;
MatteusCarr 0:60609af7aa3e 130 }
MatteusCarr 0:60609af7aa3e 131