Show Posts
Pages: [1]
1  International / Portugues / Re: Ajuda com alimentação 12V Arduino (Estou tendo problemas) on: October 18, 2012, 07:17:47 pm
hehehe, pois é...
Pior que se eu tivesse um osciloscópio dava até pra ver que tipo de porcaria estava saindo do 7812 ligado em 12v  smiley-razz.
Mas logo eu troco pelo 7809, pra ficar melhor!  smiley

2  International / Portugues / Re: Ajuda com alimentação 12V Arduino (Estou tendo problemas) on: October 18, 2012, 07:02:11 pm
Então, os 3.3v eu estou usando do próprio Arduino (o meu é o Rev3 e talvez ele tenha um regulador interno porque eu o alimento com 12v no pino Vin e ele consegue fornecer corretamente os 3.3v e os 5v também). Mas enfim, agora até que está funcionando bem, e eu estou utilizando o 7812 mais como uma proteção mesmo, porque como ele fica no carro, cada vez que eu dou umas 'aceleradas', o alternador irá girar mais rápido e a tensão pode subir até os 14v, aliás, eu digo isso porque já ouvi falar, não cheguei a medir e pode ser que o carro já tenha algum regulador de 12v para os fios "pós-chave" que é onde o Arduino está ligado.

Mesmo assim, agradeço muito a sua resposta, e logo eu irei trocar o regulador 7812L que estou usando por um 7809 que eu tenho aqui, afinal eu não estou precisando de 12v pra alimentar nada em especial, eu só terei de trocar alguns resistores...

E sobre a fonte chaveada, eu estava usando uma de computador, dessas comuns e fajutas, mas era pra testar dentro de casa mesmo, porque a idéia é que o negócio fique no carro.

Abraços!
3  International / Portugues / Re: Ajuda com alimentação 12V Arduino (Estou tendo problemas) on: October 10, 2012, 01:31:50 pm
Gente. Eu consegui corrigir o meu problema, eu vou postar a resposta aqui por motivos de consulta futura, caso alguem necessite.
Os ultimos sintomas que eu estava tendo estavam relacionados a comunicacao serial via bluetooth. Eu troquei o fio que eu estava usando para o TX e RX, que era um flat cable em duas vias paralelas, 26 AWG, por um par trançado, desses de cabo de rede. Eu acho que a propria comunicacao estava causando ruidos que o arduino tentava interpretar e o Serial.available() dava sempre um valor maior que Zero.
Para auxiliar eu coloquei o fio por dentro de um tubo de ferrite. Nao sei se vai ajudar, mas colquei mesmo assim..
Agora o bicho esta rodando liso...
Obrigado pela ajuda pessoal!
4  International / Portugues / Re: Ajuda com alimentação 12V Arduino (Estou tendo problemas) on: October 02, 2012, 08:46:33 am
Olá Hugo!

Ontem à noite eu tentei ligar de outra forma, liguei nos 12V do carro, eu adicionei um capacitor eletrolítico de 1000uF em paralelo à alimentação do circuito, nos 12V. Além disso, eu fiz o tal do "Decoupling" com um capacitor cerâmico de 0.1uF bem pertinho (fisicamente) da alimentação da EEPROM, ela agora está funcionando como deveria, agora só restou o problema da comunicação com o Bluetooth, ele está se comportando de maneira parecida quando colocamos dois dispositivos pra conversar no Baud Rate incorreto, ele está 'comendo' partes das strings, hora não diz nada, hora trava.
Quando trava, eu reinicio o arduino mas o Bluetooth continua conectado ao Android, só que durante o Boot do Arduino o Bluetooth parece que libera o cache. Abaixo tem dois screenshots do programa que eu uso pra ver a entrada e saída do Bluetooth, um deles é como ele funciona quando plugado no carregador de celular (5V) e sem aquela parafernália do 7812 (Ele manda certinho as mensagens de Debug). A outra imagem é um print da saída dele quando o bluetooth trava (Não interpreta os comandos) e daí eu aperto o "Reset" na placa do Arduino (Ele escreve um monte de trechos, sem completar nenhum, nesse caso, ele também não interpreta meus comandos).

Resumindo, em média, de 10 comandos que eu envio para o arduino via Bluetooth, ele interpreta apenas 1.
5  International / Portugues / Ajuda com alimentação 12V Arduino (Estou tendo problemas) on: October 01, 2012, 02:36:35 pm
Boa tarde pessoal.
Sou novo no fórum e este é meu primeiro post.

Estou postando aqui a minha duvida, mas, antes dei uma pesquisada e encontrei um outro post que parecia com o meu problema, porém me aconselharam a criar um novo, então aqui estou.  smiley

Pois bem, eu estou pretendendo ligar o arduino, uma memória EEPROM 24c08, um módulo Bluetooth e alguns LEDs RGB (4 unidades). A placa onde estão os LEDs possui catodos comuns, para ligar os anodos, estou utilizando transistores em forma de switch (NPN - BC547). (Chegando em casa eu irei postar o diagrama).
Até aí tudo bem, tudo funciona corretamente quando eu uso o USB do computador para passar o 'sketch' do programa para o arduino e testá-lo. Eu utilizo o Serial Monitor para fazer papel do Bluetooth, enviando comandos e ele interpreta bem. Se eu tirar os 4 LEDs RGB e usar apenas um, por questões de consumo, eu consigo também plugar o arduino em um USB de um carregador de celular (5V - 1A) e ele funciona bem, já testei com o bluetooth e está tudo ok.

Os problemas começam quando eu tento utilizar uma fonte externa, simulando o ambiente onde ele irá operar pra valer. Eu utilizo uma fonte do tipo "Switching Supply" que eu tenho em casa, dessas de computador antigo, para fornecer 12V. Eu construí uma pequena plaquinha com um regulador de tensão 7812 com dissipador, um fusível de 0.5A (Afinal eu não quero consumir mais que isso, então melhor que ele queime antes) e dois capacitores de cerâmica de 0.1uF cada, ligados entre o GND e o Vin e Vout. Essa plaquinha fornece 10v para o Arduino (Por causa da queda de tensão de 2V do regulador, até aí normal). Os 10V eu estou conectando no pino Vin do arduino, e o GND no GND do arduino.
O mini array de LEDs possui 5 fios, o GND dele eu ligo direto no GND compartilhado entre a mini-fonte 10~12V (acima), o VCC dele eu ligo direto na mesma trilha da plaquinha que fornece os 10~12V e os outros três fios são canais RGB que eu ligo no emissor de cada transistor (São 3 transistores, um para cada canal). O coletor destes transístores está ligado através de um resistor de 2200ohms nos pinos 9, 10 e 11 do arduino.
O Bluetooth está sendo alimentado por 3.3v, antes era por 5v, mas dá o mesmo problema em qualquer tensão que eu ligue.
A memória EEPROM está ligada em 5V e no SDA / SCL do arduino, pinos analógicos 4 e 5, e claro, GND do arduino.

Agora o problema: quando eu ligo em 12V, parece que tem algum 'ripple', ou ruído na alimentação que deixa o arduino totalmente esquisito, ele não consegue conversar com o meu android via Bluetooth e não consegue ler a EEPROM pra carregar a pré-configuração (Que eu testei diversas vezes anteriormente, via USB).
Eu estou desconfiando que seja isso, porém, só a experiência de vocês poderá me ajudar.

Obrigado pela atenção, e também por ter lido tudo isso, eu tentei detalhar ao máximo porque o meu raschunho do 'fritzing' tá em casa, o código fica no Dropbox então eu irei postá-lo abaixo:

Code:
#include <Wire.h>
#define eeprom 0x50
#define tCFG 2         // Melhor usar no máximo 16 bytes (Por causa do tamanho da página da EEPROM
#define PR 9
#define PG 10
#define PB 11
#define ACK  B01111001 //B10000000
#define VERM B00110001
#define VERD B00110010
#define AZUL B00110011
#define CIAN B00110100
#define AMAR B00110101
#define MAGE B00110110
#define BRAN B00110111
#define LARA B00111000

// Dados Globais
byte CFG[tCFG]; // Vetor de configuracoes
byte R = 0x0;
byte G = 0x0;
byte B = 0x0;
byte cmd,val,ack = B00000000;

void setup(void)
{
  Wire.begin();  
  Serial.begin(9600);

  pinMode(PR,OUTPUT);
  pinMode(PG,OUTPUT);
  pinMode(PB,OUTPUT);

  //Serial.println("Carregando configuracoes...");
  configurar();
  inicializar();
 
  for(int i=0; i<tCFG; i++)
  {
    Serial.print(">");
    Serial.println(CFG[i]);
  }
}

void loop()
{
  boolean ajustarLED = false;
  byte cor = CFG[0];
  
  while(Serial.available()>0)
  {
    delay(4);
    cmd = Serial.read();    
    delay(2);
    val = Serial.read();    
    delay(2);
    ack = Serial.read();    
    delay(2);

    Serial.print("Comando:");
    Serial.println(cmd);
    Serial.print("Valor: ");
    Serial.println(val);
    Serial.print("Fim: ");
    Serial.println(ack);

    if(cmd == ACK)
    {
      CFG[0] = (val-0x30);
      ajustarLED = true;
    }
    else
    {
      Serial.print("Nao entendi: ");
      Serial.print(cmd);
      Serial.print(", ");
      Serial.print(val);
      Serial.print(", ");
      Serial.println(ack);
    }

    cmd = val = ack = B00000000;
  }
  
  if(ajustarLED)
  {
    corLED(CFG[0]);
    mudarLED();
    gravarCFG();
    ajustarLED = false;
    Serial.print("LED Ajustado! ");
    Serial.println(CFG[0]);
  }
}

void configurar()
{
  boolean reconfig = false;
  lerCFG();
  // Tratar os valores padrao
  if(CFG[0]>0xF) { CFG[0] = 0x2; reconfig = true; }               // Cor padrao do painel
  if(CFG[1]!=0x0||CFG[1]!=0x1) { CFG[1] = 0x1; reconfig = true; } // Os LED estarao acesos ou nao?
  
  // Se houveram modificações, precisa gravar de novo
  if(reconfig)
  {
    Serial.println("Foi necessario reconfigurar a EEPROM");
    gravarCFG();
  }
}

void inicializar()
{
  corLED(CFG[0]);
  mudarLED();
}

void gravarCFG()
{
  Wire.beginTransmission(eeprom);
  Wire.write(B10100000);
  Wire.write(B00000000);
  for(int i=0;i<tCFG;i++)
  {
    delay(10);
    Wire.write(CFG[i]);
  }
  Wire.endTransmission();
}

byte lerCFG()
{
  Wire.beginTransmission(eeprom);
  Wire.write(B10100001);
  Wire.endTransmission();
  Wire.requestFrom(eeprom,tCFG);
  for(int i=0;i<tCFG;i++)
  {
    if (Wire.available())
      CFG[i] = Wire.read();  
    delay(5);
  }
}

// Função para ajustar e exibir a cor do led RGB
void corLED(byte pCor)
{
  switch(pCor)
  {
    case 0x0: R=0xFF; G=0x00; B=0x00;  break;
    case 0x1: R=0x00; G=0xFF; B=0x00;  break;
    case 0x2: R=0x00; G=0x00; B=0xFF;  break;
    case 0x3: R=0x00; G=0xFF; B=0xFF;  break;
    case 0x4: R=0xFF; G=0xFF; B=0x00;  break;
    case 0x5: R=0xFF; G=0x00; B=0xFF;  break;
    case 0x6: R=0xFF; G=0xFF; B=0xFF;  break;
    case 0x7: R=0xFF; G=0x40; B=0x00;  break;
    default:  R=0x00; G=0x00; B=0xFF;  CFG[0] = 0x2;  break;
  }
}

void mudarLED()
{
  if(CFG[1]==0x1)
  {
    analogWrite(PR,R);
    analogWrite(PG,G);
    analogWrite(PB,B);
  }
}



EDITADO: Segue a imagem do circuito:
6  International / Portugues / Re: [Ajuda] Problema ao ligar arduino no carro com bateria 12v, LCD 16x2 fica maluco on: October 01, 2012, 12:00:20 pm
Ok, pode deixar que eu irei abrir um novo post detalhando meu problema e postarei o código fonte que estou usando e os esquemas!
Grato! 
smiley
7  International / Portugues / Re: [Ajuda] Problema ao ligar arduino no carro com bateria 12v, LCD 16x2 fica maluco on: October 01, 2012, 11:29:33 am
Gente, sou novo no fórum e peço mil desculpas por meu primeiro post já ser um desenterro ao tópico (Eu vi a data antes de postar).
Porém, esse é o que mais se encaixa na minha situação:
Eu fiz um pequeno projeto pra colocar no carro (hobby mesmo) e tem algumas características parecidas com os problemas do nosso amigo.
O projeto consiste em um Arduino Uno Rev3, um módulo TTL Bluetooth (MCU do Dealextreme), uma memória EEPROM 24c08. Ele funciona da seguinte forma: Quando o Arduino é ligado, ele lê da EEPROM um vetor de configurações, as configurações são alteradas em tempo de execução atráves do Bluetooth e salvas na EEPROM novamente. Há também um pequeno módulo que eu mesmo fiz que consiste em alguns transistores fazendo papel de switch para ligar LEDs RGB. Na primeira fase do meu projeto, a unica coisa que ele irá fazer é receber um comando via Bluetooth (Uma cor que eu escolho via android) e então reproduzir esta cor nos leds RGBs.
O problema é que eu testei ele com uma fonte 12v daquelas de computador, e o bicho (Arduino), fica doido, ele não consegue receber os comandos corretamente, e também não responde adequadamente.
Eu suspeito que seja algum ruído no circuito porém não tenho como ter certeza pois não tenho um osciloscópio, e via multímetro as voltagens (12Vcc e 5Vcc) parecem contínuas (Fica em 10.48 ~ 10.56 por causa do 7812 e 5.01 os 5v do Arduino). Quando eu alimento o projeto via USB, tudo funciona normal, embora os LEDs fiquem bem fracos por conta de eles terem sido preparados para 12V (Resistores de 1K no verde e azul e 470 ohms no vermelho).
Eu estou usando um regulador 7812 com dois capacitores cerâmicos de 0.1uF entre a entrada (Vin) e o terra (GND) e a saída (Vout) e o terra também.

Alguém sabe uma maneira eficiente de filtrar a entrada? Pois eu desconfio que quando eu colocar isso nos 12V do carro, por causa do alternador quando ele estiver ligado irá ter o mesmo problema.

Detalhes:
A entrada é de 12V (Que via regulador de tensão cai para cerca de 10V no pino Vin do Arduino).
O terra eu conectei ao GND do Arduino.
A EEPROM não está sendo gravada quando eu ligo na fonte 12V e ela está conectada via I²C, sendo que o BUS está nos pinos 4 e 5 analógicos.
O Bluetooth está sendo alimentado agora nos 3.3v e o RX dele no TX do arduino versa-vice e vice-versa (Antes estava nos 5v, mesmo problema).
Quando eu toco a parte de metal do cristal do clock na placa do arduino (Aquele escrito 16.000MHz) os leds de TX e RX piscam aleatoriamente e as vezes travam com um ligado, enfim, esquisito mesmo.

Bom, gente, eu forneci o máximo de informações pra tentar deixar claro o que está ocorrendo, eu já tentei várias abordagens, porém preciso da experiência de vocês pra ver o que posso fazer para que meu projeto funcione. Obrigado!
Pages: [1]