Estoy tratando de configurar una función de reinicio programado para un módulo BlueTooth de 3,3 V que se reinicia cuando su pin de reinicio se pulsa BAJO durante un período corto de tiempo. Hay una resistencia pull-up de 47K en el módulo BT que mantiene su pin de reinicio en 3.3V hasta que el pin de reinicio se conecta a tierra o se envía BAJO. Por lo tanto, no hay problema con el ruido aleatorio debido a la resistencia pull-up de BT. ¿Puedo definir el pin Arduino como entrada y dejarlo flotando, luego escribir digitalmente en BAJO para reiniciar, luego devolver el pin a flotante para que el módulo BT pueda continuar después del reinicio? No puedo escribir digitalmente ALTO porque los 5V del Arduino destruirán el módulo BT de 3.3V.
¿Ha considerado usar un circuito convertidor de nivel lógico bidireccional de 5V/3V3 (generalmente solo un MOSFET de canal N elegido apropiadamente con un par de resistencias pull-up)? Por ejemplo, busque "cambiador de nivel lógico" en SparkFun.com (p. ej., SKU# BOB-12009). El diseño básico se muestra a continuación en la Figura 1.
simular este circuito : esquema creado con CircuitLab
Figura 1.
Advertencia: el voltaje BAJO de salida de la lógica de 5 V se alimenta a través del MOSFET sin modificar y se aplica directamente al pin de entrada lógica de 3,3 V. Tenga en cuenta que para la lógica CMOS de 5 V es de 0,9 V, mientras que para la lógica 3V3 es 0.8V. Sin embargo, en muchos casos, el voltaje de salida lógico BAJO del lado lógico de 5 V está muy por debajo de 0,8 V, por lo que este circuito convertidor de nivel lógico funciona bien en esos casos.
Definitivamente puede hacer eso, pero debería considerar usar un diodo, es el cambiador de nivel económico para esta situación, además lo libera de las preocupaciones por errores de código.
chris stratton
DavidCyr2000
chris stratton
DavidCyr2000
DavidCyr2000