Friday, May 8, 2020


Last Revised June 20, 2013

After I completed the Arduino based integrated Small Engine Controller and Alternator Regulator some people expressed interest in a standalone regulator only version.  So I started a designed leveraging the work done on the fully integrated project ( See for the full project which not only regulates the alternator, but provides full integration with the engine and its control - starting, monitoring, speed control, remote display, etc..)

Why do this when there are many existing external regulators already on the market?  Simple:  a chronic issue with existing Volts Only ‘smart’ regulators is they will often under-charge batteries - switching out of Acceptance phase way to early.  And the problem is repeated undercharging will dramatic shortening the life of your expensive battery bank.   The reason for this is simple:  Voltage Only regulators have no idea when the battery has completed its acceptance phase and instead use some pre-determined time period - as opposed to the actually needs of the battery. This became such a problem for me on Viking Star that is removed the fancy 3-stage regulator and installed a simple fixed voltage Truck regulator many years ago.  It works well, though on long trips I need to manually adjust it so as to not overcharge the batteries.

However - by retaining the core ability to monitor Amps as well as Volts this regulator is able to monitor the actual needs of the battery, and exit acceptance charge state when the battery shows it is fully charged.  A much better solution that will not only prevent overcharging, but also eliminate the massive damage to the house battery that results from repeated undercharging via a volts only ‘smart’ regulator.

Of course, this project also retains the ability to limit the amount of load placed on the engine by monitoring Watts and if you are looking to develop a small engine based DC generator without the complexities of the fully integrated project, this might be right for you!

A couple of other special features, some of which may make their way back into the fully integrated controller project include:

  • Improved FET driver circuit, allowing support to P or N type alternators from 12v to 48v without any hardware changes or stuffing options.
  • Integrated Bluetooth module to allow reporting and configuration via an external PC, or Smart Phone (using an app to be written)
  • Simple DIP Switch settings for selection of predefined charge profiles and battery size, plus
  • Ability modify charge profiles and other configurations via Bluetooth without needing to recompile the firmware - changes are storied in EEPROM for future use!

The initial set of 3 PCBs has been ordered, and the firmware written in anticipation of hardware.  Over the summer I will be proofing this design and improving the hardware / firmware, and another person will be writing applications to take advantage of the Bluetooth connection, I hope to get support for a wide range of platforms, ala PCs, Macs, iPhones, Androids??   And of course there is an expansion port; future enhancements might include some support the NMEA-2000...

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 two issue right now, and perhaps folks can help.

1) In the file /lib/index.js are two variables:   deviceName and associatedBus.  They are used to create linkage of the name and battery bank the alternator is connected - but at present I can not figure out how to define them outside of global variables. The issue is if you have two alternators and want to run two copies of this scrip, the names get mixed up - as there is only one locate to store them.   What I want is to have them defined and accessible to each instance of the javescrip ---  Is there a Javascrip expert out there who could point out the quick and simple way to change the code?  Pushes are welcomed!
Update:  This issue has been resolved, and multiple sources are now supported.

2) 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!