Friday, May 8, 2020


--Protect your Battery --
-- Protect your Alternator --
-- Optimize your System --

These are the three guiding principals of the Alternator Regulator.  Today’s DC systems are more than a simple alternator & battery with a few lights.  In addition to recharging your battery, alternators need to also support ongoing loads and power equipment, even large dynamic swings from perhaps an inverter + washer/dryer which can interrupt a recharging session mid-cycle.  All makes for a complex environment to try to understand and adjust for.   The Alternator Regulator uses a series of sensors to fully understand these complex issues.  Now in its 3rd generation it has been deployed in Marine, RV, as well as off-grid applications across the world supporting battery technologies ranging from traditional lead-acid to modern LiFeP04 technologies.

Protect your Battery:

By carefully monitoring battery voltage, battery current, and battery temperature, the Alternator Regulator is able to closely follow manufactures recommendations for complete and safe recharging of your battery.  High precision voltage monitoring and regulation  – often to within 0.02v of manufactures targets assure no over-stressing of batteries.  Monitoring of battery acceptance current allow for accurate measurement of the battery's charge state (vs. time based estimates) to properly determine when to end charging and prevent chronic undercharging of batteries – perhaps the leading cause of early storage battery failures.  Combined with temperature compensation and a philosophy of Protect the Battery 1st the Alternator Regulator delivers  proper and safe charging of your battery.

Protect your Alternator:

High capacity storage battery banks combined with high-acceptance rate battery technologies (e.g., AGM, LiFeP04) can cause stresses to your alternator.  The Alternator Regulator is able to monitor the real-time operational status of your alternator and adjusts its output to assure long life while at the same time maximizing its output.  By actively regulating the alternators temperature (as opposed to simple pull-backs), the Alternator Regulator operates your alternator at its peak capacity while not over stressing it.

Optimize your system:

The Alternator Regulator is simple to install and use.  In the simplest installation only 4 wires are needed along with basic configuration via DIP switches.   Adding additional sensing wires (current shunt, temperature sensors, stator signals) each unlock additional capabilities of the Alternator Regulator.  3nd generation regulators introduce a CAN (Control Area Network) which may optionally utilize the industry proven method of Remote Instrumentation – allowing battery voltage, current, and temperature to be communicated and eliminating the need to route individual dedicated sensor wires all the way to the battery: simple install a BMS or Battery Monitor at the battery and click in a CAT-5 cable.

Able to support a wide range of engines, be it a dedicated engine as part of a DC generator, a large prime mover, or a small sail boat auxiliary engine, the Alternator Regulator is able to limit the maximum  alternator load to match the engine and drive belts capabilities – of critical importance when utilize  high-capacity alternators on engines of modest horse power.   A unique Adaptive Idle capability furthers adjusts the alternator load to match the engines power curve throughout its RPM range – assuring maximum alternator output while preventing engine stalling and/or sluggish performance at or near idle.

A full set of ASCII configuration commands allow detailed configuration beyond the simple DIP switches – providing complete control to fit YOUR exact installation needs.  Real time status and configuration is communicated via additional ASCII strings, allowing you to confirm configuration and monitor ongoing operation via simple apps on your phone, PC or tablet – or via available Signal-K providers.  Capable of supporting battery voltages from 12v to 48v with no hardware change (including hard to find 32v) and another unique capability to utilize an alternator field voltage different from the battery voltage, allowing use of 12v alternators to provide a low-cost high efficiency 24v or 48v battery charging heads.

Gen3 Alternator Regulator may optionally utilize the CAN to communication with other alternator regulators and charging sources as well as battery monitors and BMSes to deliver a well coordinated ‘systems’ approach of all charging sources:  each understanding the exact needs and status of the battery and delivering that in a well coordinated and prioritized ‘systems’ approach.  The CAN also allows for remote configuration and ongoing monitoring of the status as well as limited ‘NMEA2000 type’ status messages.

