quarta-feira, 19 de outubro de 2016

Arduino termômetro sem contato MLX90614




O que foi usado?

Sensor MLX90614;
Arduino UNO;
Display LCD 16x2 com módulo I2C;
Protoboard (para facilitar a conexão do display e sensor ao arduino);
Jumpers diversos;

Ligação:



O que faz?

Lê a temperatura ambiente e a temperatura do objeto, pessoa, etc que esteja na frete do sensor, a cerca de 2 ou 3cm de distância, e mostra no display.

Datasheet do sensor
Biblioteca do sensor
Biblioteca do display

Código (adaptado do código que acompanha a biblioteca do sensor)


// adaptado do exemplo da bibliteca:
// https://github.com/adafruit/Adafruit-MLX90614-Library

byte grau[8] = {   0b00110, // byte para criar o caracter grau
                   0b01001,
                   0b01001,
                   0b00110,
                   0b00000,
                   0b00000,
                   0b00000,
                   0b00000 };
// bibliotecas             
#include <Wire.h>
#include <Adafruit_MLX90614.h>
#include <LiquidCrystal_I2C.h>

// instanciando objetos lcd e mlx
LiquidCrystal_I2C lcd(0x27,16,2);
Adafruit_MLX90614 mlx = Adafruit_MLX90614();

void setup() {

  mlx.begin(); // inicialieza sens. de temp
  lcd.init(); // inicializa displau
  lcd.createChar(1, grau); // cria caracter ( º )
   
  lcd.backlight();
  lcd.print(" Teste MLX90614 ");
  delay(1000);
  lcd.clear();
}

void loop() {

  // escreve temp ambiente

  lcd.setCursor(0,0);  
  lcd.print("Amb.: "); 
  lcd.print(mlx.readAmbientTempC()); 
  lcd.print (" ");
  lcd.write(1); 
  lcd.print ("C");
  
  // escreve temp do objeto 
  
  lcd.setCursor(0,1);
  lcd.print("Obj.: ");
  lcd.print(mlx.readObjectTempC());
  lcd.print (" ");
  lcd.write(1);
  lcd.print ("C");
  
  delay(500);
}

segunda-feira, 10 de outubro de 2016

Sensor de vibração, batidas ( knock sensor)




Esse sensor é bastante simples. Consiste basicamente de dois contatos próximos, um fixo e outro ligado a uma mola. Havendo vibração suficiente para fazer a mola tocar o contato fixo, causada por uma batida no sensor ou na superfície em que ele esteja fixado, por exemplo, a saída, normalmente em nível alto (vcc), vai momentaneamente ao nível baixo (GND).

O sensor:

Abaixo o diagrama do sensor:



Em seguida a ligação com arduino usada no exemplo:



Código:


int pin = 8;
int led = 13;
int sensor;
boolean led_state = false;

void setup()
{

  pinMode(pin, INPUT);
  pinMode(led, OUTPUT);

}

void loop()
{
  sensor = digitalRead(pin);
    if(sensor == LOW)
  {
  led_state = !led_state;
  digitalWrite(led, led_state);
  delay(300);
  }

}