Go Down

Topic: Arduino + Balanza (Read 1 time) previous topic - next topic

Arthoor

Nov 07, 2013, 07:03 pm Last Edit: Nov 07, 2013, 07:07 pm by Arthoor Reason: 1
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!

ehrja

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

Arthoor

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!

ehrja

#3
Nov 16, 2013, 12:55 pm Last Edit: Nov 16, 2013, 01:55 pm by ehrja Reason: 1
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

Arthoor

#4
Nov 20, 2013, 02:04 am Last Edit: Nov 20, 2013, 02:13 am by Arthoor Reason: 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);
   }
}

R0BERT0

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.


Arthoor

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.

ehrja

Hola de nuevo.

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

Arthoor

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!

Go Up