Interfaz RS232 PIC PC (Proyecto Completo VB6)

Intente adaptarlo pero no se por que motivo me dice que el sensor no esta conectado... Tampoco me lee el valor de temperatura. :confused:

¿?¿?

Adjunto las modificaciones que realice con simulación y todo
 

Adjuntos

  • Adaptacion para Proton IDE.rar
    88.8 KB · Visitas: 24
Perdón por la demora.

Muchas gracias D@rkbytes !!!!!!!!:D:aplauso:

Intente probar el código en un 18f4550 conectándolo al puerto E2/AN7 y me devuelve un '0' cuando lo lee, indicando que el sensor esta ocupado. Probé ejecutándolo paso a paso en Proteus pero no logro darme cuenta a que se debe, lo que se es que salta a la subrutina "No_listo".

Alguna idea sobre eso ?

Estaré configurando mal el puerto E.2 ?

Adjunto el código y la simulación.


Saludos.
 

Adjuntos

  • T18F4550.rar
    140.7 KB · Visitas: 23
En la simulación yo veo un PIC18F4520 :rolleyes:
Como quiera, en el PIC18F4550 no se configuran los pines E/S como digitales con el registro CMCON.
En ese PIC se usa el registro ADCON1 y se le debe dar el valor 15 (0x0F)
Tampoco sé para que configuras el registro INTCON con el valor 7
Al usar Proton, puedes establecer todo digital con All_Digital = On
La frecuencia del simulador la tienes en 1 MHz, debes establecerla a 4 MHz, que es la frecuencia por defecto cuando no se declara en el compilador.
 
:eek: 4520 !!!!! :eek: Se ve que meti mal el dedo... Ya lo cambie... :)

Muy atento D@rkbytes. Gracias.

La frecuencia del simulador la tienes en 1 MHz, debes establecerla a 4 MHz, que es la frecuencia por defecto cuando no se declara en el compilador.

La frecuencia la configuro a 1 MHz porque sino corre muy rápido el micro en tiempo real.

Corregí todos esos errores pero el me dice que el sensor no esta conectado.. "SENSOR DS18B20 NO CONECTADO"

Mis modificaciones:
Código:
Declare Onboard_USB No

Config_Start
    FOSC = INTOSC_EC, PBADEN = OFF, ICPRT = On
    MCLRE = OFF, FCMEN = OFF, IESO = On, PWRT = On, WDT = OFF, LVP = OFF
Config_End 

;*******************************************************************************   
OSCTUNE = %100000
OSCCON = %01000111           ; Frecuencia 1MHz del reloj interno.
;******************************************************************************* 

All_Digital = On

ADCON1 = 0x0F   

Declare LCD_Type 0              
Declare LCD_DTPin PORTB.4         
Declare LCD_DTPort PORTB            
Declare LCD_ENPin PORTB.2   
Declare LCD_RSPin PORTB.1 
Declare LCD_Interface 4 
Declare LCD_Lines 2  

; Declaración de variables
Dim Ocupado As Byte
Dim TempX   As Word
Dim Temp1   As Word
Dim Temp2   As Word


Symbol DQ = PORTE.2           ; Pin del DS18B20 DQ One-Wire
Symbol DQ_DIR = TRISE.2        ; Puerto E2 ds 18B20

Inicio:
    Cls                         ; Inicializar el LCD (También lo borra)            
    Print At 1,1,"Inicializando..."
    DelayMS 1000
    Print At 1,1,"  Temperatura   "
    Print At 2,5,"000.0",0xDF," C"
; Enviar ceros para estabilizar el puerto
    ;HSerOut [0]
    DelayMS 100
 
 Programa:   
    GoSub Leer_DS18B20
    Print At 1,1,"  Temperatura   "
    If TempX.11 = 1 Then            ; Si el bit 11 de "TempX" está en 1, entonces la temperatura es negativa.
        Temp1 = (~TempX >> 4)
        Temp2 = (16-(TempX.LowByte & 0x0F)) * 625
        Temp2 = Temp2 / 20
        Print At 2,1,"   -",Dec Temp1,".",Dec2 Temp2, " ",0xDF,"C   "
        ; Enviar la lectura por el módulo USART
        ;HSerOut ["-",Dec Temp1,".",Dec2 Temp2]
    Else                           'Si el bit11 es 0 la temperatura es positiva
        Temp1 = (TempX >> 4)
        Temp2 = (TempX.LowByte & 0x0F) * 625
        Temp2 = Temp2 / 20
        Print At 2,1,"    ",Dec Temp1,".",Dec2 Temp2, " ",0xDF,"C   "
        ;HSerOut [Dec Temp1,".",Dec2 Temp2]
    End If
    DelayMS 500
    GoTo Programa           

    
; Rutina para leer el DS18B20
Leer_DS18B20: 
    
    DQ_DIR = 0
    DQ = 0
    DelayUS 500           
    DQ_DIR = 1
    DelayUS 100
    ; Verificar si el sensor está conectado.
    If DQ = 1 Then
        Print At 1,2,"SENSOR DS18B20"
        Print At 2,3,"NO CONECTADO  "
        DelayMS 1000
        GoTo Leer_DS18B20
    End If
    
    OWrite DQ,1,[0xCC,0x44]         ; Indicar conversión.
No_Listo:
    ORead DQ,4,[Ocupado]            ; Verificar si el sensor está ocupado.
    If Ocupado = 0 Then No_Listo    ; Si está ocupado, regresar a "No_Listo"
    OWrite DQ,1,[0xCC,0xBE]         ; Indicar leer la temperatura.
    ; Guardar los datos de la lectura.
    ORead DQ,2,[TempX.LowByte,TempX.HighByte]
    
    Return
    
    End

Saludos !!
 
La frecuencia la configuro a 1 MHz porque si no, corre muy rápido el micro en tiempo real.
Eso es debido a una mala configuración del registro OSCCON.
Corregí todos esos errores pero el me dice que el sensor no está conectado. "SENSOR DS18B20 NO CONECTADO"
Nuevamente adjunto el programa con los cambios necesarios y para Fosc = 4 MHz.
 

Adjuntos

  • T18F4550.rar
    58.1 KB · Visitas: 30
Buenas
La sentencia "Create_Coff = On" sirve para que al compilar tu programa ademas de crear el archivo.hex tambien cree el archivo .coff que es para debuguear(depurador).
 
Hola D@rkbytes,

He probado tu post proyecto #1 no funciona en hardware real, que funciona sólo en la simulación en proteus, ¿usted probó en hardware real?.

Kapoh.
 
Hace una semana que entraste al foro, tan rápido lo probaste?.
D@rkbytes no publicaría nada que no haya archiprobado hasta el hatazgo, claro en tan poco tiempo en el foro no es posible que te des idea de quien, ni de su constante aporte y ayuda en programación de Pic's
 
Hola D@rk,
Qué significo el proyecto post número uno es aquí:
post número uno
He probado con un convertidor de USB a DB9.
El DB9 antes en a tablero del microcontrolador conecta al Max232 al puerto de serie TTL
Max232 RS232 to TTL Serial Port Converter Module DB9.pngMax232 RS232 to TTL Serial Port Converter Module DB9.png
Una salida TX y RX de esta placa que conectado al lado de TX y RX en PIC16F628A PORTA 2 y PORTA 3, pero no han resultado igual como cuando traté de simulación en proteus.

Cuando me simulación en proteus que trabajan muy bien, así que podría usted por favor ayudarme, cuál es problema en mi prueba en hardware real.

Gracias,
Kapoh
Mensaje automáticamente combinado:

He probado con un convertidor de USB a DB9.
Aten USB.pngAten USB.png
Mensaje automáticamente combinado:

Pandacba:
No sé lo que quieres decir!, realmente estoy utilizando MikroC, tan bien como proyecto de D@rk quiero a probado probado con uno original, una vez que mi prueba está bien entonces quiero crear un código en MikroC.

en PICBasic microcódigo Studio aprendiendo, que soy muy ciego con este compilador, yo copio D@rk proyecto entonces probé a interpretado a MikroC.

Este mi proyecto sobre UART en MikroC:
Código:
char timeout; // counter

void main(void) {

    CMCON = 7; // disable comparators (all digital)
    
    // PORTA: all outputs except RA5,6,7 (_MCLR and ext_osc pins)
    PORTA   = 0; // leds off
    TRISA   = 0b11100000;
    // Rx_Led0..3 = RA0..RA3 (1 lit, LED anodes)

    // PORTB default: all inputs (internal pullups), nor used
    //TRISB = 0xFF;
    NOT_RBPU_bit = 0; // pullups on to avoid floating inputs

    Delay_100ms();    // library function
    UART1_Init(1200); //
    Delay_100ms();

    while(1) { // infinite loop

      do { // wait for a char received via RF (TTL level RS232)
         Delay_1ms(); // library function
      } while (!UART1_Data_Ready());

      if (UART1_Read() != 0xAA) // read the received data (ident char?)
         continue;
      
      // wait with appr 20 ms timeout for the next (LED control) char:
      timeout = 20;
      do {
         if (UART1_Data_Ready()) {
           PORTA = UART1_Read(); // set LED port
           break;
         }
         Delay_1ms();
      } while (--timeout, !Z_bit); // until !timeout

    } // infinite loop

} // end of main()

// ----- end of RX program (4 ram, 101 code)

Sobre el código para el lado de RX

Gracias,
Kapoh
 
Última edición:
El problema es presisamente que no es un puerto real, estas usando un comvertidor y en muchos casos no es lo mismo, ese convertidor sirve en algunos casos y en otros no
 
Cuando usas un convertidor de USB a RS232 hay (al menos) dos cosas que tienes que tener en cuenta:

1) Que se hayan instalados los drivers para el convertidor
2) Cual es el numero de puerto serial del convertidor. En los puertos reales RS-232, normalmente es un numero 'bajo' - COM1, COM2, etc. En los convertidores, y segun mi experiencia, normalmente se usan numeros 'altos' - COM8, COM9... COM15. Puedes verificar que numero de puerto serial tiene tu convertidor mirando el 'Device Manager'
3) Ante la duda, tratar de comunicarse con el dispositivo utilizando un programa terminal estandard, como Hyper Terminal o Teraterm. Una vez que has verificado que puedes intercambiar comandos con el programa terminal, pasas a depurar cual es el problema en tu aplicacion.
 
Pandacba :
El problema es presisamente que no es un puerto real, estas usando un comvertidor y en muchos casos no es lo mismo, ese convertidor sirve en algunos casos y en otros no
^^ Probablemente tienes razón, hago lo que sé, así que usar USB a convertidor de DB9 y también serie de TTL, que después no funciona como que mi problema aquí, espero que algunos de aquí fue lo que proyecto va me explicó entonces que saber la forma correcta.
Mensaje automáticamente combinado:

Chclau :
En primer lugar gracias por tus consejos.
En cuanto a tus consejos, aquí están mis respuestas:

1). Sí, los controladores se ha instalado en el puerto, juzgado el PORT2 y trató de USB3 pero no trabajo, ver mi foto.
Driver Aten.pngDriver Aten.png

2). No estoy intentado todavía utiliza el Puerto Com 8 o superior a 8, generalmente cuando lo flasheo o chip ardiente utiliza K128 o uso K150 con Puerto Com 2-4 está bien.
Como bien tu Consejo, colocar en el puerto más alta que el Puerto Com 8 probé.

3). Antes de hacer conexión entre el hardware al software, hago un par usar un VSPE (puerto Virtual), que significa entre dos com puerto debe
estar conectado antes de su uso.
VSPE.png

Explicar si así todavía tiene dudas, podría usted darme más profundo, cuando se prueba el proyecto en hardware real, entonces intentado hacer como haces.


Driver Aten.png

Este mi proyecto de muestra acerca de la interfaz, podría usted por favor prueba este interfaz en hardware real... Nota: Si usted todavía tiene.

Gracias,
Kapoh.
Mensaje automáticamente combinado:

Hola,
Sigo con duda y pegados, que en hardware real no trabajarla, en proteus funciona muy bien.

Gracias,
Kapoh.
 

Adjuntos

  • Remote Latching And Momentary Button.rar
    41.5 KB · Visitas: 15
Última edición por un moderador:
Este mi proyecto sobre UART en MikroC
Eso no es un proyecto, ese es el código.
El problema puede estar en la palabra de configuración y para saberlo sí es necesario que adjuntes el proyecto de mikroC.
Si yo compilo ese programa le pondré una palabra de configuración correcta y posiblemente funcionará en físico.
Por ese motivo siempre les recomiendo que adjunten los proyectos de mikroC dentro de un archivo comprimido.

Nota. El problema no es con la aplicación que realizaste, ya que los datos que envía son correctos.
 
Hola D@rk,

Mi código está trabajando muy bien, había probado ese código en el hardware real, se recibe el código de lado, puedo hacer que código de transmisión de 433 Mhz.

Mucho tiempo no uso Visual Basic 6, solo regreso para actualizar mi lenguaje en Visual Basic 6.

Espero que desea escribir o intérprete mi codigo en MikroC en su interfaz VB.6, así aprendo a partir de ahí, entonces le trató de simulación en proteus y también puede implementación en hardware real.

También ya probé su interfaz VB6 y su estudio de microcódigo de PBP en hardware real, pero no trabajo.

Qué son:

0). de desarrollo Junta PIC16F628A, con resonador cerámico oscilador 4 Mhz.
1). Desde la interfaz de PC Visual Basic 6, establecer el puerto de remito en el puerto del convertidor del USB (Aten).
2). esta placa de Desarrollo Conecte con USB convertidor Db9 (Aten), ves mi foto.
3). de este convertidor del USB (db9), conecté a dB9 a RS232 serial TTL.
4). este DB9 a RS232 TTL, el RX y TX conecté a Junta de desarrollo del PIC16F628A.

Estoy seguro de que la configuración es correcta, he probado los de simulación está funcionando bien, pero cuando traigo a hardware real, no trabajo.

Gracias,
Kapoh.
 
También ya probé su interfaz VB6 y su estudio de microcódigo de PBP en hardware real, pero no trabajo.
Tiene que ser problema de hardware.
0). de desarrollo Junta PIC16F628A, con resonador cerámico oscilador 4 Mhz.
Nos hace falta ver la palabra de configuración.
1). Desde la interfaz de PC Visual Basic 6, establecer el puerto de remito en el puerto del convertidor del USB (Aten).
2). esta placa de Desarrollo Conecte con USB convertidor Db9 (Aten), ves mi foto.
3). de este convertidor del USB (db9), conecté a dB9 a RS232 serial TTL.
4). este DB9 a RS232 TTL, el RX y TX conecté a Junta de desarrollo del PIC16F628A.
Con un solo adaptador de USB a TTL RS-232 es suficiente.
Por USB yo uso el PL2303 o el FT232RL
Por puerto COM (Hardware RS-232) uso transistores o el MAX232
Estoy seguro de que la configuración es correcta, he probado la simulación y está funcionando bien, pero cuando traigo a hardware real, no trabaja.
Por eso insisto que necesitamos ver la palabra de configuración.
Y por favor, también adjunta el esquema que estás usando.

Te recuerdo qué, si usas un cristal o resonador para el oscilador, los pines RA6 y RA7 dejan de ser terminales I/O
El pin RA4 es de drenador abierto, (Open Drain) por lo tanto, únicamente proporciona el estado lógico 0
Para conseguir el estado lógico 1, se requiere una resistencia pull-up
Esto hace que no se puedan controlar cargas de la misma forma que las otras salidas. (RA0, RA1, RA2, RA3, RA6 y RA7)
Y RA5 únicamente puede ser entrada cuando se configura para no ser el reset.
Lo anterior lo menciono por esto:
C:
PORTA = UART1_Read(); // set LED port
En fin, si no quieres subir el proyecto de mikroC, no se te puede brindar una mejor ayuda.

PD:
Esa espera cargando componentes en tu aplicación, es totalmente innecesaria y desespera bastante.
 
Hola D@rkbytes. Gracias por responder mi post. Con un solo adaptador de USB a TTL RS-232 es suficiente.
Por USB yo uso el PL2303 o el FT232RL. Por puerto COM (Hardware RS-232) uso transistores o el MAX232

Aten convertidor del USB no se puede ejecutar con controlador PL2303 o FT232RL, hay en el paquete cuando compré ese convertidor.

Ya intenté eliminar controlador de Aten, pero cuando instalé PL2303 para ventanas 7 64 bits no detecta para convertidor de USB Aten.

Por favor me podriais dar una foto para qué USB que utilizas?. ( Por USB yo uso el PL2303 o el FT232RL ).

Para esquema de I utiliza su diseño de proyecto así como en el proteus, ver adjunto por favor.

Oscilador, ¿cuál es usted consulte para utilizar, así como cableado en proteus, que uso el oscilador interno o externo y ¿qué frecuencia de cristal si uso para cristal externo?.

Para el hardware quemar o flash PIC16F628A, usé K128, había intentado usando HS o XT puesta en K128 pero teniendo el mismo problema.

También intenté su archivo hexadecimal relé pero no funciona en mi hardware real, nada está bien si funciona en simulación en Proteus.

Podría por favor dibujar en proteus para su uso en la conexión de hardware real para el PIC16F628A esquemático como oscilador que utilice, por favor a volver a dibujar en mi esquema adjuntada.

Olvidé en mi anterior post para subir en MikroC archivos, para que puedas encontrar en mis archivos adjuntos.

Para la barra de progreso, que es sólo como hacer una mirada de la diferencia, realmente no es función en relación con la Página principal.

Para la Junta de desarrollo utilizado como como este enlace ;
Development Board PIC16F628A

En un momento creo que solo hablar de su proyecto con estudio de microcódigo, porque uso uno está trabajando muy bien su interfaz VB.6.0 y archivos hexagonales, pero no funciona al utilizar en hardware real.

Intenté comprar algo como su convertidor USB, creo que así como te refieres a uno es similar.
Sólo pido USB a grado TTL serie Industrial UART FT232RL en línea, espero que mañana que parte vendrá, solo para información de nuestro tiempo es ahora es noche, una vez llegado se trató de siguiente así como su información.
Aquí hay un enlace:
USB Converter
¿Sabía usted Oshonsoft?, ¿qué piensas de ese compilador, es igual con MicroStudio, lo compré hace una semana para PIC16F y PIC18F compilador.


Gracias,
Kapoh.
 

Adjuntos

  • Foros Forum.rar
    408.3 KB · Visitas: 20
Atrás
Arriba