Home
JAQForum Ver 20.06
Log In or Join  
Active Topics
Local Time 12:34 16 May 2024 Privacy Policy
Jump to

Notice. New forum software under development. It's going to miss a few functions and look a bit ugly for a while, but I'm working on it full time now as the old forum was too unstable. Couple days, all good. If you notice any issues, please contact me.

Forum Index : Electronics : Inverter PCB’s

     Page 26 of 29    
Author Message
Madness

Guru

Joined: 08/10/2011
Location: Australia
Posts: 2498
Posted: 08:30am 11 Aug 2018
Copy link to clipboard 
Print this post

Yes that one should be fine, when I searched previously they were all $50 plus.

15V should be okay, another alternative is a wall wart if you can find one that is isolated which I think they all should be. Such as this.
There are only 10 types of people in the world: those who understand binary, and those who don't.
 
renewableMark

Guru

Joined: 09/12/2017
Location: Australia
Posts: 1678
Posted: 08:51am 11 Aug 2018
Copy link to clipboard 
Print this post

Yeah, it doesn't have to be the cheapest solution, just the most appropriate.
If you consider the cost of off the shelf solutions spending a few bucks on parts isn't a big deal if the end goal is achieved.

Thanks mate, that's good, the whole board will be all ELV DC now.

I have the silicone sheet to isolate the tips and gti fets.

Ripper!
Cheers Caveman Mark
Off grid eastern Melb
 
Solar Mike
Guru

Joined: 08/02/2015
Location: New Zealand
Posts: 1129
Posted: 09:17am 11 Aug 2018
Copy link to clipboard 
Print this post

  renewableMark said   Would a 15v input work like from this here


Bit of a warning for anyone thinking of using this psu module for powering any battery driven gadgetry, the output -ve rail has a current sense resistor in series to 0 volts, so its not at 0v potential. Consequently if your powered device is measuring DC voltages with respect to 0v, they will vary with current draw. If your device makes a 0v gnd connection then it will short out the sense resistor and likely blow something up.

Cheers
Mike
 
Madness

Guru

Joined: 08/10/2011
Location: Australia
Posts: 2498
Posted: 11:05am 11 Aug 2018
Copy link to clipboard 
Print this post

In this case it is driving MOSFETs that are floating so should be okay.
There are only 10 types of people in the world: those who understand binary, and those who don't.
 
Madness

Guru

Joined: 08/10/2011
Location: Australia
Posts: 2498
Posted: 06:31am 16 Aug 2018
Copy link to clipboard 
Print this post

Just did a small update for the voltage sensing of the Control board PCB.

With this version, you must change the 9K1 resistor located at the top end of the Nano with a 5K1 or a 4K7 either is fine. This better range sensing into the higher end of the voltage range.

[code]
/* YourDuino.com Example: Multiple DS18B20 Temperature Sensors
Displayed on 4x20 character LCD display

DS18B20 Pinout (Left to Right, pins down, flat side toward you)
- Left = Ground
- Center = Signal (Pin 9): (with 3.3K to 4.7K resistor to +5 or 3.3 )
- Right = +5 or +3.3 V

terry@yourduino.com */

/*-----( Import needed libraries )-----*/
#include <OneWire.h>// Get 1-wire Library here: http://www.pjrc.com/teensy/td_libs_OneWire.html
#include <DallasTemperature.h>//Get DallasTemperature Library here: http://milesburton.com/Main_Page?title=Dallas_Temperature_Control_Library
#include <Wire.h>// Wire (I2C) Library
#include <PID_v1.h> //PID LIB for fan speed
#include <LiquidCrystal.h>// LCD Library
#include <LiquidCrystal_I2C.h>
#include <avr/wdt.h>//Watchdog Lib
// set the LCD address to 0x27 for a 20 chars 4 line display
// Set the pins on the I2C chip used for LCD connections:
// addr, en,rw,rs,d4,d5,d6,d7,bl,blpol

#define ONE_WIRE_BUS 4 // Data wire is plugged into port 4 on the Arduino
#define pwmH 6
#define pwmTR 5



/*-----( Declare objects )-----*/
// Setup a oneWire instance to communicate with any OneWire devices
// (not just Maxim/Dallas temperature ICs)
OneWire oneWire(ONE_WIRE_BUS);

// Pass address of our oneWire instance to Dallas Temperature.
DallasTemperature sensors(&oneWire);


//-----------------------------CHANGE THESE AS REQUIRED---------------------------------------------------------------------------------

// Start the LCD display library
LiquidCrystal_I2C lcd(0x27, 2, 1, 0, 4, 5, 6, 7, 3, POSITIVE); // Set the LCD I2C address change this 0x3F or 0x27 if nothing on the LCD
double HSsetpoint = 40; //Heatsink Target Temperature
double TRsetpoint = 50; //Toroid Target Temperature
int MinVolts = 47; //Battery Volts to shut down
int TimeAtMinVolts = 20; //How many seconds below MinVolts till shout down is triggered
int RestartTime = 10; // How many minutes to restart if battery volts recover above MinVolts
//DeviceAddress Probe01 = { 0x28, 0xEE, 0xDC, 0x17, 0x2E, 0x16, 0x01, 0x9D }; // Address printed on Sensor connected to Heatsink 8KW
//DeviceAddress Probe02 = { 0x28, 0xEE, 0x2E, 0xE1, 0x1C, 0x16, 0x01, 0x51 }; // Address printed on Sensor connected to Toroid
DeviceAddress Probe01 = { 0x28, 0xEE, 0xDC, 0x17, 0x2E, 0x16, 0x01, 0x9D }; // Address printed on Sensor connected to Heatsink
DeviceAddress Probe02 = { 0x28, 0xEE, 0x2E, 0xE1, 0x1C, 0x16, 0x01, 0x51 }; // Address printed on Sensor connected to Toroid
//------------------------------STOP HERE IF YOU ARE NOT SURE---------------------------------------------------------------------------


int HSmax;
int TRmax;
int FANtempH;
int FANtempT;
double tempTR;
int tempTR1;
double tempHS;
int tempHS1;
double fanspeedH;
double fanspeedT;
double fanpwmH;
double fanpwmT;
int fanpercentH;
int fanpercentT;

const int numReadings = 10;
double Setpoint, Input, Output;

int readings; // the readings from the analog input
int readIndex = 0; // the index of the current reading
int total = 0; // the running total
int average = 0; // the average

int voltsinputPin = A7;

boolean singlecase = false; // true for all in one case, false for divided case with seperate fans for heatsink and toriod.
float R1 = 100000.0; // resistance of R1 (100K)
float R2 = 10000.0; // resistance of R2 (8K2) For setting up voltage divider to get correct voltage reading Use in conjunction with trim pot on pcb
double vin = 0.0;
double vout = 0.0;
int beeper = 11;// the number of the beeper pin
int beeperstate = LOW;
int ShutDown = 3;// the number of the shutdown pin
boolean beeping = false;
unsigned long previousMillis = 0;
const long interval = 750; // interval at which to beep (milliseconds)
long LVStart;
long timenow;
long vingood;

double Kp = 120, Ki = 20, Kd = 3; //variables for setting PID for fan speed control
PID HSPID(&tempHS, &fanpwmH, &HSsetpoint, Kp, Ki, Kd, REVERSE);
PID TRPID(&tempTR, &fanpwmT, &TRsetpoint, Kp, Ki, Kd, REVERSE);

