Arduino Forum

International => Español => Topic started by: jose_francisco on Feb 15, 2011, 12:10 pm

Title: Comunicar a traves de Tx/Rx
Post by: jose_francisco on Feb 15, 2011, 12:10 pm
Hola amigos.

Estoy intentando conectar un arduino al pc usando otro arduino como pasarela (quitándole el atmega). ¿por que hago esta tonterida? Para posteriormente sustituir la conexión tx/rx por conexiones rs485 full-duplex.

Os cuento las fases de mi experimento.

1.- Conecto un arduino con modbus-slave al pc mediante usb. En el pc tengo un software modbus-master. La comunicación funciona perfectamente.
2.- Desconecto el usb del ardu-modbus-slave y se lo conecto a un arduino sin atmega.
3.- Conecto tx->rx, rx->tx,5v, y gnd de ambos arduinos.
4.- Ambos arduinos comparten tensión.
5.- Con el software del pc busco al slave. El led rx del arduino sin chip parpadea. Esto quiere decir que recibe los datos del pc.
6.- El pc no encuentra nada.

¿Alguien me puede dar una pista de que está pasando?

Muchas gracias. Un saludo

PD. Por si a alguien le interesa después pienso usar un MAX488. El software que uso es Mango M2M. La librería Modbus es la de jpmzometa.
Title: Re: Conexión directa de Arduinos
Post by: xlopez on Feb 15, 2011, 01:26 pm
La patilla TX es por donde el ATMEGA envía datos.
La patilla RX es por donde el ATMEGA recibe datos.

Lo que envías desde el PC llegará al primer Arduino por la patilla RX (RX1).

Si luego conectas la patilla RX del primer Arduino(RX1) con la apatilla TX del segundo Arduino (TX2) estás intententando meterle al segundo Arduino por la patilla TX (que es para que el ATMEGA envíe datos, no para recibirlos) lo que envía el PC.

Por eso no funciona.
Title: Re: Conexión directa de Arduinos
Post by: jose_francisco on Feb 15, 2011, 01:50 pm
Gracias por la aclaración, pero sigue sin funcionar.

He conectado Rx -> Rx y Tx -> Tx
He alimentado al esclavo con una pila por si fuese problema de falta de tensión, comunicando los gnd.
He cambiado los cables de comunicación.

Y nada.

Funciona bien cuando lo conecto por usb directamente pero no cuando hago el puente con otro arduino sin atmega.

¿Fantasmas?
Title: Re: Conexión directa de Arduinos
Post by: jose_francisco on Feb 15, 2011, 07:25 pm
Sigo con los experimentos:



El arduino con atmega:
lo puedo programar directamente por usb.
Ese sketch (modbus) y otros con serial funcionan perfectamente a traves de usb.

Ahora uso un arduino intermediario sin atmega. tx a tx y rx a rx:
Le meto un sketch que SOLO escribe en el puerto serie y puedo ver los datos en el pc. Conclusión: el atmega envia datos y el ftdi los manda correctamente al usb
Le meto un sketch que lee comandos por puerto serie y escribe resultados por puerto serie: NO REACCIONA

Si saco un cable del pin rx del arduino sin atmega (es equivalente al tx del ftdi) y lo conecto al led tx o rx del arduino con atmega, el led parpadea. Conclusión el ftdi envía datos

En principio parece que esta sordo de pin rx, pero ¿como puede tener sordo el pin rx y funcionar perfectamente por usb?

¿Ghostbusters?
Title: Re: Comunicar a traves de Tx/Rx
Post by: jose_francisco on Feb 16, 2011, 12:09 am
Estoy perdidisimo.

¿Me podéis indicar como comunicarme con un arduino a través de los pines tx/rx usando otro arduino sin atmega?
Title: Re: Comunicar a traves de Tx/Rx
Post by: igorreal on Feb 16, 2011, 12:13 am
has unido las masas de ambas placas???
Title: Re: Comunicar a traves de Tx/Rx
Post by: jose_francisco on Feb 16, 2011, 12:13 am
Si. De hecho alimento la una con la otra.
También las he alimentado por separado uniendo las masas
Title: Re: Comunicar a traves de Tx/Rx
Post by: igorreal on Feb 16, 2011, 12:21 am
ummm!! Los pasos que se me ocurren:
- Masas unidas??
- El Tx del FTDI (Rx de la placa sin micro) unido al RX de la placa Arduino con micro??
- El Rx del FTDI (Tx de la placa sin micro) unido al TX de la placa Arduino con micro??
- Estoy seguro que el programa de Arduino funciona correctamente?? Lo he probado individualmente??
- Por el lado de PC con la placa sin micro tengo el hyperterminal o similar en el puerto correcto, y configurado la velocidad, paridad, bit de stop y control de flujo adecuadamente??
- NO tengo en la placa con micro el puerto serie abierto con el PC, a la vez que estoy haciendo las pruebas??

Yo lo he hecho muchas veces precisamente para el tema de rs485 sin ningún problema....
Title: Re: Comunicar a traves de Tx/Rx
Post by: jose_francisco on Feb 16, 2011, 12:29 am
Masas unidas: OK.
Verificación. hago un puente entre 3v3 de una placa  al led 13 de la otra y se enciende. (Ya se que no es sano)

RX de una a RX de la otra, TX de una a TX de la otra.

El programa funciona correctamente cuando lo uso por usb

En el pc uso el terminal de Arduino IDE, que por usb, 115200 bps y NL+CR va al pelo.


... y no chuta.
Title: Re: Comunicar a traves de Tx/Rx
Post by: igorreal on Feb 16, 2011, 12:33 am
Justo cuando has contestado, estaba editando con otro punto mi post.
La placa con micro, no la tienes conectada al PC y abriendo el puerto mientras las pruebas, verdad??

Me refiero, sólo tienes abierto en el PC, el puerto serie correspondiente a la placa SIN micro.
La otra placa CON micro,NO tiene la conexión serie abierta con el PC. Es más, si estás sacando la alimentacion directamente de la otra placa, no tienes ni el usb conectado a dicha placa.

??
Title: Re: Comunicar a traves de Tx/Rx
Post by: jose_francisco on Feb 16, 2011, 12:36 am
Solo un usb en uso: el de la placa sin micro.
Title: Re: Comunicar a traves de Tx/Rx
Post by: igorreal on Feb 16, 2011, 12:39 am
Puedes poner un programita super básico que mande cosas de la placa del micro, y que si recibe algo, te saque un OK o algo asi.
Para probar Tx y Rx.

Me refiero, que no espere a recibir algo para empezar a transmitir.
Title: Re: Comunicar a traves de Tx/Rx
Post by: jose_francisco on Feb 16, 2011, 12:45 am
Quote

/*
  AnalogReadSerial
 Reads an analog input on pin 0, prints the result to the serial monitor 
 
 This example code is in the public domain.
 */

void setup() {
  Serial.begin(9600);
}

void loop() {
  int sensorValue = analogRead(A0);
  Serial.println(sensorValue, DEC);
}




Obtengo comunicación correcta
Title: Re: Comunicar a traves de Tx/Rx
Post by: igorreal on Feb 16, 2011, 12:49 am
Ese esta a 9600 baudios (lo digo porque antes pusistes que estabas a 115200).
Tienes tu placa sin micro configurada a 9600 baudios y lees lo que te manda la placa con micro funcionando con dicho programa??
Title: Re: Comunicar a traves de Tx/Rx
Post by: jose_francisco on Feb 16, 2011, 12:54 am
No, he cambiado la configuración del Serial Monitor.
El otro programa estaba a 115200 y está basado en la librería Messenger la cual, dicho sea de paso, está muy bien. (No se si me tendré que arrepentir de lo dicho)
Title: Re: Comunicar a traves de Tx/Rx
Post by: igorreal on Feb 16, 2011, 01:06 am
No me ha quedado claro, estas recibiendo lo que te manda??

Si es que si, modifica el programa para que si Serial.available()>0, te mande un OK o algo asi, y pruebas de escribir algo....
Title: Re: Comunicar a traves de Tx/Rx
Post by: jose_francisco on Feb 16, 2011, 01:15 am
Code: [Select]
/*
  DigitalReadSerial
Reads a digital input on pin 2, prints the result to the serial monitor

This example code is in the public domain.
*/

void setup() {
  Serial.begin(9600);
  pinMode(2, INPUT);
}

void loop() {
 
    if (Serial.available()) {
      Serial.read();
    Serial.println("OK");
  }
 
}




Este si va.
Muchas gracias Igor. Seguiré investigando por que falla el Messenger y te contaré.
Has sido muy amable.
Title: Re: Comunicar a traves de Tx/Rx
Post by: jose_francisco on Feb 16, 2011, 01:53 am
No se por que, a traves de tx/rx no me funciona:
ni la librería Messenger con el serial monitor
ni la librería Modbus con Mango M2m
Pero si lo hacen cuando me conecto a traves de usb
Title: Esto ya es la hecatombe
Post by: jose_francisco on Feb 16, 2011, 01:51 pm
Code: [Select]

void setup() {
  Serial.begin(9600);
  pinMode(2, INPUT);
}

void loop() {
  Serial.println("OKttttttttttttttt");
    if (Serial.available()) {
      Serial.read();
    Serial.println("OK");
  }
 
}




:smiley-eek-blue:
Title: Pa mear y no echar gota
Post by: jose_francisco on Feb 18, 2011, 12:32 am
Últimos experimentos:

- si hago un puente entre la pata 1 del ftdi (txd) y la rx del arduino con chip, SI VA
- si hago un puente entre la pata 2 del soket (rxd) al pin rx del arduino con chip, NO VA

Se supone que la pata 1 del ftdi está conectada directamente a la pata 2 del socket del atmega, siendo la pata 2 la segunda patilla cercana a las letras ICSP, ¿no?
Title: Re: Comunicar a traves de Tx/Rx
Post by: jose_francisco on Feb 18, 2011, 12:46 am
¿Para que sirve la resistencia de 1k que separa la pata 1 txd ftdi de la pata 2 rxd del atmega?

Es que aun lado de la resistencia tengo comunicación (lado del ftdi) y al otro no (lado del atmega)
Title: Re: Comunicar a traves de Tx/Rx
Post by: igorreal on Feb 24, 2011, 10:47 pm
Ya se que está pasando!!!


Placa sin chip TX <--------------> TX Arduino   (UNIDOS SIN MÁS)


Placa sin chip Rx <------|-------> RX Arduino  (Una resistencia por un lado a masa y por otro a la union entre los RX)
                                |
                             R=1 k
                                |
                              GND



Si algún día nos vemos, me tendrás que invitar a una cerveza, porque hasta me lo he tenido que montar el invento para ver que pasaba....;)



(En el esquema del Arduino, las resistencias que se ven son porque el chip FTDI es 3V3, y son para proteger)


(http://yqezpq.blu.livefilestore.com/y1pkHUowBndSwUniBXPUPzx_hVbZTGKFV1G96tCJk8fye9Nuf5HDgzwcPSGX3yi81OiG_VP84zU7sL3RUe71Pu_BZlM2M-dhr3k/Conexion_FTDI.JPG?psid=1)

He cogido los primeros cables que he pillado,asi que no esta muy limpio, pero ya se ve para que te hagas a la idea.


El programa de prueba:
Code: [Select]

void setup()
{
  Serial.begin(9600);
  Serial.println("Empezamos...");
}



void loop()
{
  if (Serial.available()>0)
  {
    Serial.write(Serial.read());     
  }
}




Title: Re: Comunicar a traves de Tx/Rx
Post by: jose_francisco on Feb 25, 2011, 12:27 am
1.- Si la cosa va bien (el proyecto completo), te invito a un fin de semana en un 5 estrellas. La pareja te la buscas tu. a mi no me mires.
2.- Eso tiene pinta de ser una resistencia de pull-down. ¿Es así? ¿cual era el problema?
3.- Vamos a suponer que cambio esa conexión por rs485 full duplex multiesclavo. ¿Tendria que poner esas resistencias en el rx de cada esclavo?

Supongo que cuando me expliques un poco el truco se me despejan estas y otras dudas.

Muchas gracias Igor.

PD: Aun no lo he probado
Title: Re: Comunicar a traves de Tx/Rx
Post by: igorreal on Feb 25, 2011, 10:26 am
Oye, aquí queda por escrito lo del finde en hotel 5* ... :D

Pruébalo y me dices. No tengo osciloscopio, así que me espero antes de lanzarme el "triple".... ha sido "instinto"    ja,ja,ja
Si te funciona te cuento.....que debería hacerlo si a mi me funcionó.

Cuando pongas un driver para rs485, no tendrás problema. No tienes que hacer ésto.

Por cierto, ¿de qué va tu proyecto? He leido tu primer post que vas a usar Modbus y un programa Scada, pero no cuentas mucho de la aplicación final.


Salu2


Igor R.
Title: Re: Comunicar a traves de Tx/Rx
Post by: jose_francisco on Mar 02, 2011, 01:08 pm
Estoy pensando en usar el chip MAX3081 que permite hasta 256 esclavos (¿Me dará MAXIM 256 muestras poco a poco ?  ]:)).

El tema es que en el datasheet recomienda colocar un condensador de 0.1uF en Vcc a gnd.  ¿Eso es un cerámico? ¿Los ceramicos tienen limitación de voltios? ¿Hay que dar algún detalle más en la tienda para comprarlos? Se que tipos de electrolítico hay un montón (por temperatura, por voltios, polarizados o no,...) pero de cerámicos no entiendo mucho.

Tengo dudas si ponérselo o no. Pero bueno... póntelo pónselo.

Luego está el cable.

Estoy pensando en poner cable utp de red. me sobran pares pero bueno. En algunos sitios dicen que es aconsejable y casi obligatorio unir los gnds de los esclavos para evitar diferencias de potencial excesivas entre ellos si están muy alejados. Eso no es problema si uso UTP de 4 pares ya que me sobran cables. También recomiendan conectar el apantallamiento a masa. Ahí vienen el problema por que el UTP no tiene pantalla.
Tengo que comentar que en el entorno van a haber variadores de frecuencia (de baja potencia y con filtro EMI) que son grandes generadores de armonicos y perturbaciones.

¿A cuanto está el metro de UTP? ¿Y de FTP que tiene pantalla?
En principio necesito 2 pares + gnd + pantalla ¿Que me recomendais?

Un saludo y gracias.
Title: Re: Comunicar a traves de Tx/Rx
Post by: Sergegsx on Mar 02, 2011, 01:19 pm
34 euros me costaron a mi 50 metros el otro dia en leroy merlin
Title: Re: Comunicar a traves de Tx/Rx
Post by: xlopez on Mar 02, 2011, 01:24 pm
Puedes ir a la tienda y pedir muestras de tamaño palmo, hasta que tengas los 50 metros.
Title: Re: Comunicar a traves de Tx/Rx
Post by: jose_francisco on Mar 02, 2011, 11:27 pm
También le puedo preguntar a algún gitano. Ellos saben mucho del mercado del cobre.
Title: Re: Comunicar a traves de Tx/Rx
Post by: jose_francisco on Mar 03, 2011, 07:38 pm
Igor R ¿tienes experiencia con rs485, largas distancias y ruido?
Title: Re: Comunicar a traves de Tx/Rx
Post by: igorreal on Mar 03, 2011, 08:57 pm
No deberias tener problema, es un bus altamente utilizado en la industria.
Compra cable que venga con malla.

Por cierto, probaste lo que te dije para comunicarte con el Arduino utilizando una placa sin micro? Funcionó?

;)

Title: Re: Comunicar a traves de Tx/Rx
Post by: jose_francisco on Mar 03, 2011, 10:32 pm
Funcionó a las mil maravillas. Muchas gracias. Ahora estoy con el RS485 full duplex

Había pensado en cable UTP de red ethernet. Bueno, bonito y barato; pero sin malla. Además, como me sobran pares puedo interconectar los GNDs.

Preguntaré por cable de 2 pares + gnd + malla, o 3 pares + malla.

Un saludo.
Title: Re: Comunicar a traves de Tx/Rx
Post by: igorreal on Mar 03, 2011, 10:49 pm
Me alegro!!! Pero a ver si nos aconstumbramos a contar los resultados.... que hasta me monte el invento para ver que pasaba!!!!

=(
Title: Re: Comunicar a traves de Tx/Rx
Post by: jose_francisco on Mar 03, 2011, 11:43 pm
Tienes razón, tenia que haberlo contado.
Supongo que empezaré con cable de red UTP pero lo dejare preparado para poner la malla a tierra.
Me fastidia usar la malla porque no podre usar el conector típico de red ethernet.
Title: Re: Comunicar a traves de Tx/Rx
Post by: jose_francisco on Mar 04, 2011, 11:40 am
How Far and How Fast Can You Go with RS-485?
http://www.maxim-ic.com/app-notes/index.mvp/id/3884 (http://www.maxim-ic.com/app-notes/index.mvp/id/3884)

Guidelines for Proper Wiring of an RS-485 (TIA/EIA-485-A) Network
http://www.maxim-ic.com/app-notes/index.mvp/id/763 (http://www.maxim-ic.com/app-notes/index.mvp/id/763)

Resumiendo:
Hay que poner resistencias terminadoras (120 ohm para UTP Cat5)
Hay que conectar las tierras (0V)
La malla mejora, pero no es imprescindible.
Con los bps que desarrolla Arduino y cable Cat5 puedes tirar cientos o miles de metros.
Title: Re: Comunicar a traves de Tx/Rx
Post by: jose_francisco on Mar 09, 2011, 01:50 pm
Ya tengo la comunicación entre el PC y Arduino mediante RS485 full-duplex usando el serial monitor de arduino.

Muchas gracias a todos, menos a uno.

Siguiente paso: Usar Modbus, MANGO M2M en el pc y añadir varios esclavos.

Un saludo.
Title: Re: Comunicar a traves de Tx/Rx
Post by: Sergegsx on Mar 09, 2011, 01:56 pm
me alegro que ya lo tengas funcionando.

podrias poner los pasos basicos para hacerlo funcionar que has descubierto
-hardware
-ejemplos
lo que sea
Title: Re: Comunicar a traves de Tx/Rx
Post by: riscking on Mar 09, 2011, 11:27 pm
Os escribo para daros las gracias porque de la manera que habeis comentado con la placa de un duemilanove sin chip he echo rular un nano q comnetaba en un post mas abajo q este que pensaba que se habia jodido y de esta manera funciona lo q no se que es lo q se ha fastidiado, supongo el usb del nano pero q parte el ftdi?
UN saludo
Title: Re: Comunicar a traves de Tx/Rx
Post by: igorreal on Mar 09, 2011, 11:42 pm
Muy bien Jose Francisco!!! Ahora te toca contarnos a ti tus experiencias.... ;)


:D
Title: Re: Comunicar a traves de Tx/Rx
Post by: jose_francisco on Mar 10, 2011, 12:23 am
Tengo que recapitular y resumir las vueltas que he dado.

Igor, ¿Como se meten las fotos en el foro? ¿Tienes que subirlas a un alojamiento de fotos primero?

Un saludo.
Title: Re: Comunicar a traves de Tx/Rx
Post by: igorreal on Mar 10, 2011, 12:29 am
Este foro deja subir archivos (Additional Options.... Attach).
(Yo no he utilizado de momento esta forma).

Title: Re: Comunicar a traves de Tx/Rx
Post by: jose_francisco on Mar 10, 2011, 01:05 am
¿Y como has subido la foto de la página 2 de este topic?
Title: Re: Comunicar a traves de Tx/Rx
Post by: igorreal on Mar 10, 2011, 01:38 am
Yo he usado un servidor y he puesto el link aqui.
Title: Re: Comunicar a traves de Tx/Rx
Post by: igorreal on Mar 20, 2011, 01:13 am
Hola Jose Francisco,

¿Cómo vas con el tema del rs485? ¿Tienes todo funcionando? Estaría genial si puedieses subir a un blog, foro,.... cómo has hecho todo: montaje, código,fotos, etc.
No existe mucho material en castellano y es la única manera de que crezca la comunidad hispana. En mi blog, la entrada de RS485 tanto en inglés cómo en castellano recibe un montón de visitas, pero desgraciadamente, casi nadie documenta sus proyectos/experiecias.... =(

Gracias!


Igor R.
Title: Re: Comunicar a traves de Tx/Rx
Post by: jose_francisco on Mar 20, 2011, 02:02 pm
Hola.
Gracias por el interés.

El tema va bastante bien.
Tengo un arduino Modbus RTU Slave conectado mediante RS485 al PC usando Mango M2M.
Ahora me gustaría implementar mensajes broadcast para poner en hora todos los slaves de un golpe.
El autor de la librería dice que es facil pero que no tiene tiempo.
Solo es hacer que todos los slaves reconozcan a '0' como ID propio, ejecute el cambio de valor y no responda al Master.
Mis conocimientos de C son los justitos y no consigo sacarle punta.
Por otro lado el front-end de Mango M2M tampoco soporta el ID 0, aunque las librerías internas si soportan broadcast.
Ahí estoy. ¿Alguien se anima?

Respecto a colocar los avances en un blog... puedo hacer un artículo con texto, fotos y diagramas, y que alguien lo monte y cuelgue en un playground de arduino.

Un saludo.