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.

Dependencies:   mbed

Embed: (wiki syntax)

« Back to documentation index

Show/hide line numbers Motor.h Source File

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