¿Una lectura de 4.8v en un pin suelto 0?

1

Tengo una configuración que exige que use todas mis E / S en mi placa Arduino Uno R3, incluidos los pines serie 0 y 1.

Así que he inicializado esos pines como entradas, pero cuando hago una lectura en el pin 0 se lee alto, aunque no está conectado a nada. Mi multímetro me dice 4.8V constantemente en el pin todo el tiempo.

Todos mis otros pines No he inicializado ninguna comunicación en serie, y he intentado ejecutar la placa con una batería (por lo que no hay conexión de computadora).

Tengo el Waveshield de Adafruit conectado a él, pero en lo que a mí respecta, no debería interferir con el pin 0 de ninguna manera.

He hecho un dibujo simple que muestra el concepto de lo que estoy haciendo. Es todo lo que hay, solo el tamaño de 12 botones y 12 lámparas. Para obtener suficientes E / S, tuve que implementar un expansor de E / S (mcp23016) en el bus I2C, pero es el mismo principio que en el dibujo.

Entonces, cuando tengo todo conectado, todo parece estar bien, excepto el pin 0 en el tablero Arduino. Todas las demás lecturas (tanto en el Arduino como en el expansor) funcionan bien. Lo extraño es que cuando mido el voltaje en el pin 0, me da 4.8V; en el pin 1 me da 1V y en los otros pines me da 0V. Entonces, algo es obviamente diferente de los pines en serie.

¿Hay algún tipo de subidas o bajadas internas o podrían ser las muchas resistencias de 10k que uso? ¿Deben ser más pequeños o más grandes?

Quizás es solo una mala soldadura, pero he estado revisando durante horas y horas y realmente no puedo ver ningún problema en la parte del hardware.

    
pregunta Søren

2 respuestas

2

Si se configura como un pin de entrada, entonces tratar de medir el voltaje es improductivo a menos que, por supuesto, usted crea que todavía se puede configurar como salida, entonces deberá adjuntar una carga para ver si el voltaje que está produciendo es "real" o simplemente una corriente de fuga de una entrada no conectada que hace que un voltímetro de alta impedancia muestre algo así como 4.8V.

Intente conectar una resistencia de 1k a tierra desde este pin. ¿Todavía muestra la lógica 1 o quizás ahora está en la lógica 0.

Algunos pines IO predeterminarán (en algunos MCU) tener un pull-up de alta resistencia incorporado del orden 100k y esto también puede estar sucediendo. Esto (en algunas MCU) se puede programar para que (a) no esté en absoluto, (b) pull-up o (c) pull-down. Creo que algunas MCU pueden programar una resistencia más baja o más alta. Tal vez esto también está pasando?

    
respondido por el Andy aka
0

Los pines en serie en el Microcontrolador principal de Arduino (ATMega328p), están conectados al Serial IC (A FTDI FT232 USB a Serial IC, o en las placas más nuevas, un ATMega16U que funciona de usb a la programación en serie) a través de dos resistencias. Estas resistencias se colocan entre el ATMega328p y el IC en serie, pero no entre el ATMega328p y el Pin 0 y el encabezado del Pin 1. Esto permite que un dispositivo serie conectado a través del Encabezado Arduino (normalmente un escudo) anule el IC serie.

En su caso, lo que esto significa es que, a menos que haya una señal que dirija el pin Alto o Bajo, el puerto serie del Serial IC impulsará los pines. Y si la señal tiene una resistencia más débil que 1kΩ, el IC en serie seguirá teniendo prioridad sobre esa señal.

En su lugar, sugiero usar el Pin 0 como salida.

Vea el Esquema Uno Rev 3, en la parte inferior, para RN4A y RN4B, red de resistencias de 1kΩ.

    
respondido por el Passerby

Lea otras preguntas en las etiquetas