# Varios RS232 a un PIC



## davidparanoya (Oct 22, 2007)

Hola, saludos a todos. Mi duda es si puedo conectar varios RS232 a un pic, porque tengo que controlar una red que se comunica con RS232 y tambien comunicarme con el PC. ¿Se puede hacer?
Gracias de antemano.


----------



## tiopepe123 (Oct 22, 2007)

O sea si lo he entendido bien quieres como un concentrador d RS232

Tienes varias soluciones una, la evidente es pasar cada una de las RS a TTL y utilizar un multiplexor 74XX

Otra es utilizar interruptores electronicos como el 4066,4051,4052,4053 y un conversor RS a TLL

Si solo tiene que hacer de puente o sea multiRS232-->RS232 PC puedes utilizar directamente los interruptores.


Para el control de cada canal recuerda que hay el bit start, te puedes aprobechar de ese bit para saber que canal esta activo, por ejemplo para generar una interrupcion.

Tambien  recuerda que los pics tienen una proteccion de diodos que la puedes aprovechar para ahorrarte componentes con solo utilizar una resistencia limitadora puedes aplicar tensiones mayores de 5V o negativas con total seguridad, por ejemplo 1kohm.


Tambien debes tener encuenta que los RS232 pueden estar en distintos potenciales eso te obliga a utilizar optoacopladores, para evitar interferencias y corrientes extrañas.


----------



## davidparanoya (Oct 22, 2007)

Muchas gracias por la rapidez. Te cuento mejor el problema, tengo una red de lectores RFID en RS232, con el PIC tengo que hacer un pooling, cuando tenga respuesta de alguna, tendria que pasarle este dato al pc via RS232 y esperar que este conteste con una trama y esta pasarsela a un LCD.
Y la pregunta era si podia configurar la USART para estos dos puertos, hacerlo por interrupciones o alguna otra posibilidad.
Yo pense en multiplexar un puerto para la red y el pc, configurando la USART con los mismos comandos para los dos puertos.
Espero que te haya aclarado algo las ideas.

Gracias.


----------



## eidtech (Oct 22, 2007)

david,

tus lectores no soportan RS485?


----------



## davidparanoya (Oct 23, 2007)

Si lo soportan, ya tengo un protocolo de comunicacion con ellos. Pero para mi sistema me viene mejor RS232, para no tener perdida de información y efectivada. 
He pensado otra alternativa, cada lector le asocio un microcontrolador, con comunicacon serie, asi hasta cumplir los cuatro lectores. Estos cuatro microcontroladores, conectarlos a otro microntrolador mediante interrupciones(4 interrupciones) y este controlar el LCD. Lo ves factible?Lo estoy haciendo en C18 y el PIC 18F4520.

Gracias otra vez por contestar.


----------



## eidtech (Oct 23, 2007)

David,

Con RS485 tambien puedes tener confiabilidad en el envio de la información y de manera efectiva. Precisamente me dedico a soluciones RFID.

La segunda opcion tambien es valida, solo que depende de la situacion puede estar sobrada, insisto depende de tus requerimientos, pero con un solo MCU puedes controlar todo. Lo he hecho cuando requiero leer lectores en forma simultanea, ya que mediante RS485 tienes que hacer las lecturas simultaneas.

Tambien existen MCUs de 4UARTs (ATMEGA1280).

Que lectores de RFID estas usando?


----------



## tiopepe123 (Oct 24, 2007)

Hay tantos metodos como dias tiene la semana, pero vamos por partes:

Puede que los rfid envien datos todos a la ve, en el mismo instante?
Puedes retarsar o congelar el envio de datos algun comando ?
Que aburate utilizan, es programable?
Cuantos bytes envia cada vez?


Lo que se puede implementar facilmente es un uart via sofware que seria los rfid y otra harware que es la de pc.

El compilador ccs se lo puedes indicar me parece.

 Lo importante en tu caso es si se pueden congelar los rfid, estamos hablando de msegundos, o sea el tiempo entre rafaga y rafaga.




Otra solucion es hacer trabajar el pic como una fifo o un analizador logico, y despues descargas tanquilamente cuando puedas.

Como una cassete grabas la conversacio n y despues la reproduces.

El micro se comportaria como una grabadora, no procesaria los comandos.

Haz los calculos si entra en la ram

nbites comando

Ojito son bites, como tienes bytes pruedes aprovechar menor la memoria

Tienes dos interrupciones y dos punteros,
Una interrupcion lee. El puntero resigue la memoria
La segunda envia. El puntero resigue la memoria si tiene datos, si no salta a la siguiente estacion


----------



## davidparanoya (Oct 24, 2007)

Mis lecotres son RIDEC 5000 de la empresa Softronica. Con RS485 hay un comando para leer, es decir solo leen cuando le mando ese comando. Con RS232 es lectura continua es decir leen cuando se le presenta una tarjeta encima del lector.
¿Es facil implementar una usart via sofware en C18?
Realmente solo tengo que capturar 16 bytes, el ID de la etiqueta, lo demas me sobra. El total de bytes son 128, ya que el protocolo aereo de comunicacion es el I-CODE.
Tengo un programilla hecho en C18 para la caputra de los 16 bytes pero me da alguno errores.
Gracias por vuestro interes.


----------



## eidtech (Oct 24, 2007)

Por el tipo de lector, asumo que tu aplicacion es control de accesos o muy similar, por lo tanto no necesitas lecturas simultaneas en todos tus lectores, siendo asi yo escogeria RS485 donde tienes lectores secuenciales.

Si bien es un poco mas complicado, es la mejor solucion. todo lo bueno requiere un esfuerzo.

He puesto hasta 20 lectores en un bus RS485 trabajando sin problemas. con un solo controlador, por cierto muy sencillo.


----------



## davidparanoya (Oct 24, 2007)

Yo tengo 4 funcionando juntos con RS485, pero controlado mediante un porgrama en c#. Pero lo que tengo que hacer ahora es controlarlos con el PIC y mandarlos al PC las lecturas y devolver un campo con nombre y una flecha a unos LCD de 4X20.
La complicacion la veo en la presentacion de la etiqueta, yo tengo que encargarme de la lectura. Ademas compiladores en C para pic no he utilizado, estoy aprendiendo.
Si me puedes hechar una mano te lo agradeceria, y digo hechar mano y no que me lo hagas.
Por ahora tengo hecho la lectura de las tarjetas, mediante interrupcion pero creo k no es la mejor solucion.


----------



## tiopepe123 (Oct 24, 2007)

Si utilizas el CCS hay un ejemplo para el 485.

Pues creo que lo mejor es pasarse al 485 te ahorras muchos problemas, tienes un mejor control, una inmunidad al ruido y ademas es mas profesional.


En el CCS me parece que cuando defines el baurate tambien le puedes definir si es sorfware, pero no puedo confirmarlo.

Te recomiendo el CCS es muy facil y ya lo tienes hecho todo ya sea a trabes de los ejemplos o funciones ya prediseñadas como al del LCD.
Y si no esta es facil encontrar codigo por internet ya que actualmente es el mas usado.

Tambien te recomiendo un bootloader o reprogramador via serie.


Creo que la mayor dificultat es el tema de las adaptaciones del 485 y el protocolo.


----------



## eidtech (Oct 24, 2007)

para mi lo mas critico del RS485 fueron los convertidores, en realidad lloraba al principio por que tenia demasiados problemas. 

utilizaba convertidores con seleccion de flujo automatico y por desconocidas razones el temporizador se accionaba solito. 

descubriendo eso opte por el control de flujo a traves del programa y caso resuelto. 

ahora que mejor, Dallas ya tiene sus transceivers RS485 con control de flujo automatico.


----------



## davidparanoya (Oct 25, 2007)

Por ahora tengo un placa en la que viene un max232, asique lo que he hecho es al DB9 que sale de este masx232, le he encufado un convertido 232/485 y a este mi rede de lectores, asique por ahora eso no me es un problema. Tarde o temprano tendre que utilizar un max485, pero no tengo ni idea de las conexiones, suponguo que sera como max232, pero no se donde lei que tiene una patilla para decir si es envio o recepcion, no se si sera asi.
Supongo que me da igual hacer las cosas en CCS que en C18, ya que estoy en pañales en los dos compiladores.
¿eidtech tu que compilador usas?
¿tienes algun esque ma de montar el conversor de niveles?


----------



## eidtech (Oct 26, 2007)

WinAVR, Codevision, IAR Embedded Workbench. todo para Micros Atmel AVR.

Con PIC utilize alguna vez el CCS. manejan el puerto RS485 como una UART normal.

Buscare algun esquema, pero por la red hay muchos. la mayoria funcionan. y si el 75176 o MAX485 tiene un pin que habilita la transmision o recepcion, el cual en principios me causo problemas.


----------



## davidparanoya (Oct 27, 2007)

Por ahora estoy liado con el LCD que es uno compatible con el hitachi y me esta dando problemas. Es un 4X20 y modifique la libreria xlcd del c18 y nada que no envio nada. Monte el circuito como vienen en los manuales y lo unico que me vas el contrastes, jajaja. Haber si hago una rutina en ensamblador y lo pruebo. Si tengo avances te cuento.


----------



## davidparanoya (Oct 29, 2007)

Nada de nada con el LCD, he estado buscando ejemplos y no encuentro anda hecho en c18. No entiendo porque no funciona ya que cambiando la libreria tendria que funcionar.
Si podeis hechar una mano os lo agradeceria. Es un LCD de 4X20 compatible con el controlador hitachi, 8 bits de datos y 3 de control. Ya tengo montado el ciruito solo me haria falta el programa para el 18F4520.
Gracias de antemano.


----------



## zagoaristides (Jun 25, 2009)

eidtech dijo:
			
		

> para mi lo mas critico del RS485 fueron los convertidores, en realidad lloraba al principio por que tenia demasiados problemas.
> 
> utilizaba convertidores con seleccion de flujo automatico y por desconocidas razones el temporizador se accionaba solito.
> 
> ...



Hola, te consulto por si has logrado hacer funcionar el RS485 con la librería de CCS. Te lo pido porque para mi hasta ahora es imposible lograr hacerlo funcionar. Me podrías pasar algún o algunos programas de ejemplo donde hayas hecho funcionar el protocolo. Mi correo es zagoaristides arrob hotmail.com Muchas gracias.


----------

