ACS 712 em corrente alternada (CA)

Depois de algumas pessoas terem me dito que o ACS712 retorna valores negativos em Corrente Alternada (CA) resolvi dar uma pesquisada e encontrei um Sketch que pode resolver o problema.

Ainda não testei o código, mas compilou legal no IDE 1.5.2. Pelo código é para funcionar sem muita dificuldade.

Neste post também estou testando a forma correta de colocar códigos no blog. Da forma como eu vinha fazendo não dava para copiar e colar no IDE.

//retirado de <a href="http://www.seriallink.com.br/forum/viewtopic.php?f=46&t=1900">http://www.seriallink.com.br/forum/viewtopic.php?f=46&t=1900</a>
const int sensorPin = A0;
float sensorValue_aux = 0;
float sensorValue = 0;
float currentValue = 0;
float voltsporUnidade = 0.0048828125;

void setup() {

Serial.begin(9600);
}

void loop() {

 for(int i=500; i>0; i--)
 {
 sensorValue_aux = (analogRead(sensorPin) -511); // le o sensor na pino analogico A0 e ajusta o valor lido ja que a saída do sensor é vcc/2 para corrente =0
 sensorValue += pow(sensorValue_aux,2); // soam os quadardos das leituras no laco
 }

sensorValue = (sqrt(sensorValue/ 500)) * voltsporUnidade; // finaliza o calculo da méida quadratica e ajusta o valor lido para volts
 currentValue = (sensorValue/66)*1000; // calcula a corrente considerando a sensibilidade do sernsor (66 mV por amper)

 // mostra o resultado no terminal
 Serial.print("corrente = " );
 Serial.print(currentValue);
 Serial.print("\n" );
 sensorValue =0;
 delay(150);

}

Com esse código é possível medir corrente de lampadas, eletrodomésticos e outros.
O que o código faz é uma transformação quadratica para que os resultados sejam mostrados da forma correta. No caso da corrente contínua essa transformação não é necessária.

Código para Shield Ethernet e módulos de relé

Segue código que encontrei na net para uso com shields de ethernet e módulos com relés.

Verificado com o IDE 1.5 e testado em um Arduino UNO

Código:


#include <Dhcp.h>
 #include <Dns.h>
 #include <Ethernet.h>
 #include <EthernetClient.h>
 #include <EthernetServer.h>
 #include <EthernetUdp.h>
 #include <util.h>

/*

Original Version by Poldi
 modified by Katsu

the functions readString.append() and readString.contains() where replaced

*/

#include <SPI.h> // insert by Katsu
 // #include <WString.h> removed by Katsu

byte mac[] = {
 0xDE, 0xAD, 0xBE, 0xEF, 0xFE, 0xED };
 IPAddress ip(192,168,0, 177);
 EthernetServer server(80);

int Pin3 = 3;
 int Pin4 = 4;
 int Pin5 = 5;
 int Pin6 = 6;

String readString = String(100); // string for fetching data from address
 boolean Pin3ON = false; // Status flag
 boolean Pin4ON = false;

void setup(){
 Ethernet.begin(mac, ip);
 server.begin();
 pinMode(Pin3, OUTPUT);
 pinMode(Pin4, OUTPUT);

Serial.begin(9600); }

void loop(){

// Create a client connection
 EthernetClient client = server.available();
 if (client) {
 while (client.connected()) {
 if (client.available()) {
 char c = client.read();

//read char by char HTTP request
 if (readString.length() < 100) {

//store characters to string
 // readString.append(c); removed by Katsu
 readString = readString + c; // insert by Katsu
 // very simple but it works...
 }

Serial.print(c); //output chars to serial port

if (c == '\n') { //if HTTP request has ended

// readString.contains() replaced with readString.indexOf(val) > -1 by Katsu
 // indexOf locates a character or String within another String.
 // Returns the index of val within the String, or -1 if not found.
 if(readString.indexOf("3=einschalten") > -1) {
 digitalWrite(Pin3, HIGH);
 Serial.println("Pin 3 eingeschaltet!");
 Pin3ON = true;
 }
 if(readString.indexOf("3=ausschalten") > -1){
 digitalWrite(Pin3, LOW);
 Serial.println("Pin 3 ausgeschaltet!");
 Pin3ON = false;
 }
 if(readString.indexOf("4=einschalten") > -1) {
 digitalWrite(Pin4, HIGH);
 Serial.println("Pin 4 eingeschaltet!");
 Pin4ON = true;
 }
 if(readString.indexOf("4=ausschalten") > -1){
 digitalWrite(Pin4, LOW);
 Serial.println("Pin 4 ausgeschaltet!");
 Pin4ON = false;
 }

if(readString.indexOf("all=Alles+aus") > -1){
 digitalWrite(Pin3, LOW);
 digitalWrite(Pin4, LOW);
 Serial.println("Alles ausgeschaltet");
 Pin3ON = false;
 Pin4ON = false;
 }
 //--------------------------HTML------------------------
 client.println("HTTP/1.1 200 OK");

client.println("Content-Type: text/html");

client.println();

client.print("<html><head>");

client.print("<title>Arduino Webserver Poldi</title>");

client.println("</head>");

client.print("<body bgcolor='#444444'>");

//---Überschrift---
 client.println("<br><hr />");

client.println("<h1><div align='center'><font color='#2076CD'>Arduino Webserver 1.0 by Poldi</font color></div></h1>");

client.println("<hr /><br>");
 //---Überschrift---

//---Ausgänge schalten---
 client.println("<div align='left'><font face='Verdana' color='#FFFFFF'>Ausg&auml;nge schalten:</font></div>");

client.println("<br>");

client.println("<table border='1' width='500' cellpadding='5'>");

client.println("<tr bgColor='#222222'>");

client.println("<td bgcolor='#222222'><font face='Verdana' color='#CFCFCF' size='2'>Ausgang 3<br></font></td>");

client.println("<td align='center' bgcolor='#222222'><form method=get><input type=submit name=3 value='einschalten'></form></td>");

client.println("<td align='center' bgcolor='#222222'><form method=get><input type=submit name=3 value='ausschalten'></form></td>");

if (Pin3ON)
 client.println("<td align='center'><font color='green' size='5'>ON");
 else
 client.println("<td align='center'><font color='#CFCFCF' size='5'>OFF");

client.println("</tr>");

client.println("<tr bgColor='#222222'>");

client.println("<td bgcolor='#222222'><font face='Verdana' color='#CFCFCF' size='2'>Ausgang 4<br></font></td>");

client.println("<td align='center' bgcolor='#222222'><form method=get><input type=submit name=4 value='einschalten'></form></td>");

client.println("<td align='center' bgcolor='#222222'><form method=get><input type=submit name=4 value='ausschalten'></form></td>");

if (Pin4ON)
 client.println("<td align='center'><font color='green' size='5'>ON");
 else
 client.println("<td align='center'><font color='#CFCFCF' size='5'>OFF");

client.println("</tr>");
 client.println("</tr>");

client.println("</table>");
 client.println("<br>");

client.println("<form method=get><input type=submit name=all value='Alles aus'></form>");

client.println("</body></html>");

//---Ausgänge schalten---

//clearing string for next read
 readString="";

//stopping client
 client.stop();
 }}}}}

Mapa para toca do Urso no AC3

 

A marcação em vermelho na foto mostra o local onde fica a toca do urso que aparece em uma das missões dos caçadores e onde caço ursos quando preciso de dinheiro.
20130323_215123

PCB com tinta para máscara de solda (PCB UV Curable Solder Mask)

Bom pessoal, ainda não o tutorial para usar as tintas para máscara de solda que são vendidas no Ebay, mas pelo menos fiz algumas fotos para mostrar como ficam as placas depois de reveladas.

Comprei essa tinta para mascara de solda pelo Ebay. Não sai caro e da pra fazer muitas placas. Um potinho com 100g saiu por uns R$15,00 na cor azul e R$12,00 o verde. No método fotográfico, a tinta contém um fotossensibilizante que reage com alguma onda luminosa e se polimeriza, onde não pega a luz não ocorre a polimerização. Existe vários tipos de tinta para esse fim, mas o que muda de uma tinta para outra são só alguns detalhes no procedimento e a forma de fazer a “revelação” da foto.

Basicamente o que faço é o seguinte:

  1. Preparo do fotolito (pode ser laser ou jato de tinta, mas a laser oferece qualidade melhor);
  2. limpeza da placa;
  3. aplica uma quantidade pequena de tinta numa das extremidades da placa e cobre com um plastico bem fino e transparente (Tenho usado saquinhos para embalar bijuterias, fácil de achar nessas lojas de R1,99);
  4. passa um rolo, suavemente, sobre o plastico para espalhar a tinta sobre a placa;
  5. Coloca o fotolito sobre a placa (não precisa retirar o plastico que foi usado para aplicar a tinta. No fórum que aprendi a usar essa tinta o cara passava a tinta direto na transparência, mas colocando esse plastico entre a placa e o fotolito vc pode usa-lo mais vezes);
  6. Leva para polimerizar;
  7. Remove a tinta não sensibilizada com Álcool isopropílico, gasolina ou solvente. Eu uso Álcool isopropílico e algodão;
  8. Corroer (Eu tenho usado ácido muriático + água oxigenada);

Essa tinta para mascara de solda que tenho usado polimeriza com raios UV, então tenho usado uma lampada de luz negra de 25W (Emite UV-A, fácil de achar e custa uns R$20,00) por 35 minutos.

As  tintas para silkscreen polimerizam bem mais rápido, mas não consegui correr as placas.

Uso a tinta para fazer a PCB, para fazer a marcara depois da corrosão e em outras placas quando precisam de reparo na mascara.

Esse final de semana ia fazer um tutorial, mas não rolou. Mesmo assim, só para mostrar a um colega como funciona o processo fiz rapidinho uma placa. Segue algumas fotos:

Fiz tudo bem rápido, pois era só pra mostrar para um colega, então é possível um resultado bem melhor.

No fotolito que usei tinha vários circuitos iguais de aproximadamente 5,5 x 2,1cm para confecção de um Arduino básico com o ATmega328P, mas errei no tamanho dos pads e vou refazer a placa. Como era só pra demonstração usei o fotolito errado mesmo.

Pote de tinta com 100g

Pote de tinta com 100g

Placa com a tinta ja polimerizada

Placa com a tinta ja polimerizada

Detalhe da impressão na placa

Detalhe da impressão na placa

Detalhe da impressão na placa

Detalhe da impressão na placa

Detalhe da impressão na placa

Detalhe da impressão na placa

Lampada usada para sensibilização

Lampada usada para sensibilização

Plástico com a tinta não polimerizada

Plástico com a tinta não polimerizada

Dicas – confecção de PCB por método fotográfico (breve)

Consegui finalmente adaptar o método fotográfico de confecção de PCB para uma das tintas que tenho disponível. Quero ver se faço um passo a passo logo logo.:-)  Pra adiantar, as placas que fiz até agora ficaram muito boas e o custo é baixo. A tinta que estou usando custa entre U$5 e U$8, algo em torno dos R$16,00 (Ebay), por 100g (Da pra fazer muitas placas).
Aguardem…

Contas tipos ALIAS no Outlook.com

Quem tem contas antigas de e-mail e uma vida ativa na internet sabe como é difícil gerenciar SPANS hoje em dia. Minha conta do Gmail tem mais de 9 anos de uso (essa conta ainda é da época que para ter um gmail era necessário um convite e cada pessoa convidada só podia convidar mais 10).

O problema maior é que uso a mesma conta para quase tudo e dai surge a minha dor de cabeça diária para separa o que é útil do que é inútil. Já criei outras contas de e-mail, para não fazer cadastro em foruns, por exemplo, com a minha conta pessoal, mas quem é que aguenta fazer login e monitorar várias contas todos os dias? Recentemente descobri uma solução para o meu problema, os ALIAS do outlook.com. A conta Alias não é novidade, pois já estava disponível no hotmail, mas eu nunca tinha usado.

O que é a conta Alias no outlook.com/hotmail?

É um endereço de e-mail criado dentro de um endereço já existente. 🙂

Por que criar um alias? Algumas pessoas gostam de usar vários endereços de email para diferentes atividades. Por exemplo, você pode usar um endereço para procurar emprego e outro para fazer compras online. Dessa forma, as mensagens enviadas a esses endereços podem ser mantidas em pastas separadas.

Digamos que eu tenha um e-mail chamado zeblog@live.com, mas não quero usar esse e-mail para cadastros na internet, então eu crio um ALIAS dentro dele. O Alias pode ficar como uma pasta dentro do e-mail principal, podendo ser usada para recebimento de e-mails e também para envio.

 

Entre na sua conta do Outlook.com/hotmail/MSN/Live

Caixa de entrada

 

Vá em configurações (1) e clique em Mais configurações (2)

Caixa de entrada 2

 

Clique em “Criar um alias”

Criar alias

Escolha o endereço da conta Alias. As opções de endereço são @outlook.com, @hotmail.com, @hotmail.com.br ou @live.com

Escolher email

Nesta tela é exibido a opção para criar uma pasta para receber os e-mails enviados para o Alias que acabamos de criar ou enviar para caixa de entrada. Eu, particularmente, prefiro usar uma pasta, pois fica mais fácil de visualizar os e-mails, mas vai depender da preferencia de cada um.

confirmação

 

Na minha pagina de entrada o Alias aparece como uma pasta. A vantagem do alias sobre criar uma nova conta é que não é necessário preencher todo o cadastro e não é necessário fazer vários logins e senhas para olhar todos os e-mails. Fazendo apenas o login na conta principal a pessoa tem acesso aos e-mails da conta principal e dos Aliases criados nela.

Caixa de entrada com alias

 

Os Alias podem ser usados também para enviar e-mail e não somente para receber

Escolher para enviar

O Alias é facilmente descartado nas opções de conta da Microsoft, onde podemos facilmente excluir o Alias sem perder a conta principal. 🙂

Excluir

 

 

 

 

Dicas – Laboratório de Garagem

Laboratório de Garagem

O Laboratório de Garagem é um site bastante conhecido por quem está no mundo dos Arduinos, é um Fórum com um ar de rede social para entusiastas da eletrônica. O número de frequentadores é grande, o que pode ser comprovado pela quantidade de membros registrados online no bate papo. Ultimamente tenho recorrido bastante a eles, pois agrega um número elevado de pessoas que ja tem experiência com o Arduino e não veem problema algum em ajudar. Tenho tentanto ajudar na medida do possível, mas meu conhecimento ainda não é lá grande coisa.

O endereço para quem quiser dar uma olhada é http://labdegaragem.com

 

Não sei muito sobre a criação do site, mas segue a descrição deles na Aba “Sobre”:

O Laboratório de Garagem é uma iniciativa voltada para a integração, colaboração e apoio aos desenvolvedores independentes de ciência e tecnologia, ou como gostamos de ser chamados: garagistas.

Somos uma rede social, um laboratório comunitário localizado em São Paulo, uma incubadora, uma loja virtual e um grupo de pessoas que acreditam que a próxima revolução pode (e vai) sair de uma garagem, ainda mais se ela estiver conectada a muitas outras garagens.

Conheça nossas iniciativas e faça parte:

Rede Social Lab de Garagem

Rede social que oferece diversos recursos para interação e colaboração entre seus membros (fórum, wiki, blog, etc)
www.labdegaragem.com

Espaço Lab de Garagem

Laboratório comunitário gratuíto que oferece infra-estrutura necessária para o desenvolvimento de projetos e protótipos, contando com ferramentas, equipamentos e suprimentos.
www.labdegaragem.com.br/espaco

Incubadora Lab de Garagem

Localizada no Espaço LdG, a incubadora oferece estrutura básica de escritório e apoio de marketing, logística e administração, para que os projetos desenvolvidos por garagistas possam se tornar em produtos e novas empresas.
www.labdegaragem.com.br/incubadora

Loja Lab de Garagem

Loja virtual que oferece peças, componentes e acessórios para que garagistas de todo o Brasil possam dar vida ás suas ideias. Entre outras marcas, a Loja LdG é distribuidora oficial da SparkFun.com, oferecendo além dos produtos em estoque, qualquer produto que conste no catálogo da empresa. Visite www.sparkfun.com e nos envie os links dos produtos para cotação.
http://loja.labdegaragem.com.br

Endereço:

Rua Berta, 60
Vila Mariana
04120-040 – São Paulo/SP
(11) 3804-0126

 

Horário:

Segunda a Sexta: das 9h00 às 20h00