Duda comunicacion Uart Pic Pc

Saludos amigos. soy un navato en esto de los pics, y de la transmision serial pc. la cuestion es que estoy muestreando una señar de 100 hz y necesito envariarla al pc. entonces puedo muestrear desde 200 hz en adelate, elegi 1 ms (1 khz)., que tanto me limita si transmito a 19200 baudios?, al parecer estoy perdiendo informacion, puesto que no solo transmito la conversion, sino un par de caracteres mas. A cuantos baudios debo transmitir para no peder nadaa, y porque?
 
Suponiendo que tu muestra sea de un byte, estarías enviando 3 bytes, es decir 24 bits, a los que hay que sumar 1 bit de start y 1 bit de stop por cada carácter que se transmite por el puerto, es decir en total serían 30 bits a transmitir.

A una frecuencia de 1kHz, el resultado serían 30000 bits por segundo, es decir en teoría con 38400 baudios podrías hacerlo.

Quizá te encuentres con un problema, cuando transmites tanta cantidad de información puede ser que al PC que uses no le de tiempo a procesarla y haga cosas raras (cuelgues, pérdida de datos, etc.), es algo que he observado en la práctica cuando haces una transmisión continua de datos sin hacer unas esperas de algunos milisegundos entre un dato y el siguiente, que sería tu caso... no obstante prueba a ver.
 
Hola, sabes si usas el Visual basic con el microsoft Comm control puedes usar el evento oncomm el cual modifica el valor de la propiedad commevent, cuando esta propiedad toma el valor de dos, aplicando un If commRx.CommEvent = 2, se detecta en tiempo real cada vez que ha llegado un nuevo dato, para procesar dato por dato la propiedad InputLen debe ser 1
y la propiedad RThreshold debe ser 1 en caso de querer procesar varios datos cambiar el valor de estas propiedades.,
aqui un mejor explicacion:
http://www.frro.utn.edu.ar/repositorio/catedras/electrica/2_anio/fundamentos_informatica/apuntes/visual_basic/Manejo%20Puertos.pdf
como dice ferny cuando envias tantos datos el PC tiene problemas para procesarlos,

seria mejor que enviaras ese byte como tal y no como cadena de caracteres, el pc tiende a interpretar la data como ascii asi si envio el 32 el pC lo detectara como "espacio", pero para obtener su valor decimal se puede aplicar la funcion ascii(caracter) y te devuelve el valor decimal, esta funcion es en visual basic 6 pero debe tener su equivalente en otros lenguajes de programacion.
 
gracias amigos. Uff interesante lo de visual, no lo sabia pero voy a investigar.. y respecto a lo ke me dijo Ferny, es decir que si empleo una frecuencia de 500 hz... envio 15 mil bits por segundo, y en ese caso usar la velocidad de 19200 baudios?
 
si envias serialmente datos de un conversor a/d a 8 bits/muestra, tendrias un rango de 0 a 255 para cada muestra, frecuentemente se le aplica formato a la data para que, por ejemplo si tengo el numero 123 transmita el caracter "1", luego el caracter "2" y luego el caracter "3" y en el PC se detecta la cadena 123 y se conveierte a numero, de tal manera que necesitarias 24 bits por muestra y como te explico ferny, serian 30 baudios por muestra adicionando bits de inicio y parada, pero si en vez de transmitirlo asi el 123 lo envias como el binario "01111011" ocuparias solo los 8 bits originales, la PC por defecto detectara el dato como el caracter con codigo ascii 123, pero si le aplicas una funcion que tome ese caracter y te devuelva el equivalente ascii, o mejor aun ver el valor de el dato entrante directamente en binario tendrias el valor original de la muestra, de esta manera tendrias 8 bits de dato+bit_inicio+bit_parada=10baudios/muestra, como quieres 1000muestras/segundo, necesitarias 10000baudios/segundo de velocidad, quizas podrias conformarte con 9600 que es la velocidad mas proxima.
 
Amigos:

quizas este cerrado este tema, pero tengo el siguiente problema.
con un pic 16F873A estoy leyendo 2 señales analogicas provenientes de 20amplificadores de instrumentacion usados para amplificar la señal de 2 celdas de carga.
La salida del Amplif instr esta conectadas a las patas ADC del PIC y luego usando un MAX232 conecto ese proyectyo a una PC con Labview.

El pic esta configurado para convertir las señales analogicas y enviar la conversion por UART a la pc. El labview levanta esos datos y los traduce a peso.

Simulando todo el proyecto con proteus y labview la conversion es perfecta. no hay perdida de bits en la comunicacion.

ahora cuando utilizo el sistema de celdas+amplif de instru+pic+max232+labview al leer los datos con hyperterminal veo que la señal convertida por el pic oscila entre +- 20 bits. Es decir si la conversion ADC deberia ser 128 bits , con simulacion en proteus y viendo los datos recibidos por hyperterminal recibo los 128+-1 bit. Ahora cuando energizo el sistema pic+max232 la lectura con el hyperterminal de los datos enviados por el pic correspondientes a la conversion tienen un error de +-20 bits.

La complicacion surge cuando al medir la calidad de la señal de 0-5v provenientes de la placa amplificadora de la señal de las celdas, esta medicion es muy estable incluso medida en los bornes previos a las patas ADC del PIC. Pero si tomamos los datos enviados por el pic al puerto seria como si la señal analogica variara en +-5% del valor original lo cual es imposible ya que el peso colocado sobre las pesas esta fijo.

Alguna sugerencia en cuanto al armado de la placa del pic con el 232.

Adicional quiero comentar que en una misma placa estan conectados los bornes para conectar las señales analogicas, esta alojado el MAX232, el pic. Es recomendable esta configuracion?
Estoy seguro que es ruido pero de que forma podria mejorarlo??
 
Atrás
Arriba