Interfaz RS232 PIC PC (Proyecto Completo VB6)

F A N T A S T I CO ! ! !:aplauso:


Un millón de gracias es exactamente lo que pretendía hacer.
Ahora son las 2 de la mañana pero no pude resistirme a abrirlo.
No tenía ni idea de esa manera de tx el estado de los puertos (que burro soy)
Mañana me dedico a estudiar toooodos mis errores.
Y a aprender como se hace correctamente.

Como siempre los comentarios de linea son excelentes y con absoluto sentido didáctico.
De nuevo Infinitas Gracias .:apreton:

Un Cordial Saludo desde el otro lado del charco.
 
Hola:
Por temas ajenos no lo puedo armar hasta dentro de 15 dias, y no me parece correcto dejar pasar tanto tiempo para dar parte:
 
1*_ Agradecimiento: Jamás hubiese encontrado el error sin la ayuda de D@rkbytes
(Programa + Simulación) Dado que el error estaba precisamente en la simulación.
Y lo expongo, por si alguien como yo, va a pelo por internet, sin maestro, profesor ,
colega, conocido o pariente…....y quiere hacer dos Tx simultaneas, es probable: Que le
pase lo mismo:
No es suficiente determinar y especificar la segunda Tx en el programa, tambien hay
que hacerlo en la simulación; allí estaba la madre del borrego y por eso entraban
en conflicto. (Casulamente se ve en las imagenes que había puesto anteriormente).

2*_ Ahora trabajando sobre el poy. de D@rkbytes.

a*_ Falla siempre la primera Tx al slave (Solo la primera). He probado mandar algo
antes o después del inicio, he mandado 0s, 1nos, el puerto b completo pero las
ignora. He cambiado las pausas y darle mas tiempo al slave pero todavía no logro
solucionarlo. Por eso quería armarlo no sea que fuese también problema de
simulación.

b*_ No me permite cambiar ni la oscilación del xtal , ni la velocidad de Tx .
Directamente deja de funcionar, como si tuviese copyright :D . He leído que 10 MHz
es lo recomendable para Tx RF, pero era solo para ejercitar.

Bueno, he recuperado las ganas que ya es mucho, en cuanto lo arme comento,
será lo primero después de un buen tiempo en huelga de soldadores caídos.

Un Saludo y Muchas Gracias.;)
 

Adjuntos

  • salve 1.jpg
    salve 1.jpg
    76.9 KB · Visitas: 141
Última edición:
Saludos nuevamente carlitosferar.
1*_ Agradecimiento: Jamás hubiese encontrado el error sin la ayuda de D@rkbytes
(Programa + Simulación) Dado que el error estaba precisamente en la simulación.
Y lo expongo, por si alguien como yo, va a pelo por internet, sin maestro, profesor ,
colega, conocido o pariente…....y quiere hacer dos Tx simultaneas, es probable: Que le
pase lo mismo
Pues de nada, que bueno que te sirvió el proyecto.
Hay veces que un programa no funciona debido a errores de hardware por mal diseño.
2*_ Ahora trabajando sobre el poy. de D@rkbytes.

a*_ Falla siempre la primera Tx al slave (Solo la primera). He probado mandar algo
antes o después del inicio, he mandado 0s, 1nos, el puerto b completo pero las
ignora. He cambiado las pausas y darle mas tiempo al slave pero todavía no logro
solucionarlo. Por eso quería armarlo no sea que fuese también problema de simulación.
Esta causa tampoco la pude solucionar, intente de varias formas pero no se dejó.
Lo que si noté es que a veces al iniciar el programa, funciona normalmente y otras no.
Y si, el primer envío de datos es el que no es bien reconocido o simplemente no lo acepta.
Lo bueno es que solamente es el primero, los consecutivos no tuvieron problemas.
b*_ No me permite cambiar ni la oscilación del xtal , ni la velocidad de Tx .
Directamente deja de funcionar, como si tuviese copyright :D . He leído que 10 MHz
es lo recomendable para Tx RF, pero era solo para ejercitar.
Pues no tiene copyright... Por el momento. :LOL: "No lo tendrá, es un aporte para F.D.E"
Si se puede cambiar tanto la selección de oscilador como la velocidad de Tx/Rx
Algo debes de estar haciendo mal en la programación.
O tienes que verificar que en la interfaz también hayas actualizado los parámetros.
Puedes trabajar con el oscilador interno del 16F628A a 4MHz, pero recomendable solo a 2400 bps.
Bueno, he recuperado las ganas que ya es mucho, en cuanto lo arme comento,
será lo primero después de un buen tiempo en huelga de soldadores caídos.

Un Saludo y Muchas Gracias.;)
OK. Esperamos los resultados, esperando que todo funcione bien y logres corregir errores.

Suerte y hasta luego.
 
Última edición:
Saludos.
Después de algún tiempo de esperar a que surtieran el sensor DS18B20 por fin lo conseguí. :)
Implemente un sistema sencillo de prueba, con un LCD 16x2 y transmisión de datos via puerto serie.
El PIC que utilice fue un 16F628A configurado con oscilador interno (4MHz),
y un solo transistor BC548 para la adaptación de niveles RS232 del puerto serie.

El programa está escrito en PICBasic Pro y simulado en Proteus.
La interfaz para leer los datos en la PC está escrito en VB6, y es similar a la usada para el LM35

Características:
.- La transmisión de datos se realiza mediante el módulo USART del PIC a 9600bps.
.- El sistema es muy estable y con una granularidad de .5°
.- El programa también puede leer la temperatura negativa.
.- La temperatura es mostrada en grados centígrados en un LCD 16x2 (Use un JHD 162A)
.- La temperatura en mostrada en grados centígrados y grados Fahrenheit en la interfaz.
.- Cuenta con aviso de desconexión del sensor (Solo por LCD)

El sistema es una base piloto que puede servir para otros proyectos.
Y solo se implementaron los comandos básicos de inicialización y conversión de temperatura.
Incluyo los programas, esquema y simulación.

Espero sea de utilidad.

Suerte y hasta luego.
 

Adjuntos

  • Termómetro RS232 DS18B20.rar
    69.8 KB · Visitas: 302
Hacerlo en ASM es cosas de pegarte media vida, pero lo haces. En cuando al a programar PBP, por qué ese lenguaje si el C es ESTANDAR y puedes meterte con más microcntroladores diferentes casi sin problemas como AVR, FreeScale, Rabbit, PIC, ARM, etc?

Por cierto, buen trabajo.
 
Hacerlo en ASM es cosas de pegarte media vida, pero lo haces. En cuando al a programar PBP, por qué ese lenguaje si el C es ESTANDAR y puedes meterte con más microcntroladores diferentes casi sin problemas como AVR, FreeScale, Rabbit, PIC, ARM, etc?

Por cierto, buen trabajo.
Gracias Meta.
Así es, hacerlo en ensamblador se llevaría mucho tiempo y varias librerías.
Hacerlo en C, de todos modos es hacerlo en lenguaje de alto nivel. Y solo tengo PICs. :D

Como ya tenia la base para PBP, pues solo me dedique a realizar las adaptaciones para el DS18B20
Que por cierto, es diferente al DS18S20. (Yo pensé que eran iguales, pero no.)
También lo empecé a escribir en C, pero hace tiempo tuve problemas con la librería LCD.C,
y deje el programa sin terminar. Ahora ya tengo ese caso resuelto,
y me daré un tiempo para retomar el programa.

Hasta luego. :apreton:
 
Entendido.
Tengo el DS1820. Algo recuerdo que entre uno y otro varía los tiempos, es decir, lo que tarda en leer la temperatura.

Saludo.
 
Entendido.
Tengo el DS1820. Algo recuerdo que entre uno y otro varía los tiempos, es decir, lo que tarda en leer la temperatura.

Saludo.
Me parece que los tiempos de lectura son los mismos.
Lo que cambia es la forma de leer los bits, ya que tienen diferente resolución.
Aquí el enlace con la información de las diferencias. Differences Between the Two Devices
Busque información del DS1820 y me aparece en la hoja de datos, que es igual al DS18S20.

Me pasó que al leer el DS18B20 a una temperatura de 27°C, me marcaba 216°C :unsure:
Para resolver eso, dividí el resultado entre 8 y asunto arreglado. :D
Así qué el programa puede funcionar para los dos sensores, haciendo ese cambio.

Con respecto al programa en C, ya lo termine.
Utilice una librería GNU que ya hace todo el proceso de lectura y escritura 1-Wire
También use una librería para el LCD que esta diseñada para trabajar con LCD 16x4 Flex_LCD416
pero funciona sobre LCD 16x2 de manera muy eficaz y es fácilmente modificable.

Adjunto el proyecto completo en PICC para PCWHD de CCS

Saludos.
 

Adjuntos

  • 16F628A DS18B20 PCWHD.rar
    71.2 KB · Visitas: 190
  • 16F628A DS18B20 RS-232 II.rar
    163.8 KB · Visitas: 101
Última edición:
Hola: Ha pasado tanto tiempo que esto va a quedar como off-topic.
Solo comentar que no escribí antes, no por descortés si no por bruto, ya que me fue imposible hacer funcionar los módulos RF. El máster funciona a la perfección pero “ Il figlio e morto”.:cry:
En cuanto logre algún resultado comento.
Un Saludo.
 

Adjuntos

  • M-S 01.JPG
    M-S 01.JPG
    64.2 KB · Visitas: 96
  • M-S_02.JPG
    M-S_02.JPG
    87.6 KB · Visitas: 84
Saludos nuevamente carlitosferar
Ha pasado tanto tiempo que esto va a quedar como off-topic.
Seguimos dentro del tema, no te preocupes.
Solo comentar que no escribí antes,
no por descortés si no por bruto, ya que me fue imposible hacer funcionar los módulos RF.
:LOL:
El máster funciona a la perfección pero “ Il figlio e morto”.:cry:
Posiblemente algo estas pasando por alto. Espero pronto des con la falla.
En cuanto logre algún resultado comento.
Un Saludo.
OK. Por lo que veo ya llevas bastante avanzado el proyecto.

Te deseo suerte. (y)
 
3 meses para prender un led, buen promedio NO?, voy como una moto.:oops:

He logrado que el bello durmiente abra los ojos. Trataré de contar mi experiencia en forma rápida.
1er pregunta: Por qué demonios no lograba comunicación entre pics, ni siquiera cableado????? Respuesta: La velocidad. Primer despertar del led al bajar la velocidad a 1200 baudios. Solo entre pics ...No con en el PC.(Estoy trabajando con Osc 10MHz).
2da pregunta y gran descubrimiento: Volviendo a estudiar y montar la comunicación pic a pic, ratifico que los módulos funcionan y los circuitos también. Pongo los dos programas en pantalla para compararlos y aparece la gran diferencia. El la comunicación pic-pic solo se tx el estado de un bit y en el otro (motivo de toda esta historia) pretendíamos mandar el puerto B en su totalidad. Por lo tanto concluyo : Estos modulitos no son capaces de tx tanta información y mucho menos de forma segura. (son para llaveros que uno los pude gatillar 100 veces hasta que emiten la señal deseada.
Bien; a menos velocidad,y transmitiendo un solo bit logré comunicación RF y Distancia.
Pero los resultados eran erráticos y nada fiables. Y lo mas grave: Un solo bit.
Otro gran problema es que en la simulación todo funciona pero en la práctica (en este caso en particular) NADA funcionaba.

Bien como con esto llevo meses , solo comento lo mas anegdótico.

He aprovechando también otro aporte tuyo https://www.forosdeelectronica.com/f26/tutorial-microcode-studio-pro-usarlo-62636/#post559677

Y lamento Dark pero para que este bicho funcione con mis modestísimos conocimiento, he transformado tu bella “Sirenita” de 2 lineas en un “Portero de discoteca” . Que ademas de largo (Para lo que hace) es L E N T I I I C I M O. [/SIZE]:rolleyes:
Pero es verdaderamente fiable, ya que el objetivo final (quien sabe cuando) será usarlo vía Internet. Probado en casa, unos 10 metros y efectividad del 100%.
Dejo una foto durante las pruebas con las placas "Cableadas" se ven los módulos RF desconectados. La proto con la prueba pic a pic se colo en la foto.
Un Gran Saludo y mil gracias por la invalorable ayuda. Ah gracias también por recomendarme MicroCode lejos mejor que MPL. Seguiré informando avances (Si los hay).;)
 

Adjuntos

  • IMGP0118.JPG
    IMGP0118.JPG
    93.9 KB · Visitas: 79
  • DARK MODIFICADA -10.rar
    7.9 KB · Visitas: 137
Última edición por un moderador:
hola D@rkbytes.

Quisiera que me ayudara con un tema de como recepcionar una trama enviada desde un terminal de pesaje (balanza), en el hiperterminal me entrega esta trama
5788057146377535825

y estos otros datos son en hexadecimal , decimal,
5788057035467711489


espero de su ayuda gracias.
 
Última edición por un moderador:
hola D@rkbytes.

Quisiera que me ayudara con un tema de como recepcionar una trama enviada desde un terminal de pesaje (balanza), en el hiperterminal me entrega esta trama http://plus.google.com/photos/113100426515887601309/albums/5788057146377535825
y estos otros datos son en hexadecimal , decimal,
https://plus.google.com/photos/113100426515887601309/albums/5788057035467711489

espero de su ayuda gracias.
¿Tendrás algún ejemplo? Ya que los enlaces que pones me dirigen a iniciar sesión en Google
y no se puede ver ninguna foto.

PD. Adjunta tu proyecto aquí mismo en el foro, para poderlo ver.

Saludos.
 
Hola: Gracias por los cumplidos.
Dejo unas fotos (Ya va tomando forma)
Saludos.

Pd1: En el espacio que queda iran 4 relay .
PD2: El miseria no quiso ni cortarle los cables a los trafos.:oops:
 

Adjuntos

  • ms_001.JPG
    ms_001.JPG
    150.2 KB · Visitas: 67
  • ms_002.JPG
    ms_002.JPG
    143.3 KB · Visitas: 70
  • ms_003.JPG
    ms_003.JPG
    140.8 KB · Visitas: 65
hola D@rkbytes

Acá te adjunto las imágenes de lo que estoy tratando de recepcionar los datos que me entrega la balanza

gracias manuel.
 

Adjuntos

  • 12.JPG
    12.JPG
    107.3 KB · Visitas: 68
  • 11.JPG
    11.JPG
    65.7 KB · Visitas: 53
Última edición por un moderador:
hola D@rkbytes

Acá te adjunto las imágenes de lo que estoy tratando de recepcionar los datos que me entrega la balanza

gracias manuel.
A ver si es esto más o menos lo que estas buscando.
Supongamos que la trama de la balanza es como esto: @-0 36786 0000
Entonces utilizamos esta instrucción...

HSERIN 1000,MainProgram,[Skip 5,STR Datos\5]
; Si en 1 segundo (1000mS) no se reciben datos, regresa a la etiqueta MainProgram
; Salta 5 caracteres y recibe los siguientes 5, que los almacena dentro de una matriz de 5 datos.

El problema con este algoritmo, es que siempre tiene que haber 5 caracteres,
después de saltar los primeros 5. De otra forma, no son tomados en cuenta.
Pero como veo que después del peso, siguen otros más "Los espacios cuentan", puede funcionar.

Y para mostrar el resultado, haces por ejemplo...
LCDOUT $FE,$1,"Peso:"
LCDOUT $FE,$C0,Datos[0],Datos[1],Datos[2],Datos[3],Datos[4],"Kg."


Al hacer uso de este método, se logra lo que se ve en la imagen adjunta.

Espero que esto sea lo que estas buscando.
Haz tu programa, y en lo que tengas duda, consultas.

Suerte.
 

Adjuntos

  • Balanza.gif
    Balanza.gif
    30 KB · Visitas: 143
Última edición:
con el programa que estoy editando es en pic simulator ide y en la sintaxis tengo el problema.
he editado en pic simulator ide lo siguiente:

Código:
AllDigital
TRISC = 0
Dim data As Word
Dim space As Word
Dim dec As Word
Dim unid As Word
Dim dot As Word
Dim milsm As Word
Dim centsm As Word
Dim decm As Word

loop:
Serin RC7, 9600, data          'leo el 1 dato y lo guerdo en el registro data
    If data = 0x6b Then     'pregunto por el 1 dato leido 'k'
WaitMs 10                          'espero los 10
WaitUs 400                          'datos que son esos espaciops leidos
Endif

Serin RC7, 9600, space          'vuelvo a leer el 11 dato
    If space = 0x20 Then            'pregunto por el espacio q esta delant del valor del peso
Serin RC7, 9600, dec              'si leo el espacio, lee la decena del valor del peso
Serin RC7, 9600, unid      'leo la unid y la guardo
Serin RC7, 9600, dot       '  .
Serin RC7, 9600, milsm0   '  .
Serin RC7, 9600, centsm  '  .
Serin RC7, 9600, decm     'leo la decima y lo guardo
Endif

Goto loop

End
 
Última edición por un moderador:
con el programa que estoy editando es en pic simulator ide y en la sintaxis tengo el problema.
Saludos.
Me parece que hacerlo con el PIC Simulator IDE va a resultar algo complejo de lograrlo.
Te recomiendo que uses PICBasic Pro o Proton que tienen un set más amplio de instrucciones.

Adjunto el programa en PBP que realice para mostrar el ejemplo que cite anteriormente.

Suerte.
 

Adjuntos

  • Balanza.rar
    17.9 KB · Visitas: 166
@d-rkbytes
Saludos, gracias por el gran aporte que has hecho, tengo varias duda:
* es posible trabajar el asm del primer ejemplo que has colocado a 8 mhz
* los datos enviados en formato hexadecimal desde visual basic lo puedo grabar en una eeprom 24lc256(son aproximadente 1200 datos) como puedo hacer que esos datos en hexadecimal se graben en la eeprom
 
Atrás
Arriba