Мазмуну:

True-RMS AC чыңалуусун өлчөө: 14 кадам
True-RMS AC чыңалуусун өлчөө: 14 кадам

Video: True-RMS AC чыңалуусун өлчөө: 14 кадам

Video: True-RMS AC чыңалуусун өлчөө: 14 кадам
Video: Титаниктің құпиясы: олар айсбергті қалай байқамады?! Ең егжей-тегжейлі оқиға! 2024, Июль
Anonim
Image
Image
Демонстрация
Демонстрация

Бүгүн биз AC окууну аткаруу үчүн STM32 Maple Mini колдонобуз. Биздин мисалда, биз электр тармагынын RMS маанисин алабыз. Бул нерселердин Интернети үчүн электр тармагын көзөмөлдөөнү каалагандар үчүн абдан пайдалуу. Андан кийин биз Maple Miniнин эсептөө күчүн колдонуп, 127Vac сигналын алууга мүмкүндүк бере турган электрондук схеманы колдонобуз, ошондой эле үлгүлөргө орточо квадрат (RMS) эсептөөнү колдонобуз.

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

Бүгүнкү жыйында бизде аналогдук схемадан тышкары STM32 бар, 110ду киргизет. Соккуларды алдын алуу үчүн, 110 менен кирип жаткан резисторду изоляция кылыңыз.

Район өтө сезимтал. Мен 110 менен кирип жатам, бирок чыңалуу бөлүштүргүчтү колдонуп аны 168 эсе азайтып, бир нече функциялары бар оперативдик күчөткүчкө салып койдум.

Бизде булак чыпкалоо үчүн кээ бир кошумча конденсаторлор бар. Эгерде булагыңыз сапаттуу болсо, анда аларды колдонуунун кажети жок.

AD киргизүү осциллограф аркылуу эсептелет, анда сиз синусоидди көрөсүз, ал 110 эмес (бирок жакшы калыптанган). Дагы бир нерсе, биздин электр тармагындагы чыңалуу 110 эмес (бул чындыгында 127 вольт). Бирок биз стабилизаторду баштан кечирип жаткандыктан, ал 115Вга жөндөйт.

Сериялык монитордо көрсөтүлгөн баа RMSде, башкача айтканда, Fluke Meter тарабынан аныкталган.

2 -кадам: Колдонулган ресурстар

Колдонулган ресурстар
Колдонулган ресурстар

• секирүүчүлөр

• Maple Mini

• Protoboard

• LM386 күчөткүчү

• симметриялуу булак (+ 5V жана -5V)

• 10к көп бурулуштуу тримпот (же потенциометр)

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

• Үч 10k каршылыгы

• Төрт 470k каршылыгы

• Бир 5k6 каршылыгы

• Бир 1n4728A zener диод

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

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

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

Схема
Схема

Бул мен ойлогон спецификациялардын негизинде иштелип чыккан схема, бул өлчөө үчүн эң жакшы деп эсептейм, бирок интернетте дагы бир нече мисал бар.

5 -кадам: LM386 - кадоо

LM386 - кадоо
LM386 - кадоо

LM386 кондиционер же сигналды күчөтүү үчүн эки күчөткүчкө ээ.

6 -кадам: AmpOp - Дифференциалдык (алып салуучу)

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

7 -кадам: AmpOp - Inverter Adder

AmpOp - инвертордук аддер
AmpOp - инвертордук аддер

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

Maple Mini - Pinage
Maple Mini - Pinage

Белгиленген казыктар:

Кызыл >> 3V3 чыдамдуу

Жашыл >> 5V чыдамдуу

9 -кадам: Maple Mini - Пининг - а / Д тартууда колдонулат

Maple Mini - Пининг - а / Д Тартууда колдонулат
Maple Mini - Пининг - а / Д Тартууда колдонулат

Бул жерде мен колдонгон пин пин 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; // каармандыктын күчтүүлүгү = 1.0 const float fatorAmplificador = 1.0; // Күчтүүлүктүн өзгөрүлмөлүүлүгү жана өзгөрүүсү fatorMultiplicacao = fatorDivisor * fatorAmplificador; // Күчтүүлүк теориясында да Vens = 3.3V const калкыма Vcc = 3.3; // каармандык күчөтүү = ampccicador = Vcc /2.0; const float offSet = 1.66; // AD = 3.3 / 4095.0 конст флота 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; // баалуу көрсөткүчтөрдү аныктоо Vmin = 10000.0; // курал -жаракты аныктоо калкып чыгуу Vmed = 0.0; // курал -жарактарды алуу үчүн Vmáx e Vmín

Булак коду - Орнотуу ()

Сериялык портту 1 Мбит / сек ылдамдыкта баштаңыз. Биз AD портун киргизүү катары жөнгө салдык жана маалыматтарды чогултууну баштоодон мурун 5 секунд күттүк. Күтүү убактысы милдеттүү эмес.

void setup () {Serial.begin (1000000); // 1Mbps pinMode (leituraTensao, INPUT) сериялык порту; // AD комо кирүү кечигүүсү (5000); // 5s anté de iniciar a coleta. (кошумча)}

Source Code - Loop () - Маалымат чогултуунун өзгөрмөлөрүн баштайт

Loopто бизде кайталоо үчүн өзгөрмө бар. Бул жерде биз ошондой эле ADнын окууларын 0.0де сактайбыз жана VRMS өзгөрмөсүн 0.0да кайра баштайбыз.

void loop () {int i = 0; // variate for iteração float leitura = 0.0; // armazena leituras катары AD Vrms = 0.0; // reinicia a variável Vrms

Булак коду - Ар бир үлгү үчүн жеке эсептөөлөрдү тартып, аткарат

Бул этапта, эгерде мен үлгүгө караганда кичирээк болсо, анда мен үлгүлөрдүн санына жеткенге чейин тандоо иретин баштайбыз. Биз analogReadти иштетип, аналогдук портту окуп, окуу чыңалуусунун квадраттарынын суммасын эсептейбиз. Акырында, биз итераторду көбөйтөбүз.

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

Булак коду - Үлгүлөрдүн жалпы эсептөөлөрү жана максималдуу, минималдуу жана орточо көрсөткүчтөр

Биз чыңалуунун чыныгы баасын аныктоо үчүн көбөйтүү фактыны колдонобуз. Биз маанинин максималдуу же минималдуу экенин аныктайбыз жана учурдагы максималдуу жана минималдуу маанилердин орточо эсептерин эсептейбиз.

// Aplicando fator de multiplicaçoo for determinar o valorable real tasões Vrms = (sqrt (Vrms /amostras)) * fatorMultiplicacao; // deta se é um valor é máximo if (Vrms> Vmax) {Vmax = Vrms; } // аныктоо, эгерде (Vrms <Vmin) {Vmin = Vrms; } // эсептөө жана эсептөө Vmed = (Vmax + Vmin) /2.0;

Булак коду - Чыгуу параметрлери

Бизде чыгуунун маанисин "пландоо" үчүн үч вариант бар. Бизде CSV же Джейсон сыяктуу Arduino IDE сериялык плоттерине форматталган чыгаруу бар.

// сериялык IDE Arduino Serial.print (Vrms, 3); Serial.print (","); Serial.print (Vmax, 3); Serial.print (","); Serial.print (Vmin, 3); Serial.print (","); Serial.println (Vmed, 3); /* // saída formatada como json Serial.print ("{" заматта (мс) ":"); 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 форматындагы формат (миллис ()); 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

МЕН ЖОК

Сунушталууда: