Pages: [1]   Go Down
Author Topic: Problema de la placa o humano?  (Read 1332 times)
0 Members and 1 Guest are viewing this topic.
Offline Offline
Newbie
*
Karma: 2
Posts: 11
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

Hola de nuevo a todos!

Como buen novato, he estado probando los ejemplos de codigo en mi placa Arduino (Arduino Leonardo), y al llegar al de "Digital Read Serial", me encuentro con mi primer "problema"...

Os explico la situacion:

- Codigo de ejemplo

Code:
/*
  DigitalReadSerial
 Reads a digital input on pin 2, prints the result to the serial monitor
 
 This example code is in the public domain.
 */

// digital pin 2 has a pushbutton attached to it. Give it a name:
int pushButton = 2;

// the setup routine runs once when you press reset:
void setup() {
  // initialize serial communication at 9600 bits per second:
  Serial.begin(9600);
  // make the pushbutton's pin an input:
  pinMode(pushButton, INPUT);
}

// the loop routine runs over and over again forever:
void loop() {
  // read the input pin:
  int buttonState = digitalRead(pushButton);
  // print out the state of the button:
  Serial.println(buttonState);
  delay(1);        // delay in between reads for stability
}


Es decir, el de serie en los ejemplos

- Pulsador con 4 patas

Y la conexion que hago es la siguiente:

3.3V ----------------- P
                             P --------------------- PIN Digital 2

Siendo P el pulsador

Por tanto, en principio al cargar el codigo en la placa y abrir el monitor Serial, deberia ver 0 permanentemente, y así es.
Y al pulsar el pulsador, la corriente pasaria hasta llegar al PIN Digital 2, y entonces aparecerían 1. Y también así es.

El problema viene cuando suelto el pulsador, momento en el cual debería empezar a ver 0, pero eso no sucede, sino que sigo viendo 1 hasta que pasan unos 5 o 6 segundos variando entre 0 y 1, y finalmente se estabiliza en 0. Eso sucede todas las veces que lo he probado (puedo hacer un video demostrativo si queréis).

No se si será problema de la placa, o mio en el montaje (que no creo.... Adjunto foto por si acaso)

http://subefotos.com/ver/?4dd7ef7c3d7d49851d077a2cedd7568co.jpg#codigos
http://subefotos.com/ver/?829a45fc304b2abe7fce744882c4deaco.jpg#codigos

Alguna idea o sugerencia?

Gracias!
Logged

Malaga
Offline Offline
Sr. Member
****
Karma: 6
Posts: 319
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

Ese comportamiento es el normal y esperado.
Al conectar con el interruptor el pin a 3,3V, este coge esa tensión. Cuando lo cortas, la capacidad parásita del pin de entrada mantiene esa tensión mientras se va descargando poco a poco.

Pon una resistencia de 10K entre el pin y masa y verás como la descarga se hace mucho más rápida.

Luego, quita la resistencia, conecta el otro pin del switch  a GND, no a 3,3, y activa la resistencia de pull-up interna del pin. El comportamiento es el inverso, pero te ahorras una resistencia :-)
Logged

Vinciduino rocks!

Offline Offline
Newbie
*
Karma: 2
Posts: 11
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

Ese comportamiento es el normal y esperado.
Al conectar con el interruptor el pin a 3,3V, este coge esa tensión. Cuando lo cortas, la capacidad parásita del pin de entrada mantiene esa tensión mientras se va descargando poco a poco.

Desconocía por completo esa propiedad. Gracias por decírmelo, estaba asustado ya!
(Note-to-self: vaya novato....)

Pon una resistencia de 10K entre el pin y masa y verás como la descarga se hace mucho más rápida.

Tendré que esperar a mañana o pasado a poder ir a la tienda de electronica, ya que por desgracia todavia estoy empezando y solo tengo 6 resistencias de 330...
Tendre que hacerme con unas cuantas variadas!

Cuales me recomendais asi "estandar"?

Luego, quita la resistencia, conecta el otro pin del switch  a GND, no a 3,3, y activa la resistencia de pull-up interna del pin. El comportamiento es el inverso, pero te ahorras una resistencia :-)

Ahi me he perdido...

Es decir, tendria que quedarme

GND-----------------P
                          P----------------PIN 2

Asi?

Lo de activar la resistencia pullUp tampoco se bien bien como hacerlo...

Gracias por la ayuda, de verdad, se agradece MUCHISIMO cuando se esta empezando!
Logged

Albacete
Offline Offline
Full Member
***
Karma: 0
Posts: 140
Arduino mola que te pasas
View Profile
WWW
 Bigger Bigger  Smaller Smaller  Reset Reset

Hay un axioma en electronica digital que a menudo se olvida. El axioma reza asi:
Nunca, nunca, nunca dejes una entrada digital al aire.
Si lo haces,las lecturas son erraticas, porque el voltaje que tienes en la entrada puede ser cualquier cosa. Debes usar un pulsador que conecte la entrada a masa en una posicion y a 3.3v en la otra.
Logged

Malaga
Offline Offline
Sr. Member
****
Karma: 6
Posts: 319
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

Hombre, Profenas, eso tampoco es necesario ... Si eso fuese así, no tendría sentido usar resistencias de pull-up/pull-down ...

La verdad es que me da susto conectar directamente las lineas de alimentación a un micro, aunque sea a entradas. A la más mínima equivocación, zas, fries algo.

Por cierto, arduleo, puedes usar la resistencia de 330 ohm si quieres en ves de la de 10K ... al menos para probar. El mayor problema es que el circuito te va a consumir más :-)
Y para probar el diagrama que conecta a masa no necesitas ni resistencia (es tal y como dices).
SObre los pull-up, además de buscar algo en internet (bendito google), echale un vistazo a:
http://arduino.cc/en/Reference/DigitalWrite

En cuanto a resistencias, siempre vienen bien, son baratas, y te gastas más en gasolina si tienes que estar yendo a las tiendas de electrónica cada vez que necesites un nuevo valor.

Coge un poco de todo: 1K, 10K, 100K, 1M ... yo en casa tengo que tener unas 1000 resistencias de más de 60 valores distintos ... y sigo comprando a veces :-) (y tampoco soy rico, una resistencia puede llegar a valer 1,2 céntimos)
Logged

Vinciduino rocks!

Offline Offline
Edison Member
*
Karma: 23
Posts: 1375
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

http://arduino.cc/en/Tutorial/InputPullupSerial
Logged

Mercadillo electrónico. Kit iniciación a Arduino, shield LCD a color y más cosas!

Offline Offline
Newbie
*
Karma: 2
Posts: 11
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

Hay un axioma en electronica digital que a menudo se olvida. El axioma reza asi:
Nunca, nunca, nunca dejes una entrada digital al aire.
Si lo haces,las lecturas son erraticas, porque el voltaje que tienes en la entrada puede ser cualquier cosa. Debes usar un pulsador que conecte la entrada a masa en una posicion y a 3.3v en la otra.

Vale, entonces segun comprendo, deberia quedarme

3.3v-------------P ------------PIN 2
GND-------------P

Asi nunca estaria el PIN 2 al aire!
Creo que lo he entendido, gracias!  smiley


Hombre, Profenas, eso tampoco es necesario ... Si eso fuese así, no tendría sentido usar resistencias de pull-up/pull-down ...

La verdad es que me da susto conectar directamente las lineas de alimentación a un micro, aunque sea a entradas. A la más mínima equivocación, zas, fries algo.

Por cierto, arduleo, puedes usar la resistencia de 330 ohm si quieres en ves de la de 10K ... al menos para probar. El mayor problema es que el circuito te va a consumir más :-)
Y para probar el diagrama que conecta a masa no necesitas ni resistencia (es tal y como dices).
SObre los pull-up, además de buscar algo en internet (bendito google), echale un vistazo a:
http://arduino.cc/en/Reference/DigitalWrite

Ahora buscaré más informacion, pero segun comprendo seria

3.3v--------------P --------PIN 2
GND----RESIST---P

Para que la descarga se hiciera aun mas rapida, verdad?
Por el consumo de momento no me importa, solo estoy probando a hacer y comprender los tutoriales basicos y el por que de su funcionamiento, para empezar bien por el principio!

En cuanto a resistencias, siempre vienen bien, son baratas, y te gastas más en gasolina si tienes que estar yendo a las tiendas de electrónica cada vez que necesites un nuevo valor.

Coge un poco de todo: 1K, 10K, 100K, 1M ... yo en casa tengo que tener unas 1000 resistencias de más de 60 valores distintos ... y sigo comprando a veces :-) (y tampoco soy rico, una resistencia puede llegar a valer 1,2 céntimos)

En lo de la gasolina tienes razon...

Pues ya me armare con unas cuantas resistencias, mas que nada para tenerlas!

Muchas gracias por la ayuda, de verdad!
Cuando tenga un momento lo pruebo, y ya os comentare diciendo que tal me ha ido smiley
Logged

Malaga
Offline Offline
Sr. Member
****
Karma: 6
Posts: 319
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

Con esto lo que conseguirás es quemar el arduino, fijo ...

3.3v-------------P ------------PIN 2
GND-------------P


Y con esto:

3.3v--------------P --------PIN 2
GND----RESIST---P

Simplemente siempre leerás un 1.


Yo creo que lo suyo es

GND----RESIST---P --------PIN 2
3.3v--------------P

ó (usando pullup):

                       P --------PIN 2
GND--------------P
Logged

Vinciduino rocks!

Offline Offline
Newbie
*
Karma: 2
Posts: 11
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

Yo creo que lo suyo es

GND----RESIST---P --------PIN 2
3.3v--------------P

Asi me ha funcionado perfectamente!
Muchisimas gracias, de verdad!

ó (usando pullup):

                       P --------PIN 2
GND--------------P


Ahora investigare y probare un poco mas del tema de las pullups, a ver si me aclaro y consigo hacerlo tambien smiley

Gracias, en serio, no te imaginas como se agradece esto siendo novato!
Logged

Pages: [1]   Go Up
Jump to: