Tutorial – Trena Digital com Rodas

Meu nome é Vagner, aluno do primeiro ano de Engenharia da Computação, e nesse tutorial mostrarei como criar uma trena digital com rodas utilizando um Arduino e sensores magnéticos.


COMPONENTES NECESSÁRIOS

  • 1 Arduino
  • 1 LCD (Foi utilizado o 16×2)
  • 1 Bateria de 9V
  • 2 Reed Switches magnéticos
  • 1 Botão
  • 1 Chave H de duas posições
  • 1 Plug P4 macho
  • 2 Potenciômetros (Foi utilizado de 10K Ω)
  • 5 Resistores de 1K Ω
  • Cabos jumper
  • Equipamentos de solda

Como funciona um Reed Switch?

Antes de começar é importante saber como que funciona um reed switch, pois ele é um dos componentes mais importantes do projeto.

O Reed Switch é um interruptor, construído com duas lâminas separadas por um gás dentro de uma cápsula de vidro. Quando não está em contato com um imã, as lâminas ficam afastadas e funcionam como uma chave aberta. Se um imã se aproximar do reed switch, as lâminas irão se aproximar e, consequentemente, passará corrente através delas (apenas enquanto o imã estiver próximo).

reedswitch

 


CÓDIGO

Para evitar o risco de queimar o seu Arduino, é importante passar o código antes de ligar qualquer componente.


// Biblioteca para controle de telas LCD
#include <LiquidCrystal.h>

// Pino do Reed Switch
const int pinSwitch = 12;
const int pinSwitch2 = 11;
// Pino do Botão
const int pinBotao_stop = 7;

LiquidCrystal lcd (9, 8, 5, 4, 3, 2);

// Variável para guardar o valor do estado dos Reed Switches
int estadoSwitch = 0;
int estadoSwitch2 = 0;
// Variável para armazenar a distância
float distancia = 0;
// Variável para controlar a execução
boolean inicio = true, sentido = true;
int i, n = 4, vet[2];

//INSERIR A DISTÂNCIA, EM METROS, ENTRE OS IMÃS

float distancia_imas = 0.2033;

void setup() {
  // Inicializa os pinos dos Reed Switch como entrada
  pinMode(pinSwitch, INPUT);
  pinMode(pinSwitch2, INPUT);
  // Inicializa o botão como entrada
  pinMode(pinBotao_stop, INPUT);
  // Inicializa o LCD
  lcd.begin(16, 2);
  escrever_lcd();
}

void loop() {
  if (digitalRead(pinBotao_stop) == HIGH) {
    distancia = 0;
    escrever_lcd();
    delay(400);
    inicio = true;
    n = 4;
  }

  estadoSwitch2 = digitalRead(pinSwitch2);
  if (estadoSwitch2 == HIGH) {
    vet[0] = vet[1];
    vet[1] = 2;
    verificar_sentido();
    while (estadoSwitch2 == HIGH)
    {
      estadoSwitch2 = digitalRead(pinSwitch2);
    }
  }

  // Lê o valor do estado do Reed Switch e guarda na variável
  estadoSwitch = digitalRead(pinSwitch);
  // Verifica o estado do Reed Switch
  if (estadoSwitch == HIGH) {
    vet[0] = vet[1];
    vet[1] = 1;
    verificar_sentido();
    if (sentido == true) {
      distancia = distancia + distancia_imas;
    }
    if (sentido == false) {
      distancia = distancia - distancia_imas;
    }
    escrever_lcd();
    while (estadoSwitch == HIGH) {
      estadoSwitch = digitalRead(pinSwitch);
    }
  }
  if (digitalRead(pinBotao_stop) == HIGH) {
    distancia = 0;
    escrever_lcd();
    delay(400);
    inicio = true;
    n = 4;
  }
}

void menu_principal() {
  inicio = false;
  lcd.clear();
  lcd.print("  Trena digital");
  lcd.setCursor(0, 1);
  lcd.print("    com rodas");
  delay(3000);
}

void escrever_lcd() {
  if (distancia >= 100) {
    n = 3;
  }
  if (distancia >= 1000) {
    n = 2;
  }
  lcd.clear();
  lcd.setCursor(3, 0);
  lcd.print("Distancia");
  lcd.setCursor(n, 1);
  lcd.print(distancia);
  lcd.setCursor(11, 1);
  lcd.print("m");
}

void verificar_sentido() {

  if (vet[0] == vet[1]) {
    if (sentido == true) {
      sentido = false;
    }
    else {
      sentido = true;
    }
  }
}
}


 

CONECTANDO OS COMPONENTES

Aqui será mostrado onde cada componente deverá ser conectado em uma protoboard. Depois disso é só você montar uma estrutura para sua trena, passar os fios e conectar os componentes (exemplo no final do tutorial).

Depois de passar o código chegou a hora de conectar os componentes. A ligação deve acontecer com o Arduino desligado e de acordo com o esquema do Fritzing:

ComponentesTrena

 

A ligação do visor 16×2 (LCD) seguiu a seguinte conexão:

  • Pino 1 do LCD ligado ao GND do Arduino;
  • Pino 2 do LCD ligado ao 5V do Arduino;
  • Pino 3 do LCD ligado ao pino central do primeiro potenciômetro (controle de contraste);
  • Pino 4 do LCD ligado ao pino digital 9 do Arduino;
  • Pino 5 do LCD ligado ao GND do Arduino;
  • Pino 6 do LCD ligado ao pino digital 8 do Arduino;
  • Pino 11 do LCD ligado ao pino digital 5 do Arduino;
  • Pino 12 do LCD ligado ao pino digital 4 do Arduino;
  • Pino 13 do LCD ligado ao pino digital 3 do Arduino;
  • Pino 14 do LCD ligado ao pino digital 2 do Arduino;
  • Pino 15 do LCD ligado ao pino central do segundo potenciômetro (controle do brilho);
  • Pino 16 do LCD ligado ao GND do Arduino.

Para alimentar o Arduino será usado uma bateria de 9V conectada em um plug P4 macho e uma chave liga/desliga.


EXEMPLO DE ESTRUTURA

20160804_131641

Neste exemplo foi utilizado os seguintes materiais:

  • 2 metros de cano de PVC 20mm
  • Conectores de cano 20mm
  • 2 rodas de 8”
  • 40 cm de barra roscada
  • Porcas e arruelas
  • 1 Caixa de Luz 4×2
  • 1 Caixa de Luz 4×4
  • 1,5 m de cabo manga 12 vias

Na caixa de luz 4×2 foi fixado o botão, o LCD, os potenciômetros e a chave H:

20160804_131610

Dentro da caixa de luz 4×4 foi colocado o Arduino, a bateria e os reed switch:

20160804_131456

A parte de cima foi conectada com a de baixo através do cabo manga de 12 vias, onde 6 para comunicação com o LCD, 2 para chave H, 1 para o botão, 1 para 5V e 1 para terra.

Para utilizar menos fios dá para usar somente 1 fio para o 5V e outro para o GND, ou seja, conecta na parte de baixo no Arduino (5V e GND) e na parte de cima conecta todos os componentes que usam o GND e o 5V.

Tutorial – Trena Digital com Rodas

Aluno do 2º ano de Engenharia da Computação e estagiário do Núcleo de Computação Embarcada (NCE) da Universidade Positivo.

Classificado como:                

Deixe uma resposta

O seu endereço de e-mail não será publicado. Campos obrigatórios são marcados com *