Мазмұны:

True-RMS айнымалы кернеуді өлшеу: 14 қадам
True-RMS айнымалы кернеуді өлшеу: 14 қадам

Бейне: True-RMS айнымалы кернеуді өлшеу: 14 қадам

Бейне: True-RMS айнымалы кернеуді өлшеу: 14 қадам
Бейне: Why True-RMS multimeter? 2024, Қараша
Anonim
Image
Image
Демонстрация
Демонстрация

Бүгін біз айнымалы токты оқу үшін STM32 Maple Mini қолданамыз. Біздің мысалда біз электр желісінің RMS мәнін аламыз. Бұл заттардың интернеті үшін электр желісін бақылауды қалайтындар үшін өте пайдалы. Содан кейін біз Maple Mini -дің есептік қуатын қолдана отырып қосымша жасаймыз, 127Vac сигналын алуға мүмкіндік беретін электронды схеманы қолданамыз, сондай -ақ үлгілерде орташа квадраттық квадрат (RMS) есебін қолданамыз.

1 -қадам: демонстрация

Бүгінгі жиналыста бізде 110 -ды енгізу үшін аналогтық схемадан басқа STM32 бар. Соққылардың алдын алу үшін 110 -ға кіретін резисторды оқшаулаңыз.

Схема өте сезімтал. Мен 110 -ға кіремін, бірақ кернеу бөлгішті пайдаланып оны 168 есе азайтып, бірнеше функциялары бар жұмыс күшейткішіне қойдым.

Бізде сонымен қатар көзді сүзуге арналған қосымша конденсаторлар бар. Егер сіздің көзіңіз сапалы болса, оларды пайдаланудың қажеті жоқ.

AD кірісі осциллограф арқылы есептеледі, онда сіз синусоидты көресіз, ол 110 емес (бірақ ол жақсы қалыптасқан). Тағы бір нәрсе, біздің электр желісіндегі кернеу 110 емес (бұл 127 вольт). Бірақ біз тұрақтандырғыштан өтіп жатқанда, ол 115 В -қа бейімделеді.

Сериялық мониторда көрсетілетін мән RMS -те есептеледі, яғни Fluke Meter анықтаған мән.

2 -қадам: Қолданылған ресурстар

Қолданылған ресурстар
Қолданылған ресурстар

• Секіргіштер

• Үйеңкі шағын

• Протобон тақтасы

• LM386 күшейткіші

• Симметриялы көз (+ 5В және -5В)

• 10к көп айналымды тримпот (немесе потенциометр)

• 100nF полиэфирлі төрт конденсатор

• Үш 10к резистор

• 470к төрт резистор

• 5к6 бір резистор

• Бір 1n4728A зенерлік диод

3 -қадам: Блок диаграммасы

Блок диаграммасы
Блок диаграммасы

4 -қадам: Схема

Схема
Схема

Бұл схема, мен бұл өлшем үшін ең жақсы деп есептеймін, бірақ интернетте табуға болатын басқа да бірнеше мысалдар бар.

5 -қадам: LM386 - түйреу

LM386 - түйреу
LM386 - түйреу

LM386 -де кондиционерлеуге немесе сигналды күшейтуге арналған екі күшейткіш бар.

6 -қадам: AmpOp - дифференциалды (алып тастаушы)

AmpOp - дифференциалды (алып тастаушы)
AmpOp - дифференциалды (алып тастаушы)

7 -қадам: AmpOp - инверторлық қосқыш

AmpOp - инверторлық қосқыш
AmpOp - инверторлық қосқыш

8 -қадам: Maple Mini - Pinage

Мини үйеңкі - пиндж
Мини үйеңкі - пиндж

Белгіленген түйреуіштер:

Қызыл >> 3V3 төзімді

Жасыл >> 5В төзімді

9 -қадам: Maple Mini - түйреу - а / Д түсіру кезінде қолданылады

Maple Mini - Pinning - a / D Түсіру кезінде қолданылады
Maple Mini - Pinning - a / D Түсіру кезінде қолданылады

Мен бұл жерде мен қолданған түйреуіш D11 екенін (STMicroelectronics номенклатурасында) PA0 екенін баса айтамын.

10 -қадам: құрастыру

Ассамблея
Ассамблея

Біздің схема үшін сізге осы жоба үшін жасаған сияқты симметриялы көз қажет болады. Әйтпесе, сізге екі дереккөз қажет.

11 -қадам: Алынған мәліметтердің графигі

Алынған мәліметтермен график
Алынған мәліметтермен график

12 -қадам: RMS мәнін есептеу

RMS мәнін есептеу
RMS мәнін есептеу

13 -қадам: бастапқы код

Бастапқы код - Анықтамалар мен тұрақтылар

Алдымен біз түйреуішті D11 деп анықтадық, сонымен қатар есептеулерде қолданылатын әр түрлі тұрақтылар.

