En este artículo se explica cómo funciona Arduino desde una perspectiva de diseño electrónico .
La mayoría de los artículos explican el software de Arduino . Sin embargo , la comprensión de diseño de hardware le ayuda a tomar el siguiente paso en el viaje de Arduino . Una buena comprensión del diseño electrónico de su hardware Arduino le ayudará a aprender cómo incrustar un Arduino en el diseño de un producto final , incluyendo qué conservar y qué omitir de su diseño original .
componentes Descripción general
El diseño de PCB de la placa Arduino UNO utiliza componentes SMD (Surface Mount Device ) . Entré hace años los SMD mundo cuando se hundieron en el diseño de PCB Arduino , mientras que yo era parte de un equipo de rediseño de un clon de bricolaje para Arduino UNO .
Los circuitos integrados utilizan paquetes estandarizados , y hay familias de paquetes .
Las dimensiones de muchas resistencias SMD , condensadores, y los LED se indican mediante códigos de embalajes, tales como los siguientes :
código de paquete SMD para componentes discretos tales como resistencias , condensadores, e inductores. Imagen cortesía de Wikimedia . |
La mayoría de los paquetes son genéricos y se pueden utilizar para diferentes partes con funcionalidad diferente. El paquete SOT- 223 , por ejemplo, puede contener un transistor o un regulador .
En la siguiente tabla , se puede ver una lista de algunos de los componentes de la Arduino UNO con su respectivo paquete :
art | Package |
---|---|
NCP1117ST50T3G 5V regulator | SOT223 |
LP2985-33DBVR 3.3V regulator | SOT753/SOT23-5 |
M7 diode | SMB |
LMV358IDGKR dual channel amplifier | MSOP08 |
FDN340P P-channel MOSFET transistor | SOT23 |
ATmega16U2-MU | MLF32 |
Arduino UNO Descripción general del sistema
Antes de que podamos comprender el hardware de la ONU, hay que tener una visión general del sistema por primera vez.
Después de que su código se compila utilizando el IDE de Arduino, debe ser cargado en el microcontrolador principal de la Arduino UNO mediante una conexión USB. Debido a que el microcontrolador principal no tiene un transceptor USB, se necesita un puente para convertir las señales entre la interfaz en serie (interfaz UART) del microcontrolador y las señales USB host.
El puente en la última revisión es la ATmega16U2, que tiene un transceptor USB y también una interfaz en serie (interfaz UART).
Para alimentar tu placa Arduino, se puede utilizar el USB como fuente de energía. Otra opción es utilizar un conector de CC. Usted puede preguntar, "si conecto tanto un adaptador de CC y el USB, que será la fuente de energía?" La respuesta será discutido en la sección "Parte Power" de este artículo.
Para restablecer la tabla, se debe utilizar un pulsador en el tablero. Otra fuente de restablecimiento debe ser cada vez que abra el monitor serie de Arduino IDE.
Me redistribuye el esquema original de la placa Arduino UNO para ser más legibles a continuación. Aconsejo que lo descargue y abra el PCB y esquemático usando Águila CAD mientras que usted está leyendo este artículo.
El microcontrolador
Es importante entender que la placa Arduino incluye un microcontrolador, y esto es lo microcontrolador ejecuta las instrucciones en su programa. Si usted sabe esto, no va a usar la frase sin sentido común "Arduino es un microcontrolador" nunca más.
El microcontrolador ATmega328 MCU es el utilizado en la placa Arduino UNO R3 como controlador principal. ATmega328 es una MCU de la familia AVR; es un dispositivo de 8 bits, lo que significa que su arquitectura de bus de datos y registros internos están diseñados para manejar 8 señales de datos en paralelo.
ATmega328 tiene tres tipos de memoria:
Memoria Flash: 32 KB memoria no volátil. Esto se utiliza para almacenar la aplicación, lo que explica por qué no es necesario cargar la aplicación cada vez que desenchufa Arduino de su fuente de alimentación.
memoria SRAM: 2 KB de memoria volátil. Esto se utiliza para almacenar las variables utilizadas por la aplicación mientras se está ejecutando.
memoria EEPROM: memoria no volátil de 1 KB. Esto se puede utilizar para almacenar datos que deben estar disponibles incluso después de la junta se apaga y luego se enciende de nuevo.
Vayamos brevemente algunas de las características de este MCU:
paquetes:
Este MCU es un paquete DIP -28 , lo que significa que tiene 28 pines en el dual in-line package . Estos pines incluyen la energía y los pins de I / O . La mayoría de los pasadores son multifuncionales , lo que significa que el mismo pin puede ser utilizado en diferentes modos en función de cómo se configura en el software. Esto reduce el número de pines necesario, porque el microcontrolador no requiere un pasador separado para cada función . También puede hacer su diseño más flexible , debido a la conexión de E / S puede proporcionar múltiples tipos de funcionalidad .
Otros paquetes de ATmega328 están disponibles como TQFP -32 el paquete de SMD ( Surface Mount Device ) .
Dos paquetes diferentes del ATmega328 . Imágenes cortesía de Sparkfun y Wikimedia . |
Poder:
El MCU acepta tensiones de alimentación de 1,8 a 5,5 V. Sin embargo , existen restricciones en la frecuencia de funcionamiento ; por ejemplo, si desea utilizar la frecuencia de reloj máxima ( 20 MHz) , se necesita una tensión de alimentación de al menos 4,5 V.
E / S digital :
Este MCU tiene tres puertos : PORTC , PORTB , y PORTD . Todos los pines de estos puertos se pueden utilizar para fines generales de E / S digital o de las funciones alternativas indicadas en el pinout a continuación. Por ejemplo , PORTC pin0 al pin 5 puede ser entradas ADC en lugar de E / S digital .
También hay algunos pasadores que se pueden configurar como salida PWM. Estos pines están marcados con " ~ " de la placa Arduino .
Nota : El ATmega168 es casi idéntica a la ATmega328 y son compatibles pin . La diferencia es que el ATmega328 tiene más memoria flash - 32KB , 1 KB EEPROM y la RAM de 2 KB en comparación con el flash de la ATmega168 16KB , 512 bytes de EEPROM y la RAM de 1 KB.
Entradas ADC :
Este MCU tiene seis canales PORTC0 - a - PORTC5 con resolución de 10 bits convertidor A / D . Estos pines están conectados a la cabecera analógica en la placa Arduino .
Un error común es pensar en la entrada analógica como entrada dedicada por sólo una función / D , como el encabezado en los estados de mesa " Analog " . La realidad es que se puede utilizar como E / S digitales o A / D .
diagrama de bloques ATmega328 . |
Como se muestra en el diagrama de arriba (a través de las huellas rojos), los pasadores relacionados con la unidad de A / D son:
- AVCC : El pin de alimentación para la unidad de A / D .
- AREF : El pin de entrada usa opcionalmente si desea utilizar una referencia de tensión externa de ADC en lugar de la Vref interna. Puede configurar que el uso de un registro interno .
registros internos para la selección de la fuente Vref . |
UART periférica:
Un UART (Asynchronous Receiver universal / transmisor ) es una interfaz serie . El ATmega328 tiene sólo un módulo UART .
Los pasadores (RX , TX) de la UART se conectan a un circuito convertidor de USB a UART y también conectados a pin0 y pin1 en la cabecera digital. Usted debe evitar el uso de la UART si ya lo está utilizando para enviar / recibir datos a través de USB .
SPI periférica:
El SPI ( Serial Peripheral Interface) es otra interfaz en serie . El ATmega328 tiene sólo un módulo SPI .
Además de usarlo como una interfaz en serie , sino que también se puede utilizar para programar el MCU utilizando un programador independiente. Se puede llegar a los pines del SPI de la cabecera junto a la MCU en la placa Arduino UNO o desde la cabecera digital de la siguiente manera :
11 < - > MOSI
12 < - > MISO
13 < - > SCK
TWI :
El I2C o interfaz de dos cables es una interfaz que consiste en sólo dos cables , datos de serie, y un reloj en serie : SDA , SCL .
Se puede llegar a estos pines de los últimos dos pasadores en la cabecera digital o pin4 y pin 5 en la cabecera analógica.
Otra funcionalidad :
Otra funcionalidad se incluye en la MCU, tal como la ofrecida por los módulos de temporizador / contador. Puede que no sea consciente de las funciones que no se utiliza en su código. Se puede hacer referencia a la hoja de datos para obtener más información .
Arduino parte del UNO R3 de MCU . |
Volviendo al diseño electrónico, la sección microcontrolador tiene la siguiente:
ATmega328-PU: La MCU que acabamos de hablar.
LIO y IOH (Digital) Cabeceras: Estas son las cabeceras de la cabecera digital para los pines 0 a 13, además de GND, AREF, SDA, y SCL. Tenga en cuenta que RX y TX desde el puente USB están conectados con pin0 y el pin 1.
AD Cabecera: La cabecera de pines analógicos.
16 MHz resonador cerámico (CSTCE16M0V53-R0): Conectado con XTAL2 y XTAL1 de la MCU.
Restablecer PIN: Este es sorprendido con una resistencia de 10K para ayudar a prevenir restablece espurias en ambientes ruidosos; el pasador tiene una resistencia interna de pull-up, pero de acuerdo con la nota AVR Hardware aplicación Consideraciones de diseño (AVR042), "si el entorno es ruidoso, puede ser insuficiente y restablecer pueden ocurrir esporádicamente." reset se produce cuando el usuario presiona el reinicio botón o si se emite un restablecimiento desde el puente USB. También puede ver el diodo D2. El papel de este diodo se describe en la misma nota app: "Si no se utiliza la programación de alto voltaje, se recomienda añadir un diodo de protección ESD de RESET para Vcc, ya que esto no es interna, debido a la programación de alto voltaje".
C4 y C6 100nF Condensadores: Estos se añaden para filtrar el ruido de suministro. La impedancia de un condensador disminuye con frecuencia:
xc
xc
= 12πfC
12πfC
Los condensadores dan ruido de alta frecuencia las señales de un camino de baja impedancia a tierra. 100nF es el valor más común. Leer más acerca de condensadores en el libro de texto AAC.
PIN13: Este está conectado al pin SCK desde la MCU y también está conectado a un LED. La placa Arduino utiliza una memoria intermedia (la LMV358) para conducir el LED.
ICSP (In-Circuit Serial Programming) Cabecera: Se utiliza para programar los ATmega328 utilizando un programador externo. Está conectado a la interfaz In-System Programming (ISP) (que utiliza los pines SPI). Por lo general, no es necesario utilizar esta forma de programación porque gestor de arranque se encarga de la programación de la MCU de la interfaz UART que está conectada mediante un puente al USB. Esta cabecera se utiliza cuando se necesita el flash de la MCU, por ejemplo, con un cargador de arranque por primera vez en la producción.
Como ya comentamos en la sección "Sistema de Arduino UNO general", la función de la parte de puente de USB a UART es convertir las señales de interfaz USB a la interfaz UART, que comprende el ATmega328, utilizando un ATmega16U2 con un transceptor USB interno . Esto se hace usando un firmware especial cargado en el ATmega16U2.Como ya comentamos en la sección "Sistema de Arduino UNO general", la función de la parte de puente de USB a UART es convertir las señales de interfaz USB a la interfaz UART, que comprende el ATmega328, utilizando un ATmega16U2 con un transceptor USB interno . Esto se hace usando un firmware especial cargado en el ATmega16U2.
Desde una perspectiva de diseño electrónico, esta sección es similar a la sección microcontrolador. Este MCU tiene una cabecera ICSP, un cristal externo con condensadores de carga (CL), y un condensador de filtro Vcc.
Observe que hay resistencias en serie en la líneas D + y D- de USB. Estos proporcionan la impedancia de terminación adecuada para las señales de USB. Aquí es un poco de lectura adicional acerca de estas resistencias:
¿Por qué resistencias en serie de datos USB
Los desarrolladores FAQ USB
Z1 y Z2 son resistencias dependientes de voltaje (RDT), también llamados varistores. Se utilizan para proteger las líneas USB contra los transitorios de ESD.
El condensador de 100nF conectada en serie con la línea de reset permite que los Atmega16U2 para enviar un impulso de reposición a la Atmega328. Puede leer más sobre este condensador aquí.
El poder
Para una fuente de energía, usted tiene la opción de utilizar el USB o una toma de CC. Ahora es el momento de responder a la siguiente pregunta: "¿Si conecto tanto un adaptador de CC y el USB, que será la fuente de energía"
El regulador de 5V es la NCP1117ST50T3G y el Vin de este regulador se conecta a través de jack de entrada de CC a través del diodo M7, la versión SMD del famoso diodo 1N4007 (PDF). Este diodo proporciona protección de polaridad inversa.
La salida del regulador de 5V está conectada al resto de 5V neta en el circuito y también a la entrada del regulador de 3.3V, LP2985-33DBVR. Puede acceder directamente desde 5V 5V el pin cabezal de alimentación.
Otra fuente de 5V es USBVCC que está conectado al drenaje de un FDN340P, un MOSFET de canal P, y la fuente está conectada a la red de 5V. La puerta del transistor está conectado a la salida de un op-amp LMV358 utilizado como comparador. La comparación es entre 3V3 y Vin / 2. Cuando Vin / 2 es más grande, esto producirá una alta salida del comparador y el MOSFET de canal P está apagado. Si no hay Vin aplicada, la V + del comparador se tira hacia abajo a GND y Vout es baja, de manera que el transistor está encendido y el USBVCC está conectado a 5V.
Desde una perspectiva de diseño electrónico, esta sección es similar a la sección microcontrolador. Este MCU tiene una cabecera ICSP, un cristal externo con condensadores de carga (CL), y un condensador de filtro Vcc.
Observe que hay resistencias en serie en la líneas D + y D- de USB. Estos proporcionan la impedancia de terminación adecuada para las señales de USB. Aquí es un poco de lectura adicional acerca de estas resistencias:
¿Por qué resistencias en serie de datos USB
Los desarrolladores FAQ USB
Z1 y Z2 son resistencias dependientes de voltaje (RDT), también llamados varistores. Se utilizan para proteger las líneas USB contra los transitorios de ESD.
El condensador de 100nF conectada en serie con la línea de reset permite que los Atmega16U2 para enviar un impulso de reposición a la Atmega328. Puede leer más sobre este condensador aquí.
mecanismo de conmutación de fuente de alimentación |
El LP2985-33DBVR es el regulador 3V3 . Tanto los reguladores 3V3 y 5V son LDO ( caída baja) , lo que significa que pueden regular la tensión incluso si el voltaje de entrada está cerca de la tensión de salida . Esta es una mejora sobre los reguladores lineales más antiguos, como el 7805 .
Lo último que voy a hablar es la protección de la energía que se proporciona en la placa Arduino UNO .
Como se mencionó anteriormente , VIN de un jack DC está protegido de polaridad inversa mediante el uso de un diodo M7 en serie en la entrada. Tenga en cuenta que el pin VIN en el cabezal de alimentación no está protegida. Esto se debe a que está conectado después de que el diodo M7 . En lo personal , no sé por qué decidieron hacer eso cuando podrían conectarlo antes de que el diodo para proporcionar la misma protección .
pin VIN del cabezal de alimentación |
Cuando se utiliza USB como fuente de energía , y para proporcionar protección a su puerto USB , hay un PTC ( coeficiente de temperatura positivo) fusible ( MF- MSMF050-2 ) en serie con el USBVCC . Esto proporciona protección contra sobrecorriente , 500mA . Cuando se alcanza un límite de sobrecorriente , la resistencia PTC aumenta mucho. La resistencia disminuye después se retira la sobrecorriente.
La lectura de los circuitos robustos post sobre la protección de Arduino es muy útil .
Ahora debería estar más familiarizado con el diseño electrónico de la Arduino UNO y tener una mejor comprensión de su hardware. Espero que esto ayuda a que sus proyectos de diseño en el futuro!