Go Down

Topic: medidor ph/orp Atlas Scientific (Read 1 time) previous topic - next topic

lince

Hola, tengo esta placa pero no se hacerla funcionar , en las instrucciones dice que hay que enviarle "c<cr>" pero no "c<cr><ln>" par que haga una lectura continua y se encienda el led verde indicando esto.
tengo Arduino Mega y he probado conectarlo a los pines dig 19, 20, escribo  Serial1.print("c")  Serial1.print("\r") y no  hace nada, bueno he probado de mil maneras tambien con libreria Newsoftserial en pines 8;9 y ya no se que voy hacer,
¿alguien me puede ayudar, por favor?

Pofenas

si lo que quieres es escribir 'c<cr>' te sugiero lo siguiente:

char envio[3]={'c',13,0};
Serial.print(envio);

No estoy seguro de la inicializacion de envio. Si peta, prueba:
envio[0]='c';
envio[1]=13;
envio[2]=0;
Serial.print(envio);

Suerte

lince

#2
Mar 27, 2011, 06:58 pm Last Edit: Mar 27, 2011, 07:04 pm by lince Reason: 1
Ante todo muchas gracias pofenas por ayudarme,
Esta es la placa con la que estoy luchando, https://www.atlas-scientific.com/00_other/pHStampManual.pdf

He probado con el codigo que me has dicho en los pines (rx1,tx1) 19,18 de mi arduino mega, pero no escribe en la placa, (esta plaquita tiene dos leds uno rojo y otro verde uno de power on y el otro se enciendo cuando recibe o manda datos, y no se inmuta )
:

void setup()
{
Serial.begin(38400);
}
void loop()
{
 char envio[4]={'l','1', 13,0};
Serial.print(envio);

envio[0]='l';
envio[1]='1';
envio[3]=13;
envio[4]=0;
Serial.print(envio);
}

lo he probado con Serial print() tambien en los pines (rx tx) 0,1 pero no se si se puede escribir en la placa de ph con serial.begin() ¿asi  solo  escribe en monitor de pc no?

Pofenas

Con Serial escribes usando los pines 0 y 1, que son los mismos que se usan para comunicar con el PC a través del USB. SI lo estas probando en el Mega, puedes usar los pines 18 y 19, pero entonces debes usar Serial1 (supongo que ya lo has probado). Lo unico que se me ocurre es que quizá las masas no son comunes? Supongo que igual lo sabes ya, pero necesitas que Gnd del Arduino y Gnd de la placa esten unidos mediante un hilo. No se me ocurre que más podria estar pasando....
Suerte

lince

#4
Mar 28, 2011, 09:46 pm Last Edit: Mar 28, 2011, 09:49 pm by lince Reason: 1
bueno pues ya por lo menos se que funciona :smiley-mr-green:, lo que pasa que no es exacto me da sobre 6.75 en solucion de calibracion ph7, supongo que es por la diferencia de temperatura del valor por defecto que trae la placa 25º y ahora aqui tengo 21º, por eso necesito poder utilizar los codigos, tambien parar la lectura continua y solo lea cuando le pida con R<CR>, solo seis codigos y casi todos de un carater mas retorno de carro . (con lo sencillo que me parecia cuando lo compre :smiley-red:)

con este codigo que he encontrado:
#include <LiquidCrystal.h>
LiquidCrystal lcd(7,6,5,4,3,2);

#include <stdio.h>

void setup()
{
Serial1.begin(9600);
lcd.begin(20,4);
lcd.print("empezamos");

}

void loop()
{

 delay(1000);
char inData_ph[24];
char string_ph[8];
int index =0;
float ph_val = 0.0;
Serial1.println("read()c");

delay(750);
while (Serial1.available() > 0 && index < 24)
  {
    inData_ph[index] = Serial1.read();
    index++;  
  }
  inData_ph[index] = '\0';
  sscanf(inData_ph, "%*s %s", string_ph);
  ph_val = atof(string_ph);
  // Serial.print("Sensor output: [");
  // Serial.print(inData_ORP);  Serial.println("]");
  lcd.print("ph valor: ");
 lcd.print(ph_val);
}  

el caso es que he probado de mil maneras mandar los seis comandos que tiene la placa pero no hay forma.
lo que no se por que funciona con Serial1.begin(9600) si la pagina oficial dice que es a 38400. lo he probado y tampoco funciona. con 'Serial1.print' con 'Serial1.println' pero no doy con la tecla.
Gracias Pofenas por los consejos, seguire investigando a ver si doy con la solucion.

flico

Prueba a mandar de esta manera el retorno de carro.
Serial.print("Comando\r\n");

Slu2
Trabajando en ...

    * Control Domotico (En montaje ...)
    http://casitadomotica.blogspot.com/
 

[url=https://bitbucket.org/fmalpartida

lince


lince

el caso es que de alguna manera en el codigo que puse antes que es con el único que me funciona si quito: Serial1.println("read()c"); deja de darme valores, entiendo que esto hace las veces del comando r<CR> el cual me da una sola lectura segun el fabricante o C<CR que hace lectura constante. es que en teoria la velocidad de trabajo de la tarjeta es a 38400 y en este codigo se le transmite a 9600, pero es que si le pongo 38400 tampoco funciona.  =( =(
ta no se como le voy a meter mano a esto. sigo investigando....


lince

bueno pues por fin puedo mandar los comandos, por fin me respondio el vendedor y resulta que cambiaron antes el manual  a otro de una nueva version pero con otros comandos nuevos y  por eso no leia los comandos porque eran otros.
ahora todo ok.
gracias a todos los que me respondieron

Go Up