#define leituraTensao D11 // AD CH0 no pino PA0 // valor teórico divisor de tensão = 168.85714285714285714286 const float fatorDivisor = 168.40166345742404792461; // amplificação ganho teorico = 1.0 const float fatorAmplificador = 1.0; // Құндылықтың өзгермелі мәні: Multiplicacao = fatorDivisor * fatorAmplificador; // Valor teórico da Tensão de alimentação Vcc = 3.3V const float Vcc = 3.3; // valor teórico do offset do amplificador = Vcc /2.0; const float offSet = 1.66; // AD = 3.3 / 4095.0 const float fatorAD = Vcc / 4095.0; const int amostras = 71429; // нәтиже 1, 027 күндізгі шарттар // const int amostras = 35715; // нәтиже 0, 514 ж

Бастапқы код - Жаһандық айнымалылар

Енді біз кейбір жаһандық айнымалыларды анықтаймыз.

float Vrms = 0,0; // armazena o valor rms da tensãofloat Vmax = 0.0; // armazena o valor máximo detektado float Vmin = 10000.0; // armazena lost mínimo detectado float Vmed = 0.0; // қару -жарақ алу үшін Vmáx e Vmín

Бастапқы код - орнату ()

Сериялық портты 1 Мбит / с жылдамдықпен бастаңыз. Біз AD портын енгізу ретінде реттедік және деректерді жинауды бастамас бұрын 5 секунд күттік. Күту уақыты міндетті емес.

void setup () {Serial.begin (1000000); // 1Mbps pinMode (leituraTensao, INPUT) сериялық порты; // AD como entrada кідірісі (5000); // 5 -сынып оқушылары. (міндетті емес)}

Бастапқы код - Цикл () - Деректерді жинау айнымалыларын бастайды

Циклда бізде қайталанатын айнымалы бар. Мұнда біз AD көрсеткіштерін 0.0 -де сақтаймыз және VRMS айнымалы мәнін 0.0 -де қайта қосамыз.

void loop () {int i = 0; // variável para iteração float leitura = 0.0; // armazena leituras ретінде AD Vrms = 0.0; // reinicia a variável Vrms

Бастапқы код - әрбір үлгі бойынша жеке есептеулерді түсіреді және орындайды

Бұл кезеңде, егер i үлгіден кіші болса, біз іріктеу циклін i үлгілер санына жеткенше бастаймыз. Біз analogRead бағдарламасын іске қосып, аналогтық портты оқимыз және оқу кернеулерінің квадраттарының қосындысын есептейміз. Ақырында, біз итераторды көбейтеміз.

while (i <amostras) {// inosia um ciclo de amostragem até que i alcance o número de amostras leitura = analogRead (leituraTensao); // аналогиялық порталдың // сериялық.принтл (лейтура); // AD Vrms = Vrms + pow (((leitura * fatorAD) - offSet), 2.0); // есептік жазбалар i ++; // артуы немесе артуы}

Бастапқы код - Үлгілердің жалпы есептеулері және максимумды, минимумды және орташа мәнді анықтау

Біз кернеудің нақты мәнін анықтау үшін көбейту фактісін қолданамыз. Біз мәннің максималды немесе минималды екенін анықтаймыз және ағымдағы максимум мен минимум мәндерінің орташа мәнін есептейміз.

// Aplicando fator de a multiplicaão a detaror a de la vidé das tésões Vrms = (sqrt (Vrms /amostras)) * fatorMultiplicacao; // detecta se é um valor é máximo if (Vrms> Vmax) {Vmax = Vrms; } // Detecta se é um valor mínimo if (Vrms <Vmin) {Vmin = Vrms; } // есептеу әдісі Vmed = (Vmax + Vmin) /2.0;

Бастапқы код - шығыс параметрлері

Бізде шығыс мәнін «сызбалаудың» үш нұсқасы бар. Бізде CSV немесе Jason сияқты Arduino IDE сериялық плоттерінде пішімделген шығыс бар.

// IDE Arduino Serial.print (Vrms, 3) сериялық IDE сериялы графикалық формат; Serial.print («,»); Serial.print (Vmax, 3); Serial.print («,»); Serial.print (Vmin, 3); Serial.print («,»); Serial.println (Vmed, 3); /* // Comment json Serial.print форматында («{» жылдам (ms) «:»); Serial.print (millis ()); Serial.print («,»); Serial.print («\» Vrms (V) «:»); Serial.print (Vrms, 3); Serial.print («,»); Serial.print («\» Vmax (V) «:»); Serial.print (Vmax, 3); Serial.print («,»); Serial.print («\» Vmin (V) «:»); Serial.print (Vmin, 3); Serial.print («,»); Serial.print («\» Vmed (V) «:»); Serial.print (Vmed, 3); Serial.println («}»); * / /* // CSV Serial.print (millis ()) форматындағы формат; Serial.print («,»); Serial.print (Vrms, 3); Serial.print («,»); Serial.print (Vmax, 3); Serial.print («,»); Serial.print (Vmin, 3); Serial.print («,»); Serial.println (Vmed, 3); */}

14 -қадам: файлдар

Файлдарды жүктеңіз:

PDF

МЕН ЖОҚ

Ұсынылған: