Autor Tema: El RS485, un Relé en la lejanía: Hardware y Software  (Leído 64765 veces)

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

Desconectado elfrancho

  • PIC16
  • ***
  • Mensajes: 101
Re: El RS485, un Relé en la lejanía: Hardware y Software
« Respuesta #90 en: 30 de Abril de 2011, 20:49:43 »
Sres gracias a ustedes he entendido mucho mejor hacerca de este protocolo, sólo me queda una duda, este circuito de relay a distancia es capaz de recibir datos y también enviar?

Preguntitas varias:

- Siempre que se envía datos con el master, conviene ponerlo a la escucha con los pines DE/RE ? ¿lo mismo para los esclavos?
- Si tengo varios dispositivos conectados informando eventos al master, como podría evitar que dos esclavos transmitan al mismo tiempo?
- Hasta cuantos dispositivos esclavos se pueden colocar en la linea?


SALUDOS!!!

FrAnChO !!!!

Desconectado zdenkas

  • PIC10
  • *
  • Mensajes: 3
Re: El RS485, un Relé en la lejanía: Hardware y Software
« Respuesta #91 en: 08 de Marzo de 2012, 06:49:20 »
Simule el circuito y cuando recive la cadena de acciona durante un pequeño tiempo y luego se pone a cero el pin , quitandole la pausa y el comando 0x00, lo puedo dejan enclavado, pero como se podria hacer que por ejemplo mandando la cadena R1Y! se desactivara, y que mandando la cadena R1X! se activara, aparte de que mande tambien el resultado al maestro de dicha situacion, gracias...

Desconectado zdenkas

  • PIC10
  • *
  • Mensajes: 3
Re: El RS485, un Relé en la lejanía: Hardware y Software
« Respuesta #92 en: 12 de Marzo de 2012, 16:37:10 »
Cambiando el nombre del rele R1X! me responde que se activo dicho rele, pero cambio el nombre del esclavo por otro A1X!, se activa pero me responde que se activo el R1X, y no encuentro en donde cambiar la cadena de respuesta, a parte por mas que intento modificar el programa para poder activar y desactivar dicho esclavo me da error al compilarlo, agradeceria una mano,por que de c no comprendo casi nada, suelo usar mas el basic y el flowcode, gracias....... :shock: :shock: :shock: :shock:

Desconectado BINARIO

  • PIC16
  • ***
  • Mensajes: 156
Re: El RS485, un Relé en la lejanía: Hardware y Software
« Respuesta #93 en: 29 de Noviembre de 2013, 11:18:42 »
Hola, esta muy bueno tu post, lo estoy estudiando ahora, yo lo que quiero hacer es leer una trama RS485 de un sensor de humedad y eso poder mostrarlo en un display, espero poder lograrlo saludos desde cordoba argentina.
000101111 101110000011110 00010 11101 110 1 000111 00010010011010111100 101101001 11110000 001 00 10110 111 00001 01110 0010101 01011110 00 00011111111 0011111 011110001111111111 1011111111101100000000

Desconectado BINARIO

  • PIC16
  • ***
  • Mensajes: 156
Re: El RS485, un Relé en la lejanía: Hardware y Software
« Respuesta #94 en: 04 de Septiembre de 2014, 16:33:44 »
Aun no le agarro la mano, lo he probado funcionando con la simula que subio el colega, pero cuando voy a probar el hardware en simulacion sin los micros no logro prender un led de un lado o del otro, no se si necesariamente tiene que haber un gestionador de protocolo para que se puede producir una comunicacion, para entenderlo queria simular con interruptores de un lado y leds del otro para ver si entendia el principio de funcionamiento del protocolo y de los sn75179 o los max, pero de momento no me ha funcionado, hoy dedique todo el dia a estudiar esto, pero me voy con las manos vacias no he logrado hacer funcionar mi prototipo, quisiera hacerlo andar con la libreria RS485.c no porque menosprecie la ayuda y la info del colega red pic, si no porque me parece que a esa libreria puedo adaptarla mejor a mis necesidades.

fue de mucha ayuda la informacion la verda excelente los tutoriales que sube el colega, espero lograr mas avances mañana mi cabeza parece una ensalada ahora saludos! :-/ :-/ :-/
000101111 101110000011110 00010 11101 110 1 000111 00010010011010111100 101101001 11110000 001 00 10110 111 00001 01110 0010101 01011110 00 00011111111 0011111 011110001111111111 1011111111101100000000

Desconectado BINARIO

  • PIC16
  • ***
  • Mensajes: 156
Re: El RS485, un Relé en la lejanía: Hardware y Software
« Respuesta #95 en: 04 de Septiembre de 2014, 16:35:30 »
me olvidaba, lo que yo pretendo hacer es comunicarme con un sensor que se maneja solo por RS485 emplea 3 o 4 comandos basicos, necesito implementar eso porque es un sensor viejo que para la comunicacion utilizaba unas HPQ pero son costosas y me parece que se le puede dar una buena solucion con pics.
000101111 101110000011110 00010 11101 110 1 000111 00010010011010111100 101101001 11110000 001 00 10110 111 00001 01110 0010101 01011110 00 00011111111 0011111 011110001111111111 1011111111101100000000

Desconectado BINARIO

  • PIC16
  • ***
  • Mensajes: 156
Re: El RS485, un Relé en la lejanía: Hardware y Software
« Respuesta #96 en: 08 de Septiembre de 2014, 16:23:14 »
Alguno logro hacerlo mediante la libreria RS485.c de CCS ???
000101111 101110000011110 00010 11101 110 1 000111 00010010011010111100 101101001 11110000 001 00 10110 111 00001 01110 0010101 01011110 00 00011111111 0011111 011110001111111111 1011111111101100000000

Desconectado GabrielD

  • PIC10
  • *
  • Mensajes: 34
Re: El RS485, un Relé en la lejanía: Hardware y Software
« Respuesta #97 en: 11 de Noviembre de 2014, 13:44:14 »
Hola maestro Diego gracias por todo :D , estoy empezando con la comunicacion 485 y toda su informacion fue muy util, muy bien explicado todo. Estoy implementando una comunicacion entre un pic 18f2550 y un 18f4550 y por fin me funciono siguiendo su ejemplo :)

Bueno me despido, gracias nuevamente y q les vaya bien a todos :)

Desconectado RedPic

  • Administrador
  • DsPIC33
  • *******
  • Mensajes: 5544
    • Picmania by Redraven
Re: El RS485, un Relé en la lejanía: Hardware y Software
« Respuesta #98 en: 11 de Noviembre de 2014, 14:03:33 »
Hola maestro Diego gracias por todo :D , estoy empezando con la comunicacion 485 y toda su informacion fue muy util, muy bien explicado todo. Estoy implementando una comunicacion entre un pic 18f2550 y un 18f4550 y por fin me funciono siguiendo su ejemplo :)

Bueno me despido, gracias nuevamente y q les vaya bien a todos :)

Me alegra que te sirva de algo mi modesto trabajo. Un abrazo.  :mrgreen:
Contra la estupidez los propios dioses luchan en vano. Schiller
Mi Güeb : Picmania

Desconectado GabrielD

  • PIC10
  • *
  • Mensajes: 34
Re: El RS485, un Relé en la lejanía: Hardware y Software
« Respuesta #99 en: 11 de Noviembre de 2014, 18:18:51 »
Hola nuevamente a todos y al maestro Diego, saliendo ya de los ejemplos he empezado a trabajar nuevamente en mi proyecto en el cual necesito implementar comunicacion SPI y la RS485 con el pic 18f4550 como ya habia mencionado. El problema es que comparten un mismo pin del pic (RC7) en este se encuentra el RX para la comunicacion RS y SDO para la SPI.

Explico un poco lo que tengo que hacer:

Tengo que leer con el pic por RS485 un dato proveniente de un medidor de voltaje, almacenarlo y enviar este mismo dato por SPI a un modulo de Radio Frecuencia que se encargara del envio posterior ( el modulo que trabajo es el nrf24L01+ por si alguien de casualidad tiene problemas con ese les puedo ayudar  :mrgreen:).

Alguien tiene alguna idea o sugerencia de como hacer el intercambio de protocolo?

Muchas gracias :)

Desconectado KILLERJC

  • Colaborador
  • DsPIC33
  • *****
  • Mensajes: 8242
Re: El RS485, un Relé en la lejanía: Hardware y Software
« Respuesta #100 en: 11 de Noviembre de 2014, 19:24:42 »
Se que el SPI funciona por encargo, me explico, cuando el micro le manda el clk al otro dispositivo este manda los datos, por lo tanto si no le manda clock no va a haber salida desde el dispositivo al PIC. Con esto quiero decir que podes habilitar el SPI leer y volver a desabilitarlo para usarlo con el rs485.

Podes usar algo como esta en el diagrama de la primer hoja, e intentar desabilitar las lineas TX y RX poniendolas en alta impedancia, mientras trabajas con el SPI. Mientras trabajas con el RS485 no importaria el estado de SDO del pic siempre y cuando no le des pulsos de CLK o este en bajo CS para que no tome/envie ningun dato extra.

Resumen:

Activo alta impedancia
Cambio a SPI
Mando datos/ Recibo ( esto incluye el pin de CS )
Cambio a UART
Desactivo Alta impedancia
Uso el RS485
Vuelvo al comienzo ? xD
« Última modificación: 11 de Noviembre de 2014, 19:42:38 por KILLERJC »

