Go Down

Topic: Programa no funciona correctamente en otras tarjetas (Read 167 times) previous topic - next topic

osterix

Hola amigos, este es mi primer post. Sucede que he creado un programa para leer datos de ub bus RS485 en un arduino mega 2560, en donde funciona correctamente. Al momento de adecuarlo para que trabaje en otras placas (Arduino Pro mini o Arduino Uno), el programa se comporta de manera inestable.


La unica diferencia es que el programa que cargo en los arduinos mini y uno, uso la libreria SoftwareSerial para crear un puerto serie adicional.

He verificado las conexiones electricas, y he reprogramado los controladores varias veces, obteniendo el mismo resultado. Alguien puede decirme que podria estar saliendo mal?

Un saludo.

surbyte

Coloca el enlace de la librería que estas usando o si la bajaste del gestor indica cúal es.
Luego dinos como inicializas con el Mega y cómo en los otros casos.

Y como estoy seguro que no las has leído, pégate una vuelta por las Normas del foro

osterix

Gracias por su respuesta. Responderé en orden.
La libreria la encontre aqui: https://github.com/PaulStoffregen/SoftwareSerial


Con respecto a la inicializacion, en Arduino Mega lo hago de la siguiente manera:

Code: [Select]


const int transmitir = 2; // Pin para el control del modulo RS485

void setup() {
  // put your setup code here, to run once:
  pinMode(transmitir,OUTPUT);
  Serial.begin(9600);     // Puerto serie para mostrar los datos recibidos por RS485
  Serial1.begin(9600);  // Puerto serie para enviar y leer datos por RS485
}



Mientras que en UNO/Mini, lo hago usando la libreria SoftwareSerial:

Code: [Select]


#include <SoftwareSerial.h>
SoftwareSerial MyPort(11,12); // RX, TX

const int transmitir = 13; // Pin para el control del modulo RS485

void setup() {
  // put your setup code here, to run once:
  pinMode(transmitir,OUTPUT);
  Serial.begin(9600);    // Puerto serie para mostrar los datos recibidos por RS485
  MyPort.begin(9600);  // Puerto serie para enviar y leer datos por RS485

}


Al compilar el segundo código y correrlo en la tarjeta correspondiente, no me muestrea bien los datos o de plano no me da salida. He cambiado y usado pines digitales para la generacion del puerto Serie.
Datos adicionales: Uso la versión de IDE 1.8.13 en W10 64 bits.

surbyte

Bueno tienes un problema conceptual entonces.

Tu dices:

Quote
Hola amigos, este es mi primer post. Sucede que he creado un programa para leer datos de ub bus RS485 en un arduino mega 2560
485 es para usar modbus o simplemente algo en 485 lo que requiere un puerto serie sea Hardware como en el mega o Virtual con SoftwareSerial (dicho sea de paso, SoftwareSerial ya viene por defecto en el IDE que mencionas, no tienes que usar ninguna librería)

Ahora 485 es half duplex. Un tiempo transmite y luego recibe. El cambio se hace con un pin extra.
En el MEGA es 2 y en los otros Arduinos es 13. Porque cambiaste 2 por 13 no lo se pero no importa. Seguramente por proximidad.

Te aseguro que esos códigos deberías funcionar
Asegúrate que las conexiones sean de este tipo


Es decir, los dos pines interiores del Módulo 485 unidos el pin de control que tu llamas Transmitir.

Go Up