mirror of
https://github.com/sjlongland/cluster-powerctl.git
synced 2025-09-13 12:03:14 +10:00
Reduce the solar threshold so that we're at the point where the SSR can work properly. i.e. we're at first light. The battery can discharge for an hour or two at this point, which will give it a break from the charger just before sunrise. This may trigger the other charge controller to charge the battery during the day. Drop the battery voltage just a fraction so we are past the "knee" of the discharge curve at 12.8V.
105 lines
2.7 KiB
C
105 lines
2.7 KiB
C
/*
|
|
* vim: set filetype=c tw=72:
|
|
*/
|
|
|
|
#ifndef _SETPOINTS_H
|
|
#define _SETPOINTS_H
|
|
/*!
|
|
* Personal Cloud power controller firmware
|
|
* (C) 2016 Stuart Longland
|
|
*
|
|
* This program is free software; you can redistribute it and/or modify it
|
|
* under the terms of the GNU General Public License as published by the
|
|
* Free Software Foundation; either version 2 of the License, or (at your
|
|
* option) any later version.
|
|
*
|
|
* This program is distributed in the hope that it will be useful, but
|
|
* WITHOUT ANY WARRANTY; without even the implied warranty of
|
|
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
|
|
* General Public License for more details.
|
|
*
|
|
* You should have received a copy of the GNU General Public License along
|
|
* with this program; if not, write to the Free Software Foundation, Inc.,
|
|
* 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
|
|
*/
|
|
|
|
/*!
|
|
* How long between ADC readings? Milliseconds.
|
|
*/
|
|
#define T_ADC_MS (250)
|
|
|
|
/*
|
|
* Temperature ranges and fan PWM settings
|
|
*/
|
|
#define TEMP_MIN (270 << 6) /*!< ~20°C, approx ADC reading */
|
|
#define TEMP_MAX (350 << 6) /*!< ~30°C, approx ADC reading */
|
|
#define FAN_PWM_MIN (88) /*!< Minimum PWM value */
|
|
#define FAN_PWM_MAX (255) /*!< Maximum PWM value */
|
|
|
|
/*! Fan kick-start timeout, seconds */
|
|
#define T_FAN_S (15)
|
|
|
|
/*
|
|
* ADC Voltage divider settings
|
|
*/
|
|
#define VDIV_R1 (1500ULL) /*!< R1 = 1.5kOhm */
|
|
#define VDIV_R2 (100ULL) /*!< R2 = 100 Ohm */
|
|
/*
|
|
* ADC settings
|
|
*/
|
|
#define ADC_REF (1100ULL) /*!< AREF = 1.1mV */
|
|
#define ADC_MAX (65535ULL) /*!< ADLAR = 1 */
|
|
|
|
/* --- Thresholds --- */
|
|
|
|
/*!
|
|
* High battery voltage. If we reach this voltage and the charger
|
|
* stops, just switch to discharge mode, consider the job done.
|
|
*/
|
|
#define V_H_MV (14400)
|
|
|
|
/*!
|
|
* Low battery voltage. If the voltage dips to or below this level, we
|
|
* should turn the charger on if it remains below this level for T_LOW_S
|
|
* seconds.
|
|
*/
|
|
#define V_L_MV (12750)
|
|
|
|
/*!
|
|
* Critical Low battery voltage. If the voltage dips to or below this
|
|
* level, we should turn the charger on *immediately*, ignore all timeouts.
|
|
*/
|
|
#define V_CL_MV (12200)
|
|
|
|
/*!
|
|
* Solar minimum voltage. If the solar is below this threshold, we
|
|
* consider it too low to reliably charge the system.
|
|
*/
|
|
#define V_SOL_MIN_MV (4000)
|
|
|
|
/* --- Timeouts --- */
|
|
|
|
/*!
|
|
* How long do we remain in the charge state?
|
|
*/
|
|
#define T_CHARGE_S (900)
|
|
|
|
/*!
|
|
* How long do we remain on the mains charger after reaching V_H_MV?
|
|
*/
|
|
#define T_FLOAT_S (900)
|
|
|
|
/*!
|
|
* How long do we remain on the solar charger after dropping below V_L_MV?
|
|
* (If we drop below V_CL_MV, go straight to mains charger regardless of
|
|
* timer.)
|
|
*/
|
|
#define T_LOW_S (3600)
|
|
|
|
/*!
|
|
* LED blink interval in milliseconds.
|
|
*/
|
|
#define T_LED_MS (250)
|
|
|
|
#endif
|