blob: cf6ea90d7ee5a845d89f18e31aace5ad9eb6724f (
plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
|
#include <Wire.h>
double VOLTAGE, P100, P150;
double temp, load = 0;
uint8_t Q100, Q150;
bool new_message = false;
void setup()
{
Wire.begin();
Serial.begin(9600);
Serial.println("Enter Nominal System Voltage:");
while (Serial.available() == 0) {;}
VOLTAGE = Serial.parseFloat(SKIP_ALL);
Serial.print("System Voltage: ");
Serial.println(VOLTAGE, DEC);
P150 = (VOLTAGE * VOLTAGE) / 150;
P100 = (VOLTAGE * VOLTAGE) / 100;
Serial.println("Enter Load in kW:");
}
void loop()
{
new_message = false;
Serial.flush();
if (Serial.available())temp = Serial.parseFloat(SKIP_ALL) * 1000;
if ((temp != load) && (temp > 0))
{
load = temp;
if (VOLTAGE <= 500) //We don't want to use the 100ohm resistors if the voltage is higher than 500 as they would draw excessive power.
{
Q100 = load / P100;
if (Q100 > 5) Q100 = 5;
Q150 = (load - (Q100 * P100)) / P150;
}
else
{
Q150 = load / P150;
Q100 = 0;
}
if (Q150 > 15) Q150 = 15;
Serial.print("A combination of ");
Serial.print(Q150, DEC);
Serial.print(" 150ohm and ");
Serial.print(Q100, DEC);
Serial.print(" 100ohm resistors will be requested. ");
//Serial.print(load - ((P150*Q150)+(P100*Q100)),DEC);
Serial.print(((P150 * Q150) + (P100 * Q100)), DEC);
Serial.println("W Accounted for.");
new_message = true;
}
delay(50);
Wire.beginTransmission(0x30); //Controller Board Has Address 0x07
Wire.write(0x01); //First "EEPROM Address" stores resistor data.
Wire.write((Q100 << 4) | Q150);
Wire.endTransmission();
if (new_message == true) {
delay(25);
Wire.requestFrom(0x30, 1);
while (!Wire.available()) {;}
int c = Wire.read();
Serial.print("Quantity of 150Ohm: ");
Serial.print(c & 0b00001111); //Print Q150
Serial.print(" Quantity of 100Ohm: ");
Serial.print((c & 0b01110000)>>4);
Serial.println(" was recieved.");
}
}
|