{"id":29659434,"url":"https://github.com/byronap/exciterdriver","last_synced_at":"2025-07-22T09:12:01.121Z","repository":{"id":298398511,"uuid":"999801132","full_name":"ByronAP/ExciterDriver","owner":"ByronAP","description":"Alternator Regulator Field Controller","archived":false,"fork":false,"pushed_at":"2025-06-10T23:16:55.000Z","size":735,"stargazers_count":0,"open_issues_count":0,"forks_count":0,"subscribers_count":0,"default_branch":"dev","last_synced_at":"2025-07-18T12:56:50.566Z","etag":null,"topics":[],"latest_commit_sha":null,"homepage":null,"language":"C++","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"mit","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/ByronAP.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":"CONTRIBUTING.md","funding":null,"license":"LICENSE","code_of_conduct":"CODE_OF_CONDUCT.md","threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null,"zenodo":null}},"created_at":"2025-06-10T20:05:35.000Z","updated_at":"2025-06-10T23:15:27.000Z","dependencies_parsed_at":"2025-06-10T23:39:13.185Z","dependency_job_id":null,"html_url":"https://github.com/ByronAP/ExciterDriver","commit_stats":null,"previous_names":["byronap/exciterdriver"],"tags_count":3,"template":false,"template_full_name":null,"purl":"pkg:github/ByronAP/ExciterDriver","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/ByronAP%2FExciterDriver","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/ByronAP%2FExciterDriver/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/ByronAP%2FExciterDriver/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/ByronAP%2FExciterDriver/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/ByronAP","download_url":"https://codeload.github.com/ByronAP/ExciterDriver/tar.gz/refs/heads/dev","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/ByronAP%2FExciterDriver/sbom","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":266463658,"owners_count":23932905,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","status":"online","status_checked_at":"2025-07-22T02:00:09.085Z","response_time":66,"last_error":null,"robots_txt_status":null,"robots_txt_updated_at":null,"robots_txt_url":"https://github.com/robots.txt","online":true,"can_crawl_api":true,"host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":[],"created_at":"2025-07-22T09:11:59.424Z","updated_at":"2025-07-22T09:12:01.109Z","avatar_url":"https://github.com/ByronAP.png","language":"C++","funding_links":[],"categories":[],"sub_categories":[],"readme":"# ExciterDriver\n\u003cp style=\"display: flex; align-items: center;\"\u003e\n  \u003cimg src=\"assets/logo.svg\" alt=\"ExciterDriver Log\" style=\"width:60px; height:auto;\"\u003e\n  \u003cspan style=\"margin-left: 30px; font-size: 18px;\"\u003eAn Open-Source Alternator Regulator Field Controller\u003c/span\u003e\n\u003c/p\u003e\n\n[![Build Status](https://github.com/ByronAP/ExciterDriver/actions/workflows/main-pipeline.yml/badge.svg)](https://github.com/ByronAP/ExciterDriver/actions/workflows/main-pipeline.yml) [![Latest Release](https://img.shields.io/github/v/release/ByronAP/ExciterDriver)](https://github.com/ByronAP/ExciterDriver/releases) [![License: MIT](https://img.shields.io/badge/License-MIT-yellow.svg)](https://opensource.org/licenses/MIT)\n\n***\n\n**A modern, robust, and fully-featured alternator voltage regulator field controller based on the Arduino Nano platform.**\n\nThis project replaces traditional, outdated internal or external alternator regulators with a smart, microcontroller-based system. It offers features like precise voltage control, tachometer-assisted engine state detection, soft-start for smooth engagement, and comprehensive fault detection with onboard diagnostics.\n\nThe name \"ExciterDriver\" comes from its core function: it is a smart **Driver** for the alternator's **Exciter** (or field) coil.\n\n## Features\n\n- **Precise Voltage Regulation:** Utilizes a PID control loop to maintain a stable target voltage (e.g., 14.2V), which is easily configurable.\n- **Tachometer-Assisted Logic:** Uses an engine tachometer signal for fast and reliable detection of engine state (running/stopped), with an automatic fallback to voltage-only logic if no tach signal is present.\n- **Soft Start:** Gently ramps up the alternator field current upon engine start, preventing sudden mechanical load on the engine and belts.\n- **Robust Fault Detection:** Actively monitors for over-voltage, under-voltage, tachometer signal failure, and other fault conditions.\n- **Onboard Diagnostics:** A unique \"Diagnostic Mode\" allows users to retrieve stored fault codes from the previous run cycle by simply using a push-button—no computer required.\n- **Hardware Protection:** Designed with real-world automotive electrical systems in mind, with logic to handle signal noise, voltage sags, and other common issues.\n- **Configurable \u0026 Open Source:** All key parameters (target voltage, PID gains, timings) are easily adjustable in the source code.\n\n## Repository Structure\n\n```\n.\n├── assets/                # Images and Misc\n├── hardware/              # Schematics, PCB layouts, and hardware documentation\n├── src/ExciterDriver      # Main Arduino source code (ExciterDriver.ino)\n├── src/CalibrationHelper  # Calibration Arduino source code (CalibrationHelper.ino)\n├── CODE_OF_CONDUCT.md     # Contributor Code of Conduct\n├── CONTRIBUTING.md        # Contributor guidelines and style guide\n├── LICENSE                # MIT License\n└── README.md              # This file\n```\n\n## Hardware Requirements\n\nA detailed schematic can be found in the `hardware/` directory. The core components are:\n\n- **Arduino Nano:** The brain of the system.\n- **Logic-Level N-Channel MOSFET:** To control the high-current alternator field coil. A recommended model is the **IRLR3110Z** or similar logic-level FET capable of handling \u003e10A.\n- **Voltage Divider:** To safely measure the battery voltage with the Arduino's analog input.\n  - **R1:** 22kΩ (from Battery+ to A0)\n  - **R2:** 10kΩ (from A0 to GND)\n- **Protection Components:**\n  - A 5.1V Zener diode and a 100Ω resistor on the analog input pin for over-voltage protection.\n- **LEDs and Resistors:** For status, field, and error indicators.\n  - **Field LED (D10):** Shows the activity of the alternator field.\n  - **Error LED (D11):** Illuminates when a fault is detected.\n- **Diagnostic PIN (A3):** A momentary push-button or jumper connected between pin `A3` and `GND` for accessing the diagnostic mode.\n\n**Important:** Ensure all components share a common ground with the vehicle's chassis and battery.\n\n## Software Setup\n\n1. **Install Arduino IDE:** Download and install the latest version from the [Arduino website](https://www.arduino.cc/en/software).\n2. **Open the Sketch:** Open the `src/ExciterDriver/ExciterDriver.ino` file in the Arduino IDE.\n3. **Board Selection:** In the IDE, go to `Tools \u003e Board` and select \"Arduino Nano\".\n4. **Processor Selection:** Go to `Tools \u003e Processor` and select \"ATmega328P\". Depending on your Nano clone, you may need to select \"ATmega328P (Old Bootloader)\".\n5. **Upload:** Connect your Arduino Nano via USB and upload the sketch.\n\n### Initial Calibration (Recommended But Not Required)\n\nFor maximum accuracy, the voltage sensing circuit should be calibrated to your specific components using 2 points.\n\n1. **Upload the Calibration Sketch:** A helper sketch for calibration can be found in the `src/CalibrationHelper/` directory.\n2. **Apply Known Voltages:** Using a variable bench power supply and a trusted multimeter, apply two known voltages (e.g., 12.0V and 14.5V) to the regulator's input.\n3. **Record ADC Values:** Note the raw ADC values reported by the calibration sketch for each voltage point.\n4. **Update `ExciterDriver.ino`:** Enter your measured values into the `VOLTAGE CALIBRATION \u0026 REGULATION` section at the top of the main source file.\n\n```cpp\n// Update these values with your specific bench measurements.\nconst float CAL_LOW_VOLTS = 12.001;\nconst int   CAL_LOW_ADC   = 742;\nconst float CAL_HIGH_VOLTS = 14.499;\nconst int   CAL_HIGH_ADC   = 854;\n```\n\n## Using the Onboard Diagnostics\n\nThis system can store fault codes from its last run cycle. To retrieve them:\n\n1. **Power Down:** Ensure the device is completely powered off.\n2. **Press and Hold:** Connect the diagnostic pin `A3` or button to ground.\n3. **Power On:** While still connected to ground, apply power to the device.\n4. **Observe the Error LED:** The device will now enter Diagnostic Mode. The `Error LED` (D11) will blink to indicate any stored fault codes.\n\n**Fault Codes:**\n- **1 Blink:** Over-Voltage Fault\n- **2 Blinks:** Under-Voltage Fault (while running)\n- **3 Blinks:** Alternator Probing Timeout\n- **4 Blinks:** Tachometer Signal Failure\n\nIf multiple faults are stored, the system will blink the first code, pause for 2 seconds, blink the next code, and so on. If no faults are found, the Error LED will turn on solid for 2 seconds.\n\nThe device will repeat the sequence every 5 seconds until it is power-cycled.\n\n**Normal Operation:** To run the regulator normally, simply power it on *without* grounding the diagnostic pin or button. This will clear the fault log from the previous run and begin normal operation.\n\n## Contributing\n\nContributions are welcome! Please feel free to open an issue to report bugs or suggest features. If you would like to contribute code, please fork the repository and submit a pull request.\n\nPlease read our [CONTRIBUTING.md](CONTRIBUTING.md) before contributing.\n\n## License\n\nThis project is licensed under the MIT License - see the [LICENSE](LICENSE) file for details.","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fbyronap%2Fexciterdriver","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fbyronap%2Fexciterdriver","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fbyronap%2Fexciterdriver/lists"}