Gostaria de reagir a esta mensagem? Crie uma conta em poucos cliques ou inicie sessão para continuar.


Um local para debater assuntos relacionados a eletronica, programação, desenvolvimento de sistemas e robótica.
 
InícioInício  ProcurarProcurar  Últimas imagensÚltimas imagens  RegistarRegistar  EntrarEntrar  
Últimos assuntos
» Controlando um moto DC por PWM usando kit ez430-rf2500
Controlando um moto DC por PWM usando kit  ez430-rf2500 EmptyTer Jun 05, 2012 8:28 pm por Admin

» Projeto com LCD EDM240128-17
Controlando um moto DC por PWM usando kit  ez430-rf2500 EmptySex Set 12, 2008 10:31 pm por Admin

» Meu Projeto com kit PEA8051 e o LCD do celular 3310 da nokia
Controlando um moto DC por PWM usando kit  ez430-rf2500 EmptySex Set 12, 2008 8:09 pm por Admin

» Kit de desenvolvimento PEA8051
Controlando um moto DC por PWM usando kit  ez430-rf2500 EmptyTer Mar 04, 2008 2:39 pm por Admin

» Bem vindos!!
Controlando um moto DC por PWM usando kit  ez430-rf2500 EmptyQua Fev 27, 2008 10:09 am por Admin

» Seu primeiro tópico
Controlando um moto DC por PWM usando kit  ez430-rf2500 EmptySeg Fev 18, 2008 4:23 pm por Admin

Navegação
 Portal
 Índice
 Membros
 Perfil
 FAQ
 Buscar
Fórum
Jogos
Procurar
 
 

Resultados por:
 
Rechercher Pesquisa avançada

 

 Controlando um moto DC por PWM usando kit ez430-rf2500

Ir para baixo 
AutorMensagem
Admin
Admin
Admin


Mensagens : 7
Data de inscrição : 18/02/2008
Localização : Sertãozinho-SP

Controlando um moto DC por PWM usando kit  ez430-rf2500 Empty
MensagemAssunto: Controlando um moto DC por PWM usando kit ez430-rf2500   Controlando um moto DC por PWM usando kit  ez430-rf2500 EmptySex Abr 20, 2012 9:37 pm

Faz parte de um pequeno projeto para controlar o motor DC da pololu, detalhes em:

http://www.esd-talk.com/2011/09/ez430-gerando-meu-pwm-para-o-motor.html

Arquivo do projeto no Code Composer Studio v4.5

Link pendente (procurando um repositório onde colocar)
Ir para o topo Ir para baixo
http://electronicsystemdesigntalk.blogspot.com/
Admin
Admin
Admin


Mensagens : 7
Data de inscrição : 18/02/2008
Localização : Sertãozinho-SP

Controlando um moto DC por PWM usando kit  ez430-rf2500 Empty
MensagemAssunto: Codigo fonte (copie e cole)   Controlando um moto DC por PWM usando kit  ez430-rf2500 EmptyTer Jun 05, 2012 8:28 pm

Uma forma bem simples de postar o código, mas como é bem pequeno fica tranquilo. Basta criar um projeto no CC studio v4.5 ou superior, configurar seu PWM seguindo a pinagem indicada no blog e usar o codigo abaixo que também recebe comandos via UART deixando a placa ligada no micro e usando o hyperterminal para enviar comandos.

Código:


/*
 * ======== Standard MSP430 includes ========
 */
#include <msp430.h>

/*
 * ======== Grace related includes ========
 */
#include <ti/mcu/msp430/csl/CSL.h>

/*
 *  ======== main ========
 */
/*
 * MOTOR HW DEFS
 */
 //P3.1 connected to M1 in2
#define M1_PWM_100 TBCCR0 //obtem o valor maximo para o registrador ou seja 100%
// para o motor DC da pololu usei 51 gerando uma freq de 10kHz
// para o stepper driver foi para 17501 gerando uma freq de 28.6Hz
#define M1_FW  P3OUT |=  0x02; TBCCR2 = M1_PWM_100 - TBCCR2
#define M1_BW  P3OUT &= ~0x02; TBCCR2 = M1_PWM_100 - TBCCR2
#define M1_ST  P3OUT &= ~0x02; TBCCR2 = 0 //stop
#define M1_HALF P3OUT &= ~0x02; TBCCR2 = M1_PWM_100/2
 
long g_ldivider = 0;

typedef enum{
   E_IDLE,
   E_LED,
   E_PWM
}EMSTATE;

typedef struct{
   EMSTATE state;
   unsigned char rx_buf;
   unsigned char tx_avaliabe;
   unsigned char tx_buf;
}SMACHINE;
   
SMACHINE g_sRX_machine;
 
int main(int argc, char *argv[])
{
    CSL_init();                    // Activate Grace-generated configuration
    __enable_interrupt();          // Set global interrupt enable
   
    // >>>>> Fill-in user code here <<<<<
    P1OUT |= 0x01;
    P1OUT |= 0x02;
    //M1_ST;
    M1_HALF;
    //M1_FW;
    //TBCCR2 = 30;
   
    _BIS_SR(LPM0_bits + GIE);
}

void RX_Machine_execute(void)
{
   switch(g_sRX_machine.state)
   {
      case E_IDLE:
         if((g_sRX_machine.rx_buf == 'l') || (g_sRX_machine.rx_buf == 'L'))
         {
            g_sRX_machine.rx_buf = 0;
            g_sRX_machine.state = E_LED;
         }
         else if((g_sRX_machine.rx_buf == 'p') || (g_sRX_machine.rx_buf == 'P'))
         {
            g_sRX_machine.rx_buf = 0;
            g_sRX_machine.state = E_PWM;
         }
         else if(g_sRX_machine.rx_buf == '+')
         {
            g_sRX_machine.rx_buf = 0;
            TBCCR2++;
         }
         else if(g_sRX_machine.rx_buf == '-')
         {
            g_sRX_machine.rx_buf = 0;
            TBCCR2--;
         }
         else if(g_sRX_machine.rx_buf == ',')
         {
            g_sRX_machine.rx_buf = 0;
            M1_FW;
         }
         else if(g_sRX_machine.rx_buf == '.')
         {
            g_sRX_machine.rx_buf = 0;
            M1_BW;
         }
         else if(g_sRX_machine.rx_buf == '*')
         {
            g_sRX_machine.rx_buf = 0;
            M1_ST;
         }
      break;   
      case E_LED:
         P1OUT ^= 0x02;
         g_sRX_machine.tx_buf = P1OUT;
         g_sRX_machine.tx_avaliabe = 0xAC;
         g_sRX_machine.state = E_IDLE;
      break;
      case E_PWM:
         switch(g_sRX_machine.rx_buf)
         {
            case '1': TBCCR2 = 0;        g_sRX_machine.rx_buf = 0; g_sRX_machine.state = E_IDLE; break;
            case '2': TBCCR2 = 25;        g_sRX_machine.rx_buf = 0; g_sRX_machine.state = E_IDLE; break;
            case '3': TBCCR2 = 45;        g_sRX_machine.rx_buf = 0; g_sRX_machine.state = E_IDLE; break;
            case '4': TBCCR2 = 55;        g_sRX_machine.rx_buf = 0; g_sRX_machine.state = E_IDLE; break;
            case '5': TBCCR2 = M1_PWM_100;    g_sRX_machine.rx_buf = 0; g_sRX_machine.state = E_IDLE; break;
            case '+': TBCCR2++;          g_sRX_machine.rx_buf = 0; g_sRX_machine.state = E_IDLE; break;
            case '-': TBCCR2--;          g_sRX_machine.rx_buf = 0; g_sRX_machine.state = E_IDLE; break;
         }
      break;         
      default:
         g_sRX_machine.rx_buf = 0;
         g_sRX_machine.state = E_IDLE;   
   }
}

void Timer_A3_ISR(void)
{
   if(g_ldivider++ > 4)
   {
      g_ldivider = 0;
   }
   
   RX_Machine_execute();
   if(g_sRX_machine.tx_avaliabe == 0xAC)
   {
      UCA0TXBUF = g_sRX_machine.tx_buf;
      g_sRX_machine.tx_avaliabe = 0;
   }
}

void UART_RX_ISR(void)
{
   P1OUT ^= 0x01;
   g_sRX_machine.rx_buf = UCA0RXBUF;
   IFG2 &= ~(UCA0RXIFG);
}

Ir para o topo Ir para baixo
http://electronicsystemdesigntalk.blogspot.com/
 
Controlando um moto DC por PWM usando kit ez430-rf2500
Ir para o topo 
Página 1 de 1

Permissões neste sub-fórumNão podes responder a tópicos
 :: Kits de desenvolvimento :: MSP430-
Ir para: