Arduino + Balanza

Que tal colegas! He estado trabajando con la tarjeta Arduino ya de hace tiempo y tengo una ligera noción de su funcionamiento. Traigo un proyecto entre manos que requiere trabajar con la comunicación serial de la tarjeta. El proyecto consiste en leer en el Serial Monitor el peso de una balanza pero me he encontrado con algunos problemas. Esto es lo que estoy haciendo:

Tengo conectada una balanza con la tarjeta solo con dos cables, uno de tierra y el otro es donde tomo los datos y lo conecto al pin 0 de la tarjeta. Cuando le doy imprimir a la balanza, puedo leer los datos que manda en el Serial Monitor, y en la imagen se muestran dos. El primero es sin peso sobre la balanza y el segundo (en azul) tiene peso. Los espacios son 16 lugares por lo que concluí que eran 16 bytes y esos bytes (todos juntos) son los que traen el valor del peso junto con su unidad de medida (gramos, onzas, etc). Mi idea es guardarlos en un buffer de 17 lugares para que en el ultimo le meta el comando NULL para tratarlo como cadena y después convertirlo con la función "atof" y me muestre el dato como aparece en el display de la balanza. Antes de eso, por ejemplo, le cargo el programa "Blink" y parpadea el led sin problema, le cargo este (el de la imagen) donde no hay nada y deja de parpadear el led y me muestra valores en el serial, por lo que concluí que el chip no está mal.

El problema, como pueden ver en la imagen, es que aún sin ponerle ninguna sentencia, (por ejemplo, el comando "Serial.print") me imprime en la pantalla lo que está llegando al pin 0, por lo que no sé que es lo que está sucediendo.

Espero me puedan ayudar. Saludos!

No creo que eso sean los datos que requieres, yo tambien he visto algunos datos raros al iniciar el monitor serial y despues aparecen los datos que deberian aparecer.

Seria bueno que nos dijeras como es que conectas tu balanza con el arduino

Hola! Gracias por responder!
Mira aquí esta como realizo la conexión:

El cable café es para GND y el rojo es donde tomo los datos
El otro extremo del cable DB9 es el que va conectado a la balanza

Estuve realizando varias pruebas para ver si eran correctos los datos y al parecer si. Espero que sirva mi información. Gracias!

Veo que tienes un par de cables solamente conectados al Arduino, uno de ellos lo tienes conectado a la tierra y el otro en el puerto digital 0, porque en el cero?

Que protocolo de comunicación estas utilizando entre tu balanza y el Arduino?
también seria bueno que mostraras algo del código para poder ver que esta pasando en el arduino.

=======
Update...

el pin cero y el uno es utilizado por el arduino para mandar y recibir datos al puerto usb posiblemente eso cause interferencia, utiliza otro pin que no sea el 0 o el 1

Así es, el pin 0 (RX) es para recibir datos al puerto serial de la Arduino. No causa problema porque al subir el programa a la tarjeta, quito el cable, y una vez que la tarjeta tiene el programa, vuelvo a colocarlo, de esta forma es como he estado trabajando, cada que subo un programa hago este procedimiento.

No uso ningún protocolo de comunicación, lo que hago es simplemente tomar los datos como vienen de la balanza y los muestro en pantalla.

Éste es el ejemplo que utilizo para tomar los datos. Me muestra el byte que está en el puerto (uno por uno).

int incomingByte = 0; // for incoming serial data

void setup() {
Serial.begin(9600); // opens serial port, sets data rate to 9600 bps
}

void loop() {

// send data only when you receive data:
if (Serial.available() > 0) {
// read the incoming byte:
incomingByte = Serial.read();

// say what you got:
Serial.print("I received: ");
Serial.println(incomingByte, DEC);
}
}

No acabo de ver claro lo que estas haciendo, segun tengo entendido no se puede conectar un puerto serie directamente a arduino, es necesario convertir los niveles de tension, eso lo puedes hacer con un MAX232.

Hola que tal! A mi entender, según lo que he leído, no se necesita conectar el MAX232 porque estoy realizando una comunicación asíncrona (UART) y lo único que quiero hacer es leer los datos que me está mandando la balanza.

Hola de nuevo.

supongo que para entonces ya has cambiado la frecuencia del monitor serial, que resultado te dio?

Hola de nuevo! Pude resolver el problema. La solución fue conectar el MAX232. Lo había intentado antes pero la configuración de los capacitores estaba mal, encontré la correcta, lo heché a andar y funcionó correctamente la lectura de los datos. De antemano les agradezco su tiempo para ayudarme! Saludos!

Saludos tengo problemas con la conexion de Arduino UNO y una balanza CAS que se comunica mediante puerto serial DB9 lo si alguien puede ayudarem agrguenme muchas gracias.

tengo el mismo problema, ya arme el max232 pero al recepcionar señal no me muestra nada

quisiera el codigo para trabajar con max232 y recibir los datos de el DB9

Saludos
Soy especialista en Balanzas.
Lo preocupo primero es que me digas que modelo de Cas tienes. Y que pruebas has realizado.

1 Like

Hola que tal no se si en este foro me puedan ayudar pero necesito poder conectar una balanza con salida por puerto serial a una impresora de etiquetas

Oct 31, 2014, 07:46 pm es la fecha de la ultima respuesta.

Debes crear un nuevo post.
Ló unico que te salva es que Max_saeta es nuestro experto en balanzas y sigue estando.

Además poco tiene que ver con lo que ellos discuten.
Uno quería leer un dato serial y tu quieres imprimir etiquetas. Conectas el cable serie de la balanza a la impresora y con suerte lo hará. Digo con suerte porque se supone que la balanza está enviando los códigos corresondientes para que funcione tu impresora.
SI no es asi, tal vez haya que programarla.
No dices que balanza es, no dices que impresora es.

Hola arthoor estoy en un proyecto de leer la trama de indicadores de peso y mostrarlo en un display y aunque ya tengo un código no deja leer sino la trama de una marca , me preguntaba si me podrías ayudar gracias