¿Generar una placa de circuito impresa desde el código?

3

Estoy empezando con la electrónica a través de Arduino. Mi kit Arduino vino con un pequeño anuncio para un sitio web que toma diseños de PCB y los imprime por un precio bastante barato.

¿Pero cómo llego desde un programa que se ejecuta en el Arduino a un circuito que se puede imprimir en una PCB? Probablemente esto sea una ilusión, pero ¿existe una forma mecánica de "compilar" el código Arduino en un diseño de PCB?

O, ¿necesitaría que alguien con experiencia real en EE diseñe a mano el PCB?

    
pregunta Bill

7 respuestas

13

Definamos rápidamente algunas cosas:

Software: Código que se ejecuta en una computadora. Sí, técnicamente puede ejecutarse en un microcontrolador como un Arduino, o incluso un dispositivo FPGA, pero generalmente el término "software" se refiere al código destinado a la ejecución en un dispositivo común, que un usuario final puede instalar / cargar / ejecutar.

Firmware: Código que se ejecuta en un microcontrolador o dispositivo similar. Normalmente, dicho código controla el comportamiento de un dispositivo electrónico incorporado y tradicionalmente (no debería) tener actualizaciones / lanzamientos frecuentes. A menudo, el firmware no es algo que se espera que el usuario final sepa cómo cargar / ejecutar, pero a veces se puede esperar que realicen la actualización (como el firmware en su enrutador de red o la BIOS / placa base de la computadora).

Hardware: los componentes físicos de un dispositivo electrónico. Esto puede ser todo, desde el PCB de cobre y sus trazas, los componentes, los tornillos que lo sostienen hasta un chasis y el chasis en sí. Normalmente, en EE, consideramos que "hardware" son los componentes físicos de la placa y de la placa, incluidos el cableado y los conectores, pero el chasis a menudo se encuentra en otro departamento (ingeniería estructural en mi lugar de trabajo).

Cuando experimenta con un Arduino, está interactuando con un microcontrolador (lo más probable es que sea un Atmel ATMEGA) y algunas piezas de hardware (un regulador de voltaje, una interfaz USB, una PCB y algunos otros bits). El código que escriba, lo consideraría "firmware" y controla el comportamiento del microcontrolador.

Puede decidir controlar un LED, un motor paso a paso o un dispositivo de puerto en serie ... depende totalmente de usted. El código que escribes, sin embargo, no "sabe" lo que estás controlando, necesariamente. Las características eléctricas del hardware que decides controlar están fuera del alcance del firmware que escribes y, por lo tanto, no hay forma de traducir lo que has escrito en una placa física.

Querrá investigar esquemas eléctricos y diseño y diseño de PCB, para pasar a la etapa de creación de prototipos y "hardware" físico.

¡Buena suerte!

    
respondido por el JYelton
7

No. No hay manera de "compilar" el código arduino en un circuito. No funciona de esa manera.

Sin embargo, el arduino que ejecuta su código es un circuito, y ese circuito ya hace lo que usted quiere. Por lo tanto, no necesita compilar el código de alguna manera en un circuito dedicado. Consiga un arduino y dedíquelo a la tarea, o copie su circuito y luego haga su propio diseño para obtener el factor de forma y los detalles mecánicos que desee.

    
respondido por el Olin Lathrop
7

El término Arduino significa muchas cosas según el contexto. Es un entorno de desarrollo integrado (IDE). Es una interfaz de programación de aplicaciones (API) para dispositivos integrados (principalmente Atmel AVR). Es un gestor de arranque que le permite programar el AVR a través de una interfaz en serie (generalmente USB < - > UART). Es una variedad de plataformas de hardware a las que se puede acceder con software escrito con IDE y API, y que admiten el cargador de arranque de una forma u otra. Todos los anteriores son de código abierto en general.

En cualquier caso, necesita hardware y software para que la mayoría de las aplicaciones funcionen. Puede hacer que un servicio le imprima un PCB que tenga un lugar para un microcontrolador AVR y el circuito de soporte para hacer cosas como darle energía, conectarlo a conectores, zócalos y puertos (como USB, Ethernet o cualquier otro), y conecte eléctricamente todos los dispositivos y partes de la placa. Esa placa no funcionará mucho sin el software que se ejecuta en las partes programables (es decir, el AVR).

Hay una variedad de formas de obtener su código Arduino en su tablero derivado una vez que se haya fabricado y ensamblado (muchas manos se agitan allí, fuera del alcance de esta pregunta AFAIC). Puedes comprar un AVR preprogramado con el gestor de arranque Arduino. O puede colocar el cargador de arranque en el AVR usando un programador de ISP (como un AVR ISP mk II, o incluso usando otro Arduino como programador de ISP) si llena un encabezado de 6 pines y lo conecta adecuadamente. Una vez que el cargador de arranque está instalado, puede descargar el código en la plataforma directamente desde el IDE de Arduino a través de un cable USB (o a veces un FTDI).

De ninguna manera, la forma o la forma deben esperar enviar un código C a un fabricante y esperar recuperar una placa de circuito impreso que implemente ese software.

    
respondido por el vicatcu
5

Bill,

Tienes un malentendido conceptual. El código y la placa de circuito impreso son dos cosas diferentes.

El código es un conjunto de instrucciones para Arduino (procesador ATMega) sobre cómo ejecutar.

El diseño de una PCB son instrucciones físicas a una máquina sobre cómo crear la obra de arte de PCB, cobre, etc. Resulta que, para funcionar, un sistema Arduino utiliza una PCB, pero nunca es el caso de que el código sea similar a una PCB.

Si desea utilizar un Arduino, primero compre una placa que ya tiene todos los componentes (y para la cual se creó un diseño anteriormente, pero no necesita molestarse con él) y luego lo programa para que lo haga. ciertas cosas.

    
respondido por el Gustavo Litovsky
0

Si entiendo tu pregunta correctamente, te estás preguntando si puedes hacer un circuito dedicado que ejecute el programa que tienes en tu Arduino. Tal vez esté limitado por el espacio en su proyecto, por ejemplo, o si desea integrar su código con un circuito más grande. Sí, esto es ciertamente posible, aunque no lo recomendaría para un principiante.

Lo que querría hacer, es hacer espacio para el microprocesador en el diseño de su PCB. (El microprocesador es el chip grande y negro en la parte inferior derecha de la imagen de abajo.) Aquí es donde almacena y ejecuta su programa Arduino, y puede hacer su propia PCB donde pueda montar este componente si lo desea. . Sin embargo, requiere que usted se encargue de los problemas relacionados con la alimentación, el reloj / oscilador y el control de voltaje.

Dependiendodesusituación,tambiénconsideraríausarunArduinopequeño,comoel Nano o Pro Mini . Estos son muy pequeños, e incluso puede diseñar su placa PCB de modo que pueda soldar todo el Arduino como un componente compuesto :-)

    
respondido por el tor
0

Aprende sobre la CPU. La CPU toma instrucciones de entrada y las ejecuta contra lo que es esencialmente una "placa de circuito" muy pequeña para las instrucciones en las que se compila su software. Esto puede ser similar con los microcontroladores, solo la CPU está específicamente optimizada y, probablemente, "demasiado complicada" teniendo en cuenta los requisitos de firmware.

Entonces, en esencia, puedes generar un circuito para tu código. Pero se vería igual cada vez, independientemente del código del software, a menos que optimice los circuitos en el nivel de instrucción de entrada.

Las GPU son particularmente interesantes porque su arquitectura general es pequeña, pero a menudo muy optimizada y eficiente para instrucciones específicas, y limita el número total de instrucciones disponibles que el software (que en este punto es más como firmware) puede compilar para (Sombreadores de GPU, por ejemplo).

Por diversión: Podría considerar inspeccionar los emuladores de ROM ya que son de código abierto. Es posible imaginar y construir estos emuladores de instrucciones como un circuito, y rasterizarlos en placas físicas. Aprenderá mucho sobre la CPU y cómo funciona a través del código de digestión y la comunicación con hardware externo.

    
respondido por el Kyle
0

Muchas personas usan el Arduino para hacer prototipos, a menudo en combinación con una placa de pruebas.

Por ejemplo, he construido un pequeño circuito con un micrófono y un amplificador para capturar el sonido, y lo conecté a la entrada analógica de un Arduino, luego escribí un software para que Arduino controle una tira de LED WS2812 conectada a una salida digital en respuesta al volumen.

Esto está bien como una prueba de concepto, pero no es algo que instalaría en mi hogar; por un lado, es bastante grande, y también me gustaría recuperar mi tablero de pruebas. Así que diseñé una PCB pequeña que contiene solo los componentes de la placa Arduino que necesito, eliminando todos los demás y agregando los que están en la placa base.

Todavía puedo conectar el programador estándar de Arduino a esa placa, y el software Arduino no sabe la diferencia. Sin embargo, la placa es mucho más pequeña y no hay cables que cuelguen libremente, todo es una sola placa.

    
respondido por el Simon Richter

Lea otras preguntas en las etiquetas