• Welcome to LusoRobótica - Robótica em Português.
 

Definir taxa de amostragem

Started by jbecg, 06 de August de 2010, 01:28

Previous topic - Next topic

0 Members and 1 Guest are viewing this topic.

jbecg

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).

senso

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
Avr fanboy

Sérgio_Sena

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.
Cumprimentos,
Sérgio Sena

Electronic Gear for Musicians

Instagram