Important changes to repositories hosted on mbed.com
Mbed hosted mercurial repositories are deprecated and are due to be permanently deleted in July 2026.
To keep a copy of this software download the repository Zip archive or clone locally using Mercurial.
It is also possible to export all your personal repositories from the account settings page.
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 LastVersion: 21 - Abril - 2019 7:45pm 00014 ******************************************************************************/ 00015 00016 00017 class MotorContinuo { 00018 public: 00019 /// Constructores para Motores Continuos 00020 MotorContinuo(PinName _L1, PinName _L2, PinName _speedPin, PinName _encodin, PinName _PosInicial, int _EncodPulses); 00021 00022 void Forward(); // Da un sentido de giro al motor 00023 void Back(); // Genera un sentido de giro contrario al de Forward 00024 void Stop(); // Detiene el motor dejando el movimiento libre 00025 void StopT(); // Detiene el motor truncando o enclavando el movimiento(Lo mantiene quieto). 00026 void SpeedDuty(int v); // Varia la velocidad de giro del motor de 0 a 100% 00027 void SpinLength_ms(float t); // Duración del giro en ms 00028 void SpinLength(float t); // Duración del giro 00029 00030 private: 00031 00032 DigitalOut L1; 00033 DigitalOut L2; 00034 PwmOut speedPin; 00035 DigitalIn encodin; 00036 DigitalIn PosInicial; 00037 int EncodPulses; 00038 00039 00040 00041 00042 }; 00043 00044 00045 class MotorDiscreto { 00046 public: 00047 /// Constructores para Motores Continuos 00048 MotorDiscreto(PinName _Dir, PinName _Step, int _NPasos, PinName _encodin, PinName _PosInicial, int _EncodPulses); 00049 00050 MotorDiscreto(void); 00051 00052 void Forward(); // Da un sentido de giro al motor 00053 void Back(); // Genera un sentido de giro contrario al de Forward 00054 void Stop(); // Detiene el motor dejando el movimiento libre. Pin Enable = 0 00055 void StopT(); // Detiene el motor truncando o enclavando el movimiento(Lo mantiene quieto). 00056 void StepFreq(long n); // Configura la Velocidad en Número(n) de pasos por segundos. Es decir la Frecuencia de paso. 00057 void RunStep(long n); // Se mueve el motor la cantidad de pasos ingresada 00058 void Run(float t); // Gira el motor durante el tiempo ingresado, si es 0 indefinidamente hasta llamada a Stop(). 00059 void RunRound(int n); // Girar n vueltas 00060 void Ustep(int resolucion, PinName M0, PinName M1, PinName M2); 00061 // Configura los pasos a 1/2, 1/4, 1/8, 1/16, 1/32 00062 long getStepOnHold(void); 00063 00064 long StepOnHold; // Pasos faltantes por ejecutar 00065 long StepsBySecond; // Pasos por segundo 00066 00067 private: 00068 00069 void moveMotor(void); 00070 00071 DigitalOut Dir; 00072 DigitalOut Step; 00073 int NPasos; 00074 DigitalIn encodin; 00075 DigitalIn PosInicial; 00076 int EncodPulses; 00077 00078 DigitalOut* EnablePin; 00079 DigitalOut* M0; 00080 DigitalOut* M1; 00081 DigitalOut* M2; 00082 00083 Ticker Move; /// Timer de interrupcion 00084 float TStep; /// periodo del paso TStep = 1/StepsBySecond; 00085 00086 int entradas; /// registra cada 2 ingresos a la interrupcion 00087 bool _moveMotorStopped; // en 1 cuando se da la orden al motor de detenerse 00088 }; 00089 00090 00091 00092 00093 class TraccionD 00094 { 00095 00096 public: 00097 00098 TraccionD(PinName _StepMI, PinName _DirMI, PinName _StepMD, PinName _DirMD, int _NPasos, float _r, float _L); // para giro declarar primero la frecuencia de paso 00099 00100 void Forward(); // Da un sentido de giro al motor 00101 void Back(); // Genera un sentido de giro contrario al de Forward 00102 void Left(); // Configura el sentido de giro de ambos motores de manera contraria para girar hacia la izquierda 00103 void Right(); // Configura el sentido de giro de ambos motores de manera contraria e inverso al de Left() para girar hacia la derecha 00104 void Stop(); // Detiene el motor dejando el movimiento libre. Pin Enable = 0 00105 void StopT(); // Detiene el motor truncando o enclavando el movimiento(Lo mantiene quieto). 00106 void StepFreq(long n);//maximo~350 // Configura la Velocidad en Número(n) de pasos por segundos. Es decir la Frecuencia de paso. 00107 void RunStep(long n); // Se mueve el motor la cantidad de pasos ingresada 00108 void Run(float t); // Gira el motor durante el tiempo ingresado, si es 0 indefinidamente hasta llamada a Stop(). 00109 void RunRound(int n); // Girar n vueltas 00110 void Giro(long grados, bool sentido); // IMPORTANTE: Para llamar esta funcino PRIMERO se debe definir la frecuencia de paso 00111 // Gira el movil la cantidad de grados indicados en sentido indicado. 00112 // en función del radio de las llantas y el radio del eje que une las llantas. 00113 // ejemplo: (90, Horario) o (120, AntiHorario) 00114 00115 long getStepOnHold(void); 00116 00117 00118 private: 00119 00120 void moveMotor(void); // Funcion que es ejecutada cada interupcion del Ticker Move 00121 00122 // Configuracion de los pines 00123 DigitalOut StepMI,DirMI; 00124 DigitalOut StepMD, DirMD; 00125 int NPasos; 00126 float r; // Radio de la llanta 00127 float L; // Longitud desde del eje medido entre las 2 llantas dividido en 2. 00128 float Rl; // Relacion(Rl) de distacia entre los dos Radios(r y L) 00129 long StepOnHold; // Pasos faltantes por ejecutar 00130 long StepsBySecond; // Pasos por segundo 00131 00132 DigitalOut* EnablePinM1; 00133 DigitalOut* EnablePinM2; 00134 00135 Ticker Move; /// Timer de interrupcion 00136 float TStep; /// periodo del paso TStep = 1/StepsBySecond; 00137 00138 int entradas; /// registra cada 2 ingresos a la interrupcion 00139 00140 00141 00142 00143 00144 }; 00145 #endif 00146 00147 00148 00149 00150 00151 00152 00153 00154 00155 00156 00157 00158 00159 00160
Generated on Mon Apr 3 2023 11:59:03 by
1.7.2