Autor Tema: DIMMER RF PIC18F2550  (Leído 5728 veces)

0 Usuarios y 1 Visitante están viendo este tema.

Desconectado Abner_emanuel

  • PIC16
  • ***
  • Mensajes: 160
DIMMER RF PIC18F2550
« en: 21 de Febrero de 2015, 12:13:45 »
Buen día, estoy realizando la comunicación serie de pic a pic con el pic18F4550. Pues resulta que no recibe bien la cadena de números que envía el TX. Etoy utilizando el pic a 32Mhz y pienso que eso tiene algo que ver, quizá la velocidad es elevada para la recepción en Baud. Por favor me podrían orientar.

Aquí pongo los códigos TX y RX.

EL CODIGO TX

#include <18F4550.h>
         #device adc=10
         #FUSES HSPLL,NOWDT,NOPROTECT,NOLVP,NOPUT,NODEBUG,USBDIV,PLL5,CPUDIV2,VREGEN,MCLR
         #use delay(clock=32MHz)
         #use rs232(baud=9600, xmit=PIN_C6, rcv=PIN_C7, PARITY=N, BITS =8, STOP=1, TIMEOUT=1000, ERRORS)
         #use fast_io(b)
        
         int valor;                
        
         void main()
         {  
         while(true)
         {
         for (valor=0;valor<=100;valor++) { printf("\f%2d",valor); delay_ms(100);  }                
         }
         }


EL RX
         #include <18F4550.h>
         #device adc=10
         #FUSES HSPLL,NOWDT,NOPROTECT,NOLVP,NOPUT,NODEBUG,USBDIV,PLL5,CPUDIV2,VREGEN,MCLR
         #use delay(clock=32MHz)
         #use rs232(baud=9600, xmit=PIN_C6, rcv=PIN_C7, PARITY=N, BITS =8, STOP=1, TIMEOUT=1000, ERRORS)
         #include <lcd4x20.c>
         #use fast_io(b)
        
         int valor;
        
         #int_RDA
         void RDA_isr()
         {valor=getc();}
        
         void main()
         {
         lcd_init();
         set_tris_b(0x0f);
         enable_interrupts(INT_RDA);
         enable_interrupts(GLOBAL);
        
         while(TRUE)
         {
         lcd_gotoxy(1,1); printf(lcd_putc,"recibiendo=%d",valor);                                      
                                            
         }
         }


Anexo código para u descarga y simulación.

« Última modificación: 20 de Abril de 2015, 20:49:48 por Abner_emanuel »
El señor es mi pastor,  nada me faltará.

Desconectado juaperser1

  • Colaborador
  • DsPIC30
  • *****
  • Mensajes: 2980
Re: NECESITO AYUDA CON COMUNICACIÓN SERIE DE PIC A PIC
« Respuesta #1 en: 21 de Febrero de 2015, 14:07:00 »
buenas tardes Abner_emanuel, muchas veces nos centramos en el código cuando el problema puede estar en el hardware, antes de nada asegurate de que los pinse tx y rx esten cruzados de un PIC a otro y que has referenciado las masas, si no referencias las masas los dispositivos tendrán una diferencia de potencial diferente y lo que pa uno puede ser un 0 para el otro puede ser un 1.

un saludo

Desconectado Abner_emanuel

  • PIC16
  • ***
  • Mensajes: 160
Re: NECESITO AYUDA CON COMUNICACIÓN SERIE DE PIC A PIC
« Respuesta #2 en: 21 de Febrero de 2015, 14:17:43 »
Hola juaperser1

No lo tengo armado físicamente aun, pero si lo voy a armar el día de hoy y comento.

Yo imagine que hera por la velocidad del pic que no me permitía recibir bien los datos, pero lo armo físicamente y te digo.

Gracias por responder
El señor es mi pastor,  nada me faltará.

Desconectado Abner_emanuel

  • PIC16
  • ***
  • Mensajes: 160
Re: NECESITO AYUDA CON COMUNICACIÓN SERIE DE PIC A PIC
« Respuesta #3 en: 23 de Febrero de 2015, 21:00:36 »
 :-/

Ya quedo solucionado, el problema estaba en el envío del dato por el transmisor

El dato lo envíe como: putc(valor); y yo lo estaba enviando como printf.

Saludos..
El señor es mi pastor,  nada me faltará.

Desconectado KILLERJC

  • Colaborador
  • DsPIC33
  • *****
  • Mensajes: 8242
Re: NECESITO AYUDA CON COMUNICACIÓN SERIE DE PIC A PIC
« Respuesta #4 en: 23 de Febrero de 2015, 22:52:27 »
putc() es para una letra creo..

Si no me equivoco usan:

printf(putc,"Mensaje a enviar");

Desconectado juaperser1

  • Colaborador
  • DsPIC30
  • *****
  • Mensajes: 2980
Re: NECESITO AYUDA CON COMUNICACIÓN SERIE DE PIC A PIC
« Respuesta #5 en: 24 de Febrero de 2015, 03:16:41 »
enorabuena trasteando se arreglan las cosas

Desconectado Abner_emanuel

  • PIC16
  • ***
  • Mensajes: 160
Re: NECESITO AYUDA CON COMUNICACIÓN SERIE DE PIC A PIC
« Respuesta #6 en: 24 de Febrero de 2015, 12:04:54 »

Gracias por comentar, asi es como quedo el TX con algunos cambios.

Saludos a todos...

         #include <18F4550.h>
         #FUSES HSPLL,NOWDT,NOPROTECT,NOLVP,NOPUT,NODEBUG,USBDIV,PLL5,CPUDIV2,VREGEN,MCLR
         #use delay(clock=32MHz)
         #use rs232(baud=9600, xmit=PIN_C6, rcv=PIN_C7, PARITY=N, BITS =8, STOP=1, TIMEOUT=1000, ERRORS)
         #use fast_io(b)
         
         unsigned int iluminacion=0;
         int tiempo=10;
         void main()
         {   
         while(true)
         {         
         if(input(pin_b1)==0 && iluminacion>=0&&iluminacion<100) {iluminacion++; delay_ms(tiempo); putc(iluminacion);}    // No pasa de 100         
         if(input(pin_b2)==0 && iluminacion<=100&&iluminacion>0) {iluminacion--; delay_ms(tiempo); putc(iluminacion);}    // No baja de 0                     
         }
         } 
El señor es mi pastor,  nada me faltará.

Desconectado KILLERJC

  • Colaborador
  • DsPIC33
  • *****
  • Mensajes: 8242
Re: NECESITO AYUDA CON COMUNICACIÓN SERIE DE PIC A PIC
« Respuesta #7 en: 24 de Febrero de 2015, 14:23:47 »
Citar
unsigned int iluminacion=0;
if(input(pin_b1)==0 && iluminacion>=0&&iluminacion<100) {iluminacion++; delay_ms(tiempo); putc(iluminacion);}    // No pasa de 100  

Lo definis sin signo por lo cual jamas va a ser menor que 0, y estas agregando un condicion mas. Y el maximo es 99

Al igual con:

Citar
if(input(pin_b2)==0 && iluminacion<=100&&iluminacion>0) {iluminacion--; delay_ms(tiempo); putc(iluminacion);}    // No baja de 0      

Aqui tambien tenes una condicion de mas ya que ese solo te importa que entre para bajar el numero de iluminacion, por lo cual solo te importaria el limite inferior que creo que la mejor conversion a codigo maquina seria si es iluminacion!=0 , ya que constaria con 2 instrucciones de ASM pero eso es otro capitulo aparte.

Desconectado Abner_emanuel

  • PIC16
  • ***
  • Mensajes: 160
Re: NECESITO AYUDA CON COMUNICACIÓN SERIE DE PIC A PIC
« Respuesta #8 en: 24 de Febrero de 2015, 18:42:36 »
Una vez mas gracias por tu comentario KILLERJC, cada vez me sirven de mucho.

Realice un dimmer controlado por RF, en unos días subo el vídeo.

Saludos..
El señor es mi pastor,  nada me faltará.

Desconectado Abner_emanuel

  • PIC16
  • ***
  • Mensajes: 160
Re: NECESITO AYUDA CON COMUNICACIÓN SERIE DE PIC A PIC DIMMER RF
« Respuesta #9 en: 17 de Abril de 2015, 21:14:06 »
Por fin realice el Dimmer RF, aquí en enlace del vídeo:


https://www.youtube.com/watch?v=ZCmQHi93x_M


« Última modificación: 19 de Abril de 2015, 18:55:31 por Abner_emanuel »
El señor es mi pastor,  nada me faltará.

Desconectado juaperser1

  • Colaborador
  • DsPIC30
  • *****
  • Mensajes: 2980
Re: NECESITO AYUDA CON COMUNICACIÓN SERIE DE PIC A PIC
« Respuesta #10 en: 20 de Abril de 2015, 11:26:17 »
Funciona muy bien enorabuenA

Desconectado mariacontenis

  • PIC16
  • ***
  • Mensajes: 116
Re: NECESITO AYUDA CON COMUNICACIÓN SERIE DE PIC A PIC
« Respuesta #11 en: 20 de Abril de 2015, 18:06:01 »
Se ve muy bien tu Dimmer rf. Que distancia alcanzará el modulo del dimmer?.

Desconectado Abner_emanuel

  • PIC16
  • ***
  • Mensajes: 160
Re: NECESITO AYUDA CON COMUNICACIÓN SERIE DE PIC A PIC
« Respuesta #12 en: 20 de Abril de 2015, 20:42:07 »
Saludos...

E probado la comunicación a una distancia de 25 mts con linea de vista y con obstáculos el modulo alcanza 15 mtrs atravesando las paredes de mi habitación.

Gracias por su interés.
El señor es mi pastor,  nada me faltará.