Social Icons

[Video Aula] Termômetro Super Simles




Para fazer essa montagem foram utilizados os seguintes componentes:
  • Arduino
  • Mini protoboard
  • Sensor LM3
  • Fios para protoboard (Wire jumpers)
Para ligar o LM35 ao Arduino, é bom ter um conhecimento mínimo do conversos Analógico-Digital do Arduino (A/D).
Esse conversor tem entrada máxima de 5V. Como ele é de 10 bits, consegue diferenciar 1024 (de 0 a 1023) valores entre 0V e 5V.  Ou seja, quando ele ler 5v na entrada ele vai converter para 1023.
Agora ficou fácil, pois podemos fazer um regrinha de três (interpolação para quem é mais formal):
1023 —– 5V
512 ——- X
X = (5 * 512) / 1023 = 2.5 V
Ou seja,  se o A/D mostrar o valor digital 512 significa que está entrando 2.5V nele.
E o que o LM35 tem a ver com isso?
O LM35 é um sensor de temperatura linear que fornece 10mV para cada grau celcius que ele medir. Ou seja, se ele fornecer 100mV, significa que ele está medindo 10ºC.
Então da para ligar o LM35 no Arduino e fazer um termômetro?
Sim, basta fazer a ligação do esquemático abaixo e programar seu Arduino com o código fonte disponível no final desse post.

Código Fonte:
/*

  Conversor Analógico->Digital de 10 bits (1024).

  O valor máximo que pode entrar no A/D é 5V.
  Sendo assim, quando entrar:
  -> 5V o valor lido será 1023
  -> 2.5V o valor lido será 511 ou (1023/2)
  -> 0V o valor lido será 0
  Resumindo, é uma regra de três normal onde:
  5V - 1023
  X  - Y
*/
int pinoSensor = 0; //pino que está ligado o terminal central do LM35
int valorLido = 0; //valor lido na entrada analogica
float temperatura = 0; //valorLido convertido para temperatura

void setup() {
  Serial.begin(9600); //Inicializa comunicação Serial
}

void loop() {
  valorLido = analogRead(pinoSensor);
  temperatura = (valorLido * 0.00488);  // 5V / 1023 = 0.00488 (precisão do A/D)
  temperatura = temperatura * 100; 
//Converte milivolts para graus celcius, lembrando que a 
//cada 10mV equivalem a 1 grau celcius
  Serial.print("Temperatura atual: ");
  Serial.println(temperatura);
  delay(5000); //espera 5 segundos para fazer nova leitura
}

Sensor Simples de Proximidade +- 10CM



 Aqui desenvolvi um sensor bem simples que detecta aproximadamente,um objeto, a 10cm. Quando o sensor detecta algo o LED vermelho se apaga.  Veja abaixo mais detalhes:




Hardware Necessário:

>1 Placa Arduino
> Um LED InfraVermelho Transmissor
> Um LED Receptor Infravermelho
> Um LED Normal.



Código:

/* Programa para detectar distâcia de +-10cm e não sofre influência de outras fontes de luz,apenas do sol.
*/
int inPin = 7; // Diodo infravermelho TIL78 com filtro de luz(LED de cor negra)
int irPin = 11; // pino do LED emissor infravermelho(LED meio azulado)
int redPin=12; // LED normal de cor vermelha
int val = 0; // variavel lida no pino
void setup() {
pinMode(irPin, OUTPUT); // declare LED as output
pinMode(inPin, INPUT); // entrada do TIL78
pinMode(redPin, OUTPUT);
}
void loop()
{
val = digitalRead(inPin); // lendo valor  do TIL78
digitalWrite(irPin, HIGH); // o pino infravermelho esta sempre ligado
if (val == LOW) {          // é verdade quando tem algo no campo do ir(detectado) -- com luz o TIL78 gera "0"
digitalWrite(redPin, LOW); //  LED OFF
} else {  //se nao for "0"(LOW) vai ser "1"(HIGH) entao deve fazer: Ligar o LED vermelho.
digitalWrite(redPin, HIGH); //LED fica ligado ON
}
}

Controlando Display de 7 Segmentos com CD4511 e Arduino

Controlando Display de 7 Segmentos com CD4511 e Arduino

Depois de alguns dias  sem postar estou de volta com um projeto "cool". Hoje faremos um contador utilizando um display de 7 segmentos.
 
O display de 7 segmentos é normalmente utilizado para indicar números e podem ser vistos normalmente em elevadores, alguns rádio relógios.
Aqui está um exemplo de um display de elevador.



Material necessário:
Para este experimento precisaremos de alguns materiais:

- 1 Placa Arduino e seu respectivo cabo
- 1 Fonte de alimentação de 5V
- 1 Protoboard
- 7 resistores de 150Ω ($0,02 cada)
- 1 CI CD4511- Decodificador BCD - 7 Segmentos ($1,50)
- 1 Display de 7 Segmentos Catodo Comum ($0,50 cada)
- Alguns fios para conectar os componentes

O que faremos?

Criaremos um código para a placa Arduino, este enviará para um decodificador BCD-7-Segmetnos 4 bits, esses serão decodificados e então serão convertidos em 7 bits então usados para controlar um display de 7 segmentos.
Para saber mais sobre códigos BCD visite o link para a Wikipedia.

Como ligar os acessórios?

Neste post testaremos uma nova forma de mostrar como os acessórios foram ligados, apresentarei o circuito na forma de um desenho feito com com o software Fritzing que pode ser baixado gratuitamente do seu site. Veja na imagem a seguir como ficou o circuito ou clique aqui para ver em tamanho real.



Montagem:

Image do CI CD4511BE.


Conexão do CI, resistores e display de 7 segmentos. Ficou uma aranha. :)


Placa Arduino, responsável por enviar 4 bits em formato BCD.


Visão geral do projeto, protoboard, fonte, Arduino e componentes.


Programação:

A programação para este projeto é bem simples, defino 4 variáveis e atribuo a elas o endereço das portas de IO do Arduino. Em seguida na função Setup faço mais algumas configurações e então defino a função number que recebe um número como parâmetro. Baseado neste número as portas de saída são configuradas para enviar um valor BDC adequado.
Dentro da função loop crio 2 laços para fazer a contagem de forma crescente e depois decrescente. Bem simples, veja abaixo o código.

/*
7 Segments
This project uses the CD4511 BCD to 7segments Latch Decoder Driver
to count the numbers from 0 - 9 and after 1 second from 9 - 0.
*/
// Atribui a cada variável um endereço.
int pinA = 6, pinD = 7, pinC = 8, pinB = 9;
void setup()
{
// Configura a velocidade da porta serial
Serial.begin(9600);
// Diz ao controlador que os pinos são de saída
pinMode(pinA, OUTPUT);
pinMode(pinB, OUTPUT);
pinMode(pinC, OUTPUT);
pinMode(pinD, OUTPUT);
}
// Recebe um inteiro como parâmetro
// Baseado no número configura os pinos de saída conforme da tabela BCD
// do CI CD4511
void number(int num)
{
switch (num) {
case 0:
digitalWrite(pinA, LOW);
digitalWrite(pinB, LOW);
digitalWrite(pinC, LOW);
digitalWrite(pinD, LOW);
break;
case 1:
digitalWrite(pinA, HIGH);
digitalWrite(pinB, LOW);
digitalWrite(pinC, LOW);
digitalWrite(pinD, LOW);
break;
case 2:
digitalWrite(pinA, LOW);
digitalWrite(pinB, HIGH);
digitalWrite(pinC, LOW);
digitalWrite(pinD, LOW);
break;
case 3:
digitalWrite(pinA, HIGH);
digitalWrite(pinB, HIGH);
digitalWrite(pinC, LOW);
digitalWrite(pinD, LOW);
break;
case 4:
digitalWrite(pinA, LOW);
digitalWrite(pinB, LOW);
digitalWrite(pinC, HIGH);
digitalWrite(pinD, LOW);
break;
case 5:
digitalWrite(pinA, HIGH);
digitalWrite(pinB, LOW);
digitalWrite(pinC, HIGH);
digitalWrite(pinD, LOW);
break;
case 6:
digitalWrite(pinA, LOW);
digitalWrite(pinB, HIGH);
digitalWrite(pinC, HIGH);
digitalWrite(pinD, LOW);
break;
case 7:
digitalWrite(pinA, HIGH);
digitalWrite(pinB, HIGH);
digitalWrite(pinC, HIGH);
digitalWrite(pinD, LOW);
break;
case 8:
digitalWrite(pinA, LOW);
digitalWrite(pinB, LOW);
digitalWrite(pinC, LOW);
digitalWrite(pinD, HIGH);
break;
case 9:
digitalWrite(pinA, HIGH);
digitalWrite(pinB, LOW);
digitalWrite(pinC, LOW);
digitalWrite(pinD, HIGH);
break;
default:
digitalWrite(pinA, HIGH);
digitalWrite(pinB, HIGH);
digitalWrite(pinC, HIGH);
digitalWrite(pinD, HIGH);
}
}
void loop()
{
// Faz um loop de 0 a 9
for (int i = 0; i < 10; i++) {
// Imprime o valor desejado
number(i);
// Aguarda meio segundo
delay(500);
}
// Apaga o número, perceba que quando chamo a função number
// com um valor <0 ou >9 a função simplesmente apaga todos
// os leds do contador. Por isso, se chamo a função com o
// valor 10 simplesmente o display se apagará.
number(10);
// Aguarda 1 segundo
delay(1000);
// Faz um loop de 9 a 0
for (int i = 10; i >= 0; i--) {
// Imprime o valor desejado
number(i);
// Aguarda meio segundo
delay(500);
}
}

Requisitos do sistema

    Para Última Versão do Photoshop.

  • Processador Intel® Pentium® 4 ou AMD Athlon® 64 ou equivalente.
  • Microsoft® Windows® XP com Service Pack 3; Windows Vista® Home Premium, Business, Ultimate ou Enterprise com Service Pack 1 (recomenda-se o Service Pack 2) ou Windows 7
  • 1 GB de RAM
  • 1 GB de espaço livre em disco para a instalação; será necessário espaço livre adicional durante a instalação (não é possível instalar em dispositivos de armazenamento removíveis flash)
  • Monitor de 1.024 x 768 (recomenda-se 1.280 x 800) com placa de vídeo aceleradora de hardware OpenGL, colorida, de 16 bits e 256MB de VRAM
  • Alguns recursos acionados por GPU precisam de suporte gráfico para Shader Model 3.0 e OpenGL 2.0
  • Unidade de DVD-ROM
  • Software QuickTime 7.6.2 necessário para recursos multimídia
  • Conexão banda larga com a Internet necessária para serviços on-line e para validar o Subscription Edition (caso aplicável) regularmente*


  • Processador Intel® Multicore
  • Mac OS X v10.5.8 ou v10.6
  • 1 GB de RAM
  • 2 GB de espaço livre em disco para a instalação; será necessário espaço livre adicional durante a instalação (não é possível instalar em um volume que use um sistema de arquivos que diferencia maiúsculas e minúsculas ou em dispositivos de armazenamento removíveis flash)
  • Monitor de 1.024 x 768 (recomenda-se 1.280 x 800) com placa de vídeo aceleradora de hardware OpenGL, colorida, de 16 bits e 256MB de VRAM
  • Alguns recursos acionados por GPU precisam de suporte gráfico para Shader Model 3.0 e OpenGL 2.0
  • Unidade de DVD-ROM
  • Software QuickTime 7.6.2 necessário para recursos multimídia
  • Conexão banda larga com a Internet necessária para serviços on-line e para validar o Subscription Edition (caso aplicável) regularmente*
By SilV4 /  Corrigido por B03iR4