Society of Robots - Robot Forum

Electronics => Electronics => Topic started by: Dscrimager on February 05, 2009, 08:44:06 PM

Title: not strictly a robotics question
Post by: Dscrimager on February 05, 2009, 08:44:06 PM
I need to transmit 3 or 4 bits (but I would settle for a byte) from one microcontroller to another
- no wireless
- could be serial but I was planning parallel since the receiving controllers and have the receivers reading them as digital inputs
- target controllers don't necessarily have much serial processing capability
- cheap i.e. I don't want to use serial boards at each end at $40 per
- reliable - it's outside and electrically noisy because of all the equipment nearby
- both end points are stationary so a wired solution of some sort is what I am after
- one way not bidirectional
- low bandwidth; on the order of 100 bits per second

I was just going to use a heavy gauge muti-strand wire and close contacts on some DC relays near the receiving end and have the relays read with digital inputs- unfortunately this means that for three drops I would have 9 outputs total and each input had three relays,etc. Seems it would be nicer to use some sort of common bus that can run for 30-50 feet total and use an addressing scheme like I2c or something like that

Any really simple method that I am missing, any simple way to do a serial/parallel bus or one wire serial to each receiver? IS there some low bandwidth standard already fairly easy to implement?

Doug
Title: Re: not strictly a robotics question
Post by: paulstreats on February 06, 2009, 05:08:15 AM
A parallell method would be quite easy to implement really....

Just connect 4 i/o ports from 1 micro to 4 i/o ports on another micro. Also to make a clocked system you could connect a wire from the 1st micro to an interrupt pin on the 2nd micro.

Just set the 4 i/o pins on the 1st micro say like this 0101. Then change the state of the interrupt wire. When the 2nd micro gets the interrupt signal, it reads its 4 i/o ports that are connected to the 1st micro and it should register 0101 also.

The wire would really want to be shielded in a noisy environment.

You could also use inbuilt option like i2c, spi, serial etc..

Unless im missing something like the signals got to travel 500m which means that you would have to build some kind of booster
Title: Re: not strictly a robotics question
Post by: Dscrimager on February 06, 2009, 07:13:05 AM
Thanks for the reply. The signals have to travel reliably (this is for amusement not life critical) about 50 feet.
I only have 3 pins on the receivers and not much serial processing power.

I thought about just running heavy gauge multi-strand cable but I didn't think the output pins of a microcontroller ( like the AXON or Roboduino, say) could drive something like that length. Would I not need a transceiver chip designed to drive something with that much resistance, voltage drop and capacitance?

Doug
Title: Re: not strictly a robotics question
Post by: Soeren on February 06, 2009, 11:27:57 AM
Hi,

You will need a driver (could be made with discreets).
A possible solution is to clock each bit out and using a driver that gives you 12V..24V on the cable. A few transistors plus glue at each end and 3 I/O-lines (send, receive and clock I/O) and perhaps a common screen (or a single parallel running line if using RJ11 connectors with 4-wire flat cable) carrying ground should give you a stable connection.