# Comunicación puerto serial con MAX232 sin pic



## krosh118 (May 5, 2012)

Buen día y disculpen la molestia. Tengo que hacer un proyecto utilizando el puerto de comunicación serial. Ya se como conectar el integrado MAX232, su pin out y su pin in. El problema radica en que no puedo utilizar ningún pic si no solamente puras compuertas, contadores, comparadores, etc.

He tratado sincronizar un astable a 110Hz (velocidad a la que también he configurado el puerto serial) pero no logro capturar todos los bits.

¿Podrían ayudarme aportando ideas?.

Muchas gracias.


----------



## chclau (May 5, 2012)

Fijate en esta nota de aplicación, es un método típico de sincronización usado en las UART.

http://pdfserv.maxim-ic.com/en/an/AN2141.pdf


----------



## danieldanielko (May 9, 2012)

hola!

antes que nada, la comunicacion serial se que es de 2 formas, asincrona y sincronica,,, cual piensas utilizar??

definitivamente, hay que utilizar registros,, el 74ls164 y el 74ls165,, cheka sus datashet para darte una idea,,, recorda que si vas a recibir datos, el puerto serial los manda en seria,, entonces tendrias que utilizar el 74ls164 para convertirlos a pararalelos,, y para recibir se utiliza el 74ls165

porque no utilizas los 9600 baudios que viene por default, asi te evitas tanto ruido...

cheka esto enta informacion,, aqui te explica la comunicacion serial, te daras cuenta de como funciona

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


----------



## danieldanielko (May 13, 2012)

Hola!

me he dado a la tarea de investigar esto mas a fondo y he descubierto el siguiente link:

http://www.webelectronica.com.ar/news26/nota02.htm

aca explican como mandar 8 bits de datos a la pc en modo asincronico, les comento que yo ya he probado este circuito y funciono a la perfeccion  salvo por un par de errores, como el valor del capacitor para el 555 pero de ahi todo bien.

desafortunadamente no hay nada que explique como recibir datos, sin embargo ya tengo la idea de como hacerlo , si me funciona lo estare publicando mas adelante, mientras tanto se aceptan sugerencias


----------



## Scooter (May 14, 2012)

No entiendo estos "pasatiempos" para complicarse la vida; ya es bastante complicada sin tanto cuento.

En fin, mas o menos lo que hay que hacer para recibir:

Se necesita un reloj a la frecuencia de la transmisión y un registro de desplazamiento con entrada serie y salida paralelo. El reloj se conecta al registro pero está inhibido hasta que llegue el bit de start, después de los bits de transmisión + el de start + el de stop + paridad si la hubiese el reloj se vuelve a inhibir.
Además tendrás que desfasarlo el 50% del ciclo para garantizar "datos buenos". Normalmente se emplea un reloj dos o cuatro veces mas rápido y unos divisores de frecuencia, así en el primer bit se esperan 2 ciclos y en todos los demás cuatro.

Nota sarcástica: Mas o menos esa es la teoría, aunque yo nunca he perdido el tiempo en hacerlo "a pedales", ya que estás no uses el max 232 "que es trampa", adapta los niveles con operacionales o mejor aún con transistores que es mas complicado, y ya que estás no uses puertas ni registros hazlo todo con válvulas de vacío que tiene mas aliciente.


----------



## danieldanielko (May 14, 2012)

lol

no es que me quiera complicar la vida, es simplemente que pàra este proyecto no permiten el uso de pic, (claro con pic es mas facil no?? solamente un par de instrucciones y unas cuantas librerias y ya tenes tu codigo andando ), ademas, en la mayoria de proyectos que dejan, siempre ponen restricciones, como por ejemplo:

se prohibe el uso de pic
se prohibe el uso de componentes que no has sido vistos en clase
etc...

 sin embargo  gracias por la sugerencia..

pd. eso de las frecuencias es cierto, porque a la salida del 555 tenia 10200hz,, mientras que a la salida del max232 la frecuencia andaba por los 6700hz,,


----------



## Scooter (May 14, 2012)

Ya lo daba por hecho  que el pasatiempo era una tarea de clase... Como hay poco que aprender y seguro que teneis tiempo de sobra es lógico gastarlo así [/ironic]

Prueba a ver el diagrama de bloques de la uart de un microcontrolador, mas o menos es como te indiqué


----------



## krosh118 (May 14, 2012)

Gracias a todos por contestar. En efecto no es mi forma de "gastar el tiempo" simple y sencillamente son restricciones que el auxiliar de la cátedra nos impuso las cuales a mí también me parecieron ridículas (por cierto le enseñaré el comentario de Scooter para que vea que no soy el único que lo pensó) .

En fín, he logrado conectarme con muchísima dificultad y a una velocidad risible sin embargo el objetivo era la comunicación.

Nuevamente gracias a todos por contestar, fue muy valiosa su ayuda.

Saludos.


----------



## micro317 (Abr 30, 2017)

Hola.

Necesito hacer comunicacion serial sin usar ningun tipo de microcontrolador he estado investigando y encontre este circuito de esta pagina  http://www.webelectronica.com.ar/news26/nota02.htm lo he simulado y lo tengo en la protoboard se usa un 555 en modo astable un registro 74ls165 que convierte datos en paralelo a datos serie y el max 233 que convierte ttl a rs232.

Pero el problema es que cuando lo conecto a la pc usando el hyperteminal no recibe los datos correctos por ejemplo si pongo el 64 binario se supone que debe de aparcer un @ pero aparecen otros simbolos.

Aun tengo varias dudas haber si ustedes me pueden ayudar.

La configuracion del 555 si es recomendable usarlo para la frecuencia pienso que ahi puede estar el problema ya que lo he configurado a 9600 hz pero no se si es estable para este trabajo

Habra otra opcion para la frecuencia en este circuito o si se puede con el 555 o q puede estar mal en este circuito?

Les dejo una foto del circuito simulado en proteus.


----------



## Gudino Roberto duberlin (Abr 30, 2017)

Hola, al utilizar una comunicación serial RS 232, debes respetar el protocolo. Por lo que veo envías los datos, pero no se ve que generes el bit de inicio y el bit de parada. Eso complica la interpretación de la parte receptora, y aparece cualquier cosa.
Te invito a que leas, sobre el sistema RS 232 y sacarás tus propias conclusiones.


----------



## palurdo (Abr 30, 2017)

Y no te dejan usar una UART?


----------



## savad (Abr 30, 2017)

Un error muy común entre novatos, es no saber que la transmisión es en Baudios,  no en bits/seg
Me extraña que nadie lo haya notado. 
Como dicen los compañeros... lee la norma.

Y no te fíes de lo publicado en la web. Aunque sea el fabricante, somos sólo humanos.
Así que errar es parte de nuestra naturaleza.

"¿Pero y qué son 9600 bits/seg?, pues es la cantidad de bits que se envían en un segundo, en nuestro caso se envían 9600 bits en un segundo, o lo que es igual, enviaremos un bit en 104.16µs"​ Fuente:
Probador del puerto serie​ Cuando debió decir  9600 Baudios.
Un Baudio es el grupo de bits. El número de bits es variable según definas tu protocolo.

Por ejemplo, si defines tu baud cómo:

caso 1:
...  1 Start Bit  + 7 bits de datos + No paridad + 1 Stop Bit = 9 bits en el grupo

caso 2:
diferente a 

...  1 Start Bit  + 8 bits de datos + paridad Par + 1 Stop Bit = 11 bits en el grupo

diferente a 

caso 3:
...  1 Start Bit  + 8 bits de datos + paridad Par + 2 Stop Bit = 12 bits en el grupo

El termino “baud” se origina en honor al Ingeniero Frances Emile Baudot,
quien invento el codigo de 5-bit usado en las máquinas de teletypo.
Baud rate se refiere al número de cambios que ocurren en las señales
o simbolos en un segundo.

Si N es el número de bits por symbol, Entonces el número de simbolos
requeridos es S = 2N.

Asi que, el bit rate es:

... R = baud rate x log2S = baud rate x 3.32 log10S

Si transmito a 9600 Baudios,  transmitiré:

.... En el caso 1: Número de bits = 9 -> S = 18 -> R = 9600 * 3.32 * Log(18)
..................... R = 40,008 bits-sec

.... En el caso 2: Número de bits = 11 -> S = 22 -> R = 9600 * 3.32 * Log(22)
..................... R = 42,785.7 bits-sec

.... En el caso 3: Número de bits = 12 -> S = 24 -> R = 9600 * 3.32 * Log(24)
..................... R = 43,990 bits-sec


----------



## micro317 (Abr 30, 2017)

Ya he le*í*do la norma RS-232*. Y*a vi lo de bit de inicio, de parada*,* la paridad  y ya hab*í*a hecho el calculo de que cada 104 microsegundos se env*í*a un bit*.*

*E*n mi caso*, *estoy intentando enviar 8 bits de datos*, * un bit de parada y otro de stop sin paridad*.*
*L*a imagen que adjunto muestra lo que genera el bit de inicio y el bit de parada*, *usando compuertas l*ó*gicas*.*

En el circuito*,* al momento de oprimir el push button*,* el LED q*ue* est*á* a la salida de la compuerta AND 7432 se apaga*, *lo que indica que mand*ó* el 0 l*ó*gico para la transmisi*ó*n de datos.

Por ultimo.* ¿A*lguien sabe si la configuraci*ó*n del 555 es correcta para este circuito*?*
*E*s ah*í* donde más dudas tengo*.* *E*spero me puedan ayudar*.*


----------



## Scooter (May 1, 2017)

Hay que mirar la tolerancia de los componentes; un 555 no es que sea una maravilla de la precisión.
A lo mejor está bien el valor teórico pero en la práctica va a otra velocidad diferente.


----------



## AngryGirl (Ago 20, 2017)

Hola Savad.
Creo q*ue *estás equivocado.
La comunicación serial UART utiliza código NRZ, y se envía un símbolo por baud. Eso significa q*ue * el término bauds equivale a bits por segundo, sin importar el tamaño de frame.

Es ilógico pensar que a 9600 baudios se envien 40,008 bits-sec


----------



## palurdo (Ago 20, 2017)

AngryGirl dijo:


> ... y se envía un símbolo por baud...



Lo que dices es una redundancia, es como decir que se transmite un símbolo por cada símbolo por segundo transmitido. Y para el caso de una UART claro que baudio=bit/s, pero para el caso de una PSK de 8 fases, cada símbolo (cada transición de la onda en ese caso, o cada periodo en una ASK de 8 niveles) puede denotar 8 valores distintos, por lo que efectivamente un baudio =log2(8)=3bits/s.


----------



## AngryGirl (Ago 21, 2017)

Hola Palurdo
Tienes razón es una redundancia, pero es que trataba de explicar a *Savad* que esos bits por símbolo no son *9* ni *11* ni *12 *sino que es 1.
La respuesta es sólo para el caso de la UART y los q*ue* utilicen código NRZ. 

Saludos


----------

