Programação de microcontroladores (26/11) (PIC)
Atividade com o intuito de compreender os conceitos por trás de um microcontrolador PIC 18F1330, programando-o na prática.
Last updated
Was this helpful?
Atividade com o intuito de compreender os conceitos por trás de um microcontrolador PIC 18F1330, programando-o na prática.
Last updated
Was this helpful?
Lembre-se que a tarefa final tem como objetivo variar o brilho do LED de acordo com a leitura de um potenciômetro, utilizando uma protoboard.
Por isso, pesquise informações relevantes no que ajudem você a refletir a respeito da:
A simulação primária do circuito prévia à montagem na protoboard será feita pelo software Proteus 8.10 SP0, para compreender as fases da atividade e a utilização do código anteriormente à construção do circuito real.
Para montar o circuito no Proteus, é preciso ter em mente que o "sensor", propriamente dito, nada mais é do que o potenciômetro ligado a uma fonte de 5V.
1ᵃ OBS: Um sensor de distância, ao avaliar a proximidade de um objeto, emite um sinal infravermelho em direção a este objeto para que a luz, através da reflexão, seja direcionada ao seu receptor;
2ᵃ OBS: Quando isso acontece, o sensor (Sharp) processa esse sinal, isto é, essa tensão de natureza analógica e o envia até o Conversor A/D do PIC18F1330 para que seus valores se tornem legíveis. Quando isso acontece, o seu valor (agora convertido) torna-se apto para ser utilizado pelo programador em seu código.
No canto esquerdo da tela, encontre a opção Generator Mode, conforme a Figura 2. Selecione a fonte "DC" e atribua a ela o valor de 5V;
Logo mais:
Procure e selecione o resistor "7WATT100R";
Procure e selecione o potenciômetro "POT-HG".
Selecione um resistor "9C04021A4700FLHF3";
Selecione o "LED-RED".
Selecione o microcontrolador "PIC18F1330".
Selecione o oscilador externo "CRYSTAL";
Selecione dois capacitores cerâmicos "AVX0603Y5V100N";
Monte o circuito conforme a Figura 3:
Para programar um microcontrolador, é imprescindível a análise do datasheet dos elementos programáveis do PIC18F1330.
Para realizar a tarefa, é necessário conhecer elementos importantes na programação de um PIC18F. Muitos deles serão exibidos na aba Aulas e Materiais - MICROCONTROLADORES PIC, no canto esquerdo da tela.
As primeiras informações para se programar um microcontrolador estão anexadas no arquivo .txt a seguir. Copie e cole o conteúdo desse arquivo no projeto do MPLAB.
Em seguida, configure o PIC para acender SOMENTE O LED, em outras palavras, acionar a saída de um dos pinos do microcontrolador. Após a programação, teste o circuito no simulador Proteus;
Clique com o botão esquerdo do mouse e selecione o arquivo .hex gerado pelo MPLAB x IDE.
Para piscar um LED, é necessário conhecer a sintaxe de uma função de interrupção de um microcontrolador PIC18F. Segue abaixo um exemplo dessa sintaxe:
Todos os comandos que o programador acrescentar nesta função estarão intimamente ligados à pergunta:
"O que deve acontecer após uma interrupção?"
"O que eu quero que aconteça após uma interrupção?"
Sendo assim, é preciso configurar o PIC para habilitar o TMR0 (Timer 0) e as interrupções através dos registradores T0CON e INTCON, respectivamente.
Para saber o tempo total que o TIMER0 de 8 Bits gasta para estourar sua contagem, utilizamos a seguinte fórmula:
Conhecendo o tempo total, é possível saber quantos estouros do Timer serão necessários para que o LED comute seu estado a cada 1 segundo.
Um dos comandos responsáveis por comutar os níveis lógicos (alto e baixo) de uma das saídas do microcontrolador é
"Saída X" = ~"Saída X" ;
Para configurá-la adequadamente, verifique as sintaxes envolvendo os termos TRIS(A, B) e PORT(A,B) no MPLAB x IDE.
O comando "TMR0" no MPLAB é uma variável que acompanha a contagem do Timer 0.
Suponha que eu queira acender um LED caso o timer atinja o valor de 100. Suponha que o programador deseje comparar essa variável com o atual valor de contagem do Timer 0 em uma condição "if" (se).
O código diz que o LED acenderá se o Timer atingir o valor 100 em suas contagens.
Verifique o número de Bits de um Timer para saber o limite da sua contagem. Um Timer de 16 Bits, por exemplo, pode contar até 65536. Descubra até quanto um Timer de 8 Bits pode contar.
Não se esqueça de zerar a Flag e o TMR0 após uma interrupção. Procure saber mais sobre estes termos.
Algumas versões do Proteus não são capazes de incluir a variação da intensidade do brilho do LED em sua interface gráfica.
Para enxergá-la, basta que conectar um osciloscópio na saída do LED. Se o potenciômetro conseguir alterar o período do sinal de saída, a atividade estará correta.
Caso o display do osciloscópio desapareça, clique em "DEBUG", na parte superior da tela, e selecione "DIGITAL OSCILOSCOPE".
Sabendo dessas informações, construa um programa capaz de variar a intensidade do brilho do LED. Por exemplo: "em 50% da resistência do POT-HG, o LED começará a brilhar".
Crie um código capaz de mudar o valor da conversão (ADRES) ao variar o potenciômetro.
Verifique se conversão está funcionando utilizando os recursos do Proteus.
Elabore um circuito no Proteus e um código no MPLAB x IDE capaz de atender aos requisitos mencionados abaixo:
O grande desafio é o de relacionar a variação do brilho do LED com o conversor AD. Divirtam-se!
Será considerado validado o projeto que, ao variar o potenciômetro, mude a intensidade da forma da onda, assim como a Figura 6;
O potenciômetro próximo de 0% deve monitorar um sinal com a maior parte da onda quadrada em nível lógico baixo;
O potenciômetro próximo de 50% deve monitorar: metade da onda quadrada em nível lógico alto, metade da onda quadrada em nível lógico baixo;
O potenciômetro próximo de 100% deve monitorar uma onda quadrada em nível lógico alto.
Grupo 1
Grupo 2
Grupo 3
Grupo 4
Use o conhecimento e a programação desenvolvida nos últimos itens para desenvolver um circuito em protoboard que simule um sensor de ré através do uso de um Sensor Sharp.
Elabore uma pequena apresentação de 5 MIN para mostrar o que você aprendeu na atividade, isto é, todos os conteúdos que foram importantes para a elaboração do seu projeto.
Os alunos (grupos) deverão organizar uma apresentação para mostrar aos professores a resolução da atividade. Use prints do código e do circuito no Proteus para explicar o funcionamento, demonstrando a protoboard montada
Verifique a planilha para consulta (Google Sheets) no cronograma.
OBS: NÃO SERÁ NECESSÁRIO ENTREGAR AS CONSTRUÇÕES NO PROTEUS E OS CÓDIGOS PRÉVIOS AO DE SIMULAÇÃO DE RÉ FINAL.
Essa tarefa deve ser feita de maneira individual até o item 2, e em grupo nos itens 3 e 4. Assim, todos os candidatos enviarão os seus arquivos para a pasta do Google Drive disponibilizada para cada um. O candidato entregará o código final e um print do circuito no Proteus.
SeuNome_Código.c (Código)
SeuNome_PrintProteus.extensãoImagem (Print Proteus)
Nas tarefas de grupo, um dos membros deve ser escolhido para colocar uma foto do circuito na protoboard e o slide feito para a apresentação na sua própria pasta.
SeuNome_Slides.pptx (Slides)
SeuNome_FotoProtoboard.extensãoImagem (Foto Protoboard)
Link:
Analise a aba de conversão A/D o e verifique os requisitos necessários para configurá-lo. Verifiquem os seguintes elementos: