Omni3MD.h
Go to the documentation of this file.
00001 /*
00002   Omni3MD.h - Library for interfacing with omni-3md (3 motor driver controller) from www.botnroll.com
00003   Created by Nino Pereira, April 28, 2011.
00004   Released into the public domain.
00005 */
00006 
00007 #ifndef Omni3MD_h
00008 #define Omni3MD_h
00009 
00010 #include "WProgram.h"
00011 
00012 #define KEY1 0xAA // key used in critical commands
00013 #define KEY2 0x55 // key used in critical commands
00014 
00015 /*User Commands*/
00016 /*Read Firmware version*/
00017 #define COMMAND_FIRMWARE_INT       0xFE //Parte inteira da versão do firmware
00018 #define COMMAND_FIRMWARE_DEC       0xFD //Parte decimal da versão do firmware
00019 /*Write Commands->Don't require response from Omni3MD */
00020 #define COMMAND_STOP               0xFC //Comando de paragem sem controlo
00021 #define COMMAND_CALIBRATE          0xFB //Calibração dos parâmetros físicos do movimento
00022 #define COMMAND_MOV_OMNI_PID       0xFA //Comando de movimento omidireccional com controlo PID
00023 #define COMMAND_MOV_OMNI_NOPID     0xF9 //Comando de movimento omidireccional sem controlo
00024 #define COMMAND_MOV_LIN3M_PID      0xF8 //Comando de movimento linear de 3 motores com controlo PID
00025 #define COMMAND_MOV_LIN3M_NOPID    0xF7 //Comando de movimento linear de 3 motores sem controlo PID
00026 #define COMMAND_MOV_LIN1M_PID      0xF6 //Comando de movimento linear de 1 motor com controlo PID
00027 #define COMMAND_MOV_LIN1M_NOPID    0xF5 //Comando de movimento linear de 1 motor sem controlo PID
00028 #define COMMAND_GAIN_UPDATE        0xF4 //Recepção dos ganhos para o controlo
00029 #define COMMAND_CFG_MOV_CW         0xF3 //Define o sentido CW do movimento
00030 #define COMMAND_I2C_ADD            0xF2 //Comando para mudança do Endereço I2C
00031 #define COMMAND_TIMEOUT_I2C        0xF1 //Comando para configuração do tempo de timeout I2C
00032 #define COMMAND_PRESCALER_CFG      0xF0 //Comando para configuração do presclaer da contagem incremental dos encoders
00033 #define COMMAND_INC_ENC_PRESET     0xEF //Comando para efectuar reset à contagem incremental dos encoders
00034 #define COMMAND_MOV_INC            0xEE //Comando de movimento linear incremental de um motor
00035 
00036 /*Read Commands-> requests to Omni3MD */
00037 #define COMMAND_BAT_HI            0xE4 //Leitura do valor da temperatura da placa
00038 #define COMMAND_BAT_LOW           0xE3 //Leitura do valor da tensão da bateria
00039 #define COMMAND_TEMPER1_HI        0xE2 //Leitura do valor da temperatura da placa (sensor1)
00040 #define COMMAND_TEMPER1_LOW       0xE1 //Leitura do valor da temperatura da placa (sensor1)
00041 #define COMMAND_ENC1_LIM_HI       0xE0 //PWM no Limiar do movimento para o motor 1
00042 #define COMMAND_ENC1_LIM_LOW      0xDF //Valor obtido na rotina de calibração
00043 #define COMMAND_ENC2_LIM_HI       0xDE //PWM no Limiar do movimento para o motor 2
00044 #define COMMAND_ENC2_LIM_LOW      0xDD //Valor obtido na rotina de calibração
00045 #define COMMAND_ENC3_LIM_HI       0xDC //PWM no Limiar do movimento para o motor 3
00046 #define COMMAND_ENC3_LIM_LOW      0xDB //Valor obtido na rotina de calibração
00047 #define COMMAND_ENC1_MAX_HI       0xDA //Valor de contagens máximo registado para o encoder1
00048 #define COMMAND_ENC1_MAX_LOW      0xD9 //Permite ao utilizador obter o estado do encoder 1
00049 #define COMMAND_ENC2_MAX_HI       0xD8 //Valor de contagens máximo registado para o encoder2
00050 #define COMMAND_ENC2_MAX_LOW      0xD7 //Permite ao utilizador obter o estado do encoder 2
00051 #define COMMAND_ENC3_MAX_HI       0xD6 //Valor de contagens máximo registado para o encoder3
00052 #define COMMAND_ENC3_MAX_LOW      0xD5 //Permite ao utilizador obter o estado do encoder 3
00053 #define COMMAND_CTRL_RATE         0xD4 //Leitura da taxa de controlo dos motores
00054 #define COMMAND_ENC1_INC_HI       0xD3 //Contagem incremental do encoder 1 HI
00055 #define COMMAND_ENC1_INC_LOW      0xD2 //Contagem incremental do encoder 1 LO
00056 #define COMMAND_ENC2_INC_HI       0xD1 //Contagem incremental do encoder 2 HI
00057 #define COMMAND_ENC2_INC_LOW      0xD0 //Contagem incremental do encoder 2 LO
00058 #define COMMAND_ENC3_INC_HI       0xCF //Contagem incremental do encoder 3 HI
00059 #define COMMAND_ENC3_INC_LOW      0xCE //Contagem incremental do encoder 3 LO
00060 
00061 #include "WProgram.h"
00062 
00063 class Omni3MD
00064 {
00065   public:
00066     //Omni3MD(byte omniAddress);
00067 
00068     //setup routines
00069     void i2c_connect(byte omniAddress);
00070     void calibrate_omni();
00071     void set_i2c_timeout (byte timeout); //timeout x 100 miliseconds to receive i2C Commands
00072     void set_i2c_address (byte newAddress);
00073 //    void set_way(byte way);
00074     void set_PID(word Kp, word Ki, word Kd);
00075     void set_prescaler(byte encoder, byte value);
00076     void set_enc_value(byte encoder, word encValue);
00077         
00078     //reading routines
00079     float read_temperature();
00080     float read_battery();
00081     float read_firmware();
00082 //    byte read_control_rate();
00083 //    int read_enc_lim1();
00084 //    int read_enc_lim2();
00085 //    int read_enc_lim3();
00086 //    int read_enc_max1();
00087 //    int read_enc_max2();
00088 //    int read_enc_max3();
00089     int read_enc1();
00090     int read_enc2();
00091 //    int read_enc3();
00092 
00093         //movement routines
00094 //    void mov_omni_pid(byte linear_speed,byte rotational_speed,word direction);
00095 //    void mov_omni_nopid(byte linear_speed,byte rotational_speed,word direction);
00096     void mov_lin3M_pid(byte way1,byte speed1,byte way2,byte speed2,byte way3,byte speed3);
00097 //    void mov_lin3M_nopid(byte way1,byte speed1,byte way2,byte speed2,byte way3,byte speed3);
00098 //    void mov_lin1M_pid(byte motor,byte way, byte speed);
00099 //    void mov_lin1M_nopid(byte motor,byte way, byte speed);
00100 //    void mov_incremental(byte motor,byte way, byte speed,word encPosition,byte stoptorque);
00101     void stop_motors();
00102     
00103   private:
00104     byte _omniAddress;
00105     byte i2cRequestData(byte addressValue, byte command);
00106     void i2cSendData(byte addressValue, byte command, byte buffer[], byte numBytes);
00107 };
00108 
00109 #endif
00110 
00111 
00112 
00113 
 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Properties Friends Defines


traxbot_robot
Author(s): André Gonçalves Araújo
autogenerated on Fri Feb 1 2013 13:21:12