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 ext{ k} ext{Ω} 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 ext{ k} ext{Ω} a 22 ext{ k} ext{Ω}. O sinal do sensor entra pelo canal A7. O período de amostragem do ADC deve ser de 250 ext{ 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 ext{ segundos}). O resultado final deve ser enviado ao computador a cada 1 ext{ s}, na forma de texto formatado (Ex.: Tensão sensor = X,XX ext{ V}). Configure a interface UART para uma taxa de 9600 ext{ 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 ext{ MHz}, SMCLK = 8 ext{ MHz}, ACLK = 32.768 ext{ 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