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.



Aula 1 - Modelo para Sensores

// 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:

- 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


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:

– 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.
– Digital: é um tipo de sensor que pode assumir apenas dois valores em seu sinal de saída, que poderão ser interpretados como 0 (zero) ou então 1.

Existem sensores que podem atuar tanto de forma analógica como digital, e isso vai depender da sua aplicação.




Sensor LDR como entrada digital




A ligação pode ser invertida


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









Aula 4 Teclado por Divisor de Tensão


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

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
– 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


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.

Comentários

Mais acessadas