Questão de Administração Financeira e Orçamentária

Um sistema de monitoramento de nível de um reservatório é formado por um sensor do tipo potenciômetro de 22 \, k\Omega e deve fornecer o resultado bruto da medição (tensão de entrada do ADC) a um computador. A faixa de variação de resistência série do sensor vai de 9 \, k\Omega a 22 \, k\Omega. O sinal do sensor entra pelo canal A7. O período de amostragem do ADC deve ser de 250 \, ms, sendo realizadas 16 conversões consecutivas para obter a média como resultado parcial da medição. O resultado final da medição é dado por uma média móvel de 8 resultados parciais (atingido inicialmente a partir de 2 \, s). O resultado final deve ser enviado ao computador a cada 1 \, s, na forma de texto formatado (Ex.: Tensão sensor = X,XX \, V). Configure a interface UART para uma taxa de 9600 \, bps para transmissão de dados apenas, sem paridade. Considere a taxa máxima de conversão do ADC10, ou seja, sem usar estratégias para reduzir o consumo de energia. Use V_{dd} como tensão de referência e para o sensor também. Todas as variáveis necessárias foram declaradas corretamente. Leve em conta a seguinte configuração de clock: MCLK = 16 \, MHz, SMCLK = 8 \, MHz, ACLK = 32.768 \, Hz. Para isso, será necessário fazer as seguintes configurações e códigos: Escolha uma opção:

A

if(processa >= 1){ processa = 0; medias[i] = media; if(i>=7) i = 0; else i++; if(n >= 7){ n = 0; soma_medias = 0; for(j=0;j<8;j++){ soma_medias = soma_medias + medias[j]; } media_janela = soma_medias >> 4; tensao = (1023.0*(float)media_janela)/3.6; inteiro = (unsigned char) tensao; aux = (tensao - inteiro)*10.0; dec_1 = (unsigned char)aux; aux = (aux - dec_1)*10.0; dec_2 = (unsigned char)aux; sprintf(&TX_data[0], "Tensão = %d,%d%d Volts \n", inteiro, dec_1, dec_2); UCA0TXBUF = TX_data[0]; tx_index++; }else{ n++; }

B

if(processa >= 1){ processa = 0; medias[i] = media; if(i>=7) i = 0; else i++; if(n >= 7){ n = 3; soma_medias = 0; for(j=0;j<8;j++){ soma_medias = soma_medias + medias[j]; } media_janela = soma_medias >> 3; tensao = (3.6*(float)media_janela)/1023.0; inteiro = (unsigned char) tensao; aux = (tensao - inteiro)*100.0; dec_1 = (unsigned char)aux; sprintf(&TX_data[0], "Tensão = %d,%d Volts \n", inteiro, dec_1); UCA0TXBUF = TX_data[0]; tx_index++; }else{ n++; }

C

if(processa >= 1){ processa = 0; medias[i] = media; if(i>=7) i = 0; else i++; if(n >= 7){ n = 4; soma_medias = 0; for(j=0;j<8;j++){ soma_medias = soma_medias + medias[j]; } media_janela = soma_medias >> 3; tensao = (3.6*(float)media_janela)/1023.0; inteiro = (unsigned char) tensao; aux = (tensao - inteiro)*10.0; dec_1 = (unsigned char)aux; aux = (aux - dec_1)*10.0; dec_2 = (unsigned char)aux; sprintf(&TX_data[0], "Tensão = %d,%d%d Volts \n", inteiro, dec_1, dec_2); UCA0TXBUF = TX_data[0]; tx_index++; }else{ n++; }

Ainda não há comentários para esta questão.

Seja o primeiro a comentar!

Aulas em vídeo Em breve

00:00

Tópicos Relacionados