#1 2016-08-25 07:43:26

megahertz
Учасник
Зареєстрований: 2016-08-25
Повідомлень: 7

работа с RS485

Доброго дня
Есть схема  http://adatum.ru/wp-content/uploads/2014/08/test789.jpg по которой две ардуины подключены к писюку
и есть программа залитая в обе ардуины

#define SerialTxControl 5
#define RS485Transmit    HIGH
#define RS485Receive     LOW  
int ledPin = 2;
char buffer[100];

void setup(void) {
  Serial.begin(9600);
   pinMode(SerialTxControl, OUTPUT);  
   digitalWrite(SerialTxControl, RS485Transmit); 
   Serial.println("TEST666");  
   pinMode(ledPin, OUTPUT);
  delay(100); 
  digitalWrite(SerialTxControl, RS485Receive); 
}
 
void loop(void) {
digitalWrite(SerialTxControl, RS485Receive);
   
while (Serial.available() == 0);
  int val = Serial.read() - '0';

  if (val == 1)
  {
    digitalWrite(ledPin, HIGH);
    Serial.println("led_on");
  }
}

Собственно при подключении такой схемы, пины DE/RE на TTL конвертере замыкаются между собой перемычкой и подключаются к управляющему контакту D10 ардуины, так же происходит и на второй ардуине, далее при включении всего этого безобразия я могу работать только с одной ардуиной, т.е что-то отправлять или принимать от нее по RS485, а вот вторая висит с постоянно горящим TX и соответственно ничего передать или принять от нее я не могу...Если разомкнуть RE от DE на проблемной ардуине и подключить только DE на D10, то я могу на нее отправлять какие то команды через RS485 и она их обрабатывает, но работает это в одностороннем порядке т.е ответы ардуина обратно не отправляет.
Собсна вопрос знатокам, где и что мог упустить?

Остання редакція megahertz (2016-08-25 11:10:18)

Неактивний

#2 2016-08-25 09:15:02

vvr
Учасник
Зареєстрований: 2015-04-12
Повідомлень: 876

Неактивний

#3 2016-08-25 09:17:05

megahertz
Учасник
Зареєстрований: 2016-08-25
Повідомлень: 7

Re: работа с RS485

ну так и тот пример что я привел работает, но при подключении нескольких ардуин вылетает трабла которую я описал в тексте своего первого поста...

Остання редакція megahertz (2016-08-25 09:18:51)

Неактивний

#4 2016-08-25 10:54:30

NoName
Customer
З Київ
Зареєстрований: 2014-07-08
Повідомлень: 1,446

Re: работа с RS485

Вы  не привели код   который выполняет описанный функционал
"D10, то я могу на нее отправлять какие то команды через RS485 и она их обрабатывает, но работает это в одностороннем порядке т.е ответы ардуина обратно не отправляет. " потому никто не скажет что упустили  )

485 простая шина если один мастер - развлекайтесь сами если планируете разработке посвятить жизнь, это будет правильный опыт
в коде с первого посте  уберите при старте по питании отправку в линию, у вас ведь мастер комп?  вряд ли  вы проработали алгоритмы программной защиты от коллизий
есть простое решение - не отключайте приемник, но будет эхо при передаче , заблокируйте его программно.

RO
Receiver Output: If A > B by 200mV, RO will be high;
If A < B by 200mV, RO will be low.

!RE
Receiver Output Enable. !RO is enabled when RE is low; RO is
high impedance when RE is high.

хотя как раз многие  !RE + DE что б аппаратно избавится  от эха

читали? )) http://datasheets.maximintegrated.com/e … MAX491.pdf

Неактивний

#5 2016-08-25 11:15:25

megahertz
Учасник
Зареєстрований: 2016-08-25
Повідомлень: 7

Re: работа с RS485

код в первом посту поправил, собсна если ардуина в serial видит 1 то включает лед, на второй ардуине такой же код но изменена строка на  if (val == 1) на  if (val == 2) т.е если видит 2 то включает лед и т.д
На счет отправки в сериал при старте да, точно, попробую убрать, посмотрю что изменится

хотя как раз многие  !RE + DE что б аппаратно избавится  от эха
читали? )) http://datasheets.maximintegrated.com/e … MAX491.pdf

буду пробовать

Неактивний

#6 2016-08-26 07:43:06

megahertz
Учасник
Зареєстрований: 2016-08-25
Повідомлень: 7

Re: работа с RS485

попробовал залить скетч тот же что и в примере https://arduino-info.wikispaces.com/Sof … 485Example

ситуация та же самая. ПК - это мастер ,с него в COM порт летят команды 1 или 2 и соответственно при 1 зажигается blue_led, при 2 - yellow_led

#include <SoftwareSerial.h>

#define SSerialRX        10  //Serial Receive pin
#define SSerialTX        11  //Serial Transmit pin

#define SSerialTxControl 4   //RS485 Direction control
#define RS485Transmit    HIGH
#define RS485Receive     LOW

#define Pin13LED         2


SoftwareSerial RS485Serial(SSerialRX, SSerialTX); // RX, TX

int byteReceived;
int byteSend;

void setup()
{
  // Start the built-in serial port, probably to Serial Monitor
  Serial.begin(9600);
  Serial.println("SerialRemote");  // Can be ignored
  
  pinMode(Pin13LED, OUTPUT);   
  pinMode(SSerialTxControl, OUTPUT);  
  
  digitalWrite(SSerialTxControl, RS485Receive);  // Init Transceiver
  
  // Start the software serial port, to another device
  RS485Serial.begin(9600);   // set the data rate 
}//--(end setup )---


void loop()   /****** LOOP: RUNS CONSTANTLY ******/
{
 // while (RS485Serial.available() == 0); 
  int val = RS485Serial.read() - '0';
//if (val == 1)
 if (val == 2)
  {      
    
    digitalWrite(Pin13LED, HIGH);  // Show activity
    delay(1000);              
    digitalWrite(Pin13LED, LOW);
      
    
    digitalWrite(SSerialTxControl, RS485Transmit);  // Enable RS485 Transmit    
    //RS485Serial.write(byteSend); // Send the byte back
    Serial.println("Yellow_on");
    //Serial.println("Blue_on");
    delay(10);   
    digitalWrite(SSerialTxControl, RS485Receive);  // Disable RS485 Transmit      
  }
 
}

обе ардуины+конвертеры подключены так: R0=D10, DI=D11, DE/RE=D4

при отправке 1 в serial - зажигается blue_led на первой ардуине, при отправке 2 в serial - на второй ардуине ничего не происходит. Далее, если на второй ардуине отключить DE от D4 то при отправке 1 в serial - зажигается blue_led на первой ардуине, при отправке 2 в serial - зажигается yellow_led на второй ардуине, и это как бы круто, оно работает, но вторая ардуина обратно в serial не отвечает...т.е суть проблемы в том, что нужно получить обратные ответы при выполнении команды, иначе не понятно, получила одна из ардуин что-то или не получила

Неактивний

#7 2016-08-30 18:13:39

megahertz
Учасник
Зареєстрований: 2016-08-25
Повідомлень: 7

Re: работа с RS485

никто не знает?

Неактивний

#8 2016-09-07 07:51:39

megahertz
Учасник
Зареєстрований: 2016-08-25
Повідомлень: 7

Re: работа с RS485

closed.

Неактивний

#9 2016-09-07 09:58:17

NoName
Customer
З Київ
Зареєстрований: 2014-07-08
Повідомлень: 1,446

Re: работа с RS485

closed without comment ? smile

Неактивний

#10 2016-09-07 14:55:24

megahertz
Учасник
Зареєстрований: 2016-08-25
Повідомлень: 7

Re: работа с RS485

Проблема не в сырцах а в построении самой шины, по вашему совету более внимательно изучил http://datasheets.maximintegrated.com/e … MAX491.pdf

Неактивний

Швидке повідомлення

Введіть повідомлення і натисніть Надіслати

Підвал форуму