nivel de deposito

Hola!

Estoy probando un nivel de deposito con el siguiente código

int sensor=48;  //Indicamos el pin al que tenemos conectado el sensor de nivel de liquido
int led=45;      //Indicamos el pin al que tenemos conectado el led que indica alarma

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

  //Configuramos los pines correspondientes como entradas o salidas
  pinMode(sensor,INPUT);   //sensor de nivel de liquido
  pinMode(led, OUTPUT); //salida led
}

void loop()
{
  Serial.println(digitalRead(sensor));
  if(digitalRead(sensor)==LOW)
    digitalWrite(led,LOW);
  else
    digitalWrite(led,HIGH);
}

y al leer el estado del sensor da estos valores:

Si está cerrado:

0
0
0
0
0
0

Pero si está abierto:

1
1
1
1
0
0
0
1
1
1
0
0
0
1
1
1
1

Lo tengo conectado al GND y al pin digital sin resistencia, puede ser este el fallo?

Gracias

necesitas una resistencia de pull up. puedes usar la interna que lleva el arduino
En el setup

pinMode(numeropin, INPUT);
digitalWrite(numeropin, HIGH);

Sergegsx:
necesitas una resistencia de pull up. puedes usar la interna que lleva el arduino
En el setup

pinMode(numeropin, INPUT);
digitalWrite(numeropin, HIGH);

Muchas gracias como siempre!!!
Me puedes explicar que es un resistencia pull up?

Graciad de nuevo

Jossema106:

Sergegsx:
necesitas una resistencia de pull up. puedes usar la interna que lleva el arduino
En el setup

pinMode(numeropin, INPUT);
digitalWrite(numeropin, HIGH);

Muchas gracias como siempre!!!
Me puedes explicar que es un resistencia pull up?

Graciad de nuevo

en serio?
te recomiendo esta pagina... www.google.es
"resistencia pull up"

de verdad que no vale la escusa de ser nuevo, aquí se espera que te lo den todo. así va el pais !

Tienes razon.

I'm sorry!

Sabeis que ventajas tendria usar una resistencia pushpull externa frente a una interna.

flico:
Sabeis que ventajas tendria usar una resistencia pushpull externa frente a una interna.

En mi caso:

Que te da mas libertad en el diseño.

Con las internas fijas son 20k si no recuerdo mal. en circuitos logicos ausentes de interferencias esto es muy aceptable y te ahorras componentes pero si quieres reducir consumo al maximo o quieres inmunizarlo a señales mas fuertes pues varias estos valores con externas en valores superiores o inferiores.

Un ejemplo:

En este caso mi resistencia de Pullup seria la que esta marcada como 1k en la linea de colector. Con una de 20k interna igual se quedaba corta por permitir solo 0,2mA. En este caso la de 1k me vale para polarizar la entrada del arduino y aparte me vale de carga para el transistor cuando este conduzca.

No te quedes con este esquema fijo, solo es ejemplo (ademas pone 10v), puedes imaginar un led en la linea de colector o cualquier otra carga... empleando la conmutacion por transistor y aparte la entrada de arduino como señal de control de que este conduce.

Imagina esta otra combinacion:

La R seria la resistencia limitadora de corriente del transistor, pero a su vez seria la resistencia de pullup externa de la pata del arduino.

Cuando el optoacoplador recibiera corriente iluminaria el led y el transistor conduciria. El arduino detectaria la conduccion del transistor porque mandaria su entrada a masa (casi).

Este esquema me valdria como ejemplo de resistencia externa y seria el tipico de emplear un arduino para leer los codigos del mando de TV infrarrojo, por ejemplo.

O si fuera un opto de este estilo, me valdria para detectar cuando un objeto pasa por el hueco.

Esquema tal que asi:

Un saludo Flico.

Sergegsx:
necesitas una resistencia de pull up. puedes usar la interna que lleva el arduino
En el setup

pinMode(numeropin, INPUT);
digitalWrite(numeropin, HIGH);

Lo he añadido al setup pero sigue dando los mismos valores, alguna idea?

Sin embargo, si lo conecto al pin 13 sin problema.

Jossema106:

Sergegsx:
necesitas una resistencia de pull up. puedes usar la interna que lleva el arduino
En el setup

pinMode(numeropin, INPUT);
digitalWrite(numeropin, HIGH);

Lo he añadido al setup pero sigue dando los mismos valores, alguna idea?

Sin embargo, si lo conecto al pin 13 sin problema.

¿Puedes poner el codigo con la modificacion que has hecho?

int pinNivel=48; //Indicamos el pin al que tenemos conectado el sensor de nivel de liquido
int led=45; //Indicamos el pin al que tenemos conectado el led que indica alarma
int nivel;
void setup()
{
Serial.begin(9600) ;

//Configuramos los pines correspondientes como entradas o salidas
digitalWrite(pinNivel, HIGH);
pinMode(pinNivel,INPUT); //sensor de nivel de liquido
pinMode(led, OUTPUT); //salida led
}

void loop()
{
nivel = digitalRead(pinNivel);
Serial.println(nivel);
if(digitalRead(pinNivel)==LOW)
digitalWrite(led,LOW);
else
digitalWrite(led,HIGH);
}

Jossema106:
int pinNivel=48; //Indicamos el pin al que tenemos conectado el sensor de nivel de liquido
int led=45; //Indicamos el pin al que tenemos conectado el led que indica alarma
int nivel;
void setup()
{
Serial.begin(9600) ;

//Configuramos los pines correspondientes como entradas o salidas
digitalWrite(pinNivel, HIGH);
pinMode(pinNivel,INPUT); //sensor de nivel de liquido
pinMode(led, OUTPUT); //salida led
}

void loop()
{
nivel = digitalRead(pinNivel);
Serial.println(nivel);
if(digitalRead(pinNivel)==LOW)
digitalWrite(led,LOW);
else
digitalWrite(led,HIGH);
}

Asi si, lo habias puesto mal:

int pinNivel=48;  //Indicamos el pin al que tenemos conectado el sensor de nivel de liquido
int led=45;      //Indicamos el pin al que tenemos conectado el led que indica alarma
int nivel;
void setup()
{       
  Serial.begin(9600) ;

  //Configuramos los pines correspondientes como entradas o salidas

  pinMode(pinNivel,INPUT);   //sensor de nivel de liquido
  digitalWrite(pinNivel, HIGH);  //--------->esta es la modificacion, se pone despues.
  pinMode(led, OUTPUT); //salida led
}

void loop()
{
   nivel = digitalRead(pinNivel);
  Serial.println(nivel);
  if(digitalRead(pinNivel)==LOW)
    digitalWrite(led,LOW);
  else
    digitalWrite(led,HIGH);
}

GRacias!!!!

Heke:

flico:
Sabeis que ventajas tendria usar una resistencia pushpull externa frente a una interna.

En mi caso:

Que te da mas libertad en el diseño.

Con las internas fijas son 20k si no recuerdo mal. en circuitos logicos ausentes de interferencias esto es muy aceptable y te ahorras componentes pero si quieres reducir consumo al maximo o quieres inmunizarlo a señales mas fuertes pues varias estos valores con externas en valores superiores o inferiores.

Un ejemplo:

En este caso mi resistencia de Pullup seria la que esta marcada como 1k en la linea de colector. Con una de 20k interna igual se quedaba corta por permitir solo 0,2mA. En este caso la de 1k me vale para polarizar la entrada del arduino y aparte me vale de carga para el transistor cuando este conduzca.

No te quedes con este esquema fijo, solo es ejemplo (ademas pone 10v), puedes imaginar un led en la linea de colector o cualquier otra carga... empleando la conmutacion por transistor y aparte la entrada de arduino como señal de control de que este conduce.

Imagina esta otra combinacion:

La R seria la resistencia limitadora de corriente del transistor, pero a su vez seria la resistencia de pullup externa de la pata del arduino.

Cuando el optoacoplador recibiera corriente iluminaria el led y el transistor conduciria. El arduino detectaria la conduccion del transistor porque mandaria su entrada a masa (casi).

Este esquema me valdria como ejemplo de resistencia externa y seria el tipico de emplear un arduino para leer los codigos del mando de TV infrarrojo, por ejemplo.

O si fuera un opto de este estilo, me valdria para detectar cuando un objeto pasa por el hueco.

Esquema tal que asi:

Un saludo Flico.

Gracias @Heke por la info.