quinta-feira, 15 de dezembro de 2016

Exibindo a temperatura a partir de um NTC e LCD 16x2




INTRODUÇÃO:

Como atividade de conclusão do módulo III e, consequentemente, das atividades da disciplina de Algoritmos e Estruturas de Dados, avançamos com um projeto, cuja ideia era desenvolver, a partir dos conhecimentos adquiridos ao longo do semestre, uma atividade com o microcontrolador Arduino. O projeto desenvolvido pelo grupo consistia em um medir a temperatura ambiente, bem como as suas variações, a partir de um sensor e exibi-la em um display LCD.


COMPONENTES UTILIZADOS:

• Arduino Mega
• Protoboard
• NTC
• LCD 16x2
• Resistor 10kOhms
• Fios jumper


MONTAGEM DO PROJETO:

Para a montagem do projeto, foram montados dois circuitos independentes. O primeiro, como visto na imagem abaixo, é responsável por alimentar o NTC, que identifica a temperatura ambiente, cuja montagem é a mesma utilizada na atividade do módulo II., Já o segundo circuito alimenta o display LCD, que posteriormente imprimiria em seu visor o valor da temperatura identificado pelo NTC. Imagens das montagens do circuito podem ser vistas abaixo:

 (Ligação do NTC)

 (Ligação do LCD 16x2)

(Montagem do circuito)

(Montagem do circuito)


CÓDIGO:

O código utilizado na IDE do Arduino se assemelha bastante com o código utilizado na atividade do módulo II, cujo objetivo era medir a temperatura a partir do NTC e exibi-la no "Serial Monitor" do Arduino. A única diferença, nesse caso, está nos comandos do LCD, tal como lcd.print(temperature), cujo objetivo é exibir no LCD o valor da variável temperatura, captado pelo NTC.





VÍDEOS:







SERIAL.BEGIN

terça-feira, 13 de dezembro de 2016

Bóia de Nível


Tendo em vista os problemas de falta de água nos últimos anos o uso de sistemas de capitação da água da chuva tem sido muito procurado. Um sistema muito utilizado e o de cisternas que ficam no nível do solo pois se utiliza o telhado como área de capitação.
O nosso projeto se baseia em um sistema com uma chave de nível ativando motobombas. Assim podendo controlar um sistema de cisternas.
O sistema cisternas funciona da seguinte maneira:


Código:

//Método setup, executado uma vez ao ligar o Arduino.
void setup() {
  pinMode(led1,OUTPUT);
  pinMode(led2,OUTPUT);
  pinMode(led3,OUTPUT);
  pinMode(btn1,INPUT);
  pinMode(btn2,INPUT);
  pinMode(btn3,INPUT);
}

//Método loop, executado enquanto o Arduino estiver ligado.
void loop() {

  s_btn1 = digitalRead(btn1);
  s_btn2 = digitalRead(btn2);
  s_btn3 = digitalRead(btn3);
 

  if (s_btn1 == HIGH) {
    digitalWrite(led1,HIGH);
    digitalWrite(led2,LOW);
    digitalWrite(led3,LOW);
  } else if(s_btn2 == HIGH){
    digitalWrite(led1,LOW);
    digitalWrite(led2,HIGH);
    digitalWrite(led3,LOW);
  } else if(s_btn3 == HIGH){
    digitalWrite(led1,LOW);
    digitalWrite(led2,LOW);
    digitalWrite(led3,HIGH);
  }    

}

Projeto:


Trabalho com Arduino - Módulo 3




Quando nos foi passado esse trabalho referente ao módulo 3, buscamos juntar o útil ao agradável, visto que já estávamos com um projeto envolvendo o arduino em andamento.

O nosso projeto visa controlar o acendimento de um led utilizando um Módulo RF por meio de transmissão e recepção. Tivemos bastante dificuldade no entendimento de algumas bibliotecas e funções do arduino, que até então eram desconhecidas para nós, como a do módulo (virtualwire), bibliotecaessa que descobrimos na internet. Porém, apesar da dificuldade, conseguimos executar o programa.


Circuito Arduino Módulo RF 433 MHz - Transmissor

Código Transmissão:


#include <VirtualWire.h>

//Define pinos Led e Botao
const int ledPin = 13;
const int pino_botao = A0;

int valor_botao;
char Valor_CharMsg[4]; 
//Armazena estado led = ligar/desligar
int estado = 0;

void setup() 
{
  Serial.begin(9600);   
  pinMode(ledPin,OUTPUT);
  pinMode(pino_botao,INPUT);
  //Pino ligado ao pino DATA do transmissor RF
  vw_set_tx_pin(4);
  //Velocidade de comunicacao (bits por segundo)
  vw_setup(5000);
  Serial.println("Trasmissao modulo RF - Acione o botao...");
}

void loop() 
{
  //Verifica o estado do push-button
  valor_botao = digitalRead(pino_botao);
  //itoa(valor_botao,Valor_CharMsg,10);
  
  //Caso o botao seja pressionado, envia dados
  if (valor_botao == 0)
  {
    //Altera o estado do led
    estado = !estado;
    //Converte valor para envio
    itoa(estado,Valor_CharMsg,10);
    //Liga o led da porta 13 para indicar envio dos dados
    digitalWrite(13, true);
    //Envio dos dados
    vw_send((uint8_t *)Valor_CharMsg, strlen(Valor_CharMsg));
    //Aguarda envio dos dados
    vw_wait_tx();
    //Desliga o led da porta 13 ao final da transmissao
    digitalWrite(13, false);
    Serial.print("Valor enviado: ");
    Serial.println(Valor_CharMsg);
    delay(500);
  }
}



Circuito Arduino Módulo RF 433 MHz - Receptor




Código Recepção:

#include <VirtualWire.h>

//Define pino led
int ledPin = 5;

int valor_recebido_RF;
char recebido_RF_char[4]; 

void setup() 
{
  Serial.begin(9600);
  pinMode(ledPin, OUTPUT);
  //Pino ligado ao pino DATA do receptor RF
  vw_set_rx_pin(7);
  //Velocidade de comunicacao (bits por segundo)
  vw_setup(5000); 
  //Inicia a recepcao  
  vw_rx_start();
  Serial.println("Recepcao modulo RF - Aguardando...");
}

void loop()
{
    uint8_t buf[VW_MAX_MESSAGE_LEN];
    uint8_t buflen = VW_MAX_MESSAGE_LEN;
    
    if (vw_get_message(buf, &buflen)) 
    {
    int i;
        for (i = 0; i < buflen; i++)
       {            
          //Armazena os caracteres recebidos  
          recebido_RF_char[i] = char(buf[i]);
       }
       recebido_RF_char[buflen] = '\0';
       
       //Converte o valor recebido para integer
       valor_recebido_RF = atoi(recebido_RF_char);
         
       //Mostra no serial monitor o valor recebido
       Serial.print("Recebido: ");
       Serial.print(valor_recebido_RF);
       //Altera o estado do led conforme o numero recebido
       if (valor_recebido_RF == 1)
       {
         digitalWrite(ledPin, HIGH);
         Serial.println(" - Led aceso !");
       }
       if (valor_recebido_RF == 0)
       {
         digitalWrite(ledPin, LOW);
         Serial.println(" - Led apagado !");
       }
    }
}




Grupo G2
       

Controle de luz utilizando LDR

Controle de luz utilizando LDR


São dois circuitos:

- LDR 10k resistor de 10k

- Relé-Lâmpada

A FUNÇÃO DO ARDUÍNO: 

Fazer a interligação do dois circuitos.

COMO FUNCIONA:

LDR -> Arduino -> Relé-Lâmpada

-> O LDR é um sensor de luminosidade que vai captar a luminosidade do ambiente e tranformar ela em um valor de resistência;
-> O Arduino vai ler esse valor informado pelo LDR e vai colocar ele no parametro if do código:
-> Dependo do que o if retornar (verdadeiro ou faso) o Arduino vai emitir um sinal para o relé que irá ligar ou desligar a lâmpada;


(montagem e testes do circuito)

Para que não ocorresse interferência da luz gerada pela lâmpada sobre o LDR, foi direcionado o LDR para um lado oposto ao da lâmpada.

CIRCUITO EM FUNCIONAMENTO:



O circuito também poderia ser aprimorado para que o nível de luminosidade do ambiente possa ser alterado manualmente pelo Potenciômetro atravées de ajuste fino no próprio sistema. O potenciometro ficaria em série com o LDR.

CÓDIGO:



Créditos: GRUPO G1.

quarta-feira, 16 de novembro de 2016

Segundo Projeto com o Arduino




O projeto tem o intuito de controlar a velocidade do motor a partir da temperatura 
detectada.

Ele pode ser dividido em duas partes básicas:



1-A leitura da temperatura via NTC, que é levada ao arduino na forma de números.

2- A mudança de velocidade do motor a partir do processamento no arduino e a mudança de tensão fornecida ao motor.

Para a leitura da temperatura foi utilizado um NTC que é um resistor sensível a temperatura.

O motor de 5v é somente um exemplo perante a possibilidade de utilizações e acionamentos que podem ser realizados.

Esse projeto abre portas para uma diversidade de projetos que tem por idéia a leitura de uma variável para o controle de um valor ou mecanismo em malha aberta.

