domingo, 28 de dezembro de 2014

Arduino e LEDs - Parte 2, Variação de acendimento de 5 LEDs com Potenciômetro.

Esse post tem o intuito de mostrar como variar o acionamento de LEDs através da leitura de um sinal analógico. No meu caso utilizei um potenciômetro que quando conectado a uma porta analógica do Arduino, fornece uma leitura que varia de acordo com a tensão aplicada. Explicando melhor: O potenciômetro nada mais é do que uma resistência variável, e quando aplicamos uma tensão sobre ele (Vin = 5V), podemos variar a tensão de saída girando o pendulo seu pino central.







Com isso podemos ler a variação  de tensão (de 0 a 5V) utilizando uma das entradas analógicas do Aduino, o que pode ser utilizado para variados projetos. Nesse caso utilizei para fazer um sequencial de LEDs. Esse mesmo principio foi utilizado para fazer o controle dos servos que foram utilizados no projeto do braço robótico, http://computadoresfazemarte-odilon.blogspot.com.br/2012/12/braco-robotico-com-arduino-e-servos.html. 
Logo abaixo temos a parte de hardware do projeto.


Esquema elétrico

 Esquema para montagem em um protoboard

Agora a parte de software, ou seja, o código para programar o Arduino:

int sensorPotenciometro = 0; 
int led1 = 2 ; 
int led2 = 3;
int led3 = 4;
int led4 = 5;
int led5 = 6;
int valor = 0; // Essa variável armazenará a leitura do potenciometro

void setup() {
  Serial.begin(9600);
  pinMode(led1, OUTPUT);
  pinMode(led2, OUTPUT);
  pinMode(led3, OUTPUT);
  pinMode(led4, OUTPUT);
  pinMode(led5, OUTPUT);
}

void loop() {
  valor = analogRead(sensorPotenciometro); //Armazena os valores obtidos pelo sensor na variável "valor"
  Serial.println(valor); //Escreve na serial as leituras obtidas que vão de 0 a 1023
  if(valor == 0){ // Compara as leituras e faz o que se pede no bloco abaixo ...
    digitalWrite(led1, HIGH);
    digitalWrite(led2, LOW);
    digitalWrite(led3, LOW);
    digitalWrite(led4, LOW);
    digitalWrite(led5, LOW);
    delay (1000);
    digitalWrite(led1, LOW);
    delay (1000);
  }
  else if(valor >= 0 && valor < 200){ // compara as leituras e faz o que se pede no bloco abaixo...
    digitalWrite(led1, HIGH);
    digitalWrite(led2, HIGH);
    digitalWrite(led3, LOW);
    digitalWrite(led4, LOW);
    digitalWrite(led5, LOW);
  }
  else if(valor >= 201 && valor < 400){//...
    digitalWrite(led1, HIGH); 
    digitalWrite(led2, HIGH);
    digitalWrite(led3, HIGH);
    digitalWrite(led4, LOW);
    digitalWrite(led5, LOW);
  }  
  else if(valor >= 401 && valor < 600){ //...
    digitalWrite(led1, HIGH);
    digitalWrite(led2, HIGH);
    digitalWrite(led3, HIGH);
    digitalWrite(led4, HIGH);
    digitalWrite(led5, LOW);
  }
  else if(valor >= 601 && valor < 800){ //...
    digitalWrite(led1, HIGH);
    digitalWrite(led2, HIGH);
    digitalWrite(led3, HIGH);
    digitalWrite(led4, HIGH);
    digitalWrite(led5, HIGH);
  }
  else if(valor > 801){  //...
    digitalWrite(led1, LOW);
    digitalWrite(led2, LOW);
    digitalWrite(led3, LOW);
    digitalWrite(led4, LOW);
    digitalWrite(led5, LOW);
    delay(1000);
    digitalWrite(led1, HIGH);
    digitalWrite(led2, HIGH);
    digitalWrite(led3, HIGH);
    digitalWrite(led4, HIGH);
    digitalWrite(led5, HIGH);
    delay(1000);
  }

}

O código é bem simples, apenas cruza valores colhidos pela porta analógica e executa sinais binários nas portas digitais.
Agora é colocar a criatividade pra funcionar e incrementar o projeto de acordo com cada necessidade.
A seguir um vídeo do projeto em funcionamento:




Até o próximo projeto.


sábado, 27 de dezembro de 2014

Projeto Irrigador automático para hortas e jardins.(Parte 1 - Monitorando umidade da planta e selecionando variáveis).

Olá, esse projeto tem por finalidade criar um sistema que possa monitorar e controlar a irrigação de uma pequena horta. A ideia básica é utilizar o Arduino para colher informações sobre o estado da umidade do solo e com isso irrigar-lo se necessário.
De início pensei nas variáveis que preciso monitorar, ex: temperatura, umidade, nível de água ... Porem decidi partir para a prática e por logo algo para funcionar e depois incrementar o projeto de acordo com as necessidades. Pensando dessa forma criei um código para o Arduino que lê um sinal pela porta analógica A0, sinal esse que varia entre 0 e 5V, utilizando "sensores", (fios de cobre fincados no solo), consegui monitorar a umidade presente no vazo da planta, sendo que, níveis de tensão próximos a 0V indicam que a planta necessita de água, logicamente níveis próximos a 5V indicam que o solo está molhado. Utilizei 2 LEDs, um vermelho que indica o estado "solo seco", e o verde indica o estado "solo molhado". Utilizei também a comunicação serial para um melhor monitoramento do estado do solo.
Logo abaixo o esquema elétrico do projeto feito com o Fritzing.
 os fios cinza e roxo são os sensores que ficam fincados no solo dentro do vazo da planta.


Código utilizado para as primeiras experiências:

int sensorUmidade = 0; 
int led1 = 2 ; 
int led2 = 3;
int valor = 0; // Essa variável armazenará a leitura do sensor

void setup() {
  Serial.begin(9600);
  pinMode(led1, OUTPUT);
  pinMode(led2, OUTPUT);
}

void loop() {
  valor = analogRead(sensorUmidade); //Armazena os valores obtidos pelo sensor na variável "valor"
  Serial.println(valor); //Escreve na serial as leituras obtidas que vão de 0 a 1023
  if(valor <= 500){ // Compara as leitura, se for menor ou igual a 500, faz o que se pedo no bloco abaixo ...
    Serial.println("Solo seco");
    digitalWrite(led1, HIGH);
    digitalWrite(led2, LOW); 
  }
  else if(valor >= 501){ // compara as leitura, se for maior ou igual a 501, faz o que se pedo no bloco abaixo...
    Serial.println("Solo molhado");
    digitalWrite(led1, LOW);
    digitalWrite(led2, HIGH);
  }
  else{
    digitalWrite(led1, LOW); //caso contrario, mantem os leds apagados.
    digitalWrite(led2, LOW);
  }  
  delay(500);
}

O código é relativamente simples, e com ele pude observar o monitoramento da variável umidade pelo Arduino. 
Utilizei como "cobaia" um pezinho de alecrim que cultivo aqui em casa e tudo funcionou como esperado.





Monitor serial do Arduino exibindo os valores das leituras. 

Bom, por enquanto é isso. Agora vou estudar como ampliar a leitura das variáveis e como de fato irrigar de uma maneira eficiente e segura para que ela não morra por falta d'água e para que não aja desperdícios.

Até o próximo post.

Referencias:

http://playground.arduino.cc/Portugues/LearningAnalogInput
http://arduinobymyself.blogspot.com.br/2013/09/sistema-de-irrigacao.html

Confecção de Placas de Circuito Impresso - Parte 1 (Método clássico).

Olá!
Este post tem como objetivo mostrar como confecciono minhas próprias placas de circuito impresso. Bom, quando iniciei em eletrônica, ainda na adolescência, o meu principal hobby era música, inclusive tive até uma banda. Então, como a grana era pouca para poder comprar amplificadores e outros equipamentos, eu mesmo resolvi montá-los. Esta empreitada resultou em dezenas de placas de fenolite desperdiçadas, muita mancha de percloreto de ferro nas roupas, e com certeza, muitos curtos-circuitos, transistores e CIs queimados.
Antes de, de fato começar a montar minhas próprias placas, comecei tentando envenenar placas antigas, onde também pude aprender sobre o funcionamento dos amplificadores de áudio. A que me trouxe melhores resultado foi a clássica Sonata, pois na eletrônica que trabalhava tinha dezenas de dessas sucatas, com um circuito relativamente simples em relação a outros tipos de amplificadores transistorizados, fora a potência, que era razoável, e já vinha com o pré amplificador acoplado.  Trocava os modestos TIPs 31/32 por transistores de alta potência, a exemplo dos 2SA1943 e 2SC3281, alterava a tensão e corrente da fonte, trocava o driver 6014 por um BD 137, colocava resistores 5W, trocava o capacitor de acoplamento, e no final conseguia espetaculares 52W RMS, (em comparação a sua potência original, cerca de 20W RMS), com os transistores de potência incendiando em 4 ohm. Em fim, a poucos dias estava procurando algumas coisas e em meio as sucatas encontro uma placa da sonata, ainda sem nenhuma alteração, só faltando alguns resistores, coloquei em uma fonte de 12 V e a lendária placa com seus mais de 30 aninhos ainda toca. A nostalgia foi tanta que esqueci que os TIPs 31/32 estavam sem dissipadores de calor, e foram para o espaço.

Depois de várias tentativas frustradas de turbinar ainda mais a sonata, resolvi “investir” em um amplificador mais moderno, com fonte simétrica, circuito de driver mais eficiente, e menor distorção. Já com um certo conhecimento sobre amplificadores, montei vários, porém boa parte se perdeu pelo tempo, alguns ainda funcionam e estão com amigos que ainda tocam, inclusive esse modelo da figura abaixo feito com transistores darlingtons, e tocava muito bem, porem aquecia demais e era um sacrifício encontrar dissipadores de calor que suprissem a sua necessidade de resfriamento, (odiava usar coolers e ventiladores).

Nessa época, ainda estava aprendendo os macetes de construção de placas, e ainda não tinha com que furar o fenolite, então só montava placas que dava para soldar os componentes por cima das trilhas, ficava feio, mas funcionava:
Esse foi um mix que montei, utilizava o CI amplificador operacional.

 Os componentes eram soldados por cima da placa e tinha que inverter os pinos do CI. Funcionava bem, ligava 3 instrumentos nele, e não produzia nenhum tipo de ruído.
Recentemente resolvi montar um amplificador para uso pessoal. Agora sim, com técnicas melhoradas, e decidi montar algo com uma certa qualidade, e não muito complexo. Buscando na rede, achei um esquema interessante no site: http://www.te1.com.br/2014/03/mini-strong-power-amplifier-100w-rms/  e resolvi monta-lo.
Utilizei o modo clássico: caneta permanente, régua esquadro, e placa de fenolite.
Desenhando as trilhas;

           Trilhas prontas e revisadas, placa pronta para furar;

Depois de furar os pontos dos componentes, uma segunda revisão antes do 1 banho em percloreto de ferro;

Atento ao primeiro banho, e uma revisão par ver se existe a necessidade de retocar alguma trilha;

Depois de alguns minutos, o resultado da placa 1;

E da placa 2;
É importante ter atenção nessa hora e revisar todas as trilhas com bastante cuidado para não ficar nenhum indício de curto circuito e perder todo o trabalho. Eu sempre utilizo um multímetro para testar a condutividade das trilhas e averiguar se existe algum curto circuito entre elas.
Placa 1 com os componentes já soldados para teste;


Pré amplificador, utilizei a mesma técnica;



Amplificador montado, 200W RMS estéreo, com pré amplificador e controle de tons, balanço e volume.
Obs: Não teve jeito, tive que me render ao uso de um cooler.


           Para os projetos com o Arduino, ainda utilizo as velhas placas ilhadas, pois são mais práticas pelo fato de poder fazer as trilhas com solda e os projetos que fiz até agora com ele exige pouco de eletrônica. Um exemplo de montagem com placa ilhada está logo abaixo.
Relé com optoacoplador;



 Aqui também uma placa controladora com o ATmega328, (dedicarei um post a esse projeto que envolve android e bluetooth).


Além dessas, tenho outras placas prontas que utilizam o mesmo princípio, inclusiva a placa de controle do manipulador robótico, projeto que já foi publicado aqui no blog.
Em fim, não existem muitos segredos para poder construir suas próprias placas, basta dedicação, não ter medo de errar, e se necessário encarar o fato de ter que fazer tudo de novo. Existem outros métodos de fazer sua própria placa, os quis postarei mais adiante.
Espero que gostem e continuem visitando o blog.
Até o próximo projeto. 

domingo, 16 de março de 2014

Arduino e Leds - Parte 1

Alô pessoal, 
Estou trazendo aqui mais uma série de postagens sobre Arduino e experimentos com Leds. Como estive um tempinho parado, resolvi praticar um pouco de programação já que não é muito meu forte.
Um Led nada mais mais é do que um diodo que quando energizado emite luz, (http://pt.wikipedia.org/wiki/Diodo_emissor_de_luz ). Muito utilizado na eletrônica, hoje também vem tomando espaço no campo da luminotécnica, por ter uma qualidade e flexibilidade excelente, e ainda tem um consumo substancialmente baixo com relação aos outros modelos de lâmpadas existentes no mercado. 
Falando de Led e Arduino, pode-se fazer uma infinidade de geringonças misturando os dois, de experimentos mais simples até projetos arrojados e complexos, e também é uma ótima ferramenta para treinar programação.
Bom, pra quem está nos primórdios e deseja fazer algum projeto simples com Arduino e Led, sugiro que siga os tutoriais do site http://www.arduino.cc/.
A minha primeira postagem da série será sobre o acionamento de um Led pelo Teclado do PC.

Material mínimo necessário:
1 Arduino  
1 Led
1 Resistor de 330 ou 470 ohm

O esquema do circuito para montagem no protoboard pode ser analisado logo abaixo:

Concluindo a parte do Hardware vamos para o código para programação do Arduino:

int led = 10; // Pino digital do Arduino conectado ao Led
char LigaDesliga;

void setup(){
  pinMode (led, OUTPUT);
  Serial.begin(9600);//Inicia comunicação serial
}

void loop(){

// A lógica do código é simples, funciona como um interruptor comum,
//onde quando a letra L (liga) do teclado é apertada, o Led acende, para
//apaga-lo basta aperta a letra D (desliga) do teclado.

LigaDesliga = Serial.read();

if
  (LigaDesliga == 'l'){
    digitalWrite(led, HIGH);
    Serial.println("Led ligado");
    Serial.println("Aperte a letra d pra desligar");
  }

else if
  (LigaDesliga == 'd'){
    digitalWrite(led, LOW);
    Serial.println("Led desligado");   
  }

else if
  (LigaDesliga == 'a'){
    Serial.println("Reinicia sequencia");
    digitalWrite(led, HIGH);
    delay (1000);
    digitalWrite(led, LOW);
    delay (1000);
    digitalWrite(led, HIGH);
    delay (1000);
    digitalWrite(led, LOW);
    delay (1000);
  }


}


Links uteis:

O que é e como funciona um led:
http://www.iar.unicamp.br/lab/luz/dicasemail/led/dica36.htm

Calculando resistor para o led:
https://www.google.com.br/url?sa=t&rct=j&q=&esrc=s&source=video&cd=1&ved=0CB0QtwIwAA&url=http%3A%2F%2Fwww.youtube.com%2Fwatch%3Fv%3Df8dx1I8BDO0&ei=piLqU_OeBIXMsQTalICIDA&usg=AFQjCNEJzU0_DqnH0RrdTowiTMPRB2YePQ&sig2=rbO7NRIg_GRPdmd-YrbF-w

Até o próximos post.