Postagem em destaque

Controle PID de Potência em Corrente Alternada - Arduino e TRIAC - Parte I

Este post é o primeiro de uma série de seis que escrevi tratando de controle de potência e PID (controle proporcional, integral e derivativo...

segunda-feira, 29 de abril de 2013

Display LCD 20x2

Nosso colega de SJC Hacker Clube, o Hernandes Arisa, nos fez uma doação de diversos componentes. Dentre esses, vários displays LCD 20x2 (20 colunas por 2 linhas). Esses displays na minha opinião são ouro para quem programa em Arduino, porque proporcionam uma saída de dados alternativa ao display do PC, ou seja, seu circuito pode ter uma "tela" estando desconectado do PC. Taí o bicho (só que o modelo que ele doou é MS2002A3, do mesmo fabricante).

Procura dali e daqui na net, não achei o datasheet desse especificamente, mas um da Sony que me pareceu equivalente, taí o link. A diferença é que o da Sony tem backlight, e esse que nos foi gentilmente doado não tem.
O que eu não tinha também era o cabo prá ligar o bicho, a conexão era desse tipo aí:


Procurando o cabo nas tralhas, achei um outro display de 20x2 que eu tinha ganhado de um aluno, com o cabo já plugado. Tive a ideia brilhante de simplesmente desplugar o cabo e ligar no novo display mas... não só não despluguei como quebrei um pedaço da placa de circuito do display!
Em vez de desistir, imbuído do espírito hacker, resolvi refazer a trilha com um pedaço de fio. 
Taí a façanha:


Na hora de ligar, fui identificando os pinos do datasheet e colando de um esquema de ligar o meu display 16x2, que é esse. Como havia uma correspondência entre os nomes dos pinos dos dois displays, porque não iria funcionar, não é mesmo?

Como não sei onde foi parar o meu potenciômetro, também não deu para fazer um ajuste de contraste, fiz um divisor de tensão com dois resistores. Se vc quiser fazer esse ajuste, basta ligar o potenciômetro como divisor de tensão. Sabe como é não ? Moleza: ligue uma das pernas externas do bicho em +5V, a outra externa no terra e a do meio na conexão Vo (pino 3 do display).

O potenciômetro:

Esquema de ligação do potenciômetro:



Depois de ligado ficou assim:

Liguei e... não é que funcionou?
O programa que eu usei é o que vem no livro Beginning Arduino, então não dá para publicar cá. Mas o demo que vem no Arduino dá para vc testar. O cuidado que vc tem que tomar é com a linha abaixo:

LiquidCrystal lcd(12, 11, 5, 4, 3, 2);


Essa configuração bate com o que foi ligado no esquema acima.

Esse é o demo funcionando:




O display doado pode ser plugado do mesmíssimo jeito.
Acho que esse é o primeiro post do Hacker Clube SJC da ala do hardware. Dentre as doações tem também um teclado, mas isso é assunto prá outro post.





sábado, 27 de abril de 2013

Automação no Parque, 27/4/13

Hoje, sabadão, dia de Automação no Parque "as usual".

Achei que o movimento ia ser pequeno, mas cheguei no Parque às 7:45 já tinha um aluno esperando. Era do projeto de um rover, que foi comprado nos EUA e veio com um eixo empenado. Aí os caras foram arrumar o eixo, e como um deles trabalha na Embraer, não só rolou um desempeno mas também um novo eixo.
Na hora de montar, eis que se rompe a conexão entre o circuito e o enconder da roda, resultado:
toca a desmontar o mecanismo da roda toda, ganhar um pouco de folga no cabo e ressoldar:



Outro TCC que apareceu por lá hoje foi o do heliostato, sobre o qual vou escrever depois. Também foi um outro TCC onde os caras querem controlar a temperatura ao longo de uma resistência elétrica ligada em 220V. Eles construíram uma bancada de ensaios bem chique, que eu creio que vai dar para fazer muitas práticas interessantes:



Essa é a mesa (bancada) deles. O tudo de cobre contém a resistência de aquecimento, e existe um cursor que posiciona um LM35 (sensor de temperatura) ao longo do tubo. A ideia deles é comandar o equipamento com esse teclado numérico "chiclete" da foto, de maneira a poderem dizer qual a temperatura a ser mantida num determinado ponto. A ideia é comandar, através de PWM e de um TRIAC, a energia no resistor. Acho que vamos aproveitar e fazer um controle integral-derivativo prá galera ver como é.


Apareceram outros dois projetos mais ainda muito no início, apenas detalhamos o projeto e selecionamos os componentes a serem comprados.
Até aqui, diversão pura...
Aí chegou a criançada do Decolar. Começamos com uma prosa sobre robôs e robótica.
Fiz também um paralelo entre o Lego MindStorms e o Arduino, que foi apresentado a eles hoje.
Em seguida eles mesmo fizeram alguns programas no MindStorms, testando várias funcionalidades (escrevendo na tela do MS, acionando motores etc).




Agora, sábado à tarde... Hacker Clube. De noite, show do Arnaldo Antunes. Vidinha boa...


sexta-feira, 26 de abril de 2013

Ethernet break

Outro dia o companheiro de SJC Hacker Clube Duyle gentilmente me emprestou um breakboard Ethernet para eu fazer uns testes de acesso à internet pelo Arduino. A minha ideia era criar um client internet para acessar um webservice feito em C# que eu criei e publiquei na nuvem.
Acontece que eu não consegui de jeito nenhum encontrar como fazer um client usando essa lib. Então, para não perder um embalo, criei um serviço no Arduino para informar a temperatura ambiente do meu quarto via browser.

É muito fácil de fazer.



Esse é o break. De um lado a conexão RJ45 para ligar o "fio azul" (vindo do seu roteador), do outro os pinos para conexão ao Arduino.

A pinagem é essa:



E a conexão com o Arduino é essa:

ENC28J60 Module
  Arduino      Due/UNO
Arduino Mega
VCC
3V3
3V3
RESET
RESET
RESET
ENC-INT
2
2
GND
GND
GND
SCK
13
52
MISO
12
50
MOSI
11
CS
10
53





Para medir a temperatura usei um termsistor como sensor, ligado no jeito clássico, como divisor de tensão, assim:



No caso, são sei de quanto é o meu termistor, mas coloquei um resistor de 1k e funcionou. Aqui uma foto do circuito montado:


Abaixo o circuito do termômetro. A pecinha com a extremidade preta espetada na placa é o termistor.



O código, como é de praxe nesse blog, está publicado abaixo. Foi feito com base no código demo que vem com a própria biblioteca.Aliás, são duas, clique para fazer o download: etherShield.h e ETHER_28J60.h

#include "etherShield.h"
#include "ETHER_28J60.h"

static uint8_t mac[6] = {0x54, 0x55, 0x58, 0x10, 0x00, 0x24};   
// Esse código deve ser único dentro da sua rede.
// A menos que vc tenha mais de uma placa dessa na 
// sua rede, esse valor deve servir.
                                                           
static uint8_t ip[4] = {192, 168, 0, 15};     
// Endereço IP a ser usado para a sua placa.
// Este depende de como a sua rede estiver conectada.
// Descubra o IP da sua máquina e use um parecido, com 
// diferença no último número.

static uint16_t port = 80;
// O padrão é 80

ETHER_28J60 ethernet;

#define sensorPort 0

// Essa função lê a temperatura
int GetTemp()
{
  int sensorValue=analogRead(sensorPort);
  return map(sensorValue,150,174,20,36);   
}

void setup()
{ 
  ethernet.setup(mac, ip, port);
  Serial.begin(9600);
}

void loop()
{
  // Quando houver alguma solicitação de serviço...
  if (ethernet.serviceRequest())
  {
    // monta uma pagina com a temperatura corrente.
    ethernet.print("<H1>Monitoramento de Temperatura no Escrit&oacuterio</H1>");
    ethernet.print("<H2>No momento a temperatura aqui &eacute de ");
    ethernet.print(GetTemp());
    ethernet.print(" &degC</H2>");
    ethernet.respond();
  }
}

Aqui os resultados: ao acessar o "site" com o endereço correspondente, no meu caso: http://192.168.0.15/.

Esse é o resultado obtido:

Ao aquecer o termistor um pouco com o dedo, nova leitura:
É isso. É mole ou não é?
Se alguém souber me dar a dica sobre como fazer o client...


terça-feira, 16 de abril de 2013

Projeto Decolar no Automação no Parque - primeiro encontro

Como acho que já andei escrevendo aqui, agora sou voluntário do projeto Decolar. Resumidamente, é um projeto onde voluntários dão oficinas para alunos de escola públicas com habilidades maiores que a média (não necessariamente QI, mas também) em áreas de interesse dos meninos. Quem me informou sobre o projeto foi a amiga e professora Sílvia Batalha, uma das facilitadoras do projeto na prefeitura. Ela é que fez a ponte entre eu e o projeto, e também vai lá todo sábado. O negócio é muito bem organizado, tem lista de presença e tudo mais.

Eu me ofereci para dar oficinas de programação, automação e robótica aos sábados de manhã, das 10:00 às 12:00. No dia 6/4/2013 fomos apresentados e o trabalho começou. O pessoal da prefeitura trouxe uma caixa com um mundo de peças do Lego Mindstorms, sem manual ou CD de instalação, para que eu destrinchasse. Durante a semana consegui obter os programas e um manual, e descobri que não era um kit mas sim quatro.

No sábado, 13/04/2013, tivemos o nosso primeiro encontro de trabalho com a meninada. A minha ideia é fazer uma pequena palestra sobre algum assunto ligado à área, não mais do que 15 min e depois é só alegria. A primeira tarefa é tentar descobrir quantos kits de Lego completos a gente consegue fazer com as (centenas!) de peças que temos. Separamos um bocado as peças, mas nem deu tempo de separar tudo. No fim mostrei a eles um pouco de como se programa um robô Lego.

Nesse projeto conto com a parceria do nosso Hacker Clube SJC, que  apoia com pessoal e eventualmente com atividades em sua sede.

Espero no próximo sábado poder montar o nosso primeiro autômato.