LusoRobótica - Robótica em Português

Sistemas específicos => PIC => Tópico iniciado por: jbecg em 06 de Agosto de 2010, 01:28

Título: Definir taxa de amostragem
Enviado por: jbecg em 06 de Agosto de 2010, 01:28
Já escrevi algumas dúvidas que fui tendo ao longo do meu projecto e considero que as respostas que tenho obtido têm contribuído muito para a sua evolução. Por isso a todos vós um OBRIGADO. O problema que hoje trago prende-se com a frequência de amostragem que tenho de definir para um sinal. Pelo teorema de Nyquist é sabido que a frequência de amostragem tem de ser igual ou superior a duas vezes a frequência máxima do sinal que se pretende amostrar. Pois bem, o sinal que pretendo amostrar tem frequência máxima de 100Hz, como tal e tendo em conta outro estudos que usei como referência quero usar uma frequência de amostragem de 250 Hz (isto é, adquirir uma amostra a cada 4 ms).
O problema é esse mesmo como é que vou amostrar o sinal a cada 4 ms ? Já tenho toda a parte de ADC e porta série operacional, e o meu objectivo é enviar a conversão binária do meu ADC para um terminal no meu computador. Como é que o posso fazer? Gerar um atraso (delay) de 4 ms entre cada conversão? Então e o tempo que o ADC demora a converter o sinal? (vai ser acrescido aos 4ms e vou obter um frequência de amostragem diferente da que quero programar).
 
Título: Re: Definir taxa de amostragem
Enviado por: senso em 06 de Agosto de 2010, 02:16
Talvez o melhor seja melhor programar uma interrupção de 4 em 4ms e nesta activar uma flag, flag esse que no programa principal despoleta uma conversão usando o adc e envia por serial, se bem que convem um baud-rate bem alto, porque comunicação serial é algo bastante lento
Título: Re: Definir taxa de amostragem
Enviado por: Sérgio_Sena em 06 de Agosto de 2010, 09:57
Mesmo usando uma amostragem de 1000Hz, estás perfeitamente à vontade para fazer outros trabalhos.

Um método possivel ::

- criar uma interrupção a cada 1ms
- nessa interrupção, ler o valor do ADC e dar ordem de nova leitura
- entre cada interrupção, sobram cerca de ~950micro-segundos ou aproximadamente ~950-1000 instruções.......  dá para fazer MUITA coisa.

O tempo de conversão do ADC é muito curto... cerca de alguns microsegundos ou 10/20us. Muito rápido.... não tens q te preocupar com atrasos daqui, especialmente pq o ADC trabalha sozinho.


Tens muita informação para mandar pela USART? qts bytes de cada vez? Tens q ter em conta que só tens ~950us para o fazer.
Então, se enviares 3-bytes, e se a comunicação demorar 500us, 24bits serão transmitidos a 48kbps. Não é standard.
57600 é standard e demorar-te-ia ~416us a transmitir os 3-bytes.


Espero que tenha ajudado.