Documentación de mis modificaciones al Transistortero AVR.
Un probador de transistor es un dispositivo donde puede insertar diferentes tipos de componentes electrónicos y analizarlos. No solo lee transistores y le dice si es NPN o PNP, sino que le dice la resistencia de las resistencias o la capacitancia de los condensadores, y más. Hay muchos tipos diferentes, y generalmente son muy baratos.
Tengo el kit GM328 de Banggood ( ya no disponible allí ), a veces identificado como AY-AT.

Hardware notable:
Para mejorar la precisión del probador, hay algunas modificaciones simples que puede hacer.

(Imagen de https://github.com/upcycle-electronics/avr-transistor-tester)
Vea también esta publicación en EEVBlog.
Del readMe del K-Cuirmware:
" Las resistencias R1 a R6 son críticas para las mediciones y estas resistencias de 680Ω y 470kΩ deben ser resistencias de tipo de medición (tolerancia de 0.1%) para obtener la precisión total".
" La referencia de voltaje de precisión adicional de 2.5V conectada a PIN PC4 (ADC4) se puede usar para verificar y calibrar el voltaje VCC, pero no es obligatorio. Puede usar un LM4040-AIZ2.5 (0.1%), un LT1004CZ-2.5 ( 0.8%) o un LM336-Z2.5 (0.8%) como referencia de voltaje. Valor de resistencia más alto (47kΩ).
Del readMe del M-Firmware:
" La referencia de voltaje externa de 2.5 V solo debe habilitarse si es al menos 10 veces más preciso que el regulador de voltaje. De lo contrario, empeoraría los resultados. Si está utilizando un MCP1702 con una tolerancia típica de 0.4% como regulador de voltaje usted. Realmente no necesito una referencia de voltaje de 2.5V.
La parte sobre R16 en el ReadMe del K-Girmware es confuso ya que no se menciona en el ReadMe del M-Firmware. Esta publicación confirma que solo es necesario para el K-Negrware:
" Para ejecutar el M-Firmware, puede omitir el paso #3 o eliminar R16 (no es necesario reemplazarlo). Cuando HW_REF25 está deshabilitado (configuración predeterminada), el firmware ignorará cualquier referencia de voltaje externo. El K-Firmware maneja un poco referencias externas Diferente y siempre verifica una referencia de 2.5V (sin configuración para deshabilitarlo).
Elegí pedir resistencias al 0.1% y solo el regulador de voltaje MCP1702, saltando la referencia de voltaje. También agregó un cristal de 16MHz para mayor velocidad:
Los cambios concretos, referenciados a los esquemas:
Así es como se ve con estos cambios en su lugar:

Las resistencias del 0.1% (negras) son un poco más gruesas que las predeterminadas (azul), por lo que se superponen un poco.
Hay 2 opciones de firmware diferentes para el probador de transistores. El original es el K-firmware. El probador viene con la versión 1.12k (bastante antiguo), y el más nuevo es 1.13K. El desarrollo del K-NegRware está actualmente en espera. Se ha bifurcado en el M-Cuirmware, que se reescribe y con características adicionales, y aún bajo desarrollo activo.
La fuente de K-Firmware está disponible aquí, con firmware precompilado para el AY-AT en el directorio MEGA328_COLOR_KIT. También hay un archivo de makle allí con los parámetros correctos. La fuente del M-Firmware está disponible aquí, pero solo como tarballs. No hay versiones precompiladas. Ambos firmwares también se pueden encontrar aquí.
Elegí usar el M-Firmware, debido a que todavía se estaba desarrollando activamente. La versión más reciente al momento de escribir es 1.42m.
Hay 3 archivos de configuración en el firmware que deben ajustarse. Consulte el archivo "Clones" (desde el firmware TGZ) para los cambios básicos necesarios para construir un firmware compatible para el AY-AT. Los cambios adicionales que hice se documentan aquí. Los archivos también están disponibles en el directorio de firmware.
HW_REF25 porque no uso la referencia de voltaje TL431A o el reemplazo de LM4040 recomendado.SW_IR_RECEIVER porque el firmware era demasiado grande (105%) y no cabía en el ATMEGA328P. El apoyo para IR no es importante para mí, por lo que estuvo bien deshabilitar.UI_AUTOHOLD porque el modo de prueba continuo era molesto. Prefiero tomarme el tiempo que necesito para leer el resultado.POWER_OFF_TIMEOUT para que se apague cuando está inactivo.SW_POWER_OFF para que pueda apagarlo del menú. LCD_LATE_ON porque la pantalla está muy confusa cuando se inicializa y esta configuración hace que se vea bien. FREQ a 16 debido a mi cambio de cristal de 8 a 16MHz. Si solo desea crear un nuevo firmware, y no le importa ninguna de las modificaciones de hardware descritas aquí, puede seguir los ejemplos de configuración con estas excepciones:
HW_REF25FREQ configurada en 8Esto le dará un firmware que se ejecuta en un AY-AT "stock" GM328 de Banggood.
Además de las herramientas de compilación que ya estaban instaladas, tuve que agregar los siguientes paquetes (en OpenSuse):
avr-libccross-avr-gcc9 Luego make para construir.
Cuando se termine la compilación, debe tener estos archivos, que componen el firmware:
ComponentTester.eepComponentTester.hexY la salida del compilador debe terminar con algo como esto:
AVR Memory Usage
----------------
Device: atmega328
Program: 32234 bytes (98.4% Full)
(.text + .data + .bootloader)
Data: 248 bytes (12.1% Full)
(.data + .bss + .noinit)
EEPROM: 738 bytes (72.1% Full)
(.eeprom)
Si alguno de estos está más del 100% lleno, tiene demasiado habilitado en el firmware y no funcionará.
Para flashear el firmware necesitamos 3 archivos. Los 2 archivos de firmware desde arriba y ComponentTester.cfg. El último archivo contiene la configuración de los fusibles del ATMEGA328P. La configuración del fusible se extrae del makfile. Para ver qué significan los fusibles, puede usar esta calculadora en línea.
El AY-AT no es compatible con el firmware que fluye fuera de la caja. Hay 2 formas de evitar eso.
La primera opción no requiere más modificaciones para el probador de transistores, pero debe eliminar el chip del socket e insertarlo en el programador cada vez que desee actualizar el firmware.
Utilizo un programador TL866II Plus Universal junto con el software Minipro Open Software para Linux. Consulte https://github.com/blurpy/minipro para obtener más información sobre cómo usar.
Con el chip en el programador, simplemente ejecute estos comandos:
minipro -p "ATMEGA328P@DIP28" -Eminipro -p "ATMEGA328P@DIP28" -c data -w ComponentTester.eep -eminipro -p "ATMEGA328P@DIP28" -c code -w ComponentTester.hex -eminipro -p "ATMEGA328P@DIP28" -c config -w ComponentTester.cfg -eEso debería ser todo.
La otra opción es soldar pines en la parte posterior de la placa de circuito para agregar el encabezado ICSP que falta que le permite flashear el firmware en el circuito. Más trabajo por adelantado, pero muy útil si actualiza el firmware con frecuencia.
Agregué pasadores de encabezado de ángulo recto como este:

Este es el pinout (reflejado en comparación con arriba):

Hay muchos dispositivos diferentes que se pueden usar para parpadear con un encabezado ICSP, como este ejemplo usando un Arduino Uno como programador, pero usaré el TL866II Plus mencionado anteriormente, ya que también admite el modo ICSP, con el siguiente pinout :

Con cables conectados entre el probador de transistores (con potencia eliminada) y el programador, simplemente ejecute estos comandos:
minipro -p "ATMEGA328P@DIP28" -E -iminipro -p "ATMEGA328P@DIP28" -c data -w ComponentTester.eep -e -iminipro -p "ATMEGA328P@DIP28" -c code -w ComponentTester.hex -e -iminipro -p "ATMEGA328P@DIP28" -c config -w ComponentTester.cfg -e -iEso debería ser todo.
Este es el resultado final después de flashear el nuevo firmware:

Puede encontrar el firmware original aquí si desea restaurar un firmware de trabajo conocido.
Inicialmente no presté atención al resultado después del paso de compilación:
AVR Memory Usage
----------------
Device: atmega328
Program: 34784 bytes (106.2% Full)
Funcionó bien para flashear el firmware, sin embargo, al intentar iniciar el probador, flashearía rápidamente en blanco en la pantalla y luego se apagaría. Pensé que era un problema de hardware al principio, pero al probar el firmware original funcionó. Después de deshabilitar suficientes funciones en este firmware para obtener debajo del 100% de memoria, también funcionó bien.
Cuando olvidé configurar la pantalla en config_328.h antes de compilar y parpadear, el probador encendería y mostraría una pantalla blanca hasta que se eliminara la alimentación. Se solucionó fácilmente agregando la configuración correcta e intentando nuevamente.
Después de flashear un nuevo firmware, se recomienda seguir los pasos descritos en el ReadMe para ejecutar un ajuste de autoaprendizaje.
Breve resumen de los pasos:
AdjustmentSave en el menú y elija la ranura #1Cuando se le pidió que cortara las sondas, usé alambre de placa corta entre el punto de prueba 1 y el punto de prueba 2, y entre el punto de prueba 2 y el punto de prueba 3 en el enchufe ZIF.