Clase Motor. Se usa para crear objetos del tipo motor, que pueden ser continuos o PAP. se especifica los pines a los cuales estara conectado cada Motor. Se puede controlar la velocidad con encoders, encontrar la posición inicial. Se debe especificar la cantidad de pasos y se podrá girar por ángulos.
Motor.h
00001 #ifndef Motor_H 00002 #define Motor_H 00003 #include "mbed.h" 00004 /* ************************************************************************** 00005 00006 @CCastrop 00007 cristiank.castrop@ecci.edu.co 00008 00009 L1 Terminal A del motor 00010 L2 Terminal B del motor 00011 SpeedPin Pin de salida PWM 00012 00013 00014 ******************************************************************************/ 00015 00016 00017 class MotorContinuo { 00018 public: 00019 /// Constructores para Motores Continuos 00020 MotorContinuo(); 00021 MotorContinuo(int q); 00022 // MotorContinuo(PinName _L1, PinName _L2, PinName _speedPin, PinName _encodin, PinName _PosInicial, int _EncodPulses); 00023 00024 00025 void Forward(); // Da un sentido de giro al motor 00026 void Back(); // Genera un sentido de giro contrario al de Forward 00027 void Stop(); // Detiene el motor dejando el movimiento libre 00028 void StopT(); // Detiene el motor truncando o enclavando el movimiento(Lo mantiene quieto). 00029 void SpeedDuty(int v); // Varia la velocidad de giro del motor de 0 a 100% 00030 void SpinLength_ms(float t); // Duración del giro en ms 00031 void SpinLength(float t); // Duración del giro 00032 00033 private: 00034 00035 // DigitalOut L1; 00036 // DigitalOut L2; 00037 // PwmOut speedPin; 00038 // DigitalIn encodin; 00039 DigitalIn PosInicial; 00040 int EncodPulses; 00041 00042 00043 00044 00045 }; 00046 /* 00047 00048 class MotorDiscreto { 00049 public: 00050 /// Constructores para Motores Continuos 00051 MotorDiscreto(PinName _Dir, PinName _Step, int _NPasos, PinName _encodin, PinName _PosInicial, int _EncodPulses); 00052 00053 MotorDiscreto(void); 00054 00055 void Forward(); // Da un sentido de giro al motor 00056 void Back(); // Genera un sentido de giro contrario al de Forward 00057 void Stop(); // Detiene el motor dejando el movimiento libre. Pin Enable = 0 00058 void StopT(); // Detiene el motor truncando o enclavando el movimiento(Lo mantiene quieto). 00059 void StepFreq(long n); // Configura la Velocidad en Número(n) de pasos por segundos. Es decir la Frecuencia de paso. 00060 void RunStep(long n); // Se mueve el motor la cantidad de pasos ingresada 00061 void Run(float t); // Gira el motor durante el tiempo ingresado, si es 0 indefinidamente hasta llamada a Stop(). 00062 void RunRound(int n); // Girar n vueltas 00063 void Ustep(int resolucion, PinName M0, PinName M1, PinName M2); 00064 // Configura los pasos a 1/2, 1/4, 1/8, 1/16, 1/32 00065 long getStepOnHold(void); 00066 00067 long StepOnHold; // Pasos faltantes por ejecutar 00068 long StepsBySecond; // Pasos por segundo 00069 00070 private: 00071 00072 void moveMotor(void); 00073 00074 DigitalOut Dir; 00075 DigitalOut Step; 00076 int NPasos; 00077 DigitalIn encodin; 00078 DigitalIn PosInicial; 00079 int EncodPulses; 00080 00081 DigitalOut* EnablePin; 00082 DigitalOut* M0; 00083 DigitalOut* M1; 00084 DigitalOut* M2; 00085 00086 Ticker Move; /// Timer de interrupcion 00087 float TStep; /// periodo del paso TStep = 1/StepsBySecond; 00088 00089 int entradas; /// registra cada 2 ingresos a la interrupcion 00090 bool _moveMotorStopped; // en 1 cuando se da la orden al motor de detenerse 00091 }; 00092 00093 00094 00095 00096 class TraccionD 00097 { 00098 00099 public: 00100 00101 TraccionD(PinName _StepMI, PinName _DirMI, PinName _StepMD, PinName _DirMD, int _NPasos, float _r, float _L); 00102 00103 void Forward(); // Da un sentido de giro al motor 00104 void Back(); // Genera un sentido de giro contrario al de Forward 00105 void Left(); // Configura el sentido de giro de ambos motores de manera contraria para girar hacia la izquierda 00106 void Right(); // Configura el sentido de giro de ambos motores de manera contraria e inverso al de Left() para girar hacia la derecha 00107 void Stop(); // Detiene el motor dejando el movimiento libre. Pin Enable = 0 00108 void StopT(); // Detiene el motor truncando o enclavando el movimiento(Lo mantiene quieto). 00109 void StepFreq(long n);//maximo~350 // Configura la Velocidad en Número(n) de pasos por segundos. Es decir la Frecuencia de paso. 00110 void RunStep(long n); // Se mueve el motor la cantidad de pasos ingresada 00111 void Run(float t); // Gira el motor durante el tiempo ingresado, si es 0 indefinidamente hasta llamada a Stop(). 00112 void RunRound(int n); // Girar n vueltas 00113 void Giro(long grados, bool sentido); // Gira el movil la cantidad de grados indicados en sentido indicado. 00114 // en función del radio de las llantas y el radio del eje que une las llantas. 00115 // ejemplo: (90, Horario) o (120, AntiHorario) 00116 00117 long getStepOnHold(void); 00118 00119 00120 private: 00121 00122 void moveMotor(void); // Funcion que es ejecutada cada interupcion del Ticker Move 00123 00124 // Configuracion de los pines 00125 DigitalOut StepMI,DirMI; 00126 DigitalOut StepMD, DirMD; 00127 int NPasos; 00128 float r; // Radio de la llanta 00129 float L; // Longitud desde del eje medido entre las 2 llantas dividido en 2. 00130 float Rl; // Relacion(Rl) de distacia entre los dos Radios(r y L) 00131 long StepOnHold; // Pasos faltantes por ejecutar 00132 long StepsBySecond; // Pasos por segundo 00133 00134 DigitalOut* EnablePinM1; 00135 DigitalOut* EnablePinM2; 00136 00137 Ticker Move; /// Timer de interrupcion 00138 float TStep; /// periodo del paso TStep = 1/StepsBySecond; 00139 00140 int entradas; /// registra cada 2 ingresos a la interrupcion 00141 00142 00143 00144 00145 00146 };*/ 00147 #endif 00148 00149 00150 00151 00152 00153 00154 00155 00156 00157 00158 00159 00160 00161 00162
Generated on Sun Jul 17 2022 04:27:37 by
1.7.2