Could you give me some suggestions for a good serial
transceiver. Ideally it should satisfy the following:
1) Simple interface, preferable just the Tx and Rx lines.
2) Very reliable.
3) Internal Error Correction
4) Good range. 100 meters plus (Outdoors).
2) Be able to change frequencies fairly easily.
3) Small modular unit.
Any suggestions would be most welcome.
I have just struggled for a couple of weeks on this same subject so heed my
I used just a simple AM transmitter and on the other end an AM receiver, but
the same goes for AM transceivers.
The most important aspect of RF transceivers is the data must have a zero DC
component (AC coupled). Normal serial data isn't balanced i,e, you need the
same number of 1s as 0s so over a period (10ms ish) they would all cancel
out. This is all down to the way the receiver works out what is a 1 and what
is a 0. Manchester coding achives this, but is a sod to impliment on the
One of the best ways to overcome this is to use standard serial routines to
send manchester encoded bytes
This way the send/recieve routines are simple and the data is balanced. The
only drawback is that the manchester encoding doubles the amount of data you
send (it encodes a 1 as '10' and a zero as '01' or something like that). So
you end-up sending a byte as two nibbles (4-bit) that have been encoded.
This also has the advantage that you can perform error checking on data as
it should be in pairs of 10 or 01, so 00 or 11 are errors!
Another issue is that the receiver will go into a low-power mode when not
receiving, and take its output low. To a TTL serial receiver this looks like
a start bit and so the device will receive loads of zero bytes. This maked
syncronization to the start bit a problem.
The solution is to send a package that will enable the receiver micro to
lock on and read the package reliably, this is what I did:
send 10101010 a number of times so the reciever can wake-up and lock on to
the high and low bits.
send 11111111 this will enable the serial receiver to find the start bit
send 00000001 this will 'cancel out' the DC bias produced by the previous
byte (remember the 1s and 0s must cancel out)
send manchester encoded high nibble
send manchester encoded low nibble
One last point; manchester encoding also contains a clock singnal so it
helps if the speed of the processors might change (such as happens when
using RC oscillators).
The above technique only works if you know both device clocks are accurate
If you have any problems or questions send me an email
Polytechforum.com is a website by engineers for engineers. It is not affiliated with any of manufacturers or vendors discussed here.
All logos and trade names are the property of their respective owners.