El botón me da el mismo voltaje cuando se presiona o se suelta

Estoy haciendo un programa simple con mi PIC ( PIC24FJ1024GB610 ).

Cuando se presiona un botón, el LED se enciende, cuando se suelta, el LED se apaga.

Supuse que los pines de entrada tienen una resistencia pull-up conectada dentro del microcontrolador de forma predeterminada, porque cuando medí el voltaje en el pin cuando estaba flotando, era 3.3V

esquemático

simular este circuito : esquema creado con CircuitLab

En una configuración pull-up, Vinput es de 3,3 V cuando se suelta el botón y de 0 V cuando se presiona el botón.

Sin embargo, cuando se presiona o suelta el botón, medí el mismo valor que es 3.3V

Estoy usando una placa de prueba para diseñar el circuito y una placa de desarrollo pic: Explorer16/32

Agregué el código FYI.

#include "System.h"
#include <xc.h>

/*


 P44 is input RB15
 P88 is output RF1 5V tolerant



 */


#define ANALOG  1
#define DIGITAL 0

#define INPUT   1
#define OUTPUT  0

//BTN RB15
#define BTN_ANS     ANSBbits.ANSB15
#define BTN_TRIS    TRISBbits.TRISB15
#define _INPUT      PORTBbits.RB15

//LED RF1
#define LED_TRIS    TRISFbits.TRISF1
#define _OUTPUT     _LATF1


int main (void)
{
    //LED_ANS = DIGITAL;
    LED_TRIS = OUTPUT;

    _OUTPUT = 0;

    BTN_ANS = DIGITAL;
    BTN_TRIS = INPUT;

    while(1)
    {
        if(_INPUT == 1)
            _OUTPUT = 1;
        else
            _OUTPUT = 0;
    }


    return 0;
}
Asumiendo que un pull-up no es una gran idea; si realmente quería saber sin analizar el código, use brevemente una resistencia externa (tal vez algo alrededor de 33K) para conectar a tierra y ver qué voltaje intermedio obtiene, desde el cual no solo puede ver si hay un pullup interno presente, sino también calcular su valor .
En términos de su afirmación de que el 3v3 permanece cuando se cierra el interruptor nominalmente conectado a tierra, esto sugiere un interruptor defectuoso o un cableado defectuoso. Tal vez desconéctelo e investigue el interruptor con un probador de continuidad. O sustituya el interruptor por un cable de puente instalado/retirado de la placa de pruebas. Pocos interruptores se insertarán en una placa de prueba de una manera que haga un contacto eléctrico confiable , aunque parezcan falsamente conectados a ella. Cuando dices "medir", te refieres con un voltímetro y no solo al resultado de tu programa, ¿verdad?
La razón por la que asumí eso, porque cuando medí el voltaje del pin (por sí mismo) encontré que el voltaje era de 3.3V.
@ChrisStratton Probé la continuidad del botón, medí la resistencia del botón con un DMM, cuando lo solté tenía una alta resistencia cuando la resistencia presionada es casi 0.
Lo probaré con una resistencia externa, pero lo que molesta es por qué el voltaje del pin es = 3.3V, cuando no está conectado.
Para el pull-up, medir sin carga no tiene sentido. Para el botón, si está midiendo 3v3 a través de él cuando está presionado, no está haciendo contacto internamente o no está conectado a su circuito. Uno u otro, pequeño proyecto para saber cuál. Y nuevamente, los botones rara vez funcionan bien en las placas de prueba, por lo que es un sospechoso clave.
@ChrisStratton Sí, tiene razón, lo probé en diferentes pines de la placa de prueba y funcionó, también el botón está un poco defectuoso, ya que al presionarlo, el LED parpadeó, lo que significa que el botón no hizo contacto todo el tiempo cuando se presionó. gracias por tu ayuda cris

Respuestas (1)

Los botones rara vez hacen un contacto eléctrico confiable con las placas de prueba.

Según los comentarios, ese parece haber sido su problema, junto con posibles problemas de calidad en el botón mismo.

A veces hay cosas que puedes hacer para hacer que algo funcione lo suficientemente bien para una prueba rápida, por ejemplo, tenía algunos botones en los que girar cada uno de los pines 90 grados haría que se ajustaran mejor a los contactos de la placa de prueba y funcionaran una fracción útil del tiempo. Pero en realidad, las placas de prueba no son para confiabilidad, especialmente no con nada que no sea un IC DIP o un componente de cable de calibre de cable adecuado.

Sería mejor soldar su botón a una placa de circuito (quizás una placa prototipo prefabricada), o comprar un conjunto de botones prefabricados y conectarlo directamente a su placa MCU.

Lo tendré en cuenta, gracias Cris.