Is there any way to use Half Duplex RS485 without using a dedicated controller pin for RE - DE?
I've looked into this before and after a quick search through Google this is what I found the last time I looked:
simulate this circuit – Schematic created using CircuitLab
Basically when the TX pin is high (idle), the capacitor will slowly charge up until the Schmitt trigger inverter threshold is reached at which point it will switch the MAX485 into receive mode.
When you want to transmit, the start bit (and any subsequent 0 bits) will rapidly discharge the capacitor through the diode switching over the Schmitt trigger inverter causing the MAX485 to go into transmit mode. The during any 1 bits the capacitor will start to charge again, though slowly because of the resistor until it will eventually switch back into receive mode.
You need to select the R-C values such that the capacitor doesn't reach the positive going threshold of the inverter until sufficient time has passed for one byte of data. Each UART byte will always start with a start bit (0) which will keep the MAX485 in transmit mode while you are sending.
To save space you can get Schmitt trigger inverters in single gate packages which are no bigger than a surface mount transistor - the 74LVC1G14 would suffice for the job.
I've actually used the below circuit and it worked at 9600 baud: -
There are two things to watch out for though: -
- There is a tendency for the first transmit bit to be tad short
- You can't expect it to revert back to RX until some time after the last TX bit is sent because of the natural discharging of the 1000 pF capacitor.