Мазмуну:

Ардуинонун жардамы менен электр менен камсыздоо жыштыгын жана чыңалуусун өлчөө: 6 кадам
Ардуинонун жардамы менен электр менен камсыздоо жыштыгын жана чыңалуусун өлчөө: 6 кадам

Video: Ардуинонун жардамы менен электр менен камсыздоо жыштыгын жана чыңалуусун өлчөө: 6 кадам

Video: Ардуинонун жардамы менен электр менен камсыздоо жыштыгын жана чыңалуусун өлчөө: 6 кадам
Video: Using BTS7960 BTN8982TA PWM H Bridge motor controller module with Arduino library 2024, Июль
Anonim
Ардуинонун жардамы менен электр менен камсыздоо жыштыгын жана чыңалуусун өлчөө
Ардуинонун жардамы менен электр менен камсыздоо жыштыгын жана чыңалуусун өлчөө

Киришүү:

Бул долбоордун максаты - бул жерде Индияда 220дан 240 Вольтко чейин 50 Гцке чейин болгон берүү жыштыгын жана чыңалуусун өлчөө. Мен сигналды басып алуу жана жыштыгы менен чыңалуусун эсептөө үчүн Arduino колдондум, сизде болгон башка микроконтроллерди же тактаны колдонсоңуз болот. Район бир нече компоненттерди талап кылат жана бардык практикалык максаттар үчүн абдан так.

1 -кадам: компоненттери талап кылынат

  • Arduino Uno
  • IC LM358
  • Төмөн түшүүчү трансформатор (220В - 12В)
  • Конденсаторлор:

    • 0.1uF
    • 2 x 1uF
  • Резисторлор:

    • 3 x 1kOhm
    • 2 x 100kOhm
    • 1.5kOhm
    • 3.3kOhm
    • 6.8kOhm
  • 3 x 1N4148 диод
  • Нан тактасы жана секирүүчү зым (милдеттүү эмес)

2 -кадам: Схемалык диаграмма

Принципиалдуу схема
Принципиалдуу схема
Принципиалдуу схема
Принципиалдуу схема

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

3 -кадам: Районду түшүнүү

Circuit түшүнүү
Circuit түшүнүү
Circuit түшүнүү
Circuit түшүнүү
Circuit түшүнүү
Circuit түшүнүү

Функционалдуулугуна ылайык, бул схеманы төрт бөлүккө бөлүүгө болот:

Ж: Zero Crossing Detector микросхемасы

Бул чынжыр толкун позитивден терске өткөн сайын 5В чарчы импульс жаратат. Резистор R1 D1 жана D2 менен айкалышып, диоддун кесилишиндеги кирүү чыңалуусун -0.6Vдан +5.6Vга чейин чектейт (диоддун алдыга чыңалуусу 0.6V деп эсептелет). Мындан тышкары, R1дин маанисин жогорулатуу менен чынжырдын кирүү чыңалуу диапазонун көбөйтө аласыз.

R2 жана R3 каршылыгы терс чыңалуусун -0,24 Вольтко чейин чектөө үчүн чыңалуу бөлүштүргүчтү түзөт, анткени LM358дин жалпы режиминин чыңалуусу -0,3 Вольт менен чектелген.

Резистор R4, R5, конденсатор C1 жана оп-амп (бул жерде салыштыруучу катары колдонулат) Schmitt Trigger схемасын түзөт, анда R4 жана R5 каршылыгы гистерезисти жерден +49.5мВ жерге орнотот. Schmitt Triggerдин чыгарылышы андан ары иштетүү үчүн Arduino PIN2ге берилет.

B: Изоляция жана чыңалуу ылдый түшөт

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

C: Peak Detector микросхемасы

Бул схема сигналдын максималдуу чыңалуусун аныктайт. Резистордук бөлүштүрүүчү R6 жана R7 кирүү чыңалуусун 0,23 эсеге төмөндөтөт (12Vrms 2.76Vrmsге чейин төмөндөйт). Диод D3 сигналдын оң жарым циклин гана өткөрөт. С2деги чыңалуу чыңалууну андан ары эсептөө үчүн A0 Arduino аналогдук пинине берилүүчү оңдолгон сигналдын чокусуна чейин жогорулайт.

Мындан тышкары, сиз бул схеманы ушул жерде айтылган так чоку детекторунун схемасы менен алмаштыра аласыз. Бирок менин көрсөтмө максаттарым үчүн жогорудагы схема жетиштүү болот.

Д: Ардуино

Бул бөлүктө, Arduino Schmitt Trigger схемасы тарабынан өндүрүлгөн төрт бурчтуу импульстарды басып алат жана чоку детекторунун схемасынан аналогдук чыңалууну окуйт. Берилиштер чарчы импульстун убактысын (демек, жыштыгы) аныктоо үчүн кайра иштелип чыгат (бул ток менен камсыздоо убактысына барабар) жана берүүнүн чыңалуусу.

4 -кадам: Жыштыгы жана чыңалуусун эсептөө

Жыштыкты эсептөө:

Ардуинонун жардамы менен биз сигналдын Т мезгилин өлчөй алабыз. Нөл өтүүчү детектордон келген төрт бурчтуу толкун импульстары 2 пинге берилет, ошол жерден биз ар бир импульстун убактысын өлчөй алабыз. Биз үзгүлтүктөрдүн жардамы менен чарчы импульстун эки Rising четинин ортосундагы убакытты эсептөө үчүн Arduino ички таймерин (тактап айтканда Timer1) колдоно алабыз. Таймер саат циклине 1 көбөйөт (prescaler жок = 1) жана маани TCNT1 реестринде сакталат. Демек, 16 МГц сааты эсептегичти ар бир микросекундага 16 көбөйтөт. Окшош эсептөөчү = 8 үчүн таймер ар бир микросекундага 2 көбөйөт. Ошентип, эки көтөрүлүүчү четинин ортосундагы мезгил

T = (TCNT1 мааниси) / ар бир эсепке алынган убакыт

Кайда, ар бир эсептөө үчүн алынган убакыт = prescaler / (Arduino саат ылдамдыгы (16MHz)

Демек, жыштык f = 1 / T = (Arduino саат ылдамдыгы (16MHz) / (Prescaler * TCNT! Мааниси)

Демек, таймер ылдамдыгы (Гц) = (Arduino саат ылдамдыгы (16МГц)) / prescaler тарабынан берилет

жана сигналдын жыштыгы = (Arduino саат ылдамдыгы) менен берилет

Тиешелүү түрдө f жыштыгын f = 1/T катышынан эсептей алабыз.

Чыңалууну эсептөө:

Ардуинонун борттогу ADCси 10 битке (мүмкүн болгон баалуулуктар = 2^10 = 1024) ээ, баалуулуктарды 0-1023 диапазонуна кайтарат. Тиешелүү аналогдук V чыңалуусун эсептөө үчүн төмөнкү байланышты колдонууга туура келет

V = (ADC окуу) * 5/1023

Жеткирүү чыңалуусун Vs (rms) эсептөө үчүн биз Transformer Ratio, Resistor divider R6R7 жана чокунун детекторунун схемасын эске алышыбыз керек. Биз жөн эле ар кандай факторлорду/катыштарды чогулта алабыз:

Трансформатордун катышы = 12/230 = 0.052

Резистордук бөлүүчү = R7/(R6 + R7) = 0.23

Пикет детекторунун схемасында = 1.414

Vs (rms) = V/(1.414*0.052*0.23) = (ADC окуу)*0.289

Белгилей кетүү керек, бул маани реалдуу баалуулуктан алыс, негизинен трансформатордун реалдуу катышындагы катачылыктан жана диоддун чыңалуусунун төмөндөшүнөн улам. Муну айланып өтүүнүн бир жолу - схеманы чогулткандан кийин факторду аныктоо. Башкача айтканда, камсыздоо чыңалуусун жана C2 конденсаторунун чыңалуусун мультиметр менен өзүнчө өлчөө, андан кийин Vs (rms) төмөнкүчө эсептөө менен:

Vs (rms) = ((Supply Voltage *5)/(C2 *1023 боюнча Voltage)) *(ADC окуу)

менин учурда, Vs (rms) = 0.33*(ADC окуу)

5 -кадам: Arduino коду

#аныктоо вольт_0 A0 // аналогдук чыңалуу окуу пин

учуучу uint16_t t_period; uint16_t ADC_value = 0; сүзүүчү вольт, жыштык; void isr () {t_period = TCNT1; // TCNT1 маанисин t_period сактоо TCNT1 = 0; // баштапкы абалга келтирүү Timer1 ADC_value = analogRead (volt_in); // аналогдук чыңалуу}} float get_freq () {uint16_t таймер = t_period; if (таймер == 0) 0 кайтаруу; // нөлгө бөлүүнү болтурбоо үчүн башка 16000000.0/(8UL*таймерин) кайтарыңыз; // жыштык f = clk_freq/(prescaler*timeperiod) тарабынан берилет} void setup () {TCCR1A = 0; TCCR1B = бит (CS11); // алдын ала эсептегичти 8 TCNT1 = 0 коюңуз; // Timer1 маанисин баштапкы абалга келтирүү TIMSK1 = бит (TOIE1); // иштетүү Timer1 ашуусун үзгүлтүккө учуратуу EIFR | = бит (INTF0); // тазалоо INT0 үзгүлтүк желеги Serial.begin (9600); } void loop () {attachInterrupt (0, isr, RISING); // тышкы үзгүлтүктү (INT0) кечиктирүүнү иштетүү (1000); detachInterrupt (0); freq = get_freq (); вольт = ADC_value*0.33; String buf; buf += String (freq, 3); buf += F ("Hz / t"); buf += сап (вольт); buf += F ("Вольт"); Serial.println (buf); }

6 -кадам: Жыйынтык

Жыйынтык
Жыйынтык
Жыйынтык
Жыйынтык

Сиз схеманы панельге чогултуп, кодду өзгөртө аласыз жана маалыматты сактоо үчүн SD картасын кошо аласыз, аны кийин талдай аласыз. Мындай мисалдардын бири, сиз чыңалуу саатында чыңалууну жана жыштыкты талдай аласыз.

Мен нан табакта чогулткан схема LM358 (кош опамп) ордуна LM324 (төрт опамп) колдонгон, анткени менде ошол учурда IC жок болчу жана COVID-19 пандемиясынан улам жалпы улуттук блокада мага жаңы IC алуумду кыйындатты.. Ошентсе да, бул схеманын ишине таасирин тийгизбейт.

Бардык сунуштар жана суроолор боюнча төмөндө комментарий жазуудан тартынбаңыз.

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