Designed for high reliability / efficiency, featuring transportation grade design practices and components, internal software logic self-checks as well as independent external fault / limit checking, fall-back / failover modes (both hardware and software) and more.  The Alternator Regulator takes seriously the task of Protecting your Battery, Alternator, while optimizing your System.  Learn more from the resource tables above, as well as the information blocks to the right.

  • Precision voltage regulations, often within 10mV  vs 100mV or more of many commercial regulators.
  • Monitoring of battery amperage to properly implement manufactures defined battery charge profiles, providing increased safety and less stress to batteries while truly fully charging them.
  • Ability to actively regulate alternator current 
    • Protecting batteries, alternators, and load placed to engine.
    • Providing a truly safe self adjusting ‘float’ mode for modern LeFeP04 batteries (0A in and out) while allowing the alternator to power ongoing electrical loads.
  • Support for 12v to 48v systems, including less common 32v or 36v,  with no hardware changes.
  • Battery voltage does not need to be same as field drive voltage:  Allows use of ‘12v’ alternator as a high efficiency 24v battery charging source.
  • Battery temperate monitoring to protect the battery from over/under temperature situations, as well as adjust voltage targets based on temperature.
  • Active regulation (vs. simple capping) of alternator temperature allows safe operation of alternators in high temperature / high load situations.
  • Alternator load capping, to prevent overloading engine as well as help save belts and increase their life.
  • Adaptive idle pullback to further reduce the load on engines while at low RPMs – allows use of modern efficient / high capacity alternators in engines of modest size
  • Support both P or N type alternators.
  • Multi chemistry, predefined charge profiles for traditional FLA, AGM, GEL, LiFeP04 batteries
  • Custom definable charge profiles allows complete tailoring beyond predefined profiles  to fully implement battery manufactures specifications
  • Flexible feature-in port:  One comm usage is to allow a BMS to signal "Stop-Charging" on LiFeP04 batteries.
  • Simple to upgrade firmware for future enhancements and bug fixes.
  • Participation in the OSEnergy CAN based fully integrated systems approach.  Bringing all its benefits of simplifying installation, increased reliability, and better battery / DC charging systems integration 
    • Also supports relevant NMEA-2000 type PGNs.
  • Simplified installation with industry proven Remote Instrumentation ability
  • High-reliability installation options, to allow for continued operation during component and/or wiring failures.
Last Revised March 1, 2017

Thursday, January 11, 2018

Why all the code pushed up to GitHub?

Some folks may have noted a LOT of code pushed up to Github over the past few days. 

I am refreshing the DC Generator controller design, including bringing it up to a like level of OSEnergy support as the Alternator Regulator.

As I do the software porting / refresh there will be changes to the Alternator Regulator source code which is not directly related to the Alternator Regulator, but are being made to allow common source code / code reuse with the DC Generator controller.  Mostly it is naming, and use of #defines and include files.

Some of the edits include changes in the support libs RV-C, so make sure to bring down and update both the source and the libs directory on your local machine.

Monday, January 8, 2018

More robust USB connection, and a new CAN Dongle for Windows!

There has been increased interest in monitoring the Alternator Regulators, with some nodeJS scripts even in the works!   This however brings out the question:  What is the best way to attach to the regulators for long term monitoring?

My short answer: CAN

The CAN is designed for just this, the problem had been locating reasonably priced CAN adapters for PCs.  That has changed this past summer, as there is new a flood of low-cost CAN to USB adapters available for under $25.  One good source being:   Seed Studio is not the manufacture of this device, but they are well supporting it.  It is readily available from them, Ebay, Amazon (though at an insane price) and even Mouser and Digikey  (Hint, google the Seed Studio part number: 114991193  to see a few purchasing options).

To connect it up take a standard CAT-5 cable, cut one end off and connect the CAN-H and CAN-L wires.  If your PC does NOT already have some type of grounding back to the batteries negative terminal, also connect the CAN-GND wire.  That one will take some fiddling with.  Try it 1st without connecting the CAN-GND wire, if you start getting errors see if connecting the GND wire helps.  (We are hoping to avoid multiple ground paths back to the battery, aka a Ground Loop).

The RJ45 connector follows the CiA-303 spec for wiring, and when using standard CAT5 cables the wiring SHOULD be like this:

Regulator’s RJ45
CAT-5 color coding
EIA 568A
EIA 568B

Sorry, but there are two ‘common’ cable standards out there.  You will just have to look to see which one you have by the color of the wire in the 1st position.   For reference, here is the complete RJ45  pinout spec:

Once you have the pigtail on the CAN-USB done just plug it into one of the RJ45 connectors on the Alternator Regulator, does not matter which one.  Then follow the software driver instructions for the CAN-USB dongle and any app you wish to install.   If you have two regulators linked by an existing CAT5 cable, plug the CAN-USB pigtail into the open port on either regulator and remove the blue jumper on the TERM post for that regulator.  Then continue with driver/software install.  As a bonus, one of these CAN-USB dongles will provide access to BOTH regulators!

I have ordered one of these devices and have high hopes that with it and the work others in the community are doing we can get a simple and nice status display going.  Plus, this will be a great way to gain access for the configuration application being written as well!

Well, CAN is great – but if you want to use USB that is also an option.  I am a bit concerned about the long term reliability of the micro-USB connector on the regulators – it really is more for updating/configuration/diag then long term use.  And of course there is a distance limitation associated with USB (though active booster cables help).  One idea for a more robust USB connection is to install the 5-pin header into the PCB (just next to the existing USB micro connector) and use a cable to connect to that header.   The header pinout conforms to the standard PC 4 or 5 pin headers and there are several options out there, looking something like this:

The 5-pin header pinout spec is:

Note that some cables do not contain shielding, and hence are 4-pin.

Some ideas for sources include:

A ton of options out there - most all type ‘A’ in both male and female.  So, CAN is nice but if you are looking to do USB long term, consider connecting via a USB header.

Sunday, December 3, 2017

New batch of Fully Assembled Regulators are in!

The next batch of regulators have arrived and are ready to be sent out to anyone wishing one.

Same price, same shipping.   Oh, and also I have a bunch of the 10K NTC temperature sensors.   Nothing special, same thing you can get on Amazon or Ebay.  I just picked up a batch of 100x.   They are 3' (1m) long and have the JST plug already crimped on.   Passing them on @ $1 each if interested.

Saturday, September 30, 2017

Firmware v1.1.1 released

V1.1.1 release of the Alternator Regulator firmware has enhancements around CAN communications, improved temperature management, and has undergone internal code restructuring to reduce size.

Make sure to also download the latest quick-start and reference guide from the documentation folder.

A note: The libraries have changed with this release; specifically there is a customized NMEA2000 support file, NMEA2000-ALT.  This lib has had unused capabilities edited out to reduce code size.  Make sure to copy all the lib support files if you are looking to recompile the source.

 New Capabilities

  • Engine RPMs via CAN message: J1939 Engine Speed - PGN 61444 

Connecting the Alternator Regulators CAN port to an engine which supports J1939  will allow engine RPMs to be picked up via the CAN.   Such RPM messages will take precedence to RPMs determinations made via the Stator wire.

There is also a new compile option: `DISABLE_ON_J1939_RPMs` in `Config.h`  When selected the Alternator Regulator will monitor engine RPMs and place the regulator into a disabled mode when RPMs fall below 400 RPMs (or are not longer measurable either via the Stator or via a PGN 61444 message).  This compile option allows the regulator to be permanently powered on (Enable always powered) and use RPMs as a way to decide if the alternator needs to be running or not.

If you use this capability, make sure to set the ENGINE-ID vai the $CCN command to match the engine ID the alternator is attached to.

  • Engine RPMs reported out via NMEA2000^TM^ like CAN message: Engine parameters rapid  - 127488L

Connecting the Alternator Regulator's CAN port to an existing NMEA2000 network will allow for the transmission of engine RPMs via NMEA2000 like messages (note, the Alternator Regulator is not a certified NMEA2000 device, though some of its capabilities are equivalent).  RPMs will be reported independent of the source: Stator derived measurement, or the above mentioned J1939 Engine Speed CAN message.

  • Engine Instance ID

Partly in support of the above, a new capability to define the Engine ID has been added to the $CCN ASCII command.


  • Alternator temperature regulation logic has been enhanced.  The PID engine has been made more responsive to detecting an approaching over-temperature situation, and additional protection has been placed in the case of massive over temperature conditions overwhelming the capabilities of the PID engine.

With the advent of low-impedance batteries, most specifically LiFeP04 technologies, one needs to be very careful not to over-stress the alternator.  Careful temperature senor placement (on the rectifiers is recommended) is strongly suggested.  It is also suggested to enable Small-Alt mode on any alternator weighing less than 25 lbs.  Small mass alternators are especially susceptible to overheating and potential damage.  Once confidence has been established in the total install, one can look to increase output while carefully monitoring.

 Code Restructuring
There has been several edits / optimizations to the code to reduce code size, including some of the supporting libraries.   Code changes have also occurred in preparation to allow for reuse in other projects, specifically the CAN and ASCII subsystems.

