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!