Simplificate 2.0

Si algo parece muy complicado, es que esta mal explicado.

Librería de comunicaciones serie por Software.

leave a comment »


HyperTerminal mostrando el menú de control del huerto solar.

Bueno estos últimos días por problemas de muchos tipos no he estado muy activo, digamos que “el capitalismo” se empeña en molestarnos pero bueno la verdad que estoy enganchado a inventar cosas y ya que tengo varios proyectos abiertos a la vez, en los que coincide que necesito comunicar cosas de alguna manera, me he decidido a hacer una librería de comunicación Serie Asíncrona que se pueda usar en cualquier integrado de AVR y así ya he ganado algo.

La comunicación serie asíncrona:

Cuando en un proyecto necesitas comunicarte con el mundo exterior tienes muchas opciones a tu alcance, yo por la topologia de red que voy a usar me he decidido por un tipo de comunicación serie, con topologia de BUS, esto es que todos los comunicantes compartes las mismas dos lineas para datos, haciendo posible que uno de ellos hable y todos los demás escuchen, la única pega son las colisiones, una circunstancia que se da en el caso de que dos emisores hablen a la vez, es como en la vida real, si todos hablamos a la vez no nos enteramos de nada, así que hay que tenerlo en cuenta y procurar que no hablen dos al mismo tiempo, esto se puede conseguir de diferentes formas pero la más usada es la comunicación controlada por un maestro, el maestro da permiso para que hable cualquier equipo en la red y así evitar las colisiones, si solo uno tiene permiso, los otros solo escuchan y no habrá colisiones.

Para más información sobre la comunicación serie podeis echarle un ojo al enlace:

http://perso.wanadoo.es/pictob/comserie.htm#la_comunicacion_serie

donde encontrareis hasta esquemas para los diferentes modos de transmisión.

Mis necesidades:

El proyecto en el que voy a usar comunicaciones es en la creación de un huerto de energías renovables, para este huerto usare un aerogenerador ( el generador DC del taladro )  junto con una placa para controlar la excitación que aun estoy diseñando ( me falta un elevador de tensión que tengo todavía que diseñar), y una serie de paneles solares foto voltaicos que tengo que fabricar también, lo que tienen en común todos los paneles y el arogenerador es que deben comunicarme el voltaje, la corriente, la temperatura y la exposición solar, todo esto se registrara en un solo Microchip ( en adelante AVR ) que sera el encargado de comunicar los datos ya procesados a un PC en el que podremos ver los diferentes valores con sus gráfica y todo eso.

La topologia de red que se me ha ocurrido usar es la que me requiere menor cableado entre los equipos y se aprovechan mejor los recursos, esta topologia es la de BUS, donde solo con dos hilos esta todo comunicado.

Todos los equipos comparten el mismo cable.

Como funciona:

El funcionamiento es muy simple, el cable de comunicación, se mantiene a un nivel de tensión alto, por ejemplo 12 VDC, hasta que algún equipo pone el hilo a O Voltios, en este momento todos los demás equipos se preparan para recibir los datos que se transmiten a continuación del Bit de Start, 8 Bits de Datos y 1 Bit más de parada, ( este Bit de Parada realmente no es un bit en si, sino que se asegura de que el canal vuelve a quedar a un nivel Alto preparado para otra transmisión), el esquema electrónico para este funcionamiento es este:

Esquema donde se ve el integrado y el interface de comunicación.

Empecemos por la parte de la transmisión de datos, en el esquema se aprecia que el hilo nombrado como TX/RX se encuentra siempre alimentado por 24 Voltios a través de la resistencia R3, mientras el transistor BC547 no se active la linea TX/RX se encontrara a 24 Voltios, alimentada por la resistencia R3, así que mientras esto siga así la linea de comunicación se encuentra a 24 Voltios, cuando el integrado U2 active su salida PB1, el transistor Q1 pondrá la linea TX/RX a un nivel bajo ( el transistor se pondrá en saturacion y toda la corriente pasara por la resistencia R3 hasta la masa dejando la linea TX/RX a nivel bajo, algo más de 0,2 Voltios ).

En la recepción, que se forma por el pin PB2 y el diodo 1N4007 ocurre lo siguiente, el pin PB2 se debe activar por software como pin Pull-UP  esto habilita una resistencia interna desde VCC hasta el pin de 20 K Ohm, así que ese pin esta en estado 1 mientras no se le apliquen O voltios externos .

Por lo tanto cuando la linea TX/RX pasa a nivel bajo la corriente pasa por el diodo y deja el pin a 0,8 Voltios, en lógica digital eso es 0 lógico.

De esta forma se logra con un solo hilo tener tanto la recepción como la transmisión de datos, este tipo de bus solo es capaz de transmitir en modo Half-Duplex por que  es evidente que no puede recibir datos y enviarlos a la vez así que para altas velocidades no es útil aunque si es útil para tener muchos equipos de baja velocidad conectados a bajo coste.

El pase de diapositivas requiere JavaScript.

La librería se encuentra disponible para su descarga en la siguiente dirección, como siempre bajo licencia Creative Commons Share Alike 2.0.

http://www.megaupload.com/?d=DITDMST0

Written by cuningan

3 julio, 2011 a 19:27

Responder

Introduce tus datos o haz clic en un icono para iniciar sesión:

Logo de WordPress.com

Estás comentando usando tu cuenta de WordPress.com. Cerrar sesión /  Cambiar )

Google photo

Estás comentando usando tu cuenta de Google. Cerrar sesión /  Cambiar )

Imagen de Twitter

Estás comentando usando tu cuenta de Twitter. Cerrar sesión /  Cambiar )

Foto de Facebook

Estás comentando usando tu cuenta de Facebook. Cerrar sesión /  Cambiar )

Conectando a %s

A %d blogueros les gusta esto: