Relatorio embarcados
22 pág.

Relatorio embarcados


DisciplinaMetodologia de Pesquisa I8.764 materiais58.455 seguidores
Pré-visualização4 páginas
== 0) 
 { 
 bounce++; 
 } 
 if (bounce > 700) 
 { 
 aux_unid = aux_unid +1; 
 if (aux_unid == 10) 
 { 
 aux_unid = 0; 
 } 
 bounce = 0; 
 } 
 } 
 if(GPIO_ReadInputDataBit(GPIOC,GPIO_Pin_2) == 0) 
 { 
 while(GPIO_ReadInputDataBit(GPIOC,GPIO_Pin_2) == 0) 
 { 
 bounce++; 
 } 
 if(bounce>700) 
 { 
 aux_dez = aux_dez +1; 
 if(aux_dez == 10) 
 { 
 aux_dez = 0; 
 } 
 bounce = 0; 
 
 
 } 
 } 
 if (GPIO_ReadInputDataBit(GPIOA,GPIO_Pin_0) == 1) 
 { 
 while (GPIO_ReadInputDataBit(GPIOA,GPIO_Pin_0) == 1) 
 { 
 bounce++; 
 } 
 if(bounce > 700) 
 { 
 while (confir != 5) 
 { 
 GPIO_SetBits(GPIOC,GPIO_Pin_8); 
 GPIO_SetBits(GPIOC,GPIO_Pin_9); 
 for (tempo=0;tempo<=200000;tempo++); 
 GPIO_ResetBits(GPIOC,GPIO_Pin_8); 
 GPIO_ResetBits(GPIOC,GPIO_Pin_9); 
 for (tempo=0;tempo<=200000;tempo++); 
 confir++; 
 } 
 GPIO_ResetBits(GPIOC,GPIO_Pin_8); 
 GPIO_ResetBits(GPIOC,GPIO_Pin_9); 
 aux_temp = ((aux_dez*10)+aux_unid); 
 return (aux_temp); 
 } 
 } 
 bounce = 0; 
 } 
} 
 
 Função de Parametrização para a temperatura mínima. Funciona de forma 
análoga a função de Parametrização de temperatura máxima, anteriormente 
explanado. 
 
 
void delay () 
{ 
 int aux = 0; 
 for(aux=0;aux<=20000;aux++); 
} 
 
 Função Delay, para ajustar as trepidações do clock, ou dar um espaço de 
tempo entre a execução de uma função e outra. 
 
 
int main () 
{ 
 
 int valor = 0; 
 int ctrl = 0; 
 int temp_max = 99; 
 int temp_min = 00; 
 int unid=0; 
 int dez=0; 
 int bounce=0; 
 int parametro = 0; 
 int cont = 200; 
 int aux1=0; 
 Config_portas(); 
 ADC_Config(); 
 Config_Led(); 
 Config_clock(); 
 
 
 while (1) 
 { 
 cont++; 
 if (cont > 200) 
 { 
 valor = readAnalogica1(); 
 ctrl = ((100*valor)/4096); 
 cont = 0; 
 } 
 unid = ctrl%10; 
 dez = ctrl/10; 
 display_unid (unid); 
 delay(); 
 display_dez (dez); 
 delay(); 
 rele(ctrl,temp_max,temp_min); 
 if (GPIO_ReadInputDataBit(GPIOA,GPIO_Pin_0) == 1) 
 { 
 while (GPIO_ReadInputDataBit(GPIOA,GPIO_Pin_0) == 1) 
 { 
 bounce++; 
 } 
 if (bounce > 700) 
 { 
 parametro = parame_dec(); } 
 if (parametro == 1) 
 { 
 temp_max = ajust_temp_max(temp_max); 
 } 
 if (parametro == 2) 
 { 
 temp_min = ajust_temp_min(temp_min); 
 } 
 } 
 bounce = 0; 
 parametro = 0; 
 valor = 0; 
 } 
} 
 
 Função Main, onde há toda a declaração das variáveis globais, e as 
chamadas das funções, já descritas anteriormente. 
 O que vale atentar, que há de diferente no corpo da função main são as 
linhas: 
valor = readAnalogica1(); 
ctrl = ((100*valor)/4096); 
Onde é chamada a função para a conversão ADC. 
A função readAnalogica1 retorna para a função main, um endereço de 
memória de 16-bits, e a variável valor é do tipo inteira (int). 
A ideia foi, já que para os micro controladores, números decimais, são 
guardados em memória como suas respectivas representações binarias, foi que, ao 
transferirmos os bits da conversão ADC para uma variável do tipo int, o próprio 
micro controlador convertesse essa série de bits em número decimal, para ficar mais 
plausível de se trabalhar com os valores coletados da conversão. 
Logo em seguida temos, como já discutido anteriormente na sessão de 
funcionamento do programa, a linha que faz a conversão do nível de tensão em 
temperatura. 
Vale detalhar que, o nível de precisão do sensor projetado, não entra em 
valores decimais, sendo somente inteiro, devido ao fato da variável ctrl ser do tipo 
int. 
 
 
 
CONCLUSÕES 
Ao termino do projeto, pudemos tirar uma série de lições a cerca de eletrônica 
(tanto analógica quanto digital), quanto a organização dos projetos. 
Tivemos que pesquisar, para projetar o circuito analógico, e descobrir a 
melhor configuração de resistências para o circuito de amplificador de resistências. 
Assim como, a solução de usar as mesmas portas de saída para mandar para 
os displays de unidade e dezena, números diferentes, sendo esses mesmos 
displays ligados e desligados em alta velocidade de permutação, para que o efeito 
de memória da retina fosse utilizado junto com a incapacidade dos olhos 
perceberem mudanças acima de uma determinada velocidade, fazendo o usuário ter 
a falsa impressão de que ambos os displays estavam simultaneamente ligados. 
Outro ponto que é importante salientar foi no desenvolvimento do software, 
que foi feito de forma mais estrutural possível, a ponto de simplificar o entendimento 
e fazer melhorias. 
O software passou por várias modificações desde a versão original, para que 
uma versão funcional fosse apresentada. 
Houveram dificuldades na parte da lógica de parametrização das 
temperaturas, assim como a execução do mesmo, devido as trepidações de clock, 
quando um botão era acionado. 
E não menos importante, as dificuldades encontradas para interfacear a parte 
Analógica, com a parte Digital. Colocar junto, aquilo que sempre foi estudado em 
separado e interfacea-las entre si 
Portanto houveram dificuldades durante o projeto, houveram dificuldades que 
foram superadas com pesquisa e debates, para que pudéssemos apresentar um 
modelo funcional.