Communication with FTDI RS485

Hi all, I have purchased a FTDI usb to RS485 converter to talk to my industruino. However I fail to recieve and/or send data from/to the arduino. From what I understand the Serial1 should be connected to the RS485 port? And digital pin 9 should be set to high to enable the RS485 port on the industruino?

Per example from the modbus master and slave example I have removed the 560R jumpers from the industruino (slave) and have attached the 120R wires of the FTDI converter to the A and B channel.

Industruino      FTDI
GND                GND (RS485)
A                      Data+ (A) and 120R pin1
B                      Data- (B) and 120R pin2

Any ideas why I'm not receiving any data would be greatly apreciated!

Datasheet: http://www.ftdichip.com/Support/Documents/DataSheets/Cables/DS_USB_RS485_CABLES.pdf 
Modbus master and slave example: https://industruino.com/blog/our-news-1/post/modbus-rtu-master-and-slave-14

Example:

#include <UC1701.h>

 

#include <Indio.h>

#include <Wire.h>

 

#define RS485_ENABLE_PIN 9

 

void setup() 

{

  Indio.digitalWrite(RS485_ENABLE_PIN, HIGH); 

 

  Serial1.begin(9600);  //open the TX/RX port

}

 

void loop() 

{

  Serial1.write("Hello world"); 

 

  if (Serial1.available()) 

  {

    int inByte = Serial1.read();

    Serial1.print(inByte); 

    Serial.print(inByte); 

  }

  

  delay(1000);

}

 

- Arnoud

Arnoud
Arnoud
7
| 3 1 2
Asked on 4/22/16, 12:32 PM
0
vote
5073 Views

Hi Arnoud, the pin 9 on the IND.I/O is the TxEnablePin, which means it has to be HIGH during transmission. In your above sketch, this pin stays HIGH from Setup, so in theory you won't be able to receive anything, which is the opposite of what you are reporting. Can you please double check? This reference may be useful: https://arduino-info.wikispaces.com/SoftwareSerialRS485Example (it uses software serial but the Industruino can use hardware serial1)

Tom
Tom
5675
| 1 1 3
Answered on 6/1/16, 8:50 AM
2
vote

Hi Arnoud, actually i just saw a mistake in the above code, the TxEnablePin is not an Indio pin, but a pin connected directly to the mcu, so you should use it with the standard digitalWrite (not Indio library): digitalWrite(9, HIGH); Hope this helps- Tom

Tom
on 6/1/16, 9:04 AM

I have managed to receive data from the USB FTDI device, however I fail to send data from the Arduino. I have checked with my logic analyzer and there is no change on the A or B pin of the RS485 port on the industruino.

How do I enable the send mode on the MAX485?

Arnoud
Arnoud
7
| 3 1 2
Answered on 5/26/16, 1:47 PM
0
vote

As far as I know about RS485 chips, D9 should be high when sending and low when receiving, or viceversa. It is not a chip select pin but a direction pin. Check on a RS485 chip datasheet.

Stefano Giuseppe Bonvini
on 6/1/16, 1:13 PM

Hello,
looking at the example and at the datasheet, RS485 pin 9 is not an Indio pin, but a MCU pin.
So it should be addressed as a normal Arduino pin, I think.

Stefano Giuseppe Bonvini
on 7/8/17, 6:42 PM

Stefano is correct, the RS485 direction pin is a GPIO pin, not a field side IND.I/O pin. So it should be address in the standard Arduino way, digitalWrite NOT indio.digitalWrite.

Loic De Buck
on 7/17/17, 3:40 AM

Your answer

Please try to give a substantial answer. If you wanted to comment on the question or answer, just use the commenting tool. Please remember that you can always revise your answers - no need to answer the same question twice. Also, please don't forget to vote - it really helps to select the best questions and answers!

Ask a Question

Keep Informed

About This Forum

This community is for professionals and enthusiasts of our products and services.

Read Guidelines

Question tools

25 follower(s)

Stats

Asked: 4/22/16, 12:32 PM
Seen: 5073 times
Last updated: 7/8/17, 7:19 PM