Desconectado GabrielD

  • PIC10
  • *
  • Mensajes: 34
Re: El RS485, un Relé en la lejanía: Hardware y Software
« Respuesta #101 en: 11 de Noviembre de 2014, 22:59:41 »
Resumen:

Activo alta impedancia
Cambio a SPI
Mando datos/ Recibo ( esto incluye el pin de CS )
Cambio a UART
Desactivo Alta impedancia
Uso el RS485
Vuelvo al comienzo ? xD


jajaja gracias killer, cuando dices cambio a UART te refieres a que desactivo el CS y detengo el CLK cierto?
es que como en el datasheet dice que SDO toma prioridad del puerto temia que no pudiera usarlo para el RX.

Desconectado KILLERJC

  • Colaborador
  • DsPIC33
  • *****
  • Mensajes: 8242
Re: El RS485, un Relé en la lejanía: Hardware y Software
« Respuesta #102 en: 12 de Noviembre de 2014, 00:02:50 »
jajaja gracias killer, cuando dices cambio a UART te refieres a que desactivo el CS y detengo el CLK cierto?
es que como en el datasheet dice que SDO toma prioridad del puerto temia que no pudiera usarlo para el RX.

el CS lo deberia manejar el SPI, en PIC la salida dice SS (negado por que CS del objetivo es generalmente negado tambien )

Con el SPI:

En el registro SSPCON1 :
bit 5 SSPEN: Master Synchronous Serial Port Enable bit
1 = Enables serial port and configures SCK, SDO, SDI and SS as serial port pins(2)
0 = Disables serial port and configures these pins as I/O port pins(2)

Ahi podrias habilitar/desabilitar esos pines (como SPI).

Con el EUSART:

En el registro RCSTA:
bit 7 SPEN: Serial Port Enable bit
1 = Serial port enabled (configures RX/DT and TX/CK pins as serial port pins)
0 = Serial port disabled (held in Reset)

Podrias habilitar/deshabilitar el EUSART.

Imagino que multiplexarias eso, es decir para usar el EUSART lo pones como I/O al SPI ( 0 en SSPCON1.SSPEN ) y activas el bit RCSTA.SPEN,
y luego para el SPI al reves. Deberia andar por que activar esos bits son requisitos que exige el datasheet.

Te copio lo del datasheet:
SPI: To enable the serial port, MSSP Enable bit, SSPEN(SSPCON1<5>), must be set.
EUSART: In order to configure RC6/TX/CK and RC7/RX/DT/SDO as an EUSART: bit SPEN (RCSTA<7>) must be set (= 1)
« Última modificación: 12 de Noviembre de 2014, 00:05:19 por KILLERJC »

Desconectado GabrielD

  • PIC10
  • *
  • Mensajes: 34
Re: El RS485, un Relé en la lejanía: Hardware y Software
« Respuesta #103 en: 12 de Noviembre de 2014, 12:48:32 »
OK killer muchas gracias :) voy a revisar entonces y te estare comentando

Desconectado GabrielD

  • PIC10
  • *
  • Mensajes: 34
Re: El RS485, un Relé en la lejanía: Hardware y Software
« Respuesta #104 en: 19 de Noviembre de 2014, 20:33:08 »
Hola a todos, bueno vengo a comentarles que por cuestiones de agilizar tiempo en mi proyecto me toco mudarme al 16f877A que tiene el SPI y el puerto uart separado, asi que ahora sera comunicacion entre el 16f877a y un 18f2550.

Por cierto he estado haciendo pruebas con la comunicacion RS485 enviando un array de numeros enteros {1,2,3,4}  e incrementandolos y volviendolos a enviar cada 2 segundos y he notado lo siguiente:

1) la trama recibida los almaceno en el mismo vector del ejemplo del maestro RedPic, la rutina de recepcion es la misma ( igualmente despues del array de numeros envio el '!' para indicar el fin del mensaje), pero al imprimir el vector de recepcion(UART_buffer) en el lcd, se ve que siempre la primera posicion del vector   (UART_buffer[0] ) tiene el valor 0 y en las siguientes cuatro posiciones si estan los cuatro numeros.

2) no siempre llegaba el array perfecto; a veces llegaba primero dos ceros (0) a veces se repitia el ultimo numero o a veces llegaba dos veces el array.
Asi que cambie la rutina de envio a un solo numero que se incrementara. Este igualmente llegaba en la posicion UART_buffer[1] del vector pero siempre llego perfecto, no se repetia el numero ni tampoco llegaban dos ceros antes que el, asi que el problema se presentaba con el array.


Por cierto he estado usando la funcion putc() para enviar los datos, no se si el 0 que llega de primero sea por protocolo como un dummy byte.

No se si a alguien mas le ha pasado esto o si se han fijado de esto.

Gracias y que esten bien :)