Bias Meter Credits License Info

Bias Meter Credits & License Info

License and Attribution Information

Current Project (v3):

This work, “Bias Meter” by Charlie Isaac (ToneAlchemy), is open-source software released under the GNU General Public License v3.0 (GPLv3).

  • License Terms: You may copy, distribute, and modify this software. If you distribute modifications, they must be released under the same GPLv3 license.
  • Disclaimer: This project is provided “as is” with NO WARRANTY and NO TECHNICAL SUPPORT.

Attribution & History:

This project is an evolutionary adaptation of earlier open-source works. In accordance with their original licenses, we gratefully acknowledge:

  • v2: “Dual Channel Arduino Bias Tester beta 14” by Kiel Lydestad (3DBeerGoggles). Licensed under CC BY 4.0.
  • v1: “ArduinoBiasMeter” by John Wagner. Licensed under CC BY 4.0.

Project Sources


Modification Summary

(Changes from v1 & v2)

Last Updated: 04 January 2026

This section details the significant changes and improvements made in this version (v3, “Bias Meter”) compared to its predecessors. These notes are provided to document the project’s evolution and satisfy the modification clauses of the original open-source licenses.

Total Codebase Overhaul: Approximately 98% of the source code has been rewritten compared to the original v1 and v2 releases. While the core concept of bias measurement remains, the underlying firmware for display drivers, sensor management, memory handling, and user input has been replaced with entirely new, custom-engineered logic to support the upgraded hardware capabilities.

1. Complete Architecture Overhaul & Memory Optimization

  • EEPROM Database System: Replaced hardcoded tube data with a dynamic, editable database stored in EEPROM. This allows users to add, edit, and save tube profiles directly on the device without recompiling code.
  • Memory Efficiency: The codebase was optimized for the Arduino Nano’s limited SRAM. Heavy libraries (like String) were removed in favor of lightweight C-strings and Flash-memory (F()) macros, preventing stack overflows and ensuring long-term stability.
  • State Machine Input Handler: Replaced basic digital reads with a sophisticated polling state machine. This includes “Hard Freeze” logic and release guards to eliminate switch bounce (recoil) and ensure precise menu navigation.

2. Enhanced Safety & Equipment Protection

  • Over-Voltage Hysteresis: Implemented a continuous safety monitor that locks the interface if probe voltage exceeds the calibrated limit. The system requires a voltage drop of 50V (hysteresis) before resetting, protecting both the user and the amplifier.
  • Data Integrity Clamps: Added “Sanity Checks” to the save/load logic. The system now actively prevents buffer overflows and automatically corrects corrupted data (e.g., from power loss during a save) to prevent device crashes on startup.
  • Screen Current Correction: Implemented an industry-standard calculation model that subtracts screen current (based on a configurable percentage per tube type) from the cathode reading. This ensures the displayed value represents the true Plate Dissipation, providing a safer and more accurate bias setting.

3. UX Polish & Stability

  • Immediate Display Rendering: Rewrote the display logic to use “Force Draw” events on menu transitions. This eliminates screen flicker and ensures values (Watts, %) appear instantly when entering menus, removing visual lag.
  • Smart Editor UI: The tube editor was redesigned to prevent accidental value changes. Navigation is now strictly separated from value adjustment, and specific font-size management prevents text overlapping on small displays.
  • Non-Blocking Timers: Replaced blocking delay() calls with millis() timers for the main loop, keeping the interface responsive even while averaging sensor readings.