Buscando construir un convertidor de nivel de señal para reducir la entrada de 20V a 3.3V de salida. ¿Estoy en el camino correcto?

Estoy trabajando en un pequeño proyecto favorito con mi Raspberry Pi y estoy buscando conectarlo a algunos sensores.

La salida de los sensores normalmente es de 0 V, pero cuando se activa el sensor sube a 20 V. Dado que el GPIO de Raspberry Pi funciona en niveles lógicos de 3,3 V, he estado investigando cuál es la mejor manera de bajar el voltaje de entrada de 20 V a 3,3 V, para que no freír los puertos GPIO de mi Pi.

El Pi no necesita devolver nada, es estrictamente unidireccional hacia el Pi, y la línea solo irá a 20 V cuando se active el sensor.

En mi investigación, leí acerca de un circuito que consta de un regulador variable LM317 y 2 resistencias, lo que debería darme los 20 V a 3,3 V que necesito, sin embargo, me preocupa el tipo de calor que podría producir dicho circuito dada la Caída de voltaje de 20V-3.3V.

Aquí hay un esquema de lo que estoy tratando de lograr:

esquemático

simular este circuito : esquema creado con CircuitLab

Para agregar a las cosas, es probable que agregue más conexiones de 20 V a otros puertos IO en el Pi (probablemente hasta 15), por lo que también estoy considerando cuál podría ser el calor combinado.

¿Estoy en el camino correcto y el calor es algo con lo que tendré que trabajar? ¿O hay una mejor solución por ahí?

¿Qué tipo de línea. ¿Son estas salidas o entradas o ambas?
El dispositivo emite 20v en el Pi. Solo un camino.
Necesita conversión de nivel lógico de señal (20v -> 3.3v pocos mA), no conversión de potencia (cientos de mA o amperios)
Sí. He reformulado mi pregunta para que quede un poco más clara...

Respuestas (5)

Si son señales para el Pi, entonces use un divisor de potencial de resistencia . Una resistencia de 1 kΩ a través de la entrada y 0 V del Pi y una resistencia de 9 kΩ desde la entrada Pi a una señal lógica de alto voltaje reducirá ese voltaje de diez a uno. Debería estar buscando un poco menos de una reducción de 10:1. ¿Puedes resolver esto tú mismo? Ver el enlace.

ingrese la descripción de la imagen aquí

¿No vincularía esto a Vout directamente con Vin?
@nageeb. Vout estaría separado de Vin por la resistencia de 9k. El 1k se conecta desde la entrada pi a tierra, actuando así como un atenuador de diez a uno.
@nageeb He agregado tu diagrama con las resistencias en su lugar. Recuerde que deberá calcular un valor diferente para los 9k para obtener 3V en lugar de 2V, pero supongo que puede pensar en esto. Hazme saber si necesitas ayuda aquí.
Así que estoy buscando una resistencia de 5K... Parece bastante simple. Le daré una oportunidad. ¡Gracias!
Suena bien, pero errar por el lado seguro y elegir 5k6. Todavía estará bien.
¿Esta solución también es una buena opción, si la señal es una forma de onda con una frecuencia de, digamos, 10-30kHZ? ¿La solución introducirá algún ruido en la señal? Las resistencias no son realmente componentes de precisión.
Las resistencias @MitjaGustin introducen ruido térmico y, considerando un ancho de banda de 100 kHz, ese ruido sería de aproximadamente 4 uV RMS. ¿Suficientemente pequeño? Tú decides. Las resistencias tienen una precisión muy buena (o pueden estar encendidas) y, si es necesario, se pueden usar resistencias del 0,1%.
El osciloscopio muestra una línea recta para la señal de onda cuadrada sin divisor de voltaje y una línea ruidosa (ondas muy pequeñas) para la señal que sale del divisor de voltaje. Parece ruido de alta frecuencia. Estoy usando el temporizador 555.
@MitjaGustin esta pregunta fue respondida y aceptada en 2013. Si tiene una pregunta relacionada pero no idéntica, plantéela formalmente como una nueva pregunta que incorpore el diagrama de circuito que usó y proporcione un enlace cruzado a esta pregunta.

Las dos soluciones publicadas hasta ahora ignoran un factor: el aislamiento. Puede o no importar, pero usaría un optoaislador (por ejemplo, un 4n25) solo por tranquilidad (y son muy baratos).

El lado del LED se puede controlar desde la señal de 20v con una resistencia adecuada.

El lado del sensor solo necesita un pullup o down (dependiendo de cómo lo conectes) al pin del Pi. De hecho, podría salirse con la suya sin una resistencia pullup si la CPU de Pi tiene pullups internos, pero sospecho que serían muy débiles y no es bueno confiar en estas cosas.

De esta manera, si su señal de entrada se convierte accidentalmente en 25v, o 50v, o 500v, o -5v, su Pi no hace "bang".

Para agregar un circuito de ejemplo, sustituya 5v por su suministro de 3v3. D1 es opcional, pero es bueno dejarlo para protegerlo contra voltajes inversos:

ingrese la descripción de la imagen aquí

Veo el uso del OptoIsolator aquí, pero no estoy seguro si es aplicable en mi caso. ¿Cómo/dónde influye el factor 3.3v (5v en este esquema)? Creo que podría no haber sido lo suficientemente claro en mi Pregunta, y la he reformulado e incluido un esquema.
OK, funciona así: Tu 20v va al extremo "12v" y hace que el LED se ilumine dentro del opto. Esto hace que el transistor en el optoconduzca electricidad, lo que lleva el pin IO a tierra. R2 se asegura de que vuelva a subir a 3v3 cuando el LED se apaga. R1 limita la corriente a través del LED. D1 significa que si algún imbécil conecta las cosas al revés, no pasa nada malo. El hecho de que el enlace se active con la luz y no haya una conexión eléctrica directa significa que, si las cosas salen mal desde el extremo de 20v, el 4n25 podría morir, pero su Pi seguirá vivo.
Me gusta la idea del aislamiento, es muy reconfortante. Por lo que entiendo, este circuito invertirá efectivamente la E/S, en el Pi, así que cuando la entrada va alta, en el Pi, baja. Y también tengo que suministrar 5v adicionales para que este circuito suceda, ¿verdad?
@nageeb el 5v es solo porque John reutilizó este esquema de otra publicación. Simplemente use 3.3v en su lugar. Y sí, los niveles de entrada están invertidos. De lo contrario, puede conectar el colector del optoacoplador a 3.3v directamente y el emisor a tierra a través de la resistencia. Luego conecte la entrada al emisor, así i.stack.imgur.com/KTH7Z.png , esta sería una entrada no inversora.
Me gusta esta solución, pero parece un poco exagerada para mis requisitos actuales. Sin embargo, si este proyecto va a producción, es posible que deba intensificar el juego a algo como esto. ¡Gracias por su consejo!

Si bien el optoacoplador puede ser la mejor opción si necesita aislamiento, hay otras opciones disponibles.

Un simple diodo Zener de 3.3v y una resistencia limitadora de corriente es otro. A diferencia de un divisor de voltaje, la salida de quién depende de la relación entre las resistencias y el voltaje de entrada (a 20 V, un divisor 10: 1 tiene una salida de 2 V, pero si 20 V se convierte en 30 V, es 3 V. Esto puede ser un problema con picos de voltaje), un zener El diodo siempre debe sujetar un voltaje más alto hacia abajo.

ingrese la descripción de la imagen aquí

R1 debe ser de aproximadamente 10k o superior. Esto debería limitar la corriente a 2 mA o menos.

esto es lo que recomiendan los sitios web rasp pi hasta donde puedo decir. También parece que limitar la corriente por debajo de 0,5 mA también es una buena idea y tal vez una resistencia de salida de unos pocos cientos de ohmios también ayude. Parece, por lo que puedo decir, que el RP es una cosa pequeña y frágil, pero no parece haber especificaciones del fabricante.
A @Andyaka broadcom no le gusta publicar las especificaciones de sus SOC. O cualquier cosa realmente.
muy extraño - y yo estaba pensando en conseguir uno.
@Andyaka no realmente. Broadcom solo cree que sus clientes directos, OEM, deberían tener acceso a las hojas de datos y bajo NDA. La misma razón por la que los enrutadores de Broadcom son poco o nada compatibles con dd-wrt o openwrt.

Hago esto con bastante regularidad en los productos que diseño.

esquemático

simular este circuito : esquema creado con CircuitLab

Para su aplicación, querrá usar un diodo Schottky para garantizar que obtenga la lógica baja. Si quiere estar realmente seguro, agregue un par de diodos de sujeción.

@ThePhoton Es por eso que dije que usar un Schottky puede tener una ligera ventaja. Lo sugerí porque sé que funciona.
Si acortó el diodo, el voltaje más bajo visto en la entrada sería de 1,65 V debido a que las dos resistencias de 10k reducen a la mitad el riel de 3,3 V.
@Andyaka Eso sería porque lo dibujé mal, arreglado.

Para convertir niveles de señal de 20 V a 3,3 V, no necesita LM317. El esquema más simple (y muy bueno) para tales cosas es el siguiente:

esquemático

simular este circuito : esquema creado con CircuitLab

Este esquema tiene una ventaja adicional que protege la entrada de 3,3 V de influencias externas, por ejemplo, picos de tensión negativos o positivos altos, descargas estáticas, etc.

Dependiendo de la clasificación de potencia R1, el esquema puede soportar señales de entrada de hasta varios cientos de voltios por poco tiempo y varios miles de voltios de descarga estática sin dañar la lógica de bajo voltaje.

Funciona de la siguiente manera:

  1. Si el voltaje de entrada es superior a 3,3 V+0,6 V = aproximadamente 4 V, el diodo D1 se abrirá y fijará el voltaje en el punto 1 a aproximadamente 4 V.

  2. Si el voltaje de entrada es inferior a -0,6 V, el diodo D2 se abrirá y el voltaje en el punto 1 se fijará en aproximadamente -0,6 V. Si la señal nunca cae por debajo de cero, D2 siempre está cerrado y se puede quitar de forma segura. (Pero entonces no habrá protección para las señales de entrada negativas)

  3. De esta forma, el voltaje de entrada de 0 a 20 V se reducirá a -0,6 a +3,9 V, lo que es seguro para todos los dispositivos CMOS de 3,3 V. Siempre que este voltaje sea un poco más alto que el voltaje de alimentación lógica CMOS, fluirá una pequeña corriente a través de los diodos de protección de entrada de los circuitos integrados CMOS; está determinada por la diferencia entre el voltaje directo de los diodos de silicio (D1 y D2 ) y los diodos de protección schottky utilizados por la tecnología CMOS y la resistencia de R2. Esta corriente será de aproximadamente unos pocos mA. Si esto es demasiado grande, D1 y D2 se pueden cambiar a diodos Schottky de baja corriente y de esta manera hacer que la corriente de entrada sea cercana a cero.

Puede leer más sobre los esquemas de protección CMOS en la siguiente nota de aplicación de Fairchild .

Información adicional: Mientras algunas personas piensen que el esquema anterior puede causar la falla de Raspberry Pi GPIO IO, hice un esfuerzo y encontré las especificaciones eléctricas de GPIO . Según este documento, los diodos de protección de entrada no son schottky, sino de silicona. De esta manera, el esquema anterior funcionará incluso con una corriente de entrada más pequeña de lo esperado.

Además, aumenté el valor de R2 a 10k, para aumentar la confiabilidad del esquema (en precio de la velocidad máxima).

De todos modos, esta es la última edición por mí mismo de esta respuesta.

Si bien es una buena información para reducir una fuente de alimentación, OP en realidad necesita convertir el nivel de señal. Un LDO de regulación de energía o un suministro de conmutación no sería una solución buena o barata aquí.
@Passerby: Lo siento, la palabra LM317 me confundió. Está arreglado ahora.
La señal de salida será +3,9 V, no 3,3 V.
@Andyaka: sí, por supuesto. Por eso R2 está ahí. (Por cierto, compruebe los voltajes de entrada aceptables para la lógica de 3,3 V).
¿Quizás puedas proporcionar un enlace que describa esto?
Recuerde que estamos hablando de un RaPi aquí, no de un CMOS o TTL antiguo. Creo que podría encontrar que su circuito podría dañar el pi.
@johnfound ¿Puede explicar por qué los dos diodos están invertidos?
@ 1p2r3k4t: editaré la respuesta para intentar explicar cómo funciona este esquema. Por cierto, estoy un poco confundido. Este esquema es un clásico y muy utilizado. Sin embargo, todos pueden imaginar cómo funciona.
@johnfound Gracias, pensé que estabas tratando de usarlos como zeners y me confundí. es muy claro ahora
Realmente creo que necesita investigar qué tan sensible es el RaPi a la sobretensión y la corriente. Todo lo que he visto apunta a que este circuito es potencialmente dañino para el dispositivo.
@johnfound No es aceptable atacar a los usuarios, una discusión técnica no incluye llamar ignorante a alguien.
@Kortuk - No estoy tratando de ser grosero o de "atacar" a nadie. Expliqué el esquema en detalle y mi respuesta no contiene mis inventos, sino una solución clásica, descrita en todos los libros de electrónica decentes. Entonces, si alguien piensa que esta solución no funciona, probablemente no leyó estos libros. Entonces, ¿cómo debo llamar a esa persona? ¿Es mejor "analfabeto"?
Mi problema, y ​​probablemente el problema de @Andyaka, es que muchos chips nuevos tienen voltajes máximos absolutos más estrictos que 0.6V + vdd. Por ejemplo, la hoja de datos de la serie msp430 enumera el voltaje máximo en cualquier pin como VDD + 0.3V. Desafortunadamente, las especificaciones eléctricas para el rpi no son públicas, por lo que nos queda adivinar. ¿Cómo llamarías a alguien que no lee la hoja de datos? ;)
@W5VO - ¿Es importante por qué existe tal límite? Porque en voltajes más altos, los diodos Schottky de protección de entrada del IC se abren y la corriente de entrada se vuelve demasiado alta. Es por eso que R2 se usa en el esquema anterior. Limita la corriente de entrada del IC a rangos aceptables. Además, como ya escribí en la respuesta, se pueden usar schottky D1 y D2 que limitarán aún más el voltaje de entrada.
@johnfound Si bien esta solución genérica es lo suficientemente común para la lógica CMOS clásica y genérica de 3,3 voltios, no se justifica como recomendación para un dispositivo para el que no se publican los máximos absolutos. A menos que tenga acceso a alguna hoja de datos restringida por NDA para el SoC BroadComm específico, esta respuesta se basa en una suposición que podría dañar potencialmente el RPi: tales suposiciones no son la base para una respuesta de ingeniería. -1.
@AnindoGhosh: lea las notas adicionales en la respuesta. Acabo de agregar un enlace a la especificación eléctrica RPi GPIO.
@johnfound No encontré la especificación oficial y los valores absmax en el sitio que ha vinculado. Tal vez leí mal esa página, así que cite la especificación de calificación absmax (no especulativa).
Por loco que parezca, la protección del diodo doble 1n4148 puede hacer que el riel 3V3 se eleve si no hay suficiente sumidero de corriente en el riel del resto del circuito. En estos días, con todos los circuitos de baja potencia, este escenario se vuelve posible. 20V sobre 10k significa que 2mA van al capacitor del riel, a través de D1.