230V AUTOMATIC OVER VOLTAGE REGULATOR

 Circuit Diagram:


An Automatic Voltage Regulator (AVR) is an electronic device or system that automatically maintains a constant voltage level to electrical equipment. Its primary purpose is to ensure that the voltage supplied to an electrical device or system stays within a specified range, even if there are fluctuations in the input voltage.

How it works:

  • Voltage Sensing: The AVR monitors the input voltage (from a generator, power supply, etc.) and detects any fluctuations or deviations from the desired voltage.

  • Regulation: If the input voltage rises or falls outside the acceptable range, the AVR adjusts the output voltage to keep it stable. It may do this by controlling the excitation voltage of a generator or using transformer taps in some systems.

  • Feedback Loop: The AVR continuously adjusts and fine-tunes the voltage, creating a closed-loop system that stabilizes power.

Key Features:

  1. Stabilizes Output Voltage: It keeps voltage steady despite variations in input power, which protects sensitive equipment from voltage spikes or drops.

  2. Prevents Damage: By maintaining constant voltage, it helps prevent damage to electrical equipment caused by overvoltage or undervoltage.

  3. Enhances Performance: Proper voltage regulation ensures that devices run efficiently and reliably.

  4. Automatic Adjustment: Unlike manual voltage regulators, an AVR adjusts automatically without needing human intervention.

Common Applications:

  • Generators: AVRs are often used in generators to regulate the output voltage. This is crucial for ensuring the generator supplies a stable voltage to connected equipment, regardless of changes in engine speed or load.

  • Power Supplies: In industrial and commercial applications, an AVR is used in uninterruptible power supplies (UPS) and voltage stabilizers.

  • Home Appliances: AVRs are sometimes used in sensitive electronic devices like computers, air conditioners, and televisions, where voltage fluctuations can damage the equipment.

Types of AVRs:

  1. Static AVRs: These use semiconductor devices like transistors to regulate voltage.

  2. Rotary AVRs: These use mechanical components, such as rotating transformers, to adjust voltage.

An Automatic Voltage Regulator (AVR) offers several advantages, particularly in applications where maintaining a stable voltage is crucial to the proper functioning of equipment. Here are the key advantages of using an AVR:

1. Stable Voltage Output

  • The primary function of an AVR is to provide a constant, stable output voltage, regardless of fluctuations in the input power supply. This ensures that connected equipment receives a consistent voltage, which is important for the longevity and performance of sensitive devices.

2. Protection Against Voltage Fluctuations

  • Overvoltage Protection: AVRs protect devices from voltage surges, which can damage sensitive electronics, motors, and other electrical equipment.

  • Undervoltage Protection: If the voltage falls too low, the AVR can step in to prevent equipment from operating inefficiently or being damaged due to insufficient voltage.

3. Prevents Equipment Damage

  • Voltage spikes or dips can cause overheating, burnt-out circuits, or malfunctions in electrical equipment. By maintaining stable voltage, AVRs significantly reduce the risk of such damage, improving the durability and lifespan of your devices.

4. Improved Efficiency and Performance

  • Devices that receive stable voltage perform more efficiently. For example, in generators, the AVR ensures that the voltage is consistently optimal, which can lead to better fuel efficiency and smoother operation. For sensitive equipment like computers or medical devices, it ensures they operate at their best without interruptions or failures.

5. Cost-Effective

  • Reduced Repair Costs: By preventing voltage-related damage, an AVR helps reduce repair and maintenance costs for equipment.

  • Energy Efficiency: Since equipment operates within the desired voltage range, it uses power more efficiently, potentially saving energy costs in the long term.

6. Automatic Operation

  • One of the major advantages of an AVR is its automatic operation. It doesn’t require constant manual adjustment or monitoring. The system can self-regulate, making it ideal for situations where consistent voltage control is needed without human intervention.

7. Versatility

  • AVRs are used in a wide range of applications, including:

    • Generators: To stabilize the output voltage and protect devices from inconsistent power.

    • UPS Systems: To ensure that critical loads receive stable voltage during power interruptions.

    • Household Appliances: Protecting electronic devices like TVs, air conditioners, and refrigerators from damage due to fluctuating voltages.

    • Industrial Equipment: Ensuring heavy machinery and sensitive industrial electronics run smoothly.

8. Prevents Power Interruptions

  • By stabilizing the voltage, AVRs can minimize the risk of power outages or interruptions caused by irregular voltage. This is crucial in applications where even a brief power disruption can lead to downtime or damage.

9. Improved System Reliability

  • Continuous voltage regulation contributes to the overall reliability of the electrical system. Devices that are not exposed to fluctuating voltages are less likely to malfunction, leading to fewer system failures and maintenance interventions.

10. Compact and Easy to Install

  • AVRs are typically compact, relatively easy to install, and can be integrated into existing electrical systems without significant modification. This makes them practical for both home and industrial environments.

11. Extends Equipment Lifespan

  • By preventing the damaging effects of voltage fluctuations (such as overheating or electrical stress), an AVR helps extend the lifespan of electrical devices. This can be especially important for expensive or critical equipment.


In short, an AVR ensures a reliable, safe, and efficient power supply for electrical equipment by regulating voltage, protecting against fluctuations, and improving the performance and lifespan of connected devices.

Would you like to explore any specific use cases or deeper technical details of how an AVR works in particular systems?

Arduini code:

//****************************************************************************************
//Declare variables to store sensor values and results
//SENSOR 1
int sensorValue1 = 0;
int sensorValue2 = 0;
int sensorValue3 = 0;


int crosscount = 0;
int climb_flag = 0;
int val[100];  // Array to store sensor values
int max_v = 0;
int VmaxD = 0;  // Max voltage
int VeffD = 0;  // Effective voltage
int Veff = 0;   // Resulting voltage



int crosscount_1 = 0;
int climb_flag_1 = 0;
//int val[100];  // Array to store sensor values
int max_v_1 = 0;
int VmaxD_1 = 0;  // Max voltage
int VeffD_1 = 0;  // Effective voltage
int Veff_1 = 0;   // Resulting voltage



int crosscount_2 = 0;
int climb_flag_2 = 0;
//int val[100];  // Array to store sensor values
int max_v_2 = 0;
int VmaxD_2 = 0;  // Max voltage
int VeffD_2 = 0;  // Effective voltage
int Veff_2 = 0;   // Resulting voltage

//******************************************************************************************
//include the library code:
#include <LiquidCrystal.h>
//Creates an LCD object. Parameters: (rs, enable, d4, d5, d6, d7)
LiquidCrystal lcd(7, 6, 5, 4, 3, 2);

// Define input and output terminal
#define relay1 8
#define relay2 9
#define relay3 10

// Loop function: Main program logic runs repeatedly
void phase1() {
  // Read and process sensor values
  for (int i = 0; i < 100; i++) {
    sensorValue1 = analogRead(A0);  // Read analog sensor value from A0
    if (analogRead(A0) > 511) {
      val[i] = sensorValue1;  // Store sensor value in the array if it's greater than 511
    } else {
      val[i] = 0;  // Otherwise, set the value to 0
    }
    delay(1);  // Short delay for stability
  }
  // Find the maximum sensor value in the array
  max_v = 0;
  for (int i = 0; i < 100; i++) {
    if (val[i] > max_v) {
      max_v = val[i];  // Update max_v if a higher value is found
    }
    val[i] = 0;  // Reset the array element to 0
  }
  // Calculate effective voltage based on the maximum sensor value
  if (max_v != 0) {
    VmaxD = max_v;                                          // Set VmaxD to the maximum sensor value
    VeffD = VmaxD / sqrt(2);                                // Calculate effective voltage (RMS) from VmaxD
    Veff = (((VeffD - 420.76) / -90.24) * -210.2) + 210.2;  // Apply calibration and scaling to Veff
  } else {
    Veff = 0;  // If no maximum value, set Veff to 0
  }

  // Print the calculated voltage to the serial monitor
  Serial.print("Voltage: ");
  Serial.println(Veff);

  VmaxD = 0;  // Reset VmaxD for the next iteration

  delay(100);  // Delay for 100 milliseconds before the next loop
}


//+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++

// Loop function: Main program logic runs repeatedly
void phase2() {
  // Read and process sensor values
  for (int i = 0; i < 100; i++) {
    sensorValue2 = analogRead(A1);  // Read analog sensor value from A0
    if (analogRead(A1) > 511) {
      val[i] = sensorValue2;  // Store sensor value in the array if it's greater than 511
    } else {
      val[i] = 0;  // Otherwise, set the value to 0
    }
    delay(1);  // Short delay for stability
  }
  // Find the maximum sensor value in the array
  max_v_1 = 0;
  for (int i = 0; i < 100; i++) {
    if (val[i] > max_v_1) {
      max_v_1 = val[i];  // Update max_v if a higher value is found
    }
    val[i] = 0;  // Reset the array element to 0
  }
  // Calculate effective voltage based on the maximum sensor value
  if (max_v_1 != 0) {
    VmaxD_1 = max_v_1;                                          // Set VmaxD to the maximum sensor value
    VeffD_1 = VmaxD_1 / sqrt(2);                                // Calculate effective voltage (RMS) from VmaxD
    Veff_1 = (((VeffD_1 - 420.76) / -90.24) * -210.2) + 210.2;  // Apply calibration and scaling to Veff
  } else {
    Veff_1 = 0;  // If no maximum value, set Veff to 0
  }

  // Print the calculated voltage to the serial monitor
  Serial.print("Voltage_1: ");
  Serial.println(Veff_1);

  VmaxD_1 = 0;  // Reset VmaxD for the next iteration

  delay(100);  // Delay for 100 milliseconds before the next loop
}

//+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++

// Loop function: Main program logic runs repeatedly
void phase3() {
  // Read and process sensor values
  for (int i = 0; i < 100; i++) {
    sensorValue3 = analogRead(A2);  // Read analog sensor value from A0
    if (analogRead(A2) > 511) {
      val[i] = sensorValue3;  // Store sensor value in the array if it's greater than 511
    } else {
      val[i] = 0;  // Otherwise, set the value to 0
    }
    delay(1);  // Short delay for stability
  }
  // Find the maximum sensor value in the array
  max_v_2 = 0;
  for (int i = 0; i < 100; i++) {
    if (val[i] > max_v_2) {
      max_v_2 = val[i];  // Update max_v if a higher value is found
    }
    val[i] = 0;  // Reset the array element to 0
  }
  // Calculate effective voltage based on the maximum sensor value
  if (max_v_2 != 0) {
    VmaxD_2 = max_v_2;                                          // Set VmaxD to the maximum sensor value
    VeffD_2 = VmaxD_2 / sqrt(2);                                // Calculate effective voltage (RMS) from VmaxD
    Veff_2 = (((VeffD_2 - 420.76) / -90.24) * -210.2) + 210.2;  // Apply calibration and scaling to Veff
  } else {
    Veff_2 = 0;  // If no maximum value, set Veff to 0
  }

  // Print the calculated voltage to the serial monitor
  Serial.print("Voltage_2: ");
  Serial.println(Veff_2);

  VmaxD_2 = 0;  // Reset VmaxD for the next iteration

  delay(100);  // Delay for 100 milliseconds before the next loop
}

//Setup function: Initializes the program
void setup() {
  Serial.begin(9600);             // Initialize serial communication at 9600 baud

  lcd.begin(16, 2);               //Initializing the interface on the LCD screen
  lcd.setCursor(0, 0);            // set the cursor to column 0, line1
  lcd.print("AUTO VOLTAGE REG");  //print name
  lcd.setCursor(0, 1);            // set the cursor to column 0, line 2
  lcd.print("IN:   V OUT:   V");  //print name
  
  pinMode (relay1, OUTPUT); 
  pinMode (relay2, OUTPUT); 
  pinMode (relay3, OUTPUT);

  digitalWrite(relay1, LOW);
  digitalWrite(relay2, LOW);
  digitalWrite(relay3, LOW);
}

void loop() {
  
  // Checking each of the voltage sensor output to select the best voltage range above 220V
  //Find the output voltage that falls in the range of 220V to 240V to supply output
 
  phase1();
  phase2();
  phase3();
  if ((Veff >100)&&(Veff <= 230))
     {
    digitalWrite(relay1, HIGH);
    digitalWrite(relay2, LOW);
    digitalWrite(relay3, LOW);
    lcd.setCursor(3, 3);     
    lcd.print(Veff);
    lcd.setCursor(12, 12);
    lcd.print(Veff);
    }
 else if ((Veff >230)&&(Veff_1 <= 230))
  {
    digitalWrite(relay1, LOW);
    digitalWrite(relay2, HIGH);
    digitalWrite(relay3, LOW);
    lcd.setCursor(3, 3);
    lcd.print(Veff);
    lcd.setCursor(12, 12);
    lcd.print(Veff_1);
    }
 else if (((Veff >230)&&(Veff_1 > 230))&& Veff_2 <= 230)
  {
    digitalWrite(relay1, LOW);
    digitalWrite(relay2, LOW);
    digitalWrite(relay3, HIGH);
    lcd.setCursor(3, 3);
    lcd.print(Veff);
    lcd.setCursor(12, 12);
    lcd.print(Veff_2);
    }
    
 else{
  }
 
}







The Name of Student for this Project are:
1. Emmanuel
2. Joel
3. Kelvin
4. Ayomikun
5. Sauce

For more details harrykerry006@gmail.com

Comments