The Source Code has been moved to the Github repository, look here for the latest release:

Sunday, September 17, 2017

Failure Analysis

I received a Gen 3 regulator from the field which had been working well, and then stopped providing any drive the Alternators field.  Over the past couple of days I have been assessing what  failed.  This is my findings:

The FET driver chip (U7).  It is able to properly create the needed gate voltage levels, but it is unable to support any load placed on it.

The FETs used are a massive overkill for this application, on purpose:  I wanted to offer good efficiency (less wasted heat) and to be able to support large frame alternators without any concern of the ability to carry current.  And I used two of them.  (The connector is actually the limiting factor - 18A rating).  These large FETs do come with a rather large input capacitance which has to be driven by the FET driver chip.  Calculations show the driver chip is able to meet the FET requirements, and measurements confirm it, though there is indeed little margin.   Even so my suspension is the driver chip is bring pushed a too hard - causing the failure.

As a corrective action I will be increasing the gate series resistors from 10 ohms to 27 ohms.  This will reduce gate current significantly (about half) with little impact to the turn-on time and power (a gain of 25nS, and 20uW or so per FET).  Changes are:

R26, R29:  Was 10 ohm →   27 ohm

All regulators shipped after today will be assembled with these modifications.  If anyone wishes to refit their existing regulator the above parts may be sourced locally  (resistors are SM0603  --  1%), or I can send you the components, or you can mail the regulator back to me and I will refit and return it to them.   Please Email me if you are interested in me sending out the parts or reworking your existing regulator.

An alternative field modification may also be made to gain margin:  Remove R29. Be carefully not to damage the PCB if you wish to do the above mod at a later time.  Removing R29  will disable the redundant FET and reduce the driver load.  The remaining single FET is able to support 100's of amps peak, and is more than sufficient for any alternator application.

Thursday, July 13, 2017

Firmware v1.1.0 posted

Today firmware v1.1.0 has been posted to both the google drives under the resource tabs above, and the github repository at:
There is Users Guide has also been revised:

v1.1.0 of the firmware contains one very significant change, the units used to represent temperatures.  The have been changed from degrees Fahrenheit to degrees Celsius.   This change was made to better align with worldwide temperature units, and in preparation for a potential configuration application which would support devices beyond the Alternator Regulator.

A side effect of this update is any existing configuration changes made via ASCII commands will need to be reissued as when upgrading to version 1.1.0 of  the firmware all configurations will be set to the default state.

There are several other changes in this firmware, including:
  • Addition of a Tach-mode override to the $SCT: command
  • Bug fix with CAN Terminal mode (ASCII wrapper)
  • Better support of small alternators with large battery banks 
  • Potential solution to dual-alternator self-balancing capability.

For those interested in the details, the GitHub repository will show all changes.

Note that some of the supporting libraries have changed as well, please make sure to download new copies of:  RVCMessges.cpp and RVCMessages.h as well as the avr_can.cpp files.

Friday, February 10, 2017

Signal-K and the Alternator Regulator

Here is it!  For some time I have been working on and off with the Signal-K team to add electrical components.  Slow work, at times on the back burner  - but today I can share this with you:

What you are seeing is a simple Signal-K display showing real-time alternator voltage and current, as well as temperature (in kelvin - 308 --> ~35c/94f)  On the bottom right is the % field drive (57% at this time).

Currently the 'connection' is made via a serial port, with a javescript provider converting the ASCII status strings from the regulator into Signal-K JSON messages.  The 'provider' is located here:

The script will work with Gen 2 or Gen 3 regulators, no problem.  And if you have the blue-tooth module installed you could point the incoming ASCII steam to the script wirelessly!

It is based on the  NMEA0183 --> SignalK converter, thank you to Fabian Tollenaar.   I do have an issue right now, and perhaps folks can help:  I use a windows client for pushing files up to github.  Seems there is an issue with this where the 'executable' permission flag is lost.  The impact is if you try to run the demo on a Linux or Apple machine you will get a 'non-executable' trap.  Presently one has to change the permission of the file 'osenergy-from-file' to allow execution.   There may be a way to configure github to force this, again if there are any github experts out there - please speak up!

OK - a start.  There is still work to be done, the Signal-k spec needs to be expanded, I need to solve the global-variable issue above, and the next step will be to create a CAN based bridge.  My RPi and CAN shield are already on order!