collapse

* Posts Recentes

Amplificador - Rockboard HA 1 In-Ear por almamater
[Ontem às 19:13]


O que é isto ? por KammutierSpule
[26 de Março de 2024, 19:35]


Bateria - Portátil por almamater
[25 de Março de 2024, 22:14]


Emulador NES em ESP32 por dropes
[13 de Março de 2024, 21:19]


Escolher Osciloscópio por jm_araujo
[06 de Fevereiro de 2024, 23:07]


TP4056 - Dúvida por dropes
[31 de Janeiro de 2024, 14:13]


Leitura de dados por Porta Serie por jm_araujo
[22 de Janeiro de 2024, 14:00]


Distancia Cabo por jm_araujo
[08 de Janeiro de 2024, 16:30]


Meu novo robô por josecarlos
[06 de Janeiro de 2024, 16:46]


Laser Engraver - Alguém tem? por almamater
[16 de Dezembro de 2023, 14:23]

Autor Tópico: Comando de Garagem  (Lida 8667 vezes)

0 Membros e 1 Visitante estão a ver este tópico.

Offline Ricardo

  • Mini Robot
  • *
  • Mensagens: 110
Comando de Garagem
« em: 27 de Janeiro de 2012, 16:46 »
Boas,

Tenho aqui um comando de garagem que abre os vários portões do prédio.






Para além de me estar constantemente a enganar no botão de cada porta, e de perder o comando dentro do carro, gostava de ter um sistema mais "integrado" que me permitisse carregar num botão (ou vários), na consola do carro (por exemplo) activando os tais portões.

Uma vez que nada posso fazer quando ao sistema montado e quanto ao receptor (obviamente), sobra a possibilidade de "manipular" de alguma forma o comando de forma a bypassar os proprios botoes.

Já andei a investigar o assunto e a abordagem deverá passar pela utilização dum optocoupler que ligaria a cada um dos botoes que quero manipular, e depois usar um microcontrolador (arduino) para activar cada um dos pinos, mas como nunca o fiz (e estamos a falar dum comando de 12v), tenho sérias duvidas que esteja a ir pelo caminho certo.

O outro problema é que não consigo perceber como estão os botoes montados no comando para soldar os fios a ligar (se não tiver que retirar os botoes originais nesta fase, era preferivel), e cada vez que uso multimetro tenho comportamentos estranhos nas leituras.

Assim sendo, agradeço qualquer ajuda ou conselho que tenham  sobre este assunto!

Obrigado.

Offline afonso henriques

  • Mini Robot
  • *
  • Mensagens: 78
Re: Comando de Garagem
« Responder #1 em: 15 de Fevereiro de 2012, 00:04 »
boas
só consegues medir a continuidade do buton tirando-o do circuito
caso contrario tens os problemas que falaste
esse é o primeiro passo

Offline HIT_Braga

  • Mini Robot
  • *
  • Mensagens: 47
  • Sou o que sou, não o que acham...
Re: Comando de Garagem
« Responder #2 em: 15 de Fevereiro de 2012, 13:42 »
Esses botoes, são dois contactos normalmente abertos, quase de certeza. Quando carregas no botão os dois contactos fecham. Para verificares(e por norma) são os dois que estão para o lado do led um contacto e os dois que estão para o lado contrario outro contacto.

Quanto à solução que falas, acho que vais complicar com arduinos e etc. colocas um rele, que quando carregares no botão na consola alimenta a bobine fechando o contacto que faz exactamente o mesmo que o botão.

Sds,
Sds,
HIT

Offline Ricardo

  • Mini Robot
  • *
  • Mensagens: 110
Re: Comando de Garagem
« Responder #3 em: 15 de Fevereiro de 2012, 23:20 »
boas
só consegues medir a continuidade do buton tirando-o do circuito
caso contrario tens os problemas que falaste
esse é o primeiro passo

Ou seja, tirar a pilha do comando, e só depois usar o multímetro.... :)
Reconheço que estava a ser um bocado burro quando postei essa dúvida, mas entretanto lá ultrapassei essa fase! Obrigado na mesma!

Esses botões, são dois contactos normalmente abertos, quase de certeza. Quando carregas no botão os dois contactos fecham. Para verificares(e por norma) são os dois que estão para o lado do led um contacto e os dois que estão para o lado contrario outro contacto.

Quanto à solução que falas, acho que vais complicar com arduinos e etc. colocas um rele, que quando carregares no botão na consola alimenta a bobine fechando o contacto que faz exactamente o mesmo que o botão.

Sds,

Depois de ter descoberto onde soldar os fios que bypassam o botão do comando, numa primeira fase usei um botão inactivo que já existia no tablier no carro, e que está mesmo ao lado do volante. Não é um grande avanço, mas assim já consigo abrir o portão em menos de 5 minutos (o tempo que demorava a encontrar o comando que tem a repetida tendência de se enfiar debaixo dos bancos...)

De seguida usei um arduino com um esquema semelhante a este, que recebe o estímulo do tal botão do tablier (input digital), e envia um pulso para outro pino digital que activa um optocoupler que por sua ver activa o botão do comando.  (eu sei… assim de repente parece um ideia extremamente idiota…)




Claro que o arduino metido neste assunto parece um pouco... overkill. Mas o meu plano é um pouco mais ambicioso... e envolve um computador. Mais propriamente um Carpc. A ideia é usar o pc para enviar a ordem ao arduino de forma a este activar o portão pretendido. (já referi que são 4 portões independentes?).
E já fiz alguns testes com sucesso neste sentido. Irei colocar aqui um vídeo que ilustra a ideia geral. Mas ainda não terminei esta parte porque tenho dois problemas principais.

Faltam-me os outros optocouplers que encomendei (só aqui tinha um, e nem sequer sei de onde veio).  E tenho outro problema que me parece mais chato de resolver. Nem sempre o pc quando arranca reconhece a porta onde está ligado o arduino. Ou seja, por vezes tenho que desligar e voltar a ligar o cabo usb para que o pc “perceba” que tem lá um arduino ligado. Não é nada prático e lá voltam os 5 minutos iniciais! :)

Há algum truque que resolva isto? Parece-me que é algo que acontece apenas neste pc…

Offline Ricardo

  • Mini Robot
  • *
  • Mensagens: 110
Re: Comando de Garagem
« Responder #4 em: 01 de Junho de 2012, 11:18 »
Boas,

Nos últimos tempos tenho andado a tentar encontrar forma de utilizar os botões do comando do volante do meu Citroen c3 com o Carpc. Depois de ler alguma informação na net resolvi comprar este adaptador no ebay (http://www.ebay.co.uk/itm/CITROEN-C2-C3-C5-C8-Steering-Stalk-Control-Adaptor-CTSCT002-Alpine-Stereo-/270867773107?pt=UK_In_Car_Technology&hash=item3f10fa36b3) que liguei ao conector iso do carro.

Basicamente o que tenho para interagir são dois fios e nos primeiros testes que fiz apenas identifiquei um sinal de 5v que baixava para 3,1v sempre que premia qualquer um dos botões do comando do volante. Mas umas leituras e descobri que analisando o sinal com um osciloscópio talvez conseguisse detectar algo mais concreto.

Ora, como não tenho nenhum osciloscópio, procurei alternativas e descobri o XOscillo (http://groups.google.com/group/xoscillo) que me pareceu uma excelente solução de recurso e que me irá permitir aprender um pouco mais sobre este tipo de sinais.

Mas como o que sei agora é pouco mais que zero, o resultado que obtive no Xosciloscópio é uma onda quadrada deste tipo (que muda ligeiramente no ultimo terço consoante o botão premido), e a questão é: O que é que eu faço com isto???



Ou seja, como analiso este sinal num arduino (por exemplo) que irá ser o interface com o pc?

Qualquer ajuda é bem vinda!

Obrigado.

Offline senso

  • Global Moderator
  • Mini Robot
  • *****
  • Mensagens: 9.733
  • Helpdesk do sitio
Re: Comando de Garagem
« Responder #5 em: 01 de Junho de 2012, 15:03 »
Provavelmente isso é CAN ou KLINE ou PWM, tudo protocolos tipicos de carro
Avr fanboy

Offline Ricardo

  • Mini Robot
  • *
  • Mensagens: 110
Re: Comando de Garagem
« Responder #6 em: 01 de Junho de 2012, 18:25 »
Provavelmente isso é CAN ou KLINE ou PWM, tudo protocolos tipicos de carro

Sim, percebo que utiliza um protocolo qualquer (que julgo não ser CAN), mas a questão neste momento é mais:
Sabendo que a onda esperada tem aquele "aspecto" e aquela duração, é possivel decifrar o sinal utilizando uma entrada do arduino?
Do meus parcos conhecimentos, tudo se resumirá à identificação da duração de cada pulso e a sua descodificação para binário(?), certo?.
Estarei ainda muito longe da solução?

Offline Hugu

  • Mini Robot
  • *
  • Mensagens: 5.602
  • Keyboard not found. Press any key to continue.
    • [url=www.g7electronica.net]G7 Electrónica.net[/url]
Re: Comando de Garagem
« Responder #7 em: 02 de Junho de 2012, 01:19 »
De seguida usei um arduino com um esquema semelhante a este, que recebe o estímulo do tal botão do tablier (input digital), e envia um pulso para outro pino digital que activa um optocoupler que por sua ver activa o botão do comando.  (eu sei… assim de repente parece um ideia extremamente idiota…)

Eu tenho destes: 4N25

Offline Ricardo

  • Mini Robot
  • *
  • Mensagens: 110
Re: Comando de Garagem
« Responder #8 em: 19 de Agosto de 2012, 19:59 »
Boas,

Após algumas testes e experiencias falhadas, creio que encontrei uma solução para o problema dos comandos do volante.
Utilizando uma interrupção associada ao pino 3, analisei cada alteração no estado deste pino (neste caso, cada "subida"), e analisei a duração de cada pulso em us, fazendo a correspondencia directa de 1us=0 e 2us=1 e tendo o correspondente sinal em binário (que limitei nos 45 bits).
Ao testar o código abaixo com os comandos do volante, acabei por ter um resultado bastante satisfatório, com bastante precisão e com muito ouco trabalho de validação (também não é critico falhar algum comando ocasionalmente).


Código: [Seleccione]
int tam=45;
int onda[45];
volatile unsigned long pos=0;
volatile byte burp=0;   
extern volatile unsigned long timer0_overflow_count;
double tElapsed=0;

void setup() {
  Serial.begin(115200);
  Serial.println("Ready!");
  attachInterrupt(0, burpcount,RISING);
  TCCR1A=0;
  TCCR1B=B100;
  TCNT1=0;
  }

void loop()
{
  if(Serial.available())
  {
    int chr=Serial.read();
    if(chr=='a')
    {
      digitalWrite(7,HIGH);
      delay(200);
      digitalWrite(7,LOW);
      delay(200);
      digitalWrite(7,HIGH);
      delay(200);
      digitalWrite(7,LOW);
      //Serial.flush();
    }
  }
}

unsigned long hpticks (void)
{
   return (timer0_overflow_count << 8) + TCNT0;
}

void burpcount()
{
  ler_int();
}

void ler_int()
{
  int prescaler=256;
  tElapsed = TCNT1*1.0/16E6*prescaler;
  int valor=0;
  valor=tElapsed*1000;
  if(valor>2)
  {
    pos=0;
    processa_onda();
    for(int n=0;n<tam;n++)
    {
     onda[n]=0;   
    }
  }
  else if(valor>0)
  {
    onda[pos-1]=valor-1;
  }
  else
  {
    onda[pos-1]=0;
  }
  pos++;
  TCCR1A=0;
  TCCR1B=B100;
  TCNT1=0;
}

void processa_onda()
{
  if(onda[0]==0 && onda[1]==0)
  {
      //Ignorar estas mensagens
  }
  else
  {
  for(int n=0;n<tam;n++)
  {
     Serial.print(onda[n]);
   }
   Serial.println("");   
  }
}

No pc do carro, que tem o arduino ligado, apenas me preocupo a receber o comando via serial, e a associar a acção correspondente (mais alto, mais baixo, mute, para a frente, para trás e função), estando aparentemente a funcionar sem problemas.

A questão agora tem mais a haver com o proprio arduino.
Quando desligo o carro, o pc do carro entra em hibernação. Quando ligo, e o pc acorda, raramente detecta a porta do arduino. Há alguma coisa que eu possa fazer para forçar ou ajudar à detecção da porta?