Pages: 1 ... 9 10 [11] 12 13 ... 30   Go Down
Author Topic: Automação residencial em módulos  (Read 63344 times)
0 Members and 1 Guest are viewing this topic.
Aracaju, SE, Brasil
Offline Offline
Sr. Member
****
Karma: 4
Posts: 323
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

Concordo que normalmente seria isso, mas porque ele informa um range de corrente, e não somente a corrente máxima? Achei meio estranho, mas...
Logged

aracaju/se
Offline Offline
Jr. Member
**
Karma: 0
Posts: 61
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

Também achei estranho citar o range.
Semana passada compramos duas fontes dessas para alimentar alguns equipamentos wireless no trabalho e o consumo não chega a 2A. Esta rodando sem problema.
Já tínhamos uma fonte semelhante (fisicamente pelo menos) a essa em um rack da Oi alimentando um bastidor com modems adsl. Apesar de termos reserva, nunca vi essas fontes darem defeito.
Uma outra alternativa mais barata e fácil de encontrar seria uma fonte de computador, nela você +12v, -12v, 5v e 3.3v com suporte até 20A de carga dependendo da fonte.
Logged

'round the world...
Offline Offline
Faraday Member
**
Karma: 42
Posts: 3214
View Profile
WWW
 Bigger Bigger  Smaller Smaller  Reset Reset

Dá só a partir do dia 15, pois estou embarcado, sem acesso aos códigos.

Férias de luxo? Ou trabalho mesmo? smiley-razz
Logged

Eu não sou o teu criado. Se respondo no fórum é para ajudar todos mediante a minha disponibilidade e disposição. Responder por mensagem pessoal iria contra o propósito do fórum e por isso evito-o.
Se realmente pretendes que eu te ajude por mensagem pessoal, então podemos chegar a um acordo e contrato onde me pagas pela ajuda que eu fornecer e poderás então definir os termos de confidencialidade do meu serviço. De forma contrária toda e qualquer ajuda que eu der tem de ser visível a todos os participantes do fórum (será boa ideia, veres o significado da palavra fórum).
Nota também que eu não me responsabilizo por parvoíces escritas neste espaço pelo que se vais seguir algo dito por mim, entende que o farás por tua conta e risco.

Dito isto, mensagens pessoais só se forem pessoais, ou seja, se já interagimos de alguma forma no passado ou se me pretendes convidar para uma churrascada com cerveja (paga por ti, obviamente).

Aracaju, SE, Brasil
Offline Offline
Sr. Member
****
Karma: 4
Posts: 323
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

Dá só a partir do dia 15, pois estou embarcado, sem acesso aos códigos.

Férias de luxo? Ou trabalho mesmo? smiley-razz

hehehe, trabalho mesmo, plataforma de petróleo smiley-razz.
Logged

'round the world...
Offline Offline
Faraday Member
**
Karma: 42
Posts: 3214
View Profile
WWW
 Bigger Bigger  Smaller Smaller  Reset Reset

LOL Quem diria que estamos ligados pelo nosso trabalho também, hein???

Queres dizer o nome a ver se eu a conheco? smiley
Logged

Eu não sou o teu criado. Se respondo no fórum é para ajudar todos mediante a minha disponibilidade e disposição. Responder por mensagem pessoal iria contra o propósito do fórum e por isso evito-o.
Se realmente pretendes que eu te ajude por mensagem pessoal, então podemos chegar a um acordo e contrato onde me pagas pela ajuda que eu fornecer e poderás então definir os termos de confidencialidade do meu serviço. De forma contrária toda e qualquer ajuda que eu der tem de ser visível a todos os participantes do fórum (será boa ideia, veres o significado da palavra fórum).
Nota também que eu não me responsabilizo por parvoíces escritas neste espaço pelo que se vais seguir algo dito por mim, entende que o farás por tua conta e risco.

Dito isto, mensagens pessoais só se forem pessoais, ou seja, se já interagimos de alguma forma no passado ou se me pretendes convidar para uma churrascada com cerveja (paga por ti, obviamente).

Offline Offline
God Member
*****
Karma: 12
Posts: 510
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

(...)
Uma forma fácil de você verificar essas coisas é com um voltímetro. É só medir a corrente que o seu circuito puxa, ligando em uma fonte com maior amperagem você vai verificar que o seu circuito não vai puxar mais corrente em função disso.

Me corrijam se eu estiver errado.

Até onde entendo (corrijam-me se me falta algo de entendimento), é exatamente isso.

Na fonte temos indicação da capacidade de fornecer corrente, "pode ser que" os 2A sejam referenciais e os 12A sejam a capacidade máxima, ou seja, se exigir mais que 12A do canal de o funcionamento fica comprometido. Normalmente temos a tabela de mínimo/tipico/máximo nos datasheets, o que deixa bem claro, neste caso creio que só o fabricante pode dizer com certeza.
Logged

Aracaju, SE, Brasil
Offline Offline
Sr. Member
****
Karma: 4
Posts: 323
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

Fiz uma alteração na biblioteca do RS485, mas como não tenho como testar (fiz somente no bloco de notas), vou colocar um exemplo de código Master - Slave utilizando ela (novamente, não tenho como testar, então se aparecer algum erro, me avisem!).

Primeiro vamos ao protocolo. A parte que nos interessa é a seguinte:

- int id: ID do módulo de destino da mensagem;
- char command: caracter do comando (por exemplo "L" para definir status das lâmpadas, "S" para informar valor de sensor, etc.);
- int function: número do comando/função (por exemplo, S02 requisita o valor do sensor 2);
- byte data1 ... byte data4: dados.

No exemplo abaixo o Master manda o Slave acender uma lâmpada ("L01") e 500 ms depois manda apagar, e depois de 500 ms manda acender novamente. Como é só uma lâmpada, para acender usarei os dados 0001 e apagar 0000:

Code:
#include "MasterSlaveFuji.h"

// Utilizarei o ID do Master como sendo 0
#define ID 0

// O pino 2 será utilizado para enable/disable do RS485
#define ENABLEPIN 2

MasterSlaveFuji *rs485;

void setup()
{
  pinMode(ENABLEPIN,OUTPUT);
  Serial.begin(9600);
  rs485 = new MasterSlaveFuji(ID, &Serial, ENABLEPIN);
}

void loop()
{
  // Envia comando L01 para o slave 02 para acender a lâmpada:
  rs485->sendENQ(2, 'L', 1, MasterSlaveFuji::Positive, '0', '0', '0', '1');
 
  // Aguarda confirmação de que o comando foi recebido, com 500 ms de time out:
  rs485->waitForMessage(500);
 
  // Verifica se houve resposta e se ela foi do tipo ACK (Acknowledgement). Se não for, tratar erro
  if ((!rs485->updated()) || (rs485->type != MasterSlaveFuji::ACK))
  {
    // Tratar erro
  }
 
  // Aguarda 500 ms
  delay(500);
 
  // Envia comando L01 para o slave 02 para apagar a lâmpada:
  rs485->sendENQ(2, 'L', 1, MasterSlaveFuji::Positive, '0', '0', '0', '0');
 
  // Aguarda confirmação de que o comando foi recebido, com 500 ms de time out:
  rs485->waitForMessage(500);
 
  // Verifica se houve resposta e se ela foi do tipo ACK (Acknowledgement). Se não for, tratar erro
  if ((!rs485->updated()) || (rs485->type != MasterSlaveFuji::ACK))
  {
    // Tratar erro
  }
 
  // Aguarda 500 ms
  delay(500);
 
}

O código do slave seria o seguinte (para a lâmpada usaremos o pino 13, aproveitando o LED do Arduino Uno):

Code:
#include "MasterSlaveFuji.h"

// Slave com ID 2
#define ID 2

// O pino 2 será utilizado para enable/disable do RS485
#define ENABLEPIN 2

// Pino da lâmpada
#define LEDPIN 13

MasterSlaveFuji *rs485;

void setup()
{
  pinMode(ENABLEPIN,OUTPUT);
  pinMode(LEDPIN,OUTPUT);
  Serial.begin(9600);
  rs485 = new MasterSlaveFuji(ID, &Serial, ENABLEPIN);
}

void loop()
{
 
  // Espera um comando:
  rs485->waitForMessage(500);
 
  // Verifica se tem uma nova mensagem/comando:
  if (rs485->updated())
  {
    // Verifica se o comando do tipo ENQ:
    if (rs485->type == ENQ)
    {
      // Verifica se o comando foi o F01:
      if ((rs485->command == 'F') && (rs485->function == 1))
      {
        // Acende ou apaga a lâmpada:
        digitalWrite (LEDPIN,rs485->data4 == '1');
       
        // Informa ao Master que o comando foi entendido e realizado:
        rs485->sendACK(0, 'F', 1, rs485->sign, rs485->data1, rs485->data2, rs485->data3, rs485->data4);

      }
      else
      {
        // Informa que a função não é reconhecida
        rs485->sendNAK(0, rs485->command, rs485->function, rs485->sign, rs485->data1, rs485->data2, rs485->data3, rs485->data4);
      }
    }
    else
    {
      // Trata se o comando não foi do tipo ENQ
    }
  }
}

Qualquer dúvida, podem perguntar!
Logged

Aracaju, SE, Brasil
Offline Offline
Sr. Member
****
Karma: 4
Posts: 323
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

Desculpem o double post, mas queria consultar os senhores sobre uma outra questão.

Estava fazendo as contas da corrente necessária para cada módulo. Cheguei às seguintes contas:

- Considerando 2 relés: 2 x (80 mA (relé) + 20 mA (optoacoplador))= 200 mA (apesar do vendedor falar em 15-20 mA por relé, só encontrei datasheet que fala em 71,4 mA, então não sei o que considerar);
- RS485: pelo o que entendi, praticamente não consome energia (900 uA);
- 6 leds: 6 x 30 mA = 180 mA;
- ATMega328P: 50 mA? 100 mA?
- Sensores: 100 mA (muito? pouco?).

- Total: 580 mA x 5V = 2,9 W

Considerando uns 30 módulos (devem ser menos, mas para efeito de cálculo, devo exagerar), seriam 87 W. Colocando ineficiência, erro de cálculo, etc., vamos chutar uns 150 W. Alimentando tudo com 12V, eu poderia chegar a 12,5 A, é isso mesmo? Fiquei um tanto assustado agora.

Levando em conta que vai funcionar a metade do tempo, seriam cerca de 54 kWh por mês, que me custariam uns R$ 16,00. Como está tudo exagerado (não vou ficar 12h por dia com todas as lâmpadas acesas), o custo mensal não está ruim, mas a corrente estou achando muito alta...
« Last Edit: July 07, 2013, 07:48:26 am by LegendBR » Logged

Portugal
Offline Offline
Edison Member
*
Karma: 37
Posts: 1531
Pretending you know everything then you will learn nothing.
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

Quote
Como está tudo exagerado (não vou ficar 12h por dia com todas as lâmpadas acesas), o custo mensal não está ruim, mas a corrente estou achando muito alta...
Olhando assim para as tuas contas por alto parecem correctas. De facto a fonte vai ter de ser bem jeitosa para debitar os 12 A.
Ja agora uma pergunta off-topic visto estares a contruires a casa a parte electrica vai depender inteiramente neste sistema que estas a construir ou irá ficar paralelo ao sistema tradicional?
É que se dependeres totalmente do sistema que estas a montar e depois tiveres algum problema com o sistema(bug no codigo, falha de design, os bicos que custumam aparecer quando se desenvolve)ficas tramado.

Logged

Debian,Mint,Ubuntu
Arduino Mega 2560
Arduino Nano
Arduino Duemilanove
MAC OS Montain Lion
Raspberry PI Model B


aracaju/se
Offline Offline
Jr. Member
**
Karma: 0
Posts: 61
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

LegendBR, estou esperando chegar meus max485 pra testar sua lib. vai ser muito útil pra mim, seu código esta bem comentado e enxuto. parabéns.

sobre o consumo você acabou de ascender um alerta. acho que será necessário mais de um ponto para alimentar toda a rede de arduinos. será que um triac no lugar do relé não seria melhor?
Logged

Offline Offline
Newbie
*
Karma: 1
Posts: 34
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

bom dia.
Ta ficando ótimo isso aqui. Preciso aprender mais smiley-wink .
Comecei a fazer o meu, vou implantar em um ap 2 quartos. Mas estou com muita dificudade com o ethernet shield.
Consegui ligar e desligar o led, atravez do GET do http.
um pushbutton eu ligo e desligo o led tbm.
Porem..
Não consigo juntar os dois em um comando só..
minha ideia:
-estado inicial
-comandoFISICO(pushbutton)
-comandoWEB
- estado do led
se comando Fisico ou web for diferente do estado inicial, muda o estado do led e o estado inicial..

passei o domingo apanhando smiley-cry
alguem pode me dar uma força..
algum material pra leitura mais especifico.

os comandos separados ok..
mas juntar os dois é que tá complicado.

do mais obrigado.
Logged

Offline Offline
God Member
*****
Karma: 12
Posts: 510
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

os comandos separados ok..
mas juntar os dois é que tá complicado.

zurgbr,

Qual é exatamente o problema, descreve a situação com mais detalhes e posta o código para que possamos ver o que se passa.
Logged

'round the world...
Offline Offline
Faraday Member
**
Karma: 42
Posts: 3214
View Profile
WWW
 Bigger Bigger  Smaller Smaller  Reset Reset

Por acaso tens aí o código que já fizeste?

Code:
unsigned char estado_actual = 0; //desligado.
unsigned char estado_botao = 0;
unsigned char estado_web = 0;

//sempre que enviares um comando, a luz muda de estado.

if (estado_botao == 1 || estado_web = 1) {
   estado_botao = 0; //reset...
   estado_web = 0; //reset...
   if (estado_actual == 0) estado_actual = 1;
   else estado_actual = 0;
   digitalWrite(pino, estado_actual);
}



Logged

Eu não sou o teu criado. Se respondo no fórum é para ajudar todos mediante a minha disponibilidade e disposição. Responder por mensagem pessoal iria contra o propósito do fórum e por isso evito-o.
Se realmente pretendes que eu te ajude por mensagem pessoal, então podemos chegar a um acordo e contrato onde me pagas pela ajuda que eu fornecer e poderás então definir os termos de confidencialidade do meu serviço. De forma contrária toda e qualquer ajuda que eu der tem de ser visível a todos os participantes do fórum (será boa ideia, veres o significado da palavra fórum).
Nota também que eu não me responsabilizo por parvoíces escritas neste espaço pelo que se vais seguir algo dito por mim, entende que o farás por tua conta e risco.

Dito isto, mensagens pessoais só se forem pessoais, ou seja, se já interagimos de alguma forma no passado ou se me pretendes convidar para uma churrascada com cerveja (paga por ti, obviamente).

Aracaju, SE, Brasil
Offline Offline
Sr. Member
****
Karma: 4
Posts: 323
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

É, pelo jeito vou ter que alimentar com um par de cabos de pelo menos 2,5 mm² mesmo. Quando o módulo de relés chegar e eu finalizar o projeto (quantidade de botões, relés, etc.) faço as contas mais precisas de qual corrente/potência vou precisar. Mas já vi que alimentar com o cabo de rede está praticamente fora de cogitação.

@HugoPT

Não é off-topic não, tudo faz parte da automação smiley.

O sistema é dependente e não é ao mesmo tempo. O projeto elétrico foi feito para um sistema convencional, com interruptores. Para modificar o sistema para automatizado, vou adicionar um outro eletroduto nas caixas onde ficariam os interruptores (que serão todas de 4" x 4", ao invés do padrão 4 " x 2"), e substituir os interruptores por relés.

Daí se der problema em alguma coisa, só preciso colocar interruptores no lugar dos relés.

@mardden

Bom que gostou da biblioteca, a alteração dela eu gostei mais, quando puder testar eu posto aqui.

Pensei em fazer isso, mas tenho a impressão de que o consumo vai ser ainda maior, sem contar que o sistema fica mais complexo. Mas vou estudar essa possibilidade.

edit: adicionei uma imagem do esquema que irei fazer.


* Automação.PNG (14.33 KB, 517x558 - viewed 30 times.)
« Last Edit: July 08, 2013, 08:59:37 am by LegendBR » Logged

Offline Offline
Newbie
*
Karma: 1
Posts: 34
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

o codigo que eu tentei..
aqui funciona acionamento via web.. ok..
Code:
void loop() {
 
  EthernetClient client = server.available();
  if (client) {
    boolean currentLineIsBlank = true;
    String vars; //criar variavel para verificar o on off
    byte varOnOff=0; //variavel inicial 0
    while (client.connected()) {
      if (client.available()) {
        char c = client.read();
        Serial.print(c);
        vars.concat(c);
        if(vars.endsWith("/on")) varOnOff=1; //
          else if(vars.endsWith("/off")) varOnOff=2;
        if (c == '\n' && currentLineIsBlank) {
 
         
          client.println("HTTP/1.1 200 OK");
          client.println("Content-Type: text/html");
          client.println();
         
          client.print("<h1><a href='/off'>Servidor web</a>/<h1>");
         
          if(varOnOff == 1){
            client.println("<a href='/off'><button style='border: 1px solid #ff0000; border-left: 10px solid #ff0000' type='button'>Led ligado</button></a>");
            digitalWrite(30,HIGH);
          }
          else if(varOnOff == 2){
            client.print("<a href='/on'><button style='border: 1px solid #000; border-left: 10px solid #000' type='button'>Led desligado</button></a>");
            digitalWrite(30,LOW);
          }
         
          break;

Esse é outro q tentei..

Code:
byte led = 30;
byte botao = 31;
boolean stadoled = false;
boolean web;
byte cmdo;

void setup() {
 // Open serial communications and wait for port to open:
  Serial.begin(9600);
  pinMode(led,OUTPUT);
  pinMode(botao,INPUT);
  digitalWrite(botao,1);
   while (!Serial) {
    ; // wait for serial port to connect. Needed for Leonardo only
  }


  // start the Ethernet connection and the server:
  Ethernet.begin(mac, ip);
  server.begin();
  Serial.print("server is at ");
  Serial.println(Ethernet.localIP());
}


void loop() {
  // listen for incoming clients
  EthernetClient client = server.available();
 
 Serial.print(cmdo);
 Serial.print(web);
 Serial.println(stadoled);
 
  if (digitalRead(botao) == 0){
            stadoled = !stadoled; 
            digitalWrite(led,stadoled);
            delay(200);
            }
     
  if (client) {
    boolean currentLineIsBlank = true;
   
    String vars; //criar variavel para verificar o on off
    while (client.connected()) {
      if (client.available()) {
        char c = client.read();
        Serial.print(c);
        vars.concat(c);
        if(vars.endsWith("/l1")){
          stadoled = !stadoled;
        }       
   
        if (c == '\n' && currentLineIsBlank) {
          // send a standard http response header
          client.println("HTTP/1.1 200 OK");
          client.println("Content-Type: text/html");
         
          client.println();
           
          if (stadoled == 1){
            client.print("led on");
            digitalWrite(led,stadoled);
          }
          else{
            client.print("led off");
            digitalWrite(led,stadoled);
          }
           
          break;

fora outros q eu tentei e não salvei...  smiley-roll-sweat smiley-roll-sweat

obrigado pela ajuda..
Logged

Pages: 1 ... 9 10 [11] 12 13 ... 30   Go Up
Jump to: