This Project has codes that may cnc controller possible. My cnc has 2 mechanical axis. I am monitoring through switches the axis limits. For this i use the library rtos. Enjoy.

Dependencies:   mbed-rtos mbed

Committer:
waspSalander
Date:
Mon Sep 18 13:05:47 2017 +0000
Revision:
1:ef18c260ce02
Parent:
0:7cedfb720712
Step controller

Who changed what in which revision?

UserRevisionLine numberNew contents of line
waspSalander 0:7cedfb720712 1 #include "Stepp.h"
waspSalander 0:7cedfb720712 2
waspSalander 0:7cedfb720712 3 Stepp::Stepp(PinName clk, PinName dir, PinName en) : _clk(clk), _dir(dir), _en(en) {
waspSalander 0:7cedfb720712 4 _clk = 0, _dir = 0, _en = 0;
waspSalander 0:7cedfb720712 5
waspSalander 0:7cedfb720712 6 debug = new Debug();
waspSalander 0:7cedfb720712 7 this->speed = 50;
waspSalander 0:7cedfb720712 8 this->acell = true;
waspSalander 0:7cedfb720712 9 //PinName pinOrigin;
waspSalander 0:7cedfb720712 10 }
waspSalander 0:7cedfb720712 11
waspSalander 0:7cedfb720712 12 int Stepp::step(int n_steps, bool direction) {
waspSalander 0:7cedfb720712 13
waspSalander 0:7cedfb720712 14 int accelspeed;
waspSalander 0:7cedfb720712 15 if(this->acell) accelspeed = START_STOP_SPEED;
waspSalander 0:7cedfb720712 16 else accelspeed = this->speed;
waspSalander 0:7cedfb720712 17
waspSalander 0:7cedfb720712 18 _en = 0; // habilita move
waspSalander 0:7cedfb720712 19 _dir = direction;
waspSalander 0:7cedfb720712 20
waspSalander 0:7cedfb720712 21 for(int i=0; (i< n_steps && EixoMonitoring::stopAll == false); i++){
waspSalander 0:7cedfb720712 22
waspSalander 0:7cedfb720712 23 if(this->acell){//linear acceleration
waspSalander 0:7cedfb720712 24 if(i < START_STOP_SPEED) if (--accelspeed == this->speed) accelspeed ++;
waspSalander 0:7cedfb720712 25 if(i > (n_steps-START_STOP_SPEED)) if(++accelspeed == START_STOP_SPEED) accelspeed--;
waspSalander 0:7cedfb720712 26 }
waspSalander 0:7cedfb720712 27
waspSalander 0:7cedfb720712 28 _clk = 1;
waspSalander 0:7cedfb720712 29 wait_us(1);
waspSalander 0:7cedfb720712 30 _clk = 0;
waspSalander 0:7cedfb720712 31 wait_us(1);
waspSalander 0:7cedfb720712 32 wait_us(accelspeed);
waspSalander 0:7cedfb720712 33 }
waspSalander 0:7cedfb720712 34 _en = 1;
waspSalander 0:7cedfb720712 35
waspSalander 0:7cedfb720712 36 return 1;
waspSalander 0:7cedfb720712 37 }
waspSalander 0:7cedfb720712 38
waspSalander 0:7cedfb720712 39 bool Stepp::findLimits(int n_steps, bool direction, DigitalIn sensor) {
waspSalander 0:7cedfb720712 40
waspSalander 0:7cedfb720712 41 int accelspeed = 0;
waspSalander 0:7cedfb720712 42 if(this->acell) accelspeed = START_STOP_SPEED;
waspSalander 0:7cedfb720712 43 else accelspeed = this->speed;
waspSalander 0:7cedfb720712 44
waspSalander 0:7cedfb720712 45 int i = 0;
waspSalander 0:7cedfb720712 46 _en = 0; // habilita move
waspSalander 0:7cedfb720712 47 _dir = direction;
waspSalander 0:7cedfb720712 48
waspSalander 1:ef18c260ce02 49 while(sensor.read() == 0 && EixoMonitoring::stopAll == false){ // n chegou na origem
waspSalander 1:ef18c260ce02 50
waspSalander 1:ef18c260ce02 51 if(this->acell){ //linear acceleration
waspSalander 1:ef18c260ce02 52 if(i < START_STOP_SPEED) if (--accelspeed == this->speed) accelspeed ++;
waspSalander 1:ef18c260ce02 53 if(i > (n_steps-START_STOP_SPEED)) if(++accelspeed == START_STOP_SPEED) accelspeed--;
waspSalander 1:ef18c260ce02 54 }
waspSalander 1:ef18c260ce02 55
waspSalander 1:ef18c260ce02 56 _clk = 1;
waspSalander 1:ef18c260ce02 57 wait_us(1);
waspSalander 1:ef18c260ce02 58 _clk = 0;
waspSalander 1:ef18c260ce02 59 wait_us(1);
waspSalander 1:ef18c260ce02 60 wait_us(accelspeed);
waspSalander 1:ef18c260ce02 61
waspSalander 1:ef18c260ce02 62 i++;
waspSalander 0:7cedfb720712 63 }
waspSalander 0:7cedfb720712 64 _en = 1;
waspSalander 0:7cedfb720712 65
waspSalander 0:7cedfb720712 66
waspSalander 1:ef18c260ce02 67 if(sensor.read() == 0){
waspSalander 1:ef18c260ce02 68 return 0;
waspSalander 1:ef18c260ce02 69 }
waspSalander 1:ef18c260ce02 70 else{
waspSalander 1:ef18c260ce02 71 return 1;
waspSalander 1:ef18c260ce02 72 }
waspSalander 0:7cedfb720712 73 }
waspSalander 0:7cedfb720712 74
waspSalander 0:7cedfb720712 75
waspSalander 0:7cedfb720712 76 float Stepp::version(void) { // version() returns the version number of the library
waspSalander 0:7cedfb720712 77 return VERSION;
waspSalander 0:7cedfb720712 78 }