Projeto com Arduino - Radar com Informações via LCD (Programação)

Hoje apresento o primeiro projeto do blog. Se trata de um radar improvisado em um sensor ultrassônico com informações de distância via LCD. Esse projeto surge como "inauguração" dos trabalhos de programação voltadas às aplicações de automação predial e industrial.



Segue algumas imagens do projeto de radar pronto. Por favor, desconsidere as imagens ruins geradas pelo meu celular. 

Modulação

A modulação é um conjunto de técnicas para transmitir informações via sinais elétricos. Existem diversos tipos de técnicas para adicionar informações dentro de sinais aleatórios. Uma delas é o Chaveamento de Frequência e que consiste em pequenas alterações na frequência de uma portadora. A modulação por Chaveamento de Frequência é uma técnica utilizada pelo protocolo Hart, utilizado na comunicação entre instrumentos industriais de controle e medição. 
Fonte da Imagem: http://penta2.ufrgs.br/Alvaro/ask.html

O sinal que contêm a informação é o sinal digital da imagem. O sinal onde a informação será inserida é a portadora. A portadora modulada da imagem é o sinal que contêm a informação que um equipamento receberá e que realizará o processo reverso: a desmodulação. 

Radar Ultrassônico

O radar utiliza um sensor ultrassônico modelo HC-SR04 e seu funcionamento é bem simples:
  1. O sensor emite sinais ultrassônicos que refletem quando atinge um objeto próximo;
  2. Quando o sinal é refletido, ele volta para o sensor, só que para a parte de recepção;
  3. Quando o sinal é recebido de volta, ocorre o processamento desse sinal em função do tempo que ele levou para ir e voltar após a emissão;
  4. Um sinal, considerado por mim, dono do blog, como portadora, é recebido pelo pino Trig e que é modulado e emitido para o Arduino pelo pino Echo.


Desafio

O próximo desafio deste blog é utilizar o sensor ultrassônico como instrumento de medição de nível para uma caixa d'água de mil litros.


Material

Para o projeto foi utilizado os materiais
                                                        1 - Arduino Uno
                                                        2 - Potenciômetro
                                                        3 - Resistor de 330Ω
                                                        4 - LCD 16x2
                                                        5 - Sensor HC-SR04
                                                        6 - Motor de Passo
                                                        7 - Um protoboard grande
                                                        6 - Um protoboard pequeno


Programa

Segue o programa abaixo para utilizar no Arduino:

#include <Servo.h>. 

#include <LiquidCrystal.h> 

LiquidCrystal lcd(12, 11, 5, 4, 3, 2); // Define os pontos RS, E, D4, D5, D6, D7 referentes as entradas e saídas do LCD.


const int trigPin = 9; // Define o pino 9 como Trig

const int echoPin = 8; // Define o pino 8 como Echo

 

long tempo;

int distancia;

 

Servo servo; 

 

void setup() {

  lcd.begin(16, 2); // Define as dimensões do LCD 

  pinMode(trigPin, OUTPUT); // Define o pino 9 como saída para Trig do HC-SR04

  pinMode(echoPin, INPUT);  // Define o pino 8 como entrada para Echo do HC-SR04

  Serial.begin(9600);

  servo.attach(7); // Define que as instruções de movimento do servo motor saírão do pino 7

 

}

 

void loop() {

   

  for(int i=15;i<=165;i++){  

  servo.write(i);

  delay(300);

  distancia = calculoDistancia();

  lcd.clear();

  lcd.setCursor(0, 0); // Define que a distância aparecerá na linha 0 e coluna 0

  lcd.print("Distancia: ");

  lcd.print(distancia);


  }

   

  for(int i=165;i>15;i--){  

  servo.write(i);

  delay(300);

  distancia = calculoDistancia();

  lcd.clear();

  lcd.setCursor(0, 1); // Define que a distância aparecerá na linha 1 e coluna 0

  lcd.print("Distancia: ");

  lcd.print(distancia);

  }

 

}

 

int calculoDistancia(){ 

   

  digitalWrite(trigPin, LOW); 

  delayMicroseconds(2);

  digitalWrite(trigPin, HIGH); 

  delayMicroseconds(10);

  digitalWrite(trigPin, LOW);

  tempo = pulseIn(echoPin, HIGH); 

  distancia= tempo*0.034/2;

  return distancia;

 

}

 










Comentários

Postagens mais visitadas