Controle de PWM e monitorando a temperatura do Arduino com uma interface gráfiva JAVA.

Como vão galera???

Hoje estou aqui para mostrar a vocês um projeto que usa uma interface Java para controle de PWM e leitura de temperatura do LM35.

Antes de apresentar o projeto a vocês, devemos seguir uma regra de uso correto do sensor de temperatura LM35.

No Blog de Wellington Cássio, mostra exatamente como deve ser usado o LM35 com o mínimo possivel de erro em sua leitura.

Ele está mostrando aqui como faz:

http://labdegaragem.com/profiles/blogs/como-usar-corretamente-o-lm35

Primeiramente vou mostrar como ficou a interface de controle:

A combo é para selecionar a porta serial para o Arduino.

O Botão para acionar a comunicação entre o computador e a placa.

No lado esquerdo o controle que vai de 0 à 100% do controle de PWM.

Por último, o label que mostra a temperatura vindo do LM35.

O logotipo do Arduino pra a janela não fica tão sem graça...

Abaixo mostra a ligação dos componentes:

Atentem-se para a ligação do divisor de tensão para enviar 1,1Volts para o pino AREF do Arduino que é a referência de tensão para leituras analógicas.

Tipo:

  • DEFAULT: O padrão analógico de referência de 5 volts (em placas de 5V do Arduino) ou 3,3 volts (em quadros de Arduino 3.3V)
  • INTERNAL: um built-in de referência, igual a 1,1 volts no ATmega168 ou ATmega328 e 2,56 volts na ATmega8 ( não disponível no Arduino Mega )
  • INTERNAL1V1 : a built-in 1.1V referência ( Arduino mega só )
  • INTERNAL2V56 : a built-in de referência 2.56V ( Arduino mega só )
  • EXTERNAL: a tensão aplicada ao pino AREF ( 0 a 5V apenas ) é usado como a referência.

Um exemplo que eu mostro abaixo é do Blog de Wellington Cássio para mostrar a leitura do LM35:

#include <LiquidCrystal.h>
LiquidCrystal lcd(12,11,5,4,3,2);
const int sensor=1;
float temperatura;
void setup()
{
  lcd.begin(16,2);
  analogReference(INTERNAL); // Referencia de 1.1V UNO (1.1/1024=0,913mv) 0,913mv de precisão ou seja 0,09ºC( INTERNAL1V1  Arduino Mega)
}
void loop()
{
 temperatura=0;
 for(int i=0;i<1000;i++)
{
temperatura=temperatura+analogRead(sensor);
}
 temperatura=temperatura/1000; //Media de mil leituras
 temperatura=temperatura*(1.1/1024);//Converte valor lido para tensão
 temperatura=temperatura*100;//Converte para Graus = temperatura/(1/10mv)
 lcd.setCursor(0,0);
 lcd.print("Temp: ");
 lcd.print(temperatura);
}

Atentem-se no seguinte caso. Eu estou usando Linux, por isso para vocês que usam Windows, deverão mudar o arquivo SerialEnumPorts.java, vocês devem mudar a seguinte string:

COM0("/dev/ttyUSB0"), // para linux

Irá ficar assim para Windows:

COM0("COM0"),

COM1("COM1"),

COM2("COM2"),

COM3("COM3"),

COM4("COM4"),

COM5("COM5"),

COM6("COM6"),

COM7("COM7"),

COM8("COM8");

Atenten-se para isto.

E também para a imagem que deve ser especifico o caminho. Está no arquivo ImagemEnumCaminho.java.

Mude o caminho especifico para a imagem.

IMAGEM("/home/tony/workspace/Catolica/imagens/catolica.png");

Estou usando está imagem para logo do Arduino.

Vocês poderão colocar qualquer imagem desde, que seja do mesmo tamanho desta ao lado.

Mudem o nome do logo é arduino.jpeg por isso, mudem o código de acordo com o que está abaixo:

   IMAGEM("/home/tony/workspace/Catolica/imagens/arduino.jpeg");

Isso caso vocês queiram usar a mesma imagem que eu.

Abaixo o código fonte completo no gitHub:

https://gist.github.com/456789123/e079f59100d1a298de59

 Ai vai o video dele funcionando:

https://www.youtube.com/watch?v=c8q24iVzhck&feature=youtu.be

Exibições: 4028

Comentar

Você precisa ser um membro de Laboratorio de Garagem (arduino, eletrônica, robotica, hacking) para adicionar comentários!

Entrar em Laboratorio de Garagem (arduino, eletrônica, robotica, hacking)

Comentário de Christiano Reis em 28 janeiro 2016 às 14:48

Valeu José Geraldo P. Souza. Lembrando que pode adicionar botões para ligar um rele ou qualquer outra coisa.

Colocar vários sensores. Enfim... O céu é o limite.

Comentário de Christiano Reis em 28 janeiro 2016 às 14:46

Boa tarde Francisco Lucena Gomes Jr. A saída de PWM que eu estou usando é o pino 11 saida PWM.

Eu estou usando o Arduino Duemilanove. Bem antiguinho. Ai você pode dar uma olhada no programa no gitHub:

https://gist.github.com/456789123/e079f59100d1a298de59

Comentário de Christiano Reis em 28 janeiro 2016 às 14:43

Bom Douglas. Eu ainda não conheço o Arduino MEGA. O conselho que eu dou é olha o DATASHEET do Atmega que ele usa.

Comentário de José Geraldo P. Souza em 28 janeiro 2016 às 13:43

Excelente programa!

Comentário de Francisco Lucena Gomes Jr em 28 janeiro 2016 às 13:23

Boa tarde Cristiano. Não entendi uma coisa, onde está a parte do sketch que o Arduino controla a saída PWM?

Comentário de Douglas em 28 janeiro 2016 às 11:02

Muito bom Christiano! Você saberia me dizer qual é a frequência máxima do PWM que se consegue atingir no arduino Mega?

© 2024   Criado por Marcelo Rodrigues.   Ativado por

Badges  |  Relatar um incidente  |  Termos de serviço