Tabla de contenido:

Banco de trabajo portátil Arduino Parte 3:11 pasos
Banco de trabajo portátil Arduino Parte 3:11 pasos

Video: Banco de trabajo portátil Arduino Parte 3:11 pasos

Video: Banco de trabajo portátil Arduino Parte 3:11 pasos
Video: Introducción a arduino 2024, Mes de julio
Anonim
Banco de trabajo portátil Arduino, parte 3
Banco de trabajo portátil Arduino, parte 3
Banco de trabajo portátil Arduino, parte 3
Banco de trabajo portátil Arduino, parte 3

Si ha visto las partes 1, 2 y 2B, entonces hasta ahora no ha habido mucho Arduino en este proyecto, pero solo unos pocos cables de placas, etc.no se trata de esto y la parte de infraestructura debe construirse antes de la el descanso funciona.

Este es el código electrónico y Arduino. El instructable 2B anterior enumera los detalles de la fuente de alimentación.

Esta sección equipa el banco de trabajo portátil con las siguientes características

Una pantalla táctil TFT que proporciona una pantalla, impulsada por un Arduino Mega para proporcionar lo siguiente

  1. 8 pantallas digitales, apagado / encendido / oscilante
  2. 4 pantallas de voltaje
  3. 3 indicadores de corriente / voltaje
  4. Medidor de resistencia E24 (porque ya no puedo leer las bandas de color)

Habrá otras cosas que agregaré, pero este era mi objetivo inicial. El código Arduino también enumera una pantalla en serie, pantalla I2C, medidor de capacitancia, interruptores digitales y osciloscopio que agregaré a medida que pase el tiempo. Además, no he decidido si vale la pena agregar una fuente de alimentación de 3V3, una fuente de alimentación variable o un control de voltaje / corriente de la fuente de alimentación. Hasta ahora, esto se ha construido usando el Mega, pero también estoy buscando mover algunas de las funciones para separar los circuitos a los que se accede I2C, ya sea chips dedicados o Atmel 328 programados que se acomodarán más fácilmente a un controlador diferente.

Suministros

5 tomas de cabezal de 16 vías

Enchufes dupont de 5 x 8 vías, en realidad hechos de enchufes largos de una línea de 40 vías cortados a la longitud requerida

1 pantalla táctil TFT ILI9486 de 3,5"

1 x Arduino Mega 2650

Componentes individuales

Según el texto, el valor de algunos de estos no es absolutamente fijo y si se pierde una función no será necesaria en absoluto:)

Entrada digital

16 resistencias de 10K

Entrada analógica

1 x TL074 a quad jfet opamp, esto es lo que tenía de repuesto, cualquier cosa similar servirá:)

Resistencias de 4 x 68K y 4 x 430k utilizadas como divisores de voltaje.

4 x 1N4001 o similar

Medidor de resistencia

1 x TL072 un opamp dual jfet, esto es lo que tenía de repuesto, cualquier cosa similar servirá:)

1M0, 300k, 100k, 30k, 10k, 3k, 1k, 300R (Si se cambian estos valores, el código Arduino debe actualizarse)

Paso 1: descripción general de la electrónica

Descripción general de la electrónica
Descripción general de la electrónica
Descripción general de la electrónica
Descripción general de la electrónica
Descripción general de la electrónica
Descripción general de la electrónica
Descripción general de la electrónica
Descripción general de la electrónica

La consola gris fue hecha por mí hace 30 años y todavía se usa regularmente, pero los tiempos han pasado. Proporciona dos fuentes de alimentación a la izquierda, un amplificador de audio central en el medio, con altavoz interno y un oscilador a la izquierda. En estos días, la mayoría de mis circuitos solo necesitan la fuente de alimentación y de eso, solo el riel positivo. Se necesitaba algo diferente, así como un etiquetado sin el que he vivido, bueno, lo hice.

Los requisitos principales para la electrónica de la caja del proyecto eran alimentar circuitos más nuevos utilizando Arduino o Raspberry PI, por lo que 5V era esencial, al igual que los enchufes USB. Los interruptores iluminados me dicen si la energía está encendida o no, y cuando hago pruebas, regularmente tengo que construir pequeños circuitos auxiliares para mostrar el estado de manera temporal. Tengo una caja de medidores voluminosos que ocupan mucho espacio en el banco y, sobre todo, necesito una pantalla que pueda leer fácilmente a medida que mi vista se deteriora, algo con caracteres grandes y brillantes. Entonces necesito pantallas digitales, medidores de voltaje, medidores de corriente y, en este caso, un pequeño lujo en forma de medidor de resistencia para identificar rápidamente las resistencias de la serie E24, todo dentro de los 15 cm de la placa del proyecto y en un estuche compacto y portátil.

La fuente de alimentación principal, descrita en un artículo anterior, proporciona energía a la tapa mediante un cable plano de 40 vías que permite conectar las dos mientras la tapa está cerrada. Esto proporciona suministros conmutados de 5 V y 12 V para la electrónica del panel y para alimentar la placa de pruebas.

Todas las entradas de alimentación y señal se proporcionan mediante enchufes de cabezal de PCB de 2x8 vías en paralelo con un enchufe dupont de 8 vías. Esto probablemente sea una exageración, la mayoría de las placas de prueba tienen rieles eléctricos, pero fue fácil de hacer.

En las tomas de corriente, el riel principal de 0 V de la fuente de alimentación es común a todas las fuentes y está disponible. Encima de esto hay una fuente de alimentación de 5V, encendida la unidad base, y arriba de esto hay dos suministros de + 12V y -12V suministrados, que actualmente están fijos, aunque tengo la idea de piratear el suministro para hacerlo variable y proporcionar un 3.3-20V suministro variable.

Paso 2: la electrónica

La Electrónica
La Electrónica
La Electrónica
La Electrónica
La Electrónica
La Electrónica

Publiqué impresiones de pantalla del diseño de la placa de pruebas, cómo se ve el circuito cuando se construye en la placa de matriz, un esquema como PDF y los archivos originales de Fritzing. Esta no es una electrónica particularmente compleja y está ahí para montar resistencias limitadoras, amplificadores de búfer y conexiones en abanico para la placa Arduino. Pero hay varias imágenes para mostrar las muchas conexiones con un poco más de claridad. La mayor parte del cableado se hizo a partir de longitudes estándar de cable plano dupont prensado y reensamblado en carcasas de múltiples vías para que sean más fáciles de volver a enchufar y más confiables.

El Arduino Mega 2650 está montado en la tapa con la toma USB disponible para programación. Controla la pantalla táctil TFT que se utiliza para mostrar todas las salidas y entradas.

8 entradas digitales están disponibles a través de un encabezado de PCB de 2 x 8 vías y su estado se muestra en la pantalla si se selecciona esa función. Esta es una pantalla simple de encendido / apagado, rojo apagado, verde encendido. Puedo agregar la oscilación como un cambio futuro.

4 entradas de voltaje también están disponibles a través del encabezado de PCB y un divisor de voltaje, el voltaje que se muestra en la pantalla. Cada voltaje de entrada en el panel frontal, con referencia a la tierra común, se pasa a un divisor de voltaje dividido por 7 y luego se amortigua con uno de los cuatro amplificadores operacionales en un TL074 configurado como amplificador rectificador, solo para evitar accidentes con voltajes negativos. Sería bueno agregar una indicación de polaridad en algún momento, pero no esta vez. La salida de cada amplificador operacional es a una de las entradas ADC del Arduino.

Un encabezado de PCB adicional expone las conexiones seriales e I2C. Esto se hizo para permitir la implementación de una consola de visualización en serie y una función básica de identificación I2C.

Es posible que las entradas de voltaje / digitales no sean todas necesarias, por lo que se pueden reconfigurar para proporcionar salidas de conmutación digitales.

El Arduino alimenta una matriz de resistencia en un divisor de voltaje para proporcionar una funcionalidad de medidor de resistencia. La salida de esto es amortiguada por un amplificador operacional (medio TL072) antes de ser leído por el Arduino y calculada la resistencia. El propósito de esto no es una medición de resistencia precisa, sino identificar rápidamente los valores de la serie E24, aunque con alguna calibración podría usarse como un medidor básico. Su operación es detectar cuando una resistencia menor a 9M9 está presente en los dos resortes montados en el panel frontal y luego cambiar selectivamente 5V a cada resistor en la matriz de divisores hasta que se mida el valor más cercano a 2.5V o se seleccione el último resistor, un A continuación, se realiza el cálculo y la comparación para determinar el valor E24 más cercano. Los 5V se obtienen de las salidas digitales 3-10 en el Arduino que se reconfiguran como entradas de alta impedancia entre cada medición para minimizar los errores. Los pines Arduino D3-10 se usaron deliberadamente ya que una futura adición podría ser un medidor de capacitancia que usa la capacidad PWM de estas salidas, que potencialmente solo podría ser un cambio de software.

Una placa INA3221 modificada proporciona mediciones adicionales de voltaje y corriente a través de la interfaz I2C con entradas desde el panel frontal. Todo está cableado mediante cables de puente para que la reasignación de funciones sea fácil en el futuro.

Paso 3: Entrada de voltaje / corriente INA3221

INA3221 Entrada de voltaje / corriente
INA3221 Entrada de voltaje / corriente

Esto fue pensado como una solución rápida para proporcionar mediciones de voltaje / corriente en la caja, pero resultó que, tal como se implementó en la placa que compré, estaba destinado a monitorear la carga de la batería, por lo que tuvo que modificarse para proporcionar tres mediciones independientes. Si al construir este proyecto puede obtener una placa INA3221 que implemente este chip según la hoja de datos, entonces esto no es necesario.

Mirando la imagen, se deben hacer tres cortes en las trazas de la PCB para separar las resistencias de medición. Las almohadillas para estas tres resistencias también deben cortarse para separarlas del resto de la PCB. Luego, las resistencias se unen a las almohadillas soldando cables adicionales como puentes. Estoy documentando esto porque este es un tablero común y puede ser el único disponible.

Las conexiones a la placa desde el panel frontal se realizan a través de cables de puente a través de las resistencias de medición.

La energía para la placa se toma de los pines Arduino 5V al igual que la tierra, con las conexiones I2C yendo a la PCB electrónica.

Paso 4: la pantalla de visualización

La pantalla de visualización
La pantalla de visualización

Esta fue una compra de eBay y está disponible en muchas fuentes y es una pantalla con tecnología ILI9486. Descubrí que funcionaba mejor con las bibliotecas MCUFRIEND de David Prentice, pero debe calibrarse antes de su uso, lo que solo requiere que uno de los ejemplos de biblioteca proporcionados por David se ejecute con la pantalla conectada, siga las instrucciones en la pantalla y escriba los parámetros mostrados, insertándolos en el archivo de código Arduino_Workstation_v01 si es diferente.

Para este proyecto, una pantalla táctil es esencial, gira en torno a no tener interruptores dedicados y la posibilidad de agregar menús y funciones en el futuro sin tener que volver a cablear.

Paso 5: conectándolos

Conectándolo juntos
Conectándolo juntos
Conectándolo juntos
Conectándolo juntos
Conectándolo juntos
Conectándolo juntos

El Arduino Mega está ubicado en el lado izquierdo de la tapa, con sus puertos USB y de alimentación accesibles desde el exterior de la carcasa. En el lado derecho al lado del Arduino están los componentes electrónicos montados en la placa de matriz y encima de esto está montada la placa INA3221 en la parte posterior de la tapa.

También en la parte posterior de la tapa en el lado izquierdo sobre el Arduino hay una placa de conexión a tierra común a la que están conectadas todas las conexiones a tierra.

Se consolidaron tantos cables como sea posible en conectores de múltiples vías. Esto hace que conectar los circuitos juntos sea mucho más fácil y confiable, y el apoyo mutuo de los conectores en una carcasa de múltiples vías proporciona una mejor resistencia a soltarse. A continuación se incluye una lista de estas consolidaciones.

Todos los conectores se agregaron de manera lógica, lo que brinda un mayor acceso para hacer las conexiones con mis dedos torpes, dejando las conexiones del panel frontal hasta el final, y las conexiones finales de la pantalla se pasan a través del orificio de montaje para completarse en último lugar. La pantalla se fijó en su lugar con un bisel impreso en 3D.

Paso 6: Clientes potenciales consolidados

Clientes potenciales consolidados
Clientes potenciales consolidados
  1. Entradas de voltaje y resistencia a los puertos Arduino ADC, cinco cables de 20 cm con conectores macho individuales en un extremo consolidados en una carcasa de seis vías con un espacio para acomodar el espacio en los encabezados Arduino.
  2. Cable de 4 vías de 10 cm desde una carcasa de cuatro vías a dos carcasas de 2 vías para conectar los pines de voltaje en el panel frontal a la placa de circuito.
  3. Cable de 10 cm de 8 vías desde un conector macho de 2x4 vías a un conector hembra de 8 vías
  4. Cable de 4 vías de 10 cm desde carcasa hembra de 4 vías a carcasa hembra de 4 vías para conectar Serial e I2C al panel frontal
  5. Cable de 4 vías de 10 cm desde carcasa de 4 vías a cuatro conectores individuales para conectar INA3221 al panel frontal
  6. Cable de 4 vías de 20 cm para conectar la carcasa hembra de cuatro vías a la carcasa macho de cuatro vías para llevar Serial e I2C de Arduino a la placa de circuito.
  7. Cable de 10 cm de 8 vías desde carcasa hembra de 8 vías a carcasa hembra de 8 vías para llevar entradas digitales desde el panel frontal a la placa de circuito.
  8. Cable de 10 cm de 8 vías para llevar la carcasa hembra de 8 vías a una carcasa macho de 3 vías y una carcasa macho de 5 vías para conectar el divisor de resistencia a la placa de circuito. Las dos carcasas se utilizan para acomodar el espacio no estándar en los encabezados de la placa Arduino.
  9. Cable de 20 cm de 2 vías para llevar carcasa hembra de 2 vías a dos conectores macho individuales para la fuente de alimentación INA3221.
  10. Cable de 2 vías de 10 cm para llevar la carcasa hembra de 2 vías a dos carcasas hembra individuales para conectar la tercera conexión del monitor INA3221 al panel frontal.
  11. Cable de 2 vías de 10 cm para llevar la carcasa hembra de 2 vías a la carcasa hembra de 2 vías para conectar el INA3221 a las conexiones fanout I2C.

Paso 7: Código Arduino

Código Arduino
Código Arduino
Código Arduino
Código Arduino

Este proyecto se basa en el Arduino Mega 2650 por la sencilla razón de que quería muchos puertos de E / S dedicados a tareas en un formato simple. Las bibliotecas de la pantalla táctil TFT son compatibles de forma predeterminada con Arduino Uno y deben editarse para que sean compatibles con Mega. La edición de las bibliotecas es compatible con el autor del código TFT original, es simple y se describe en el siguiente paso.

El uso de una pantalla táctil es la base de esta parte del proyecto, pero como la pantalla que alguien termina usando puede ser diferente a la que yo usé, el código solo coloca funciones específicas del hardware en rutinas separadas para que se puedan identificar todas las modificaciones necesarias.

Aquí se incluye una versión funcional del código y se actualizará, pero las actualizaciones más recientes estarán en github.

La función principal del código gira en torno a la pantalla, cada elemento de la pantalla tiene una entrada en una única matriz que contiene el tipo de elemento, en qué parte de la pantalla se muestra, el color y parámetros adicionales como la fuente de entrada. Arriba se muestra una captura de pantalla de esta matriz con comentarios. También contiene un campo para controlar si se mostrará en la pantalla o no. Al editar esta matriz, se pueden agregar o eliminar características nuevas. La rutina de 'bucle' del código se ejecuta a través de esta matriz de forma continua, procesando cada elemento elegible secuencialmente y luego repitiéndose. Actualmente hay 6 elementos diferentes.

Elementos del menú: estos no muestran información, pero cuando se tocan ejecutan una subrutina asociada, identificada en los parámetros del elemento.

Elementos digitales: se muestran como un cuadro en la pantalla en rojo o verde, según el estado del pin de entrada digital asociado. La consola de ejemplo está cableada para 8 pines digitales, pero esto se puede aumentar o disminuir según se desee.

Elementos analógicos: muestran un voltaje aproximado medido en el pin analógico asociado. Originalmente se especifican cuatro.

Elementos de precisión: muestra la entrada de un módulo de medidor de voltaje / corriente de precisión externo. Solo hay tres de estos, pero se podría agregar un segundo o tercer módulo.

Elemento de resistencia: este es un elemento único que muestra la entrada del medidor de resistencia.

Tocar: esta es la única rutina que siempre se ejecuta para detectar si se ha tocado la pantalla y luego tomar una decisión basada en lo que se ha tocado. es decir, si es un elemento del menú, ¿qué implica que se muestre a continuación?

La pantalla tiene tres modos de estado, normal, grande y pantalla completa y todos los elementos cambian su funcionamiento en función del estado. Los tres modos se pueden seleccionar desde el menú tocando un elemento y la opción de menú asociada.

Modo normal: muestra 8 entradas digitales, cuatro entradas de voltaje analógicas, tres elementos de precisión, el elemento de resistencia y cuatro elementos de menú. Seleccionar Normal en el menú pone la pantalla en este modo.

Modo grande: se selecciona tocando cualquiera de los elementos en la pantalla seguido de Grande. Cuando se selecciona, ese tipo de elemento es el único tipo seleccionado y los elementos de ese tipo se reorganizan para llenar toda la pantalla.

Modo de pantalla completa: se selecciona tocando cualquiera de los elementos en la pantalla seguido de Pantalla completa. Cuando se selecciona, ese elemento es el único elemento que se muestra y se reorganiza para llenar toda la pantalla, dando la máxima visibilidad de ese elemento.

Para agregar funcionalidad adicional, se deben agregar las siguientes rutinas

'dibujar' rutina que se llama para obtener la información de ese elemento, llamar a la rutina de actualización de pantalla apropiada y registrar la información táctil devuelta

Rutina 'lógica' que acepta la información de la rutina de dibujo y usa las rutinas de controlador de pantalla apropiadas para poner la información en la pantalla y devolver la información táctil correcta para el área de la pantalla dibujada.

Rutina de 'configuración' que se llama como parte de la configuración de Arduino

Se pueden incluir otras rutinas, pero no debería haber ninguna interdependencia entre el código del elemento, si un elemento no ha sido habilitado, su código no debería ejecutarse y la estructura multifuncional simple conserva su integridad.

Paso 8: editar las bibliotecas de Arduino

Editando las Bibliotecas Arduino
Editando las Bibliotecas Arduino
Editando las Bibliotecas Arduino
Editando las Bibliotecas Arduino

La pantalla que utilicé funciona muy bien con el Arduino Uno y las bibliotecas base escritas para él, pero funciona lentamente cuando se transfiere directamente al Arduino Mega. Para manejar correctamente la pantalla, se debe usar un conjunto diferente de pines de datos y este cambio de uso debe configurarse en las bibliotecas. Este es un cambio simple y fue intencionado por el autor. Las imágenes resaltan los cambios realizados.

Los dos archivos se almacenan en la carpeta MCUFRIEND_kbv / utility como mcufriend_shield.hy mcufriend_special.h. Los cambios necesarios son primero en el archivo de encabezado 'escudo' para garantizar que la primera línea se lea

#define USE_SPECIAL

para asegurarse de que se cargue el archivo de encabezado 'especial'.

El archivo de encabezado 'especial' también debe actualizarse para garantizar que la línea

#define USE_MEGA_8BIT_PROTOSHIELD

está descomentado.

Estos dos cambios significan que el código de visualización para esta pantalla funcionará utilizando los pines 20-29 en el Arduino Mega en lugar del 3-10 predeterminado en el Uno.

Paso 9: capturas de pantalla

Capturas de pantalla
Capturas de pantalla
Capturas de pantalla
Capturas de pantalla
Capturas de pantalla
Capturas de pantalla

He puesto capturas de pantalla aquí para que sea fácil ver lo que debería estar haciendo la consola. La siguiente sección se refiere a cargar el código en Arduino.

La primera pantalla muestra la pantalla 'normal' con menús en la parte superior, mediciones de voltaje en el LHS, mediciones de voltaje y corriente en el RHS y el estado del pin digital en la parte inferior, rojo para 'falso / bajo', verde para 'verdadero / alto '. Finalmente en el centro está la medición de la resistencia.

La segunda pantalla muestra las entradas digitales habilitadas en modo Grande, cada entrada se muestra claramente.

La tercera pantalla muestra las entradas de voltaje en modo grande.

Paso 10: carga del código Arduino

El código está adjunto, pero como se mencionó anteriormente se colocará en github en algún momento y la ubicación se agregará aquí. El archivo de código fuente principal es Arduino_Workbench_v01.ino y las otras rutinas son para proporcionar las diversas funciones.

Si las bibliotecas se han modificado correctamente y el Arduino Mega2650 se ha configurado como la plataforma de destino en el IDE de Arduino, entonces el código debería compilarse la primera vez.

Las bibliotecas que deberán cargarse son Adafruit GFX y bibliotecas de pantalla táctil que deberían estar disponibles en el administrador de bibliotecas de Arduino, una copia de MCUFRIEND_kbv descargable desde github y para INA3221, la biblioteca SwitchDocLabs SDL_Arduino_INA3221 también descargable desde github, ambos aparecen rápidamente en una búsqueda en google.

Paso 11: Toques finales

Toques finales
Toques finales
Toques finales
Toques finales
Toques finales
Toques finales
Toques finales
Toques finales

La idea es utilizarlo para trabajos de proyectos por lo que se ha realizado un panel removible que comprende pernos de montaje para placas Arduino y una protoboard, todo unido a la tapa mediante velcro para que sean desmontables y para que se puedan hacer diferentes placas para contener proyectos y que la caja se puede reutilizar para diferentes proyectos que se ejecutan al mismo tiempo.

Espero que esto sea una fuente de algunas ideas para hacer algo diferente, mejor o ambas cosas. Agregaré las funciones adicionales que he mencionado y las agregaré, pero si esto es de alguna ayuda, tome lo que desee y disfrútelo. Si hay algún problema evidente, hágamelo saber.

Ahora mismo voy a empezar a usarlo, ¡tengo algunos proyectos en los que trabajar!

Recomendado: