Вы находитесь на странице: 1из 2

#define #define #define #define #define #define #define #define

MOSFET1 9 MOSFET2 10 EnablePower 2 // HV power on switch batteryVoltage 0 // AD0 heatSink 1 // AD1 batteryGoodInd 12 fanOnInd 11 HVON 13 // high voltage on blinks

int x = 0; int y = 0; int z = 0; void setup() { pinMode(MOSFET1, OUTPUT); // MOSFET 1 pinMode(MOSFET2, OUTPUT); // MOSFET 2 pinMode(EnablePower, INPUT); // N.O. switch digitalWrite(EnablePower, HIGH); // pull up enabled pinMode(HVON, OUTPUT); digitalWrite(HVON, LOW); pinMode(batteryGoodInd, OUTPUT); digitalWrite(batteryGoodInd, LOW); pinMode(fanOnInd, OUTPUT); digitalWrite(fanOnInd, LOW); } void loop() { y = analogRead(batteryVoltage); if (y > 150) digitalWrite(batteryGoodInd, LOW); // battery ok LED off else digitalWrite(batteryGoodInd, HIGH); // battery too low LED on if (analogRead(heatSink) > 500) digitalWrite(fanOnInd, HIGH); // cooling fan o n else digitalWrite(fanOnInd, LOW); // cooling fan off if ((digitalRead(EnablePower) == 0) && (y > 150)) { // check for closed ena ble switch, battery state SoftStart(); // bring power up slowly while ((digitalRead(EnablePower) == 0) && (y > 150)) { digitalWrite(MOSFET1, HIGH); // MOSFET1 on delayMicroseconds(360); delay(8); // wait for 8.3 mS digitalWrite(MOSFET1, LOW); // MOSFET1 off digitalWrite(MOSFET2, HIGH); // MOSFET2 on delayMicroseconds(360); delay(8); // wait for 8.3 mS digitalWrite(MOSFET2, LOW); // MOSFET2 off x++; if (x == 20) { // flash HVON LED toggle(HVON); y = analogRead(0); x=0; if (analogRead(heatSink) > 500) digitalWrite(fanOnInd, HIGH); // cooling

fan on else digitalWrite(fanOnInd, LOW); // cooling fan off } // end 2nd if } // end while } // end ist if } // end loop void toggle(int pinNum) { // toggle the state on a pin int pinState = digitalRead(pinNum); pinState = !pinState; digitalWrite(pinNum, pinState); } //SoftStart allows power to come up slowly to prevent excessive surges // time is about 2 seconds void SoftStart(void) int y = 2; int x = 0; int z = 6; while (y < 8) { {

digitalWrite(MOSFET1, HIGH); // MOSFET1 on delayMicroseconds(360); delay(y); // wait for 8.3 mS digitalWrite(MOSFET1, LOW); // MOSFET1 off delay(z); digitalWrite(MOSFET2, HIGH); // MOSFET2 on delayMicroseconds(360); delay(y); // wait for 8.3 mS digitalWrite(MOSFET2, LOW); // MOSFET2 off delay(z); x++; if (x == 30) { y = y + 2; z = z - 2; x=0; } } }

Вам также может понравиться