Microcontroladores I
1- Ementa Linguagem de Programação Aplicada a Microcontroladores:
Desenvolver circuitos e com sensores aplicações em sistema micro-controlados.
2- Conteúdo Programático:
Sensores
3- Metodologia de Avaliação:
3.1- Atividades em sala de Aula:
Atividades propostas apresentadas e entregues via meio eletrônico.
3.2- Índice de Frequência:
Corresponde a um mínimo de frequência de 80% em sala de aula.
3.3- Projetos de Pesquisa:
Atividades Livres para desenvolvimento;
3.4 - Provas:
Avaliações individuais por escrito;
3.5- Recuperações Paralelas ao longo do processo.
Avaliações extras para aqueles alunos que não atingiram o rendimento mínimo nas avaliações ou prorrogações de prazos com desconto na pontuação.
3.6- Critérios para Aprovação:
Cada item receberá um índice A ou NA, o aluno obterá o conceito A, se obtiver 80% de rendimento em todas as avaliações propostas ou índice NA, caso não execute ou obtenha rendimento inferior a 80% em cada proposta avaliativa.
Lista de Material para as práticas:
- Arduino Uno ou superior;
- Display LCD 16x2 (i2c- opcional); ou superior;
- Sensor LDR- luminosidade;
- Sensor de umidade e temperatura DHT 11 ou similar;
- Receptor e transmissor infra vermelho;
- Semáforo montado ou leds e resistores;
- Display 7 segmentos;
- Shield relés ou relés independentes;
- Shield ponte H ou ponte H montada na matriz de contatos;
- Shield Buzzer ou buzzer com oscilador 5V;
- Shield RF ID;
- Sensor ultrasom arduino;
- Matriz de contato, jumpers, resistores, capacitores e materiais e ferramentas diversas;
Todas as montagens deverão ser efetuadas em hardware real, o uso de simuladores será desconsiderado nas apresentações.
// Início do código
Código em Boas Práticas par interpretação de sensores de saídas analógicas
/* Parte 1 - Cabeçalho
Título: Controle de Sensores
Nome: Luis Antonio Aransegui
Empresa: Escola Técnica Parobé
Data: 12/03/2019
Versão: 0.1.0
Descrição:
Entradas Analógicas, Saída Analógica, Saida serial
Este circuito lê a entrada analógica, mapeia e joga o resultado para a saída analógica.
Também imprime na saída serial.
O circuito:
Potenciômetro ligado ao pino analógico A0.
O centro do potenciômetro vai ao pino..
Os demais lados em +5V e GND
Led conectado no pino 9 ao terra
criado em 11/03/2019
modificado em 12/03/2019 por Luis
Referências em:
http://www.arduino.cc/en/Tutorial/AnalogInOutSerial
Fim do Cabeçalho
*/
// Parte 2 - Inclusão de bibliotecas
#include <Arduino.h> // Biblioteca padrão
// Parte 3 - Planejamento - Definição dos pinos
#define sensorPino A0 // define rótulo ao pino
#define pinoSaida 13 //define ao rótulo ao pino 13
// Parte 4 Definição de variáveis
int valorSensor = 0; // valor inicial do sensor
int valorSaida = 0; // valor inicial da saída
// Parte 5 faz o setup do hardware
void setup() {
Serial.begin(9600);// inicializa a porta serial- reservar pinos 0 e 1
}
// Parte 6 - função principal- corpo do programa
void loop() {
valorSensor = analogRead(sensorPino);// lê entrada A0) de 0 a 1023
valorSaida = map(valorSensor, 0, 1023, 0, 255);// converte entrada para saída - resolução
analogWrite(pinoSaida, valorSaida); //escreve na saida
// imprime no monitor serial
Serial.print("sensor = "); // imprime a palavra sensor
Serial.print(valorSensor);// imprime o valor da entrada
Serial.print("\t saida = ");// tabula /t e imprime a palavra saida
Serial.println(valorSaida);// imprime em nova linha o valor saida
delay(2);// aguarda 2 ms
}
Atividade 1 - Teste do Hardware:
Pronto, agora monte o circuito e teste em hardware real
Aula 2 - Modelagem melhorada versão 1.2.0
Neste próximo exemplo, foi acrescentada a tecnologia para controle de um motor CC. Apesar de executar a função o código foi melhorado para a melhor organização do projeto.
Observe que agora colocamos a rotina de impressão separada para que o código fique mais claro e organizado, esta modelagem deverá ser utilizada nos próximos exercícios.
/*
Título: Controle de Sensores
Nome: Professor
Empresa: Escola Técnica Parobé
Data: 12/03/2019
Versão: 1.2.0
Descrição:
Entradas Analógicas, Saída Analógica, Saida serial
Este circuito lê a entrada analógica, mapeia e joga o resultado para a saida analógica com
objetivo de controlar a rotação de um motor CC.
Também imprime na saída serial.
No código fonte foram acrescentadas ISRS para organizar o planejamento do projeto.
O circuito:
- Potenciômetro ligado ao pino analógico A0.
O centro do potenciômetro vai ao pino..
Os demais lados em +5V e GND
Circuito de potência co transistor ou fet.
Motor CC , baixo consumo
criado em 11/03/2019
modificado em 12/03/2019 por Luis
Referências em:
http://www.arduino.cc/en/Tutorial/AnalogInOutSerial
Fim do Cabeçalho*/
// Parte 2 - Inclusáo de bibliotecas
#include <Arduino.h> // Biblioteca padrão
// Parte 3 - Planejamento - Definição dos pinos
#define sensorPino A0 // define rótulo ao pino
#define pinoSaida 13 //define ao rótulo ao pino 13
// Parte 4 Definição de Estruturas e Variáveis
void imprimeSerial (); // declara uma estrutura de impressão
int valorSensor = 0; // valor inicial do sensor
int valorSaida = 0; // valor inicial da saída
// Parte 5faz o setup do hardware
void setup() {
Serial.begin(9600);// inicializa a porta serial- reservar pinos 0 e 1
}
// Parte 6 - função principal- corpo do programa
void loop() {
valorSensor = analogRead(sensorPino);// lê entrada A) de o a 1023
valorSaida = map(valorSensor, 0, 1023, 0, 255);// converte entrada para saída - resolução
analogWrite(pinoSaida, valorSaida);//escreve na saída
imprimeSerial();
}
// Rotina de impressão no monitor serial
void imprimeSerial (){
Serial.print("sensor = "); // imprime a palavra sensor
Serial.print(valorSensor);// imprime o valor da entrada
Serial.print("\t motor = ");// tabula /t e imprime a palavra saida
Serial.println(valorSaida);// imprime em nova linha o valor saida
delay(2);// aguarda 2 ms
}
//Fim do código
Atividade 2 - Funções de Impressão:
Aproveitando a estrutura apresentada crie uma função de impressão e faça com que os dados sejam visualizados simultaneamente em LCD e monitor serial, acesse Documentação Arduino ou utilize os exemplos disponíveis no sketch, caso necessário.
Aula 3- Introdução às medidas
Para efetuar medições precisamos definir alguns critérios:
- Escolher a grandeza e o fundo de escala;
- Jamais confiar em apenas uma leitura, sempre medir várias vezes antes de apresentar o resultado (a estrutura for {} é a mais adequada nestes processos);
- A não ser por extrema necessidade, mantenha sua medida com no máximo 2 casas decimais;
- Se forem implementados alarmes deve ser criada uma janela de tolerância para manter a estabilidade do sistema.
Mas chega de conversas, vamos ao código, analise com calma todas as linhas antes de executar os exercícios. Este modelo implementa um voltímetro com escala de 0 a 5V com uma casa decimal.
Inicialmente analise o código. monte o hardware e teste o seu funcionamento.
// Início do Código Voltímetro 5V:
Título: Voltímetro 0 a 5V
Nome:
Empresa:
Data:
Versão: 0.1.0
Descrição: Programa para efetuar medidas de 0 a 5V
Entradas Analógicas, Saida serial
Este circuito utiliza a entrada analógica, para construir um voltímetro digital de 0 a 5V.
O circuito:
- Potenciômetro ligado ao pino analógico A0.
O centro do potenciômetro vai ao pino..
Os demais lados em +5V e GND
criado em 11/03/2019
modificado em 12/03/2019 por Luis
Referâncias em:
http://www.arduino.cc/en/Tutorial/AnalogInOutSerial
Fim do Cabeçalho*/
#include <Arduino.h> // Biblioteca opcional
// Definição dos pinos
#define entradaVoltimetro A0 // Rótulo para o pino A0
// declaração de varáiveis e funções
void medirEntrada ();
void imprimirSerial();
int valorSensor = 0;
float media = 0;
float acumul = 0;
// função de configuraçao
void setup() {
Serial.begin(9600);// inicializa serial em 9600 bps
}
void loop() {
medirEntrada();// chama rotina para medir
imprimirSerial(); // chama rotina de impressão
delay(100);
}
// Rotina para medir 100 vezes o valor de entrada
void medirEntrada () {
// Efetua 100 vezes a medida, calcula a média e converte o fundo de escala
for (int x = 1; x < 100; x++) {
valorSensor = analogRead(entradaVoltimetro);// lê porta analógica
acumul = acumul + valorSensor; // soma o valor acumulado
}
acumul = acumul / 100; // calcula a média
media = acumul * 5 / 1023; // Converte para o fundo de escala 5V
}
// Rotina para impressão serial
void imprimirSerial() {
Serial.print("sensor = ");
Serial.print(valorSensor);
Serial.print("\t tensão= ");
Serial.println(media, 1);
}
// Fim do código
Atividade 3- Controlador de Temperatura:
Utilize o código acima e acrescente melhorias e tecnologias na versão 1.2.1:
Utilize o código acima e acrescente melhorias e tecnologias na versão 1.2.1:
- Converta o fundo de escala para a medida de um LM 35, utilizando a escala 0 a 150 graus Celsius para temperatura e 0 e 100% para a potênci do motor;
- Implemente um Led piscando para quando a temperatura superar os 100 graus Celsius;
- Faça o valores aparecerem em LCD e na porta serial.
Acesse o link Códigos de Exemplo, para sanar suas dívidas.
Atividade 4 - Sistema de Refrigeração:
Se você conseguiu chegar até aqui parabéns, agora vamos lá, faça agora o acionamento da seguinte forma:
- Implemente um botão para inverter a rotação do motor;
- Implemente um botão de parada;
- A impressão dos valores deverá ocorrer em LCD e serial;
- A rotação deverá ser controlada para ambos os lados:
- O Lcd indicará o Status parado, esquerda, direita.
- O O motor só poderá funcionar se a temperatura for imferior a 100° Celsius
- Deverá aparecer os valores de temperatura etre 0 e 150 ºC e a potência do otor entre 0 e 100% na porta serial e em LCD
A ligação pode ser invertida- Deverá aparecer os valores de temperatura etre 0 e 150 ºC e a potência do otor entre 0 e 100% na porta serial e em LCD
Entendendo os Sensores
Sensores são dispositivos, também chamados de transdutores, são elementos que realizam a interface entre os circuitos e o mundo real convertendo grandezas físicas em elétricas.
Fontes de consulta:
- Sensor - Wikipedia
- Sensores, e tipos de sensores - Ensinando Elétrica
- Todos os tipos de sensores (ART1158) - Newton C Braga
- Sensores - UNESP
- Tipos de sensores industriais - Nov@ Geração
- Sensor: Você Sabe o Que é Quais os Tipos? - Citisystems Automação Industrial
- Tipos de sensores industriais - Getrotech - Revista Mecatrônica Atual
– Analógico: o sinal de saída deste tipo de sensor vai variar ao longo do tempo, de forma a assumir valores dentro da sua faixa de operação. Geralmente, os sinais mais utilizados são 4… 20 mA ou 0… 10 V. Mas ele poderá variar de acordo com a sua distância de acionamento ou de acordo com o movimento de um atuador, por exemplo.
Atividade 5- Controle para placas Solares:
Elaborar um programa para acionar uma saída a partir da ação do sensor,um motor CC de baixo consumo deverá ser ligado à dos pinos de saída do micro-controlador, seu objetivo será manter o motor posicionado sempre no ponto de maior luminosidade.Este controle é utilizado no posicionamento de placas solares.
Atividade 6 - Estação Meteorológica para hortaliças:
Material Necessário:
- Sensor temperatura e humidade DHT11 ou similar
- Arduino Uno ou superior;
- 3 Relés ou Shields de relés;
- Display LCD.
Este controle é bem simples e pode ser utilizado para o cultivo de hortaliças, neste caso escolhemos morangos com o crescimento ideal em uma temperatura de 25° C associada a umidade relativa do ar em torno de 90%.
A automação funcionará assim:
- O monitoramento de umidade e temperatura, através de sensor compatível com HDT11 ou superior; - Um Display LCD irá monitorar as condições de temperatura e umidade.
- Relé 1 alimentará uma bomba de irrigação que deverá ser acionada quando a umidade relativa do ar for inferior a 90% e desligada acima de 95%.
- Relé 2 acionará um sistema de resistências de aquecimento quando a temperatura ficar abaixo de 20 ºC, desligando após atingir valores superiores a 25 ºC.
- Um pwm (utilizado anteriormente) alimenta um sistema de exaustão que deverá ser acionado quando a umidade relativa do ar estiver acima de 95%.
- Para a apresentação a resistência pode será uma lâmpada incandescente e a bomba de irrigação uma contatora(disponíveis para testes).e para o sistema de exaustão poderá ser utilizado um motor CC de baixo consumo.
- Você os parâmetros de cultivo, tem total liberdade para modificar os parâmetros de cultivo e adicionar melhorias ao projeto.
Utilize a tabela como referência.
Temperatura
|
Humidade
|
Aquecedor
|
Água
|
Exaustor
|
LOW
|
LOW
|
HIGH
|
HIGH
|
LOW
|
LOW
|
HIGH
|
HIGH
|
LOW
|
LOW
|
HIGH
|
LOW
|
LOW
|
HIGH
|
HIGH
|
HIGH
|
HIGH
|
LOW
|
LOW
|
HIGH
|
Podemos observa ao longo do período um desperdício no número de pinos utilizados, pensando na redução no tamanho do hardware desenvolveremos uma técnica para "poupar" portas no microcontrolador. Observe o diagrama elétrico:
Observe que o circuito foi construído a partir de 5 divisores de tensão, de forma que a cada tecla pressionada obteremos um valor diferente na porta analógica, este valor poderá ser lido no monitor serial para que os testes sejam realizados.
Este modelo de hardware é utilizado atualmente em todos os equipamentos e em sistemas de automação.
Para nosso exercício, montamos um software de exemplo, para que você possa prosseguir em suas atividades.
// Início do Código
/*
Modelo de Prescaller
Luis Antonio Aransegui
13/04/2019
Versão:0.0.0
Este exemplo é baseado no código:
http://www.arduino.cc/en/Tutorial/AnalogInOutSerial
*/
// Definição dos pinos
#define analogInPin A0 // Pino da entrada analógica
// Declaração de ISRs(opcional)
void imprimeMensagem();
void teclaZero();// função 0
void teclaUm();// função 1
void teclaDois();// função 2
void teclaTres();// função 3
void teclaQuatro();// função 4
// Declaração de variáveis
int sensorValue = 0; // valor inicial do sensor
// Configuração
void setup() {
// inicialização da porta serial
Serial.begin(9600);
}
void loop() {
// leitura do sensor
sensorValue = analogRead(analogInPin);
delay(100);
// Testes da porta analógica
//Próximo a 5V
if (sensorValue >= 1020) {
imprimeMensagem ();
delay(100);
}
// Tecla 0, formada por Divisor de Tensão 10K e 22K
if (sensorValue <= 710 && sensorValue >= 700) {
teclaZero();
delay(100);
}
// Tecla 1, formada por Divisor de Tensão 10K e 18K
if (sensorValue <= 660 && sensorValue >= 650) {
teclaUm();
delay(100);
}
// Tecla 0, formada por Divisor de Tensão 10K e 15K
if (sensorValue <= 620 && sensorValue >= 610) {
teclaDois();
delay(100);
}
// Tecla 0, formada por Divisor de Tensão 10K e 12K
if (sensorValue <= 560 && sensorValue >= 550) {
teclaTres();
delay(100);
}
// Tecla 4, formada por Divisor de Tensão 10K e 10K
if (sensorValue <= 520 && sensorValue >= 510) {
teclaQuatro();
delay(100);
}
}
// Estruturas de controle
void teclaZero() {
// aqui vai o código numero zero
Serial.print("Tecla 0= ");
Serial.println(sensorValue);
}
void teclaUm() {
// aqui vai o codigo 1
Serial.print("Tecla 1 = ");
Serial.println(sensorValue);
}
void teclaDois() {
// aqui vai o código do 2
Serial.print("Tecla 2 = ");
Serial.println(sensorValue);
}
void teclaTres() {
// aqui vai o código do 3
Serial.print("Tecla 3 = ");
Serial.println(sensorValue);
}
void teclaQuatro() {
// aqui vai o código do 4
Serial.print("Tecla 4 = ");
Serial.println(sensorValue);
}
void imprimeMensagem() {
// |Aqui vai o código desejado
Serial.println("Pressione uma Tecla");
delay(100);
}
// Final do Código
/*
Modelo de Prescaller
Luis Antonio Aransegui
13/04/2019
Versão:0.0.0
Este exemplo é baseado no código:
http://www.arduino.cc/en/Tutorial/AnalogInOutSerial
*/
// Definição dos pinos
#define analogInPin A0 // Pino da entrada analógica
// Declaração de ISRs(opcional)
void imprimeMensagem();
void teclaZero();// função 0
void teclaUm();// função 1
void teclaDois();// função 2
void teclaTres();// função 3
void teclaQuatro();// função 4
// Declaração de variáveis
int sensorValue = 0; // valor inicial do sensor
// Configuração
void setup() {
// inicialização da porta serial
Serial.begin(9600);
}
void loop() {
// leitura do sensor
sensorValue = analogRead(analogInPin);
delay(100);
// Testes da porta analógica
//Próximo a 5V
if (sensorValue >= 1020) {
imprimeMensagem ();
delay(100);
}
// Tecla 0, formada por Divisor de Tensão 10K e 22K
if (sensorValue <= 710 && sensorValue >= 700) {
teclaZero();
delay(100);
}
// Tecla 1, formada por Divisor de Tensão 10K e 18K
if (sensorValue <= 660 && sensorValue >= 650) {
teclaUm();
delay(100);
}
// Tecla 0, formada por Divisor de Tensão 10K e 15K
if (sensorValue <= 620 && sensorValue >= 610) {
teclaDois();
delay(100);
}
// Tecla 0, formada por Divisor de Tensão 10K e 12K
if (sensorValue <= 560 && sensorValue >= 550) {
teclaTres();
delay(100);
}
// Tecla 4, formada por Divisor de Tensão 10K e 10K
if (sensorValue <= 520 && sensorValue >= 510) {
teclaQuatro();
delay(100);
}
}
// Estruturas de controle
void teclaZero() {
// aqui vai o código numero zero
Serial.print("Tecla 0= ");
Serial.println(sensorValue);
}
void teclaUm() {
// aqui vai o codigo 1
Serial.print("Tecla 1 = ");
Serial.println(sensorValue);
}
void teclaDois() {
// aqui vai o código do 2
Serial.print("Tecla 2 = ");
Serial.println(sensorValue);
}
void teclaTres() {
// aqui vai o código do 3
Serial.print("Tecla 3 = ");
Serial.println(sensorValue);
}
void teclaQuatro() {
// aqui vai o código do 4
Serial.print("Tecla 4 = ");
Serial.println(sensorValue);
}
void imprimeMensagem() {
// |Aqui vai o código desejado
Serial.println("Pressione uma Tecla");
delay(100);
}
// Final do Código
Atividade: Utilize o exercício 2 para melhorar a a precisão de leitura do teclado.
Atividade Avaliativa- Pesquisa: Agora implemente em seu projeto um teclado matricial, o equipamento estufa só poderá ser acionado após uma senha digitada.
Sensor Ultrasom como medidor de distância
– Descrição:
O Sensor Ultrasonico HC-SR04 é aplicado com mais frequência em projetos de robótica, principalmente em chassis robóticos, robôs ou carrinhos. O sensor é capaz de medir com precisão (3mm de margem de erro) distâncias de 2cm até 4m.
A composição do Sensor Ultrasonic é feita de um emissor e um receptor ultrassônico, onde o sensor emite (emissor) sinais ultrassônicos que serão refletidos no obstáculo / objeto retornando ao sensor (receptor). Com base no tempo que o sinal emitido levou para retornar ao sensor, o mesmo efetua o cálculo da distância.
Especificações e características:
– Tensão de operação: 5VDC
– Corrente de operação: 15mA
– Faixa de detecção (ângulo): ±15º
– Alcance: 2cm a 4m
– Margem de erro: ±3mm
– Corrente de operação: 15mA
– Faixa de detecção (ângulo): ±15º
– Alcance: 2cm a 4m
– Margem de erro: ±3mm
– Aplicações:
Projetos com Arduino ou outras plataformas microcontroladas em que seja necessário fazer medição de distâncias.
– Proposta da prática:
1-Utilizar o Sensor Ultrasonico em conjunto com o Arduino para fazer a medição da distância de um objeto. A distância medida será mostrada no display LCD e deverá disparar um alarem quando a distância for inferior a 10 mm
1- Acesse o link https://portal.vidadesilicio.com.br/modulo-rfid-rc522-mifare/
2- Estude o tutorial e execute os exercícios;
3- Coloque o código em boas práticas:
4- Apresente o código e o funcionamento quando solicitado.
1- Acesse o link https://www.filipeflop.com/blog/acionando-trava-eletrica-com-rfid/
2- Estude o tutorial e execute os exercícios;
3- Coloque o código em boas práticas:
4- Apresente o código e o funcionamento quando solicitado.
.
Utilização do RFID- Trabalho de Pesquisa
1- Acesse o link https://portal.vidadesilicio.com.br/modulo-rfid-rc522-mifare/
2- Estude o tutorial e execute os exercícios;
3- Coloque o código em boas práticas:
4- Apresente o código e o funcionamento quando solicitado.
Aplicação do RFID em Travas Elétricas
1- Acesse o link https://www.filipeflop.com/blog/acionando-trava-eletrica-com-rfid/
2- Estude o tutorial e execute os exercícios;
3- Coloque o código em boas práticas:
4- Apresente o código e o funcionamento quando solicitado.
.
2- Aumente a segurança da estufa já construída:
- Implemente o teclado matricial para garantir que o equipamento somente ligue após a digitação de uma senha.U
Utilização - Implemente um sistema de alarme via ultrasom, um sinal sonoro deve ser emitido quando ocorre a aproximação e o sistema todo desligado por segurança.
- Implemente o teclado matricial para garantir que o equipamento somente ligue após a digitação de uma senha.U
Utilização - Implemente um sistema de alarme via ultrasom, um sinal sonoro deve ser emitido quando ocorre a aproximação e o sistema todo desligado por segurança.
Comentários
Postar um comentário