Мазмұны:
- 1 -қадам: Қажетті компоненттер
- 2 -қадам: Схемалық диаграмма
- 3 -қадам: Схеманы түсіну
- 4 -қадам: Жиілік пен кернеуді есептеу
- 5 -қадам: Arduino коды
- 6 -қадам: Қорытынды
Бейне: Arduino көмегімен электрмен жабдықтау жиілігі мен кернеуді өлшеу: 6 қадам
2024 Автор: John Day | [email protected]. Соңғы өзгертілген: 2024-01-30 10:23
Кіріспе:
Бұл жобаның мақсаты - Үндістанда 220-240 вольт пен 50 Гц арасындағы жеткізу жиілігі мен кернеуді өлшеу. Мен Arduino -ды сигналды түсіруге, жиілік пен кернеуді есептеуге қолдандым, сізде кез келген басқа микроконтроллер немесе тақта болуы мүмкін. Схема бірнеше компоненттерді қажет етеді және барлық практикалық мақсаттар үшін өте дәл.
1 -қадам: Қажетті компоненттер
- Ардуино Уно
- IC LM358
- Төменгі трансформатор (220 В - 12 В)
-
Конденсаторлар:
- 0.1uF
- 2 x 1uF
-
Резисторлар:
- 3 x 1kOhm
- 2 x 100kOhm
- 1,5кОм
- 3,3 кмОм
- 6.8кОм
- 3 x 1N4148 диод
- Нан тақтасы мен қосқыш сымы (міндетті емес)
2 -қадам: Схемалық диаграмма
Жоғарыда келтірілген тізбекте трансформатордың бастапқы көзі электр желісіне, ал біріншісі біздің өлшеу тізбегіне қосылады
3 -қадам: Схеманы түсіну
Функционалдылыққа сәйкес бұл тізбекті төрт бөлікке бөлуге болады:
A: нөлдік қиылысу детекторының тізбегі
Бұл тізбек толқын оңнан терісге ауысқан кезде 5В квадраттық импульс жасайды. R1 резисторы D1 мен D2 -мен біріктірілгенде диодтың түйісуінде кіріс кернеуінің бұрылуын -0.6В -тан +5.6В -ге дейін шектейді (диодтың тура кернеуі 0,6В деп есептегенде). Сонымен қатар, сіз R1 мәнін арттыру арқылы тізбектің кіріс кернеу диапазонын арттыра аласыз.
R2 және R3 резисторы кернеудің теріс бұрылысын -0,24 Вольтке дейін шектеу үшін кернеу бөлгішті құрайды, себебі LM358 кіріс режимінің кіріс кернеуі -0,3 Вольтпен шектеледі.
R4, R5 резисторы, C1 конденсаторы және оп-ампер (мұнда салыстыру ретінде пайдаланылады) Schmitt Trigger тізбегін құрайды, онда R4 және R5 резисторы гистерезиске +49,5 мВ жерден жоғары орнатады. Schmitt Trigger шығысы одан әрі өңдеу үшін Arduino PIN2 -ге беріледі.
B: оқшаулау мен кернеуді төмендету
Атауынан көрініп тұрғандай, бұл бөлік кернеуді шамамен 12 Врм дейін оқшаулайды және төмендетеді. Төмендетілген кернеу одан әрі аспаптар тізбегіне беріледі.
C: Шың детекторының тізбегі
Бұл схема кіріс сигналының максималды шыңдық кернеуін анықтайды. Резисторлық бөлгіш R6 және R7 кіріс кернеуін 0,23 есе төмендетеді (12Врмс 2,76Врмс дейін төмендейді). D3 диоды сигналдың оң жарты циклін ғана өткізеді. С2 кернеуі кернеуді одан әрі есептеу үшін A0 Arduino аналогтық түйреуішіне берілетін түзетілген сигналдың ең жоғары мәніне дейін артады.
Сонымен қатар, сіз бұл тізбекті дәл осында айтылған дәл шыңы детекторлық схемаға ауыстыра аласыз. Бірақ менің демонстрациялық мақсатым үшін жоғарыдағы схема жеткілікті болады.
Д: Ардуино
Бұл бөлімде Arduino Schmitt Trigger схемасы тудыратын квадрат импульстарды түсіреді және шың детекторлар тізбегінен аналогты кернеуді оқиды. Деректер квадрат импульсінің уақыт кезеңін (демек, жиілікті) анықтау үшін өңделеді.
4 -қадам: Жиілік пен кернеуді есептеу
Жиілікті есептеу:
Arduino көмегімен біз сигналдың T уақыт кезеңін өлшей аламыз. Нөлдік қиылысу детекторының квадраттық толқын импульстері 2 түйреуішке беріледі, сол жерден біз әр импульстің уақыт кезеңін өлшей аламыз. Біз үзілістер көмегімен квадрат импульсінің екі көтерілетін жиегі арасындағы уақыт кезеңін есептеу үшін Arduino ішкі таймерін (дәл Timer1) пайдалана аламыз. Таймер сағат цикліне 1 -ге артады (алдын ала есептегішсіз = 1) және мән TCNT1 регистрінде сақталады. Осылайша, 16 МГц сағаты есептегішті әр микросекундқа 16 -ға арттырады. Алдын ала есептегіш = 8 үшін таймер әрбір микросекундқа 2 -ге ұлғаяды. Осылайша, екі көтерілудің арасындағы уақыт кезеңі
T = (TCNT1 мәні) / әр санау үшін алынған уақыт
Бұл жерде әр есептеуге кететін уақыт = prescaler / (Arduino сағат жылдамдығы (16 МГц)
Демек, жиілік f = 1 / T = (Arduino жылдамдығы (16МГц) / (Prescaler * TCNT! Мәні)
Демек, таймер жылдамдығы (Гц) = (Arduino сағат жылдамдығы (16МГц)) / алдын ала есептегіш арқылы беріледі
ал сигнал жиілігі = (Arduino сағат жылдамдығы) арқылы беріледі
Сәйкесінше f жиілігін f = 1/T қатынасынан есептей аламыз.
Кернеуді есептеу:
Arduino борттық ADC-нің ажыратымдылығы 10 бит (мүмкін мәндер = 2^10 = 1024), мәндерді 0-1023 аралығында қайтарады. Сәйкес келетін аналогты кернеуді V есептеу үшін келесі қатынасты қолдану керек
V = (ADC оқу) * 5/1023
Қоректену кернеуін Vs (rms) есептеу үшін біз трансформатордың коэффициентін, 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) = ((Жеткізу кернеуі *5)/(C2 *1023 кернеуі)) *(ADC оқу)
менің жағдайда, Vs (rms) = 0.33*(ADC оқу)
5 -қадам: Arduino коды
#А0 -дағы вольтты анықтаңыз // аналогты кернеуді оқу штыры
тұрақсыз 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); жиілік = get_freq (); вольт = ADC_ мәні*0,33; String buf; buf += Жол (жиілік, 3); buf += F («Гц / т»); buf += Жол (вольт); buf += F («Вольт»); Serial.println (buf); }
6 -қадам: Қорытынды
Сіз тізбекті тақтаға жинап, кодты өзгерте аласыз және деректерді сақтау үшін SD картасын қоса аласыз, оны кейінірек талдауға болады. Осындай мысалдардың бірі - сіз ең жоғары сағаттағы кернеу мен жиілікті талдай аласыз.
Мен тақтаға құрастырған схема LM358 (қос опамп) орнына LM324 (төрт опамп) қолданды, өйткені менде ол кезде IC болмаған және COVID-19 пандемиясына байланысты жалпыұлттық құлыптау маған жаңа IC алуды қиындатты.. Дегенмен, бұл тізбектің жұмысына әсер етпейді.
Кез келген ұсыныстар мен сұраулар үшін төменде пікір қалдырыңыз.
Ұсынылған:
DIY зертханалық электрмен жабдықтау [құрастыру + тестілер]: 16 қадам (суреттермен)
DIY зертханалық электрмен жабдықтау [құрастыру + тестілер]: Бұл нұсқаулықта / бейнеде мен сізге 30В 6А 180 Вт (10А MAX қуат шегінде) жеткізе алатын айнымалы зертханалық электрмен жабдықтауды қалай жасауға болатынын көрсетемін. Минималды ток шегі 250-300 мА.Сонымен қатар дәлдікті, жүктемені, қорғанысты және т.б
Arduino көмегімен тұрақты кернеуді өлшеу: 5 қадам
Arduino көмегімен тұрақты ток кернеуін өлшеу: Бұл жобада мен сізге arduino көмегімен 50В дейінгі кернеуді қалай өлшеу керектігін көрсетемін және OLED дисплей модулінің бір бөлігінде arduino UNOoled дисплейі керек 10к Ом резисторы 1к Ом резисторлық кабель
Негізгі электрмен жабдықтау тізбегі мен теориясы: 7 қадам
Негізгі электрмен жабдықтау тізбегі мен теориясы: Бұл жобада мен сізге негізгі компоненттерді қолдана отырып, электрмен жабдықтауды қалай жасау керектігін көрсетемін. Мен трансформаторлар туралы негізгі теорияны, түзетуді тегістеу мен реттеуді қарастырамын
Arduino көмегімен кернеуді өлшеу: 5 қадам
Arduino көмегімен кернеуді өлшеу: ток өлшеуге қарағанда кернеуді өлшеу кез келген микроконтроллердің көмегімен өте оңай. Егер сіз батареямен жұмыс жасасаңыз немесе реттелетін қуат көзін өзіңіз жасағыңыз келсе, кернеуді өлшеу қажет болады. Бұл әдіс қолданылғанымен
Тұрақты кернеуді Arduino және Node-RED көмегімен өлшеу: 8 қадам (суреттермен)
Тұрақты кернеуді Arduino мен Node-RED көмегімен өлшеу: Ардуинода тұрақты кернеуді өлшеуге арналған көптеген оқулықтар бар, бұл жағдайда мен қарсылықтың кіріс мәндерін талап етпестен тұрақты токты өлшеудің ең жақсы функционалды әдісі деп санайтын оқу құралын таптым. және мультиметр