цифровая электроника
вычислительная техника
встраиваемые системы

 

Измерение трехфазного напряжения с помощью Arduino

Автор: Mike(admin) от 19-10-2019, 00:55

Сегодня в этой статье вы узнаете, как выполнить трехфазное измерение напряжения переменного тока с помощью Arduino. Сначала мы покажем вам, как измерять однофазное переменное напряжение, а затем измерять трехфазное переменное напряжение.


Измерение трехфазного напряжения с помощью Arduino

Разработанная система может измерять переменное напряжение любой амплитуды, показывать каждое фазное напряжение, осуществлять светодиодную индикацию каждого фазного напряжения.


Принцип работы системы состоит в следующем. Высокое входное напряжение переменного тока сначала преобразуется в более низкое напряжение переменного тока с помощью трансформатора, а затем выпрямляется с использованием двухполупериодного мостового выпрямителя. Выходное напряжение выпрямителя подается на цепь делителя напряжения, которая понижает выходное напряжение выпрямленного постоянного тока, а затем напряжение фильтруется и подается на стабилитрон. Выход подается на вход аналогового контакта Aduino A0-A2.


Схема очень проста и легка для понимания и разработана с использованием трансформатора, мостового выпрямителя, стабилитрона, Arduino Uno, LCD-дисплея и некоторых других компонентов, таких как резистор и конденсатор и т.д. Вот цепь для измерения одного из фазных напряжений.


Измерение трехфазного напряжения с помощью Arduino

Измеряемое входное переменное напряжение подается на первичную сторону трансформатора X1, который в этом случае понижает высокое входное напряжение (например, 220 В переменного тока) до низкого переменного напряжения (например, 12 В переменного тока). Arduino не может измерить отрицательный полупериод в качестве входных данных, поэтому нам нужно либо обрезать, либо изменить отрицательный полупериод на положительный полупериод. Для того, чтобы сделать это, мы используем мостовой выпрямитель.


Пониженное переменное напряжение (12 В переменного тока) выпрямляется с помощью четырех диодов (1N4001). Выпрямленное напряжение подается на цепь делителя напряжения, разработанную с использованием переменного резистора VR1. Две фиксированные клеммы переменного резистора подключены к положительной и отрицательной клемме выпрямленного выхода, как показано на принципиальной схеме. Выход берется с переменного резистора VR1. Выходное напряжение затем фильтруется с использованием конденсаторов С1 и С2. Стабилитрон используется здесь для защиты цепи, который срабатывает, когда входное напряжение превышает 3,7 В. Это выходное напряжение теперь передается на аналоговый вывод Arduino Uno A0.


Измерение трехфазного напряжения с помощью Arduino

Arduino измеряет это напряжение и отображается на ЖК-дисплее. ЖК-дисплей подключен к Arduino битами данных более высокого порядка, т. е. для связи между Arduino и ЖК-дисплеем используется только вывод данных более высокого порядка (от D4 до D7). Вывод данных D4-D7 подключается к Arduino D10-D7 соответственно, как показано на принципиальной схеме. Здесь выводы EN и RS подключены к Arduino D11 и D12 соответственно. Vss, RW и LED-вывод LCD подключены к GND, а вывод VDD подключен к +5V. Контакт VEE отвечает за регулировку контрастности, и напряжение питания должно быть между VDD и VSS, таким образом, вывод потенциометра VR2 подключен к этому контакту. LED+ контакт LCD подключен к +5V через резистор ограничения тока, как показано на принципиальной схеме.


Теперь нам надо произвести калибровку. Код для калибровки представлен далее.



int ACInput = A0;
 
//Setup function Start
void setup() {
  pinMode(ACInput, INPUT);
  Serial.begin(9600);
}
 
//Loop Function Start Here
void loop() 
{ 
   int vrout = analogRead(ACInput);
   Serial.println(vrout);
   delay(500);
 }

Процедура калибровки следующая. Измерьте сетевое напряжение переменного тока с помощью мультиметра (оно не обязательно будет 220 В, может быть и 227 В). Отрегулируйте переменный резистор так, чтобы выходное напряжение на стабилитроне было постоянным и ниже 3,7 В (скажем, 2,66 В постоянного тока). Загрузите прошивку для калибровки на свой Aduino и откройте последовательный монитор. Он отобразит некоторое значение (скажем, 545). Сохраните значение, потому что оно нам нужно для дальнейшего расчета. Отрегулируйте переменный резистор для достижения этого значения (545).


Теперь вычислите множитель. Для 5-вольтового Arduino максимальное значение с АЦП составит 1023, аналогично, используя унитарный метод, мы можем рассчитать напряжение для 1 деления, которое оно показывает: 1 = 5/1023 В. Таким образом, для значения 545 напряжение деления = (5/1023) * 545 = 2,66 В. Когда напряжение сети составляет 227 В переменного тока, Arduino показывает 2,66 В. Множитель = 227 В / 2,66 В = 85,30. В итоге код программы для измерения однофазного переменного напряжения будет следующим.



#include <LiquidCrystal.h>
LiquidCrystal lcd(12, 11, 10, 9, 8, 7); //(RS,EN,D4,D5,D6,D7)
int Volt = A0; // Для входа переменного напряжения
 

void setup() {
  pinMode(Volt, INPUT);
  lcd.begin(16,2);  
  Serial.begin(9600);
}
 
//Loop Function Start Here
void loop() 
{ 
  lcd.clear();
   int AcVolt = analogRead(Volt); // считывание аналогового входа
   int AcVoltOut = (AcVolt * (5.0 / 1023))*93.67; // преобразование в вольты
   Serial.println(AcVoltOut); // отображение в последовательном мониторе
   lcd.setCursor(0,0);
   lcd.print("AC Voltage");
   lcd.setCursor(0,1);
   lcd.print(AcVoltOut); // отображение на дисплее
   delay(500);
 }

Схема для измерения трехфазного переменного напряжения такая же, как и для однофазного, только с двумя дополнительными цепями измерения однофазного напряжения.


Измерение трехфазного напряжения с помощью Arduino


<p class="MsoNormal" style="text-align: justify;">Код программы измерения трехфазного напряжения следующий.</p>
#include <LiquidCrystal.h>
LiquidCrystal lcd(12, 11, 10, 9, 8, 7); //(RS,EN,D4,D5,D6,D7)
int RPhase = A0; // Для фазы A
int YPhase = A1; // Для фазы B
int BPhase = A2; // Для фазы C

void setup() {
  pinMode(RPhase, INPUT);
  pinMode(YPhase, INPUT);
  pinMode(BPhase, INPUT);
  lcd.begin(16,2);  
  Serial.begin(9600);
}
 
void loop() 
{ 
  lcd.clear();
   int vrout = analogRead(RPhase); // Считывание фазы A
   int vyout = analogRead(YPhase); // Считывание фазы B
   int vbout = analogRead(BPhase); // Считывание фазы C
   int RVolt = (vrout * (5.0 / 1023))*93.67; // Преобразование значения фазы A в вольты
   int YVolt = (vyout * (5.0 / 1023))*93.67; // Преобразование значения фазы B в вольты
   int BVolt = (vyout * (5.0 / 1023))*93.67; // Преобразование значения фазы C в вольты
   Serial.println(RVolt); // Вывод фазы A в последовательный монитор
   Serial.println(YVolt);// Вывод фазы B в последовательный монитор
   Serial.println(BVolt); // Вывод фазы C в последовательный монитор
   lcd.setCursor(0,0);
   lcd.print("A   B   C   ");
   lcd.setCursor(0,1);
   lcd.print(RVolt); // Отображение фазы A на дисплее
   lcd.setCursor(4,1);
   lcd.print(YVolt); // Отображение фазы B на дисплее
   lcd.setCursor(8,1);
   lcd.print(BVolt); // Отображение фазы C на дисплее
   delay(500);
    }
 }



© digitrode.ru


Теги: Arduino



   Благодарим Вас за интерес к информационному проекту digitrode.ru.
   Если Вы хотите, чтобы интересные и полезные материалы выходили чаще, и было меньше рекламы,
   Вы можее поддержать наш проект, пожертвовав любую сумму на его развитие.


Уважаемый посетитель, Вы зашли на сайт как незарегистрированный пользователь.
Мы рекомендуем Вам зарегистрироваться либо войти на сайт под своим именем.

Комментарии:

Оставить комментарий