void setup() /****** SETUP: RUNS ONCE ******/
{
Serial.begin(9600);
wdt_enable(WDTO_1S); // Setup watchdog to reset after 1 second if no activity
//------- Initialize the Temperature measurement library--------------
sensors.begin();
// set the resolution to 10 bit (Can be 9 to 12 bits .. lower is faster)
sensors.setResolution(Probe01, 10);
sensors.setResolution(Probe02, 10);


//---------------- Initialize the lcd ------------------
lcd.begin(20, 4); // initialize the lcd for 20 chars 4 lines, turn on backlight
lcd.setCursor(0, 0);
HSPID.SetMode(AUTOMATIC);
TRPID.SetMode(AUTOMATIC);

pinMode(beeper, OUTPUT);
pinMode(ShutDown, OUTPUT);
// initialize all the readings to 0:
for (int thisReading = 0; thisReading < numReadings; thisReading++) {
readings = 0;
}

}//--(end setup )---


void loop() /****** LOOP: RUNS CONSTANTLY ******/
{
wdt_reset(); // Reset watchdog timer



lcd.home();
lcd.backlight(); //Backlight ON if under program control
lcd.setCursor(0, 3);
lcd.print("V :");
lcd.print(vin);
sensors.requestTemperatures(); // Send the command to get temperatures
lcd.setCursor(0, 2);
lcd.print(" ");
timenow = millis();
lcd.setCursor(0, 0); //Start at character 0 on line 0
lcd.print("H:");
{

tempHS = sensors.getTempC(Probe01);


if (tempHS == -127.00) // Measurement failed or no device found
{
lcd.print("Error");
tempHS = tempHS1;
}
else
{
lcd.print(tempHS, 0);
tempHS1 = tempHS;
HSmax = max (HSmax, tempHS);
lcd.print(" M:");
lcd.print(HSmax);
}

HSPID.Compute();

{

tempTR = sensors.getTempC(Probe02);

if (tempTR == -127.00) // Measurement failed or no device found
{
lcd.print("Error");
tempTR = tempTR1;
}
else
{
lcd.print(" T:");
lcd.print(tempTR, 0);
tempTR1 = tempTR;
TRmax = max (TRmax, tempTR);
lcd.print(" M:");
lcd.print(TRmax);
}
}


TRPID.Compute();
}

analogWrite (pwmTR, fanpwmT);
analogWrite (pwmH, fanpwmH);
lcd.setCursor(0, 1);
lcd.print("HSFAN% ");
lcd.setCursor(6, 1);
lcd.print(fanpwmH / 2.55, 0);
lcd.setCursor(9, 1);
lcd.print(" TRFAN% ");
lcd.setCursor(16, 1);
lcd.print(fanpwmT / 2.55, 0);


{
// subtract the last reading:
total = total - readings;
// read from the sensor:
readings = analogRead(voltsinputPin);
// add the reading to the total:
total = total + readings;
// advance to the next position in the array:
readIndex = readIndex + 1;

// if we're at the end of the array...
if (readIndex >= numReadings) {
// ...wrap around to the beginning:
readIndex = 0;
}

// calculate the average:
average = total / numReadings;

vout = (average);
vin = vout / 1.5; // Voltage divider calculation
if ((vin >= MinVolts) && (vingood == 0))
{ vingood = millis();
}


if ((vingood > 0) && ((timenow - vingood) > (RestartTime * 60000)))
{ vingood = 0;
}

if ((vin >= MinVolts) && (vingood == 0))
{
lcd.setCursor(9, 3);
lcd.print("VOLTS GOOD");
digitalWrite (ShutDown, LOW);
beeping = false;
}
if (vin >= MinVolts)
{ LVStart = 0;
}

else if (LVStart == 0)
{
LVStart = millis();
}

if ((LVStart > 0) && (timenow - LVStart >= (TimeAtMinVolts * 1000)))
{ lcd.setCursor(9, 3);
lcd.print("LOW VOLTS ");
digitalWrite (ShutDown, HIGH);
beeping = true;


}
if (beeping == true)
{
unsigned long currentMillis = millis();

if (currentMillis - previousMillis >= interval) {
// save the last time you blinked the LED
previousMillis = currentMillis;

// if the LED is off turn it on and vice-versa:
if (beeperstate == LOW) {
beeperstate = HIGH;
} else {
beeperstate = LOW;
}
}




}
}
if (beeping == false) {
beeperstate = LOW;
}
// set the LED with the ledState of the variable:
digitalWrite(beeper, beeperstate);


}

//--(end main loop )---






[/code]Edited by Madness 2018-08-19
There are only 10 types of people in the world: those who understand binary, and those who don't.
 
Madness

Guru

Joined: 08/10/2011
Location: Australia
Posts: 2498
Posted: 05:05am 18 Aug 2018
Copy link to clipboard 
Print this post

Just did some more upgrades to the Arduino Sketch.

If the Heatsink or Toroid get too hot the inverter will shut down until the temperature drops by 10 degrees. Shutdown temperature is set to 60 for the Heatsink and 70 for the Toroid, you can change them if you wish. I have never seen temperatures that hot but if you had a fan failure it could happen.

If it overheats or the voltage drops too low the inverter will shut down and the EG8010 LED will blink 5 times while the Nano has shutdown the EG8010 regardless of the reason. The Nano LCD will display the Error condition.

1 = Low Volts
2 = Heatsink Over Temperature
3 = Toroid Over Temperature

This error will remain on the LCD until the Arduino is reset or new error condition occurs.



Do be aware that the Inverter could restart without warning if a fault has occured. There is the Beeper that will beep until the Nano allows the Inverter to restart. So don't go playing with your AC wiring while it is shutdown!

Also this Code requires a 5K1 resistor in place of the 9K1 in the voltage divider.

[code]
/* YourDuino.com Example: Multiple DS18B20 Temperature Sensors
Displayed on 4x20 character LCD display

DS18B20 Pinout (Left to Right, pins down, flat side toward you)
- Left = Ground
- Center = Signal (Pin 9): (with 3.3K to 4.7K resistor to +5 or 3.3 )
- Right = +5 or +3.3 V

terry@yourduino.com */

/*-----( Import needed libraries )-----*/
#include <OneWire.h>// Get 1-wire Library here: http://www.pjrc.com/teensy/td_libs_OneWire.html
#include <DallasTemperature.h>//Get DallasTemperature Library here: http://milesburton.com/Main_Page?title=Dallas_Temperature_Control_Library
#include <Wire.h>// Wire (I2C) Library
#include <PID_v1.h> //PID LIB for fan speed
#include <LiquidCrystal_I2C.h>
#include <avr/wdt.h>//Watchdog Lib
// set the LCD address to 0x27 for a 20 chars 4 line display
// Set the pins on the I2C chip used for LCD connections:
// addr, en,rw,rs,d4,d5,d6,d7,bl,blpol

#define ONE_WIRE_BUS 4 // Data wire is plugged into port 4 on the Arduino
#define pwmH 6
#define pwmTR 5



/*-----( Declare objects )-----*/
// Setup a oneWire instance to communicate with any OneWire devices
// (not just Maxim/Dallas temperature ICs)
OneWire oneWire(ONE_WIRE_BUS);

// Pass address of our oneWire instance to Dallas Temperature.
DallasTemperature sensors(&oneWire);


//-----------------------------CHANGE THESE AS REQUIRED---------------------------------------------------------------------------------

// Start the LCD display library
LiquidCrystal_I2C lcd(0x27, 2, 1, 0, 4, 5, 6, 7, 3, POSITIVE); // Set the LCD I2C address change this 0x3F or 0x27 if nothing on the LCD
double HSsetpoint = 40; //Heatsink Target Temperature
double TRsetpoint = 50; //Toroid Target Temperature
int MinVolts = 47; //Battery Volts to shut down
int TimeAtMinVolts = 5; //How many seconds below MinVolts till shout down is triggered
int RestartTime = 10; // How many minutes to restart if battery volts recover above MinVolts
int HSTempSD = 60; //Heat Sink Over temperature shut down
int TRTempSD = 70; //Toroid Over temperature shut down
//DeviceAddress Probe01 = { 0x28, 0xEE, 0xDC, 0x17, 0x2E, 0x16, 0x01, 0x9D }; // Address printed on Sensor connected to Heatsink 8KW
//DeviceAddress Probe02 = { 0x28, 0xEE, 0x2E, 0xE1, 0x1C, 0x16, 0x01, 0x51 }; // Address printed on Sensor connected to Toroid
DeviceAddress Probe01 = { 0x28, 0xEE, 0x46, 0x1A, 0x2E, 0x16, 0x01, 0x0A }; // Address printed on Sensor connected to Heatsink
DeviceAddress Probe02 = { 0x28, 0xEE, 0x15, 0x12, 0x1A, 0x16, 0x02, 0x6F }; // Address printed on Sensor connected to Toroid
//------------------------------STOP HERE IF YOU ARE NOT SURE---------------------------------------------------------------------------


int HSmax;
int TRmax;
int FANtempH;
int FANtempT;
double tempTR;
int tempTR1;
double tempHS;
int tempHS1;
double fanspeedH;
double fanspeedT;
double fanpwmH;
double fanpwmT;
int fanpercentH;
int fanpercentT;

const int numReadings = 10;
double Setpoint, Input, Output;

int readings; // the readings from the analog input
int readIndex = 0; // the index of the current reading
int total = 0; // the running total
int average = 0; // the average

int voltsinputPin = A7;

boolean singlecase = false; // true for all in one case, false for divided case with seperate fans for heatsink and toriod.
float R1 = 100000.0; // resistance of R1 (100K)
float R2 = 10000.0; // resistance of R2 (8K2) For setting up voltage divider to get correct voltage reading Use in conjunction with trim pot on pcb
double vin = 0.0;
double vout = 0.0;
int beeper = 11;// the number of the beeper pin
int beeperstate = LOW;
int Error = 0;
int LastError = 0;
int ShutDown = 3;// the number of the shutdown pin
boolean beeping = false;
unsigned long previousMillis = 0;
const long interval = 750; // interval at which to beep (milliseconds)
long LVStart;
long timenow;
long vingood = 0;

double Kp = 120, Ki = 20, Kd = 3; //variables for setting PID for fan speed control
PID HSPID(&tempHS, &fanpwmH, &HSsetpoint, Kp, Ki, Kd, REVERSE);
PID TRPID(&tempTR, &fanpwmT, &TRsetpoint, Kp, Ki, Kd, REVERSE);

void setup() /****** SETUP: RUNS ONCE ******/
{
Serial.begin(9600);
wdt_enable(WDTO_2S); // Setup watchdog to reset after 1 second if no activity
//------- Initialize the Temperature measurement library--------------
sensors.begin();
// set the resolution to 10 bit (Can be 9 to 12 bits .. lower is faster)
sensors.setResolution(Probe01, 10);
sensors.setResolution(Probe02, 10);


//---------------- Initialize the lcd ------------------
lcd.begin(20, 4); // initialize the lcd for 20 chars 4 lines, turn on backlight
lcd.setCursor(0, 0);
HSPID.SetMode(AUTOMATIC);
TRPID.SetMode(AUTOMATIC);

pinMode(beeper, OUTPUT);
pinMode(ShutDown, OUTPUT);
// initialize all the readings to 0:
for (int thisReading = 0; thisReading < numReadings; thisReading++) {
readings = 0;
}

}//--(end setup )---


void loop() /****** LOOP: RUNS CONSTANTLY ******/
{
wdt_reset(); // Reset watchdog timer



lcd.home();
lcd.backlight(); //Backlight ON if under program control
lcd.setCursor(0, 3);
lcd.print("V :");
lcd.print(vin);
sensors.requestTemperatures(); // Send the command to get temperatures
lcd.setCursor(0, 2);
lcd.print(" ");
timenow = millis();
lcd.setCursor(0, 0); //Start at character 0 on line 0
lcd.print("H:");
{

tempHS = sensors.getTempC(Probe01);
//tempHS = 71;

if (tempHS == -127.00) // Measurement failed or no device found
{
lcd.print("Error");
tempHS = tempHS1;
}
else
{
lcd.print(tempHS, 0);
tempHS1 = tempHS;
HSmax = max (HSmax, tempHS);
lcd.print(" M:");
lcd.print(HSmax);
}

HSPID.Compute();

{

tempTR = sensors.getTempC(Probe02);
//tempTR = 80;
if (tempTR == -127.00) // Measurement failed or no device found
{
lcd.print("Error");
tempTR = tempTR1;
}
else
{
lcd.print(" T:");
lcd.print(tempTR, 0);
tempTR1 = tempTR;
TRmax = max (TRmax, tempTR);
lcd.print(" M:");
lcd.print(TRmax);
}
}


TRPID.Compute();
}

analogWrite (pwmTR, fanpwmT);
analogWrite (pwmH, fanpwmH);
lcd.setCursor(0, 1);
lcd.print("HSFAN% ");
lcd.setCursor(6, 1);
lcd.print(fanpwmH / 2.55, 0);
lcd.setCursor(9, 1);
lcd.print(" TRFAN% ");
lcd.setCursor(16, 1);
lcd.print(fanpwmT / 2.55, 0);


{
// subtract the last reading:
total = total - readings;
// read from the sensor:
readings = analogRead(voltsinputPin);
// add the reading to the total:
total = total + readings;
// advance to the next position in the array:
readIndex = readIndex + 1;

// if we're at the end of the array...
if (readIndex >= numReadings) {
// ...wrap around to the beginning:
readIndex = 0;
}

// calculate the average:
average = total / numReadings;

vout = (average);
vin = vout / 1.5; // Voltage divider calculation


if ((vin >= MinVolts) && (vingood == 0))
{ vingood = millis();
}


if ((vingood > 0) && ((timenow - vingood) > (RestartTime * 60000)))
{ vingood = 0;
}

if ((vin >= MinVolts) && (vingood == 0))
{
lcd.setCursor(9, 3);
lcd.print("VOLTS GOOD");
Error = 0;
}
if (vin >= MinVolts)
{ LVStart = 0;
}

else if (LVStart == 0)
{
LVStart = millis();
}

if ((LVStart > 0) && (timenow - LVStart >= (TimeAtMinVolts * 1000)) && (Error == 0))
{ lcd.setCursor(9, 3);
lcd.print("LOW VOLTS ");
Error = 1;


}
if ((tempHS > HSTempSD) && (Error == 0))
{ lcd.setCursor(9, 3);
lcd.print("HS HOT ");
Error = 2;
}
else if ((Error == 2) && (tempHS < HSTempSD - 10))
{ Error = 0;
}
if ((tempTR > TRTempSD) && (Error == 0))
{ lcd.setCursor(9, 3);
lcd.print("TOROID HOT");
Error = 3;
}
else if ((Error == 3) && (tempTR < TRTempSD - 10))
{ Error = 0;
}

if (Error > 0)
{ beeping = true;
digitalWrite (ShutDown, HIGH);
}
else
{ beeping = false;
digitalWrite (ShutDown, LOW);
}

if (beeping == true)
{
unsigned long currentMillis = millis();

if (currentMillis - previousMillis >= interval) {
// save the last time you blinked the LED
previousMillis = currentMillis;

// if the LED is off turn it on and vice-versa:
if (beeperstate == LOW) {
beeperstate = HIGH;
} else {
beeperstate = LOW;
}
}




}
}
if (beeping == false) {
beeperstate = LOW;
}
// set the LED with the ledState of the variable:
digitalWrite(beeper, beeperstate);

if (Error > 0)
{ LastError = Error;
lcd.setCursor(0, 2);
lcd.print("LAST ERROR");
lcd.setCursor(12, 2);
lcd.print(LastError);
}
else if (LastError > 0)
{ lcd.setCursor(0, 2);
lcd.print("LAST ERROR");
lcd.setCursor(12, 2);
lcd.print(LastError);
}
delay(1000);

}

//--(end main loop )---






[/code]

Edited by Madness 2018-08-19
There are only 10 types of people in the world: those who understand binary, and those who don't.
 
Solar Mike
Guru

Joined: 08/02/2015
Location: New Zealand
Posts: 1129
Posted: 06:32am 18 Aug 2018
Copy link to clipboard 
Print this post

Hi Mad

How well do the DS18B20's perform when subjected to the very high magnetic and other interference in close proximity to the inverter electronics. Reason I ask is I use them on solar hot water controllers and occasionally one will play up if I switch an AC load on in the house, the sensor chip looses comm's with the controller due to some sort of interference; the controller is running off a 12 volt battery, no connections anywhere to mains etc. Thus I haven't used them to date in any high power electronics.

Cheers
Mike
 
Madness

Guru

Joined: 08/10/2011
Location: Australia
Posts: 2498
Posted: 06:58am 18 Aug 2018
Copy link to clipboard 
Print this post

One of them is buried in amongst the Toroid windings so they are getting maximum magnetic interference. I was getting errors from them when the Inverter is working hard but this bit of code disregards the bad readings and everything works very nicely.

if (tempHS == -127.00) // Measurement failed or no device found
{
lcd.print("Error");
tempHS = tempHS1;
}
else
{
lcd.print(tempHS, 0);
tempHS1 = tempHS;
HSmax = max (HSmax, tempHS);
lcd.print(" M:");
lcd.print(HSmax);
}
There are only 10 types of people in the world: those who understand binary, and those who don't.
 
Solar Mike
Guru

Joined: 08/02/2015
Location: New Zealand
Posts: 1129
Posted: 09:32am 18 Aug 2018
Copy link to clipboard 
Print this post

Yes that would be consistent with what I found, they read back as -1 degree, guess I could alter the code to detect that, except that -ve temperatures are also expected in the solar panels in icy clear winter nights, so its hard to determined what is a real reading.

Mike
 
Madness

Guru

Joined: 08/10/2011
Location: Australia
Posts: 2498
Posted: 10:38am 18 Aug 2018
Copy link to clipboard 
Print this post

I only get -127 when it fails other readings are correct.Edited by Madness 2018-08-20
There are only 10 types of people in the world: those who understand binary, and those who don't.
 
renewableMark

Guru

Joined: 09/12/2017
Location: Australia
Posts: 1678
Posted: 10:38pm 18 Aug 2018
Copy link to clipboard 
Print this post

OK my machine is shutting down fine from under voltage.
The red led for over current lights up and stays on.
When it shuts down the led next to the 8010 blinks twice for over current.

When the voltage rises enough to bring it back in the good range the red led goes out, the 8010 still blinks twice, but it doesn't restart.



On an unrelated issue the battery adjustment voltage seems to be hard to adjust very finely. the volts read 48.00 tiny bit more and it goes to 48.67, then 49.00, then 49.33.
If I replace that 10kpot with a 10 turn, will the voltage be able to be set more precisely?
It's not a big deal, just wondering if it's an easy fix, then I'll do it.
Cheers Caveman Mark
Off grid eastern Melb
 
Madness

Guru

Joined: 08/10/2011
Location: Australia
Posts: 2498
Posted: 11:23pm 18 Aug 2018
Copy link to clipboard 
Print this post

Overcurrent does not reset by itself and never has and never will. Also it is not related to voltage, if you catch it right away you can reset it by shorting out the middle pin of the SCR to ground otherwise you have to reset the EG8010 by completely powering it down, there is no other option. There is much more detail in JohnMc's thread.

Voltage adjustment is not perfect and part of that is why the Regulator has the Analogue to digital converter in it. What you are seeing is the steps that Arduino can recognise, you can get it within 0.17 of a volt which is enough resolution for the application.
There are only 10 types of people in the world: those who understand binary, and those who don't.
 
renewableMark

Guru

Joined: 09/12/2017
Location: Australia
Posts: 1678
Posted: 11:51pm 18 Aug 2018
Copy link to clipboard 
Print this post

When it shuts down from undervoltage it appears to be telling my 8010 that it's overcurrent.
Tried it a few times with zero load on the inverter so it can't be an actual overcurrent.

When the arduino sees low volts it shuts down the control board, red light goes on and stays on and green light flashes twice for over current.
Cheers Caveman Mark
Off grid eastern Melb
 
Madness

Guru

Joined: 08/10/2011
Location: Australia
Posts: 2498
Posted: 12:37am 19 Aug 2018
Copy link to clipboard 
Print this post

Put your meter on the current and temperature feedback pins on the EG8010 connector to see if they are not connected by a solder bridge or something. It should not be triggering overcurrent.



Edited by Madness 2018-08-20
There are only 10 types of people in the world: those who understand binary, and those who don't.
 
renewableMark

Guru

Joined: 09/12/2017
Location: Australia
Posts: 1678
Posted: 12:51am 19 Aug 2018
Copy link to clipboard 
Print this post

That will be it, got a beep there between the two.
Cheers Caveman Mark
Off grid eastern Melb
 
renewableMark

Guru

Joined: 09/12/2017
Location: Australia
Posts: 1678
Posted: 06:51am 22 Aug 2018
Copy link to clipboard 
Print this post

Yep, that was it, works like a charm now, shuts down and restarts perfectly.

Only problem I have now is the heatsink fan seems to run constantly, only the bottom one. Not too fussed about that, pretty low priority, I'll look at it in a few days. I want to focus on the regulator now.

Also got the fault beeper working, I just noticed it was polarised.Edited by renewableMark 2018-08-23
Cheers Caveman Mark
Off grid eastern Melb
 
Madness

Guru

Joined: 08/10/2011
Location: Australia
Posts: 2498
Posted: 06:58am 22 Aug 2018
Copy link to clipboard 
Print this post

Might be the same problem as the overcurrent turning on.
There are only 10 types of people in the world: those who understand binary, and those who don't.
 
renewableMark

Guru

Joined: 09/12/2017
Location: Australia
Posts: 1678
Posted: 07:03am 22 Aug 2018
Copy link to clipboard 
Print this post

Well it's not on fire, so that's a plus for me!
I'll fix it at some point.
Cheers Caveman Mark
Off grid eastern Melb
 
Madness

Guru

Joined: 08/10/2011
Location: Australia
Posts: 2498
Posted: 07:17am 22 Aug 2018
Copy link to clipboard 
Print this post

You haven't built an Inverter if you haven't had a few fireworks.
There are only 10 types of people in the world: those who understand binary, and those who don't.
 
renewableMark

Guru

Joined: 09/12/2017
Location: Australia
Posts: 1678
Posted: 08:56am 22 Aug 2018
Copy link to clipboard 
Print this post

Oh yes I remember well.
The first Clockman boards I tested caught fire,(my fault), I was on the back deck and timing was terrible, my wife witnessed it happen.
She wasn't impressed, many many arguments have occurred over my project.

But I can happily say that I am typing now on renewable power from the Madinverter, the oven just cooked the little fella's dinner and it's running the house just fine.
Bloody ripper!
So far I have had it just past 7000 watts constant (deliberate), so pretty bloody impressive.
Cheers Caveman Mark
Off grid eastern Melb
 
     Page 26 of 29    
Print this page
© JAQ Software 2024