O mecanismo, se utilizado com conceitos de eletrônica de potencia, pode acionar ao invés de um motor cc lâmpadas e até mesmo grandes maquinas.


Por mais que o sistema inicialmente tenha apresentado uma grande dificuldade, ele após algumas analises e tentativas demonstrou ser muito didático e simples. 



Código usado:

#include <Thermistor.h> // biblioteca

Thermistor temp(4); // thermistor porta 4
int pinoMotor = 9; // motor porta 9


void setup() {
pinMode(pinoMotor, OUTPUT); // pino do motor como saída
Serial.begin(9600); //comunicação do arduino para o pc em bits

}

void loop() { // função principal
  int temperature = temp.getTemp(); 
  
  Serial.print("Temperatura no Sensor eh: ");
  Serial.print(temperature);
  Serial.println("*C");
  delay(1000);
  
  if(temperature <= 23){
  analogWrite(pinoMotor, 50);  
  }
    else if (temperature > 23 && temperature < 25) {
  analogWrite(pinoMotor, 127);
  }

  else {
    analogWrite(pinoMotor, 255);
  }
  

}

Segunda experiência com Arduino




EXPERIÊNCIA

Nossa segunda experiência com o Arduino foi muito produtiva. A compreensão de todas as etapas trouxe pleno aprendizado a todo o grupo. Apesar das dificuldades enfrentadas num primeiro momento, uma vez que havia uma dificuldade na montagem dos circuitos, houve uma interação interessante entre os grupos, o que possibilitou uma troca de informações e a obtenção dos resultados esperados por todos os grupos.


CÓDIGO




MONTAGEM


Para fazer o controle da velocidade de rotação do motor CC a partir da temperatura medida pelo sensor, foi necessário realizar a montagem dos dois circuitos de forma independente.

Primeiramente, monta-se o circuito de medição de temperatura, para o qual foi utilizado um NTC (Negative Temperature Coefficient), um resistor de 10 kOhms e fios jumper, além da protoboard e do arduino. Alimenta-se com 5V na entrada no NTC, que é colocado em série com o resistor, cuja saída vai para a terra. Conecta-se também o ponto entre o NTC e o resistor à entrada analógica A4 do Arduino. A partir daí, o NTC "lê" a temperatura ambiente e o arduino traduz em números.

Após isso, monta-se o circuito do acionamento do motor CC, que usa um motor CC, um diodo 1N4001, um resistor 1 kOhms, um transistor TIP 120 e fios jumper. Conecta-se o 5V do arduino a um dos terminais do motor, em paralelo com o diodo, polarizado reversamente. Conecta-se o outro terminal ao coletor transistor e o emissor é conectado na terra (GND). À base do transistor, conecta-se o resistor de 1 kOhms, que é ligado no pino digital D9 do Arduino.

Assim, quando o arduino é alimentado, o sistema começa a funcionar com o sensor identificando a temperatura ambiente e, a partir disso, a temperatura é comparada com as condições definidas no código escrito no programa Arduino. A partir da temperatura medida, o arduino fornece mais ou menos tensão para o motor, controlando, assim, sua velocidade de rotação.







GRUPO SERIAL.BEGIN

terça-feira, 8 de novembro de 2016

Segunda Experiencia com o Arduino

     Nossa segunda experiência com o Arduíno não foi tão complexa quanto a primeira, pois já tínhamos alguma experiência com o mesmo, porém, não foi tão fácil e prazerosa. Um dos motivos de ainda percebermos uma leve complexidade nos problemas propostas foi a evasão de alguns integrantes do nosso grupo, restando apenas 3 integrantes, mas os mesmos foram sanados com a associação ao grupo 20programar.

     Falando um pouco sobre as atividades desenvolvidas, trabalhamos com o sensor LDR, cuja resistência varia de acordo com a luminosidade recebida onde utilizamos algumas funções do Arduíno, as famosas portas seriais e as analógicas. Passando pela atividade 6, trabalhamos com as atividade 7, 8 e 9 no qual acionamos um motor CC e adquirimos experiência no funcionamento da porta PWM, e do potenciômetro.
Já nas atividades 10 e 11, trabalhamos com o medidor de temperatura NTC que foi de suma importância para o desenvolvimento da atividade posterior, que é o principal motivo deste post.

Atividade 12 - CONTROLAR VELOCIDADE DO MOTOR CC COM TERMISTOR

     Nos reunimos no laboratório do NERA  junto com o grupo 20programar para darmos sequência a atividade 12, conforme segue abaixo.

Primeira tentativa:




















Segunda tentativa:

Apos a primeira tentativa aprimoramos o programa para que ele passe a contar com 3 oscilações de velocidade em relação a temperatura, o programa resultante foi:









 GRUPO: G2