Electrotécnica
Gostaria de reagir a esta mensagem? Crie uma conta em poucos cliques ou inicie sessão para continuar.
CBOX-Shout
setembro 2024
SegTerQuaQuiSexSábDom
      1
2345678
9101112131415
16171819202122
23242526272829
30      

Calendário Calendário

Procurar
 
 

Resultados por:
 


Rechercher Pesquisa avançada

Quem está conectado?
11 usuários online :: 0 registrados, 0 invisíveis e 11 visitantes

Nenhum

O recorde de usuários online foi de 34 em Dom Ago 13, 2023 1:30 pm
Estatísticas
Temos 318 usuários registrados
O último membro registrado é Buggsoulmitor

Os nossos membros postaram um total de 1475 mensagens em 209 assuntos

programação pic - motor de passo (desespero !)

Ir para baixo

programação pic - motor de passo (desespero !) Empty programação pic - motor de passo (desespero !)

Mensagem  ericmc Qua Dez 03, 2014 10:33 pm

olá,,, preciso fazer uma antena girar usando um motor de passo e que os dados analogicos de tensao gerados pela antena sejam armazenados num buffer do dspic e enviados  posteriormente via porta serial para o computador para ser analisado no matlab.

os botoes 1 e  2 servem apenas para ajeitar a posiçao inicial... quando apertar o botao 3 a cada passo do motor o valor analogico de tensao que vem da antena deve ser convertido para digital pelo conversor analogico - digital do dspic e armazenado no buffer.

quando o botao 4 for apertado os dados que estavam no buffer do dspic devem ser enviados para o computador via porta serial..

minha duvida esta justamente nesse envio de dados para a memoria e aquisição desses dados posteriormnete...naum sei nem por onde começar =/ ... comecei a programar a pouco tempo... segue uma imagem do pic no ISIS e o codigo ate onde fiz ,,, ja ajuda muito respondendo qualquer coisa !!

https://2img.net/r/ihimg/a/img673/1618/9lYvDb.png


include


_FBS(BSS_NO_FLASH)
_FOSCSEL (FNOSC_PRI  & IOL1WAY_OFF)
_FOSC (POSCMD_XT)
_FWDT (FWDTEN_OFF)
//_FICD(JTAGEN_OFF & BKBUG_OFF)
 

define BT1 PORTAbits.RA4      //PORTx lê dados do port
define BT2 PORTBbits.RB9
define BT3 PORTBbits.RB8
define BT4 PORTBbits.RB7

define OUT1 LATBbits.LATB10    //LATx  escreve dados no port
define OUT2 LATBbits.LATB11  
define OUT3 LATBbits.LATB12
define OUT4 LATBbits.LATB13


void inicializa(void);
void delay_ms(unsigned int tempo);
void delay_us(unsigned int tempo);
void rota (int step);


void main(void)
{
int step=0;
int aux;

inicializa();

OUT1=0;
   OUT2=0;
   OUT3=0;
   OUT4=0;
   
while(1)
    {
   
if (BT1==0)//dá um passo no sentido horario
{
step++;
if (step>3) step =0;
rota (step);
}

if (BT2==0)//dá um passo no sentido anti-horario
{
step--;
if (step<0) step =3;
rota (step);
}

/*aux depende do angulo de giro do motor, q no caso é 5.625, logo 1 volta completa necessita 64 passos */

if (BT3==0)//dá uma volta no sentido horario
{
for(aux = 0 ;aux <64  ; aux++ )
{                                                                    
step++;
if(step>3) step=0;
rota(step);
                           minha duvida começa aki  !!! . como enviar os dados da antena ate a memoria do pic??para qual porta devo enviar o sinal analógico ??como fazer a conversao analog - dgital ??como armazenar os dados na memoria ??
}
}
               if botao 4 -- como pegar os dados da memoria e enviar ao pc via serial ??


    }//while
}//main


void inicializa(void)
{
ADPCFG=0x00FF;
                                     
TRISB=0b0000001110000000;
  TRISA=0b0000000000010000;    
}

void delay_ms(unsigned int tempo)
{
unsigned int tempo1;

if (!tempo) return;                

for (tempo1=1;tempo1<=tempo;tempo1++) delay_us(500);
}

void delay_us(unsigned int tempo)
{

if (!tempo) return;              

do
{
tempo--;
}while(tempo);

}

void rota (int step)   // rotina para o motor                                  
{

switch (step)
   {
    case 0:
           OUT1=0;
           OUT2=0;
           OUT3=0;
           OUT4=1;
       break;
       case 1:
           OUT1=0;
           OUT2=0;
           OUT3=1;
           OUT4=0;
       break;
       case 2:
           OUT1=0;
           OUT2=1;
           OUT3=0;
           OUT4=0;
       break;
       case 3:
           OUT1=1;
           OUT2=0;
           OUT3=0;
           OUT4=0;
       break;
     

   }//switch
       
delay_ms(100);    
       
}//rota
ericmc
ericmc
Nível 1
Nível 1

Mensagens : 1
Data de inscrição : 03/12/2014

Ir para o topo Ir para baixo

Ir para o topo

- Tópicos semelhantes

 
Permissões neste sub-fórum
Não podes responder a tópicos