Este problema puede deberse a muchas causas como por ejemplo: ruido eléctrico , variaciones en la fuente , interferencias etc.
Para este problema tenemos las resistencia de referencia comúnmente llamadas resistencias pull up y pull down , las cuales cuando la entrada digital esta al "aire" le va a dar una referencia de 1 o 0.
Este método se usa mucho en entradas digitales, Compuertas lógicas , arduino etc.
¿Que valor hay que ponerle a la resistencia Pull up y Pull down?
La mayoría de las veces será así, y no hay que complicarse mucho la vida con esto. Sin embargo, este valor se puede calcular por si queres saber el consumo exacto de potencia (cada milivatio cuenta cuando diseñamos un sistema).
- Cuando se presiona el botón , el pin de entrada se baja. El valor de la resistencia controla la cantidad de corriente que desea que fluya desde VCC, a través del botón y luego a tierra.
- Cuando no se presiona el botón , el pin de entrada se tira hacia arriba. El valor de la resistencia pull-up controla el voltaje en el pin de entrada.
La regla general para la condición 2 es usar una resistencia pull-up que es un orden de magnitud (1/10) menor que la impedancia de entrada del pin de entrada. Un pin de entrada en un microcontrolador tiene una impedancia que puede variar de 100k-1MΩ. Para esta discusión, la impedancia es solo una forma elegante de decir resistencia. Entonces, cuando no se presiona el botón, circula una cantidad muy pequeña de corriente desde VCC a través de la resistencia pull up y hacia el pin de entrada.
La resistencia pull-up y la impedancia del pin de entrada, funcionan como un divisor de tensión, y ese voltaje debe ser lo suficientemente alto para que el pin de entrada lea un estado alto (alrededor de 5v)
Como ya hemos dicho, la resistencia pull-up cumple la doble función de limitar la entrada del puerto y evitar el cortocircuito al pulsar el botón. Si la resistencia es muy alta podría no entregar la tensión umbral necesaria para activar el puerto y, si es demasiado baja, podría producirse un cortocircuito.
En teoría los dos esquemas funcionan de manera idéntica (salvo por la lógica), pero hay mucha gente que dice que las resistencias Pull-Up son menos propensas a cambiar de estado por señales de alta impedancia.
¿Cual es mejor pull up o pull down?
En teoría los dos esquemas funcionan de manera idéntica (salvo por la lógica), pero hay mucha gente que dice que las resistencias Pull-Up son menos propensas a cambiar de estado por señales de alta impedancia.
Pull up vía software
Muchos micro-controladores como por ejemplo el caso de Arduino, ofrecen la posibilidad de aplicar una resistencia Pull-Up mediante software. (lo cual nos ahorra poner la resistencia física con solo unas lineas de código)
El código de Arduino sería el siguiente:
El código de Arduino sería el siguiente:
int interruptor = 12; //Pin del interruptor o botón
void setup()
{
pinMode(interruptor, INPUT); //Interruptor como entrada
digitalWrite(interruptor, HIGH); //Resistencia pull-up por software
}
void loop(){
}
también este otro ejemplo:
pinMode(5, INPUT_PULLUP); // definir entrada y activar resistencia pull-up
No hay comentarios.:
Publicar un comentario