Autor Tema: Ayuda!!! red con rs485  (Leído 3241 veces)

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

Desconectado rroque

  • PIC12
  • **
  • Mensajes: 68
Ayuda!!! red con rs485
« en: 27 de Diciembre de 2010, 19:32:26 »
Gente como estan!!!!
Alguien de casualidad tendra un programa que trabaje master (pc) y slave (pics)
Que los slaves adquieran datos analogicos y que estos lo mande a la pc cuando este le mande una dato como la direccion de cada micro.
Estoy como loco con esto hace un tiempo. y no se que hacer!!! he visto de todo pero nada similar a lo q quiero.
algo que este en CCS

Gracias
Ayúdenmeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeee

Desconectado MLO__

  • Colaborador
  • DsPIC33
  • *****
  • Mensajes: 4581
Re: Ayuda!!! red con rs485
« Respuesta #1 en: 27 de Diciembre de 2010, 20:02:12 »
Hola.

Por favor, lee las reglas del foro. El tema que dices es muy tratado acá.

Saludos
El papel lo aguanta todo

Desconectado darck_khronos

  • PIC18
  • ****
  • Mensajes: 493
Re: Ayuda!!! red con rs485
« Respuesta #2 en: 27 de Diciembre de 2010, 20:57:16 »
Gente como estan!!!!
Alguien de casualidad tendra un programa que trabaje master (pc) y slave (pics)
Que los slaves adquieran datos analogicos y que estos lo mande a la pc cuando este le mande una dato como la direccion de cada micro.
Estoy como loco con esto hace un tiempo. y no se que hacer!!! he visto de todo pero nada similar a lo q quiero.
algo que este en CCS

Gracias
Ayúdenmeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeee

Has trabajado con Rs232 ??? si es asi la 485 sera muy facil

Desconectado stk500

  • Moderadores
  • DsPIC33
  • *****
  • Mensajes: 4919
Re: Ayuda!!! red con rs485
« Respuesta #3 en: 28 de Diciembre de 2010, 03:31:43 »
Pues como dice nuestros amigo Mlo, usa el buscador del foro por cualquier cosas de tu dudas, Redes RS484 lo hay de millones, para empezar Aqui te pongo un tema de nuestros amigos RedPic.

Saludos

Desconectado rroque

  • PIC12
  • **
  • Mensajes: 68
Re: Ayuda!!! red con rs485
« Respuesta #4 en: 28 de Diciembre de 2010, 11:53:33 »
Lo se lo lamento! revisare los ejemplos del foro, empezando un rele en la lejania.
Gracias

Desconectado MAXTORJOE

  • PIC10
  • *
  • Mensajes: 2
Re: Ayuda!!! red con rs485
« Respuesta #5 en: 29 de Diciembre de 2010, 12:43:32 »
Saludos MLO, al igual que darck_khronos yo he buscado informacion para un proyecto similar y en honor a la verdad en este foro si se ha tratado mucho este tema de RS485, pero no he podido conseguir ninguno terminado o con alguna respuesta satisfactoria, solo preguntas sin respuestas contundetes he visto, si sabes de algun proyecto terminado y probado que este aca en el foro te pido encarecidamnte me indiques donde esta y te pido disculpas por la peticion pero ya busque y no encontre mil gracias de antemano

Desconectado stk500

  • Moderadores
  • DsPIC33
  • *****
  • Mensajes: 4919
Re: Ayuda!!! red con rs485
« Respuesta #6 en: 29 de Diciembre de 2010, 13:36:50 »
si expecifica y pone codigo de lo que tiene hecho seguro que te ayudan, no espere encontrar nada hecho por aqui y si lo lo hay esta limitados ;-)
Saludos

Desconectado rroque

  • PIC12
  • **
  • Mensajes: 68
Re: Ayuda!!! red con rs485
« Respuesta #7 en: 29 de Diciembre de 2010, 15:38:51 »
Bueno estuve jugando un toque con el tema del rs485 y como que la logre transmitir datos por rs485 hacia la compu. Todo esto parti desde el ejemplo de redpic de un rele a la lejania.

Les muestro lo poco que hice. En si el programa adquiere datos analogicos y los envia al puerto serie. En la parte del main probe utilizar una sola entrada analoga para adquirir 8 lecturas diferentes con un 4051, pero x el momento lo deje como texto. pero si funciona.
Ahora el tema es de que como adquirir ese dato cuando el maestro le pregunte al esclavo. :S

#include <16F873A.h>
#fuses XT,NOWDT,NOPROTECT,PUT,NOLVP,NOBROWNOUT,NOCPD,NOWRT,NODEBUG
#device adc=8
#use delay(clock=4000000)    // 4 Mhz PIC
#use rs232 (baud=9600, xmit=pin_b2, rcv=pin_b1)

#define TX_485_ENABLE PIN_B5

void USART_activa_tx(void);
void USART_activa_rx(void);

///////////////////////////////////////////////////////////
// Funciones
///////////////////////////////////////////////////////////
/** \brief Abre el canal RS485 para transmitir.
* \return void
*/
void USART_activa_tx(void)
{
  output_high(TX_485_ENABLE);
  delay_ms(5);
}

/** \brief Abre el canal RS485 para recibir.
* \return void
*/
void USART_activa_rx(void)
{
  delay_ms(5);
  output_low(TX_485_ENABLE);
  delay_ms(1);
}

///////////////////////////////////////////////////////////
// M A I N
///////////////////////////////////////////////////////////
void main ()
{
   int8 i;
   float dato[8];   
   setup_adc_ports(AN0);
   setup_adc(ADC_CLOCK_INTERNAL);
   setup_adc_ports(ALL_ANALOG);
   set_adc_channel(0);
   delay_us(20);
   set_tris_b(0b00000010);
   
   while(1)
   {
      for(i=0;i<1;i++) // 8
      {
         switch(i)
         {
         case 0:
         output_c(0x00);   
         break;
         /*case 1:
         output_c(0x01);     
            break;
         case 2:
         output_c(0x02);     
            break;
         case 3:
         output_c(0x03);
            break;
         case 4:
         output_c(0x04);
            break;
         case 5:
         output_c(0x05);
            break;
         case 6:
         output_c(0x06);     
            break;
         case 7:
         output_c(0x07);     
            break; 
*/
         }
             dato =100.0*(float)read_adc()/255;
      }
   USART_activa_tx();
   printf("\n%f\n\r\n",dato[0]); //dato[1]
   USART_activa_rx();
   delay_ms(200);
   }
}

Desconectado MLO__

  • Colaborador
  • DsPIC33
  • *****
  • Mensajes: 4581
Re: Ayuda!!! red con rs485
« Respuesta #8 en: 29 de Diciembre de 2010, 17:23:49 »
Hola.

Para recibir, es mejor usar la interrupción de recepción serial. La idea es enviar un identificador de trama y recibes el dato como un string.

Saludos
El papel lo aguanta todo

Desconectado rroque

  • PIC12
  • **
  • Mensajes: 68
Re: Ayuda!!! red con rs485
« Respuesta #9 en: 29 de Diciembre de 2010, 19:19:09 »
interrupciones-??? uhm voy a probar a ver que sale Gracias MLO.

Desconectado tuxon

  • PIC10
  • *
  • Mensajes: 15
Re: Ayuda!!! red con rs485
« Respuesta #10 en: 30 de Enero de 2012, 15:43:58 »
Bueno estuve jugando un toque con el tema del rs485 y como que la logre transmitir datos por rs485 hacia la compu. Todo esto parti desde el ejemplo de redpic de un rele a la lejania.

Les muestro lo poco que hice. En si el programa adquiere datos analogicos y los envia al puerto serie. En la parte del main probe utilizar una sola entrada analoga para adquirir 8 lecturas diferentes con un 4051, pero x el momento lo deje como texto. pero si funciona.
Ahora el tema es de que como adquirir ese dato cuando el maestro le pregunte al esclavo. :S

#include <16F873A.h>
#fuses XT,NOWDT,NOPROTECT,PUT,NOLVP,NOBROWNOUT,NOCPD,NOWRT,NODEBUG
#device adc=8
#use delay(clock=4000000)    // 4 Mhz PIC
#use rs232 (baud=9600, xmit=pin_b2, rcv=pin_b1)

#define TX_485_ENABLE PIN_B5

void USART_activa_tx(void);
void USART_activa_rx(void);

///////////////////////////////////////////////////////////
// Funciones
///////////////////////////////////////////////////////////
/** \brief Abre el canal RS485 para transmitir.
* \return void
*/
void USART_activa_tx(void)
{
  output_high(TX_485_ENABLE);
  delay_ms(5);
}

/** \brief Abre el canal RS485 para recibir.
* \return void
*/
void USART_activa_rx(void)
{
  delay_ms(5);
  output_low(TX_485_ENABLE);
  delay_ms(1);
}

///////////////////////////////////////////////////////////
// M A I N
///////////////////////////////////////////////////////////
void main ()
{
   int8 i;
   float dato[8];   
   setup_adc_ports(AN0);
   setup_adc(ADC_CLOCK_INTERNAL);
   setup_adc_ports(ALL_ANALOG);
   set_adc_channel(0);
   delay_us(20);
   set_tris_b(0b00000010);
   
   while(1)
   {
      for(i=0;i<1;i++) // 8
      {
         switch(i)
         {
         case 0:
         output_c(0x00);   
         break;
         /*case 1:
         output_c(0x01);     
            break;
         case 2:
         output_c(0x02);     
            break;
         case 3:
         output_c(0x03);
            break;
         case 4:
         output_c(0x04);
            break;
         case 5:
         output_c(0x05);
            break;
         case 6:
         output_c(0x06);     
            break;
         case 7:
         output_c(0x07);     
            break; 
*/
         }
             dato =100.0*(float)read_adc()/255;
      }
   USART_activa_tx();
   printf("\n%f\n\r\n",dato[0]); //dato[1]
   USART_activa_rx();
   delay_ms(200);
   }
}
y de pura casualidad sabras como se hace para que el esclavo obedesca por que ahi solo muetras al pi maestro no''
??


 

anything