Go Down

Topic: [ajuda] RS485: Arduino + PC (Read 1 time) previous topic - next topic

Osias Neto

Olá,

estou fazendo um pequeno projeto, onde ligo um Arduino à um PC através de um transceiver 485 como mostrado no esquema a seguir.

https://dl.dropbox.com/u/5970471/transceive_rs485.jpg

A ligação já foi testada, e a comunicação está ok (recebe e envia).

Minha dúvida, é quanto à programação, quer dizer, a comunicação se dá da seguinte forma:

Code: [Select]
Arduino: d2, high
Arduino > PC: [request_data]
(ao terminar transmissão) d2, low
PC > Arduino: [data]


A dúvida:
Como fazer o arduino alternar o enable, no momento certo entre o fim do envio, e o começo do recebimento da mensagem?
Seria necessário fazer um "protocolo" com persistência?

Alguém pode me ajudar?

HugoPT

#1
Dec 03, 2012, 01:26 pm Last Edit: Dec 03, 2012, 01:33 pm by HugoPT Reason: 1
Ola
Crias uma funçao que alterne o pino de controlo, algo assim:
Code: [Select]
void controlPin(uint8_t controlBusPin)
{
 controlBusDirection = controlBusPin;
 pinMode(controlBusPin, OUTPUT);//Pin that Control Data Direction
 digitalWrite( controlBusPin,HIGH);//Enable Transmitter,Disable Receiver on default state
}


Depois podes criar outra funçao para "escutar" e outra para entrar no modo de envio
Code: [Select]
/transmitMode set the control pin HIGH to enable the RS485 transiver
void txMode()
{
  digitalWrite(controlBusDirection,HIGH);//Enable Transmitter,Disable Receiver
}

void rxMode()
{
  digitalWrite(controlBusDirection,LOW);//Enable Transmitter,Disable Receiver
}


De momento estou quase a concluir uma libraria para trabalhar com um barramento RS485
Inda nao esta concluida mas assim que esteja depois posso partilhar


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

Osias Neto

Amigo, obrigado pela resposta. É algo assim mesmo que tenho em mente, minha maior dúvida, é se isso irá funcionar corretamente com as temporizações da transmissão.

Por exemplo, alterno o pino ao terminar de enviar a mensagem do arduino para receber a resposta do PC, mas o Arduino ( e o transc.) será rápido o suficiente para alternar antes do PC começar a responder?

HugoPT

No meu caso eu estou usando VB do lado do PC e ele comunica corretamente.Se tiver problema pode sempre tentar dar um delay do lado do pc quando terminar de receber os dados antes de enviar a resposta.
Debian,Mint,Ubuntu
Arduino Mega 2560
Arduino Nano
Arduino Duemilanove
MAC OS Montain Lion
Raspberry PI Model B

Osias Neto

Obrigado novamente, então acho que está tudo certo aqui. Mas de qualquer forma, um delay seria interessante (melhor prevenir). Como eu faço isso? Meu software é em C#, não deve ser muito diferente

Go Up