Hacer pull-down de tensión de 5 V con Arduino 3.3 V

  • Autor Miembro eliminado 356005
  • Fecha de inicio
M

Miembro eliminado 356005

Hola.

Tengo un Arduino de estos pequeños que trabaja solo con tensiones de 3.3 V y quisiera usar algunas de sus entradas digitales como pull-down de tensiones de 5 V.

Más detalle: se trata de un circuito que está funcionando a 5 V que tiene unos pulsadores que conectan las patillas de un integrado, a tierra, y yo quiero imitar esa pulsación llevando la señal a tierra por medio de una entrada digital del Arduino en modo entrada, pero la complicación es saber si es más o menos fácil adaptar la tensión de 5 V a 3.3 V sin usar un level shifter o relé.

¿Alguna idea?
 
No he entendido muy bien.
He entendido que la salida de 3V3 del Arduino ha de activar una entrada "de puerta lógica" de 5V. Si es esto lo que preguntas se conecta directamente sin más.

Si es al revés, la salida de una puerta lógica de 5V a una entrada de 3V3, entonces depende, las hay tolerantes a 5V que se pueden conectar directo o con una resistencia en serie para limitar la corriente. Si no con un divisor de tensión puede valer.

Por supuesto hay adaptadores específicos mucho mejores que un relé.



Pensando un poco más...
¿Quieres que la salida del Arduino sea de colector abierto y que dé 0V y "aire"?
Si es así, no sé si la salida se puede configurar en colector abierto, pero puedes hacer que para un 0 la configures como salida y pongas un LOW y para un "aire" la configuras como entrada. Algo así

// Salida a 0
PinMode(N, output);
DigitalWrite(N,LOW)

//Salida a aire
DigitalWrite(N,low); // si se pone a high creo que se activa el internal pullup
PinMode(N,INPUT);

No estoy seguro al 100% tendrías que probar si esto va.
 
Última edición:
Voy a explicarlo al revés.

Tengo un circuito (es un portero automático) con cuatro botones. Esos botones lo único que hacen es poner a tierra sendas patillas del integrado que se encarga de "leer" los botones.

Bueno, pues lo que quiero es que el Arduino "imite" esa pulsación o puesta a tierra.

En otros esquemas, he visto que bastaba con conectar la línea a una entrada digital y ponerla a 0. Pero la dificultad viene porque está explícitamente indicado que las entradas de ese Arduino no soportan más que 3.3 V de tensión máxima de entrada, por lo que "las comunicaciones bidireccionales con equipos a 5 V deben realizarse con desplazamiento de nivel". Pero yo solo necesito una puesta a tierra.

EDITO: Es un Arduino MKR1000

abx00004_featured_1.jpg
 
Si, las entradas, no las salidas.
Como conectas a una entrada, esa entrada "no debería" de enviar ninguna tensión.

Bueno, depende, lo mismo el circuito tiene una r pullup y entonces si que "envía" 5V.


Un divisor de tensión debería de bastar, o un Zener y una resistencia. Si no te fías, pon un transistor npn en colector abierto, o pon un buffer
 
Última edición:
De cómo montar el transistor, @Gudino Roberto duberlin ya me ha dado la pista.

¿Cómo sería con el divisor de tensión y el zener?

Es cierto que aún no tengo pistas de qué es lo ocurre en la patilla sensora. Sí que estoy seguro de que no está puesta a pull-up ni pull-down con una resistencia externa: el pin del chip está conectado directamente al pulsador.
 
Lo mas simple es usar un ULN2003 que son 7 darlington a colector abierto: cuando le pones un 1 en la "entrada" el colector baja al potencial de masa.
Conectas 4 "salidas" en reemplazo de los pulsadores o dejas los pulsadores y en paralelo conectas las salidas del ULN2003 y problema resuelto: el Arduino manda un 1 a cada entrada y la salida asociada se va a 0 V.
Los ULN son una serie de chips, así que fijate cual es el mas compatible con una tension de entrada de 3.3 V
 
Depende del tipo de proyecto.

Algo así creo que resuelve el tema y deja fuera la complejidades de diseñar circuito, PCB, etc. ya que es el costo de 5 placas adaptadoras bidireccional de 5V a 3V de 4 entradas/salidas por poco más de 1,5 Trump.

Se puede implementar de diferentes maneras como han sugerido anteriormente transistor, compuerta lógica, IC especializados, optoacoplador, etc pero hay que ver todo el proyecto y que conviene/quiere implementar en este caso en particular.

Scooter
El tema es que entiendo que quiere accionar los pulsadores con el dispositivo a 3V3, no leerlos como entrada.
 
Última edición:
El divisor de tensión, pues colocas una resistencia de 3k3 en serie con una de 1k7 así te quedarán 5V en total 3V3 por otro y el resto en la otra.
Si no, un Zener de 3V3 con una resistencia en serie "de cualquier" valor.
 
Pero, @Scooter , al poner un divisor de tensión, ¿no estaremos provocando una caída de tensión en la patilla del integrado y creerá que el interruptor está pulsado?

@Dr. Zoidberg , ¿valdría un CD4066?

Muchísimas gracias a todos por los aportes.
 
Depende de las impedancias y de cómo esté montado el circuito. Puede que sí o puede que no.
Si está el pulsador directo al terminal del integrado sin ningún componente auxiliar, lo normal es que lo puedas conectar a la salida de 3V3 directamente sin más.

Un 4066 si no recuerdo mal es un interruptor analógico, debería de valer, supongo
 
Lo mas simple es usar un ULN2003 que son 7 darlington a colector abierto: cuando le pones un 1 en la "entrada" el colector baja al potencial de masa.
Conectas 4 "salidas" en reemplazo de los pulsadores o dejas los pulsadores y en paralelo conectas las salidas del ULN2003 y problema resuelto: el Arduino manda un 1 a cada entrada y la salida asociada se va a 0 V.
Los ULN son una serie de chips, así que fijate cual es el mas compatible con una tension de entrada de 3.3 V

Yo pensé algo similar pero con lo que hay a la mano, simples transitores, uno en lugar de cada pulsador. Pero estoy también en total acuerdo con la respuesta de Dr. Zoidberg.
 
Depende de las ganas y de lo que tengas disponible.
Yo mediría la entrada sin pulsar el pulsador. Si no da 5V la conectaba directamente.
Si si que da 5V, una de dos, iría poniendo resistencias a masa hasta que se activase como si hubiese pulsado y en función de ese valor vería si es viable montar el divisor.
O bien usaría el uln, o un transistor npn+r 1k en base.

Bueno, también puedes usar un optoacoplador, los pc817 valen a céntimo el quilo en alexpress y te aseguras que te de lo mismo masa común, fuente aparte, 12V 5V o lo que sea.
 
Tambien puedes considerar un adaptador de niveles con un 2n7000 por ejemplo, algo asi

DPs41.jpg

De un lado te queda 3.3 y del otro 5 o la tensión que tengas.

Pero me quedo con el UL2003, olvida esto. No pude borrar mi respuesta.
 
Hola a todos ,? y que tal poner diodos zener de 2V1 entre lo Portero y lo Arduino ?
La conección es anodo del diodo zener para lo Arduino y catodo para lo Portero.
Cuando la salida del Arduino es "1" (3,3V) lo diodo zener NO conduz , cuando la salida del Arduino es "O" (0V) lo diodo zener conduz granpeando la entrada del Portero en 2,1V , Ojala lo Portero entienda 2,1V como nivel logico bajo , pero eso so es possible saper testeando en la practica.
!Suerte!.
Att,
Daniel Lopes.
 
Estuve pensando mejor , un diodo zener de 1,8Voltios tanbien funciona y mejor aun porque garantiza una tensión de nivel logico bajo en 1.8V.
Att,
Daniel Lopes.
 
Atrás
Arriba