¿Cómo se convierte el binario en señales eléctricas?

Recién me estoy iniciando en la electrónica y ya estoy fascinado. Habiendo jugado con un Arduino estos últimos días, soy consciente de que el binario es una representación de diferentes voltajes, como la representación de + 5V y la representación 1de GND 0.

He estado tratando de descubrir cómo, a nivel físico, el microcontrolador convierte el binario a estos voltajes. Parece que no puedo encontrar una descripción en ningún lado. ¿Alguien puede compartir su conocimiento o indicarme un lugar/buen libro que describa cómo funciona esto?

No recuerdo cuál era, pero echa un vistazo a este vídeo. Buen contenido.
En realidad, el microcontrolador no convierte el binario a los voltajes variables. Binario es el voltaje. Un +5V se denota como "ALTO" o "1". Y 0V se denota como "BAJO" o "0". Vaya y eche un vistazo a los interruptores electrónicos, o más en detalle; MOSFET.
NO está preguntando sobre la conversión "analógico a digital" o "digital a analógico", ¿verdad?
Podría ayudar pensarlo al revés. 'Binario' es una especie de entidad matemática simbólica con la que a los humanos nos gusta razonar. Los circuitos lógicos pueden representar binarios con diferentes voltajes. Diseñamos circuitos lógicos para que lo que hacen los circuitos con los niveles de voltaje tenga un sentido lógico consistente cuando los humanos interpretamos esos voltajes como números binarios.
Gracias a todos. No se me había ocurrido que el binario era la abstracción sobre los voltajes, pero eso tiene sentido.
@abdullahkahraman Tienes razón, no creo que esté hablando de DAC, como dices. Gracias por el enlace al video, es muy informativo. Y a través de eso, también me presentó el sitio OCW del MIT, que parece que será un gran recurso para el aprendizaje. ¡Gracias!

Respuestas (6)

Quiero reafirmar parte de la respuesta de KellenJB de una manera ligeramente diferente:

No hay conversión de 1 y 0 binarios a voltajes como 5 V y 0 V. El microcontrolador, o cualquier circuito físico, solo opera con los voltajes.

Esos voltajes se "convierten" en 1 y 0 binarios en nuestras cabezas cuando formamos un modelo simplificado en nuestras mentes sobre cómo funciona el circuito.

Sí. Sí, sí, sí, y (oh, sí), sí.
Y agregaría que para ser un 0, el voltaje solo necesita estar cerca de 0 o por debajo de un umbral (digamos <0.8v) y ser un 1 mayor que un umbral (digamos> 2.0v). Los umbrales se diferencian por la tecnología utilizada para construir el dispositivo y la tensión de alimentación de funcionamiento 5v en su caso.
Gracias a todos. Entonces, una vez que una computadora está funcionando, ¿no hay ningún tipo de transmisión de código binario de máquina? El código binario, cuando se carga como firmware, presumiblemente se almacena en la memoria que, cuando el procesador "accede", responde con un ciclo de voltajes que corresponden al binario. (Espero que esto tenga sentido)
Para ser "cargado", el código ya debe estar en alguna forma física: voltajes en un cable, las posiciones de algunas palancas (o teclas en un teclado), lo que sea. En la memoria, los bits se almacenan como acumulaciones de carga en un capacitor... lo que también genera un voltaje en el capacitor.
En cuanto a "pasar el código de máquina binario", normalmente el procesador tiene que buscar cada instrucción de la memoria en un registro local para ejecutarla. Pero eso es entrar en una pregunta completamente nueva...
Los voltajes no se convierten simplemente "en la cabeza": algo así como un CRT variará la intensidad del haz en función del voltaje recibido. Las computadoras con interfaces CRT contienen circuitos para generar señales de sincronización que harán que un monitor mueva su haz en un patrón predecible, así como circuitos para variar la señal de brillo del haz en varios momentos en relación con sus señales de sincronización de salida para producir una imagen. .
@supercat, pero la intensidad o la posición de un haz en un CRT no es un '1' o un '0'... sigue siendo una cantidad física. Mi punto es que los dígitos binarios son una abstracción que existe solo en nuestra mente. En el mundo real solo hay voltajes, corrientes, posiciones de interruptores, velocidades de motor, rayos CRT, etc.
@ThePhoton: si los voltajes hacen que un CRT se ilumine en forma de "1" o "0", o hacen que el martillo de una impresora de rueda de margarita golpee cuando el pétalo "1" o "0" está en frente a él, etc. Diría que esos voltajes se han convertido en "unos" y "ceros" muy concretos, especialmente porque, en ausencia de alguna forma de E/S (ya sea un CRT, LCD, impresora, luces, buscapersonas, medidor, etc.), no habría forma de que un ser humano supiera cuáles eran los voltajes y, por lo tanto, no habría forma de percibir "unos" y "ceros".
Mi punto de vista es que las formas en una pantalla o impresas en una hoja de papel son solo luces o gotas de tinta, hasta que nuestras mentes las interpretan como uno o cero. Imagina una letra impresa en un alfabeto que no conoces (digamos, cirílico o tailandés). Es solo una gota de tinta hasta que llega una persona rusa o tailandesa para interpretarla y saber qué sonido representa. Pero esta distinción filosófica probablemente nos está sacando del tema.

Realmente no hay una "conversión" que tenga lugar. Los 1 y 0 binarios son solo una representación virtual de los voltajes subyacentes. De hecho, en muchos sistemas, un voltaje alto puede significar 0 mientras que un voltaje bajo significa 1. Hay algunas razones por las que se hace esto, pero probablemente le interese profundizar en esto desde el principio.

Para comprender lo que sucede en la lógica, probablemente sea mejor observar el transistor. Un transistor se puede usar para muchas cosas, pero en un nivel simple puede tratarlo como un interruptor. Conceptualmente, puede pensar en él como su interruptor de luz en la pared, pero en lugar de ser controlado moviendo físicamente el interruptor, está controlado por el cambio en la corriente. Puede tratar la luz encendida como un 1 y la luz apagada como un 0. Ahora puede comenzar a combinar estos interruptores en varios conjuntos para crear diferentes elementos lógicos (como AND, OR, NOR, etc.).

Sé que mi respuesta no es terriblemente detallada, pero espero que responda a su pregunta. Si necesita más explicación, estaré dispuesto a agregar más detalles, pero no quiero abrumarlo.

Gracias a todos por las excelentes respuestas!! ¿Estaría en lo cierto al pensar entonces, en un nivel simplista, que el microprocesador funciona a una cierta velocidad de reloj y en cada ciclo envía un conjunto de instrucciones (¿voltaje relacionado con valores binarios?) a través de estos transistores, que actúan como puertas lógicas. ¿Y los transistores luego producen una salida relevante basada en la lógica combinada (y, o, NAND, etc.)?
Simplistamente... sí. Hay muchas capas de abstracciones aquí. Es difícil explicar todo lo que sucede aquí en una sola respuesta, ya que se necesitan muchas capas de abstracción antes de poder entenderlo todo. Fácilmente puede tomar algunas clases de nivel universitario para enseñarlo todo. Puedes simplemente tomar las cosas como son en la superficie o prepararte para aprender mucho.
Gracias @kellenjb, has sido de gran ayuda. ¡Me animo a aprender más!

La respuesta corta es que no se "convierte", los voltajes son binarios (o una representación del mismo). Al igual que si escribe un número en un papel, las marcas son una representación del número, o si cuenta con un ábaco, las posiciones de las piedras son una representación de un número.

Binario es un sistema numérico, al igual que decimal (u octal, hexadecimal, etc.)

Mientras que el decimal (base-10) tiene 10 símbolos (0123456789), el binario (base-2) solo tiene dos (01)

La secuencia 10 en cualquier base significa la base a la primera potencia, por lo que en decimal 10 significa 10^1 = 10, y en binario significa 2^1 = 2. A continuación, 100 en decimal significa 10^2 = 100, y en binario significa 2^2 = 4. Y así sucesivamente.

Representar decimales utilizando la electrónica sería posible pero complicado, por lo que eligieron binarios que pueden representarse con simples 0 y 1 (o encendido/apagado).
Hubo variaciones en esto, como sistemas ternarios (3 estados) y, por supuesto , computación analógica . Antes de los transistores, había máquinas mecánicas de tarjetas perforadas (google sabe mucho, una lectura muy interesante si tiene tiempo)
Las primeras computadoras digitales binarias se hicieron con interruptores reales (relés electrónicos). El Zuse Z3 (1941) es un ejemplo:

Zuse Z3

Después de esto, se usaron tubos de vacío en lugar de relés (podían cambiar más rápido sin partes mecánicas móviles), que realizaban la conmutación en lugar de relés. El ENIAC es un ejemplo de una computadora temprana hecha con tubos de vacío.

Luego en los años 60 llegaron los transistores y poco después los circuitos integrados. Los transistores realizan la misma función que los relés/válvulas tenían en máquinas anteriores, pero eran mucho más pequeños, más rápidos y consumían menos energía.

La teoría real detrás de la forma básica en que funcionan los circuitos informáticos binarios no ha cambiado en absoluto, al igual que no hemos cambiado la forma en que manipulamos los números en matemáticas: los algoritmos mejoran pero las reglas básicas siguen siendo las mismas.

Entonces, si sabe cómo funciona el binario y tiene un circuito simple capaz de almacenar un 1 o un 0 como dos niveles de voltaje diferentes (por ejemplo, 5V y 0v), y otros circuitos simples que pueden realizar funciones lógicas simples como AND y OR, entonces puedes combinarlos todos para hacer cosas más complejas.
Dado que todos estos circuitos binarios son solo interruptores en lo más fundamental, puede lograr lo mismo con cualquier cosa que pueda alternar entre dos estados como mecánico/relé/válvula/transistor/?.

Para dar un ejemplo de almacenamiento de un número en binario, digamos que tenemos 8 interruptores (no importa de qué tipo sean)
Un 1 está representado por 5V y un 0 está representado por 0V.
Queremos almacenar el número 123.

En decimal es 123 = (1 X 10^2) + (2 * 10^1) + (3 x 10^0)
En binario es 01111011 = (0 x 2^7) + (1 x 2^6) + (1 x 2^5) + (1 x 2^4) + (1 x 2^3) + (0 x 2^2) + (1 x 2^1) + (1 x 2^0)
Así que todo lo que hacemos es poner los interruptores 0,1,3,4,5,6 a 5V y los interruptores 7 y 2 a 0V. Esto "almacena" el número 123 en binario. Esta configuración se conocería como un "registro".

Si desea saber más sobre cómo se combinan los interruptores para formar circuitos más complejos, consiga un buen libro sobre lógica digital o pregunte en Google.

Este sitio no parece ser tan malo para empezar.

El programa que está ejecutando utiliza voltajes que representan unos y ceros. Todo sobre esa parte digital son voltajes cercanos a tierra o cerca del voltaje de suministro (5V en su ejemplo). Cuando carga un registro de procesador con 0xFF, digamos que está creando 8 señales separadas de 5 voltios en algún lugar del chip. Cuando almacena ese valor de registro en un registro de control que está relacionado con los puertos de salida, los pines de salida en el dispositivo registran las señales de 5V en los procesadores y luego hacen que se creen otras señales de 5V que están conectadas a los pines externos del dispositivo. .

Los voltajes son solo una forma de representar el binario. Es una conversión bastante eficiente y práctica que permite implementar la lógica binaria utilizando diferentes configuraciones de transistores.

La forma en que la lógica binaria generalmente se implementa electrónicamente es mediante el uso de la tecnología CMOS ( http://en.wikipedia.org/wiki/CMOS ), en la que dos transistores MOS se configuran en un par complementario para formar una puerta CMOS. Sin embargo, existen otras implementaciones electrónicas de lógica binaria, usando TTL ( http://en.wikipedia.org/wiki/Transistor –transistor_logic ) por ejemplo, o relés. Pero podría usar cualquier cosa realmente, papel, cabras robot de papel: http://www.robives.com/category/product_tags/logic_goats . La implementación electrónica de CMOS resulta ser eficiente y práctica.

A partir de estas compuertas CMOS simples, puede construir compuertas lógicas más complicadas: NAND y NOR, siendo la compuerta estándar NO, son las básicas. A partir de estos, puede construir todo lo que sea lógica binaria, un sumador, un archivo de registro, memoria. A partir de estos, puede construir una ALU, hasta un microprocesador completo.

Si desea más información, puede leer un libro sobre lógica digital, tengo y me gusta este:

http://www.amazon.com/Digital-Systems-Principles-Applications-11th/dp/0135103827/ref=sr_1_1?s=books&ie=UTF8&qid=1326877355&sr=1-1

Una buena forma práctica de comprender cómo se construye una CPU es simplemente construir una usted mismo, usando VHDL y un FPGA. Puede obtener placas de desarrollo FPGA baratas y el software suele ser gratuito (para una licencia restringida). Tengo algunos de Digilent que son bastante asequibles:

http://www.digilentic.com/

En pocas palabras, en un rango dado (generalmente de 5 a 12 voltios), el bit más significativo es 0 en la primera mitad de ese rango y 1 en el otro. El siguiente bit más significativo se calcula dividiendo esa mitad en dos y así sucesivamente hasta que se hayan calculado todos los bits.

Por lo tanto, binario se trata solo de voltajes crecientes y decrecientes que se miden periódicamente.

Aquí hay un ejemplo simplificado. En el rango de 1V a 256V, traduzcamos (analógico) 137 a binario (numérico) usando pseudocódigo:

// used this way: analogToNumeric(137, 256);
function convert(var number, var length) {
    if (number > length) { return(ERROR); }
    function convert(var half, var binary) {
        if (half < 2) { return(binary); }
        elseif (number < half) {
            return(convert((half / 2), append(binary, 0)));
        } else {
            return(convert((half / 2), append(binary, 1)));
        }return(convert((length / 2), list()));
}