Мазмұны:
- 1 -қадам: AD түрлендіргіші дегеніміз не?
- 2 -қадам: Қолданылған ресурстар
- 3 -қадам: ESP32 ADC
- 4 -қадам: Қолданылған схема
- 5 -қадам: Қолданылған белгі
- 6 -қадам: Осциллограф көмегімен алынған мәліметтер
- 7 -қадам: осциллограф арқылы алынған деректер (Excel -де csv файлы)
- 8 -қадам: ADC алған деректер
- 9 -қадам: ADC - Excel алған мәліметтер
- 10 -қадам: көтерілу пандустарын салыстыру
- 11 -қадам: Үлгілер санын теңестіру
- 12 -қадам: олқылықтарды толтыру - тренд сызығы
- 13 -қадам: Бос орындарды толтыру - 2 -дәрежелі полиномдық қисық
- 14 -қадам: олқылықтарды толтыру - функцияны бағалау
- 15 -қадам: осциллограф кернеуін ADC -мен салыстыру үшін эквивалентті мәнге түрлендіру
- 16 -қадам: Алынған екі пандусты салыстыру
- 17 -қадам: ADC оқу айырмашылығының мінез -құлқы (ҚАТЕ)
- 18 -қадам: ADC оқу айырмашылығы - түзету функциясын табу
- 19 -қадам: Басқа бағдарламалық жасақтаманы пайдалану
- 20 -қадам: Тұрақтылар және орнату ()
- 21 -қадам: Loop () және түзету функциясы
- 22 -қадам: PolySolve түзету функциясын қолдану
- 23 -қадам: Түзету арқылы түсіру - плоттер сериясы
- 24 -қадам: Есептеу құны
- 25 -қадам: Test Code - Setup () және Loop Start ()
- 26 -қадам: Тест коды - Loop () және өңдеу
- 27 -қадам: Тест коды - Цикл () - Нәтижелер
- 28 -қадам: Сынақ коды - пайдаланылған функциялар
- 29 -қадам: файлдар
Бейне: Сіз ESP32 ADC реттеу туралы білесіз бе ?: 29 қадам
2024 Автор: John Day | [email protected]. Соңғы өзгертілген: 2024-01-30 10:25
Бүгін мен техникалық мәселе туралы сөйлескім келеді, бірақ менің ойымша, ESP32-мен жұмыс істейтіндердің бәрі білуі керек: ADC (аналогты-цифрлық түрлендіргіш) оқуды реттеу мәселесі. Мен мұны маңызды деп санаймын, себебі «өлшеу» кезінде, әсіресе аналогтық шығысы бар құралмен, оқу дұрыс орындалатынына сенімді болу керек.
Бүгінгі бейнеде біз ESP32 «аналогты-цифрлық түрлендіргішін» қолданып өлшеу жүргіземіз, түрлендірудің сәйкессіздігін бақылаймыз және ADC реттеу / калибрлеу әдісін қолданамыз.
1 -қадам: AD түрлендіргіші дегеніміз не?
AD түрлендіргіші - бұл аналогтық (үздіксіз) шаманы сандық (дискретті) мәндерге аударуға қабілетті схема. Бұл нені білдіреді? Бұл цифрлық мәндер нөлдер мен бірліктердің комбинациясынан құрылған дискретті мәндерді ғана қабылдай алатынын білдіреді, ал аналогтық шама диапазондағы кез келген мәнді қабылдай алады. Мысалы, егер біз идеалды АА ұяшығының кернеуін өлшесек, біз 0В пен 1,5В арасындағы кез келген мәнді таба аламыз, себебі бұл аналогты шама. Идеал шамның шығыс күйі дискретті шамадағы екі күйді (өшіру немесе қосу) қабылдауы керек. Микроконтроллерлер осы дискретті логиканы қолдана отырып жұмыс істейтіндіктен, бізге аналогты шаманы цифрлық (немесе дискретті) аударуға қабілетті схема қажет.
2 -қадам: Қолданылған ресурстар
• Бір Lolin32 Lite картасы v1.0.0
• түсіруге арналған Tektronix TDS1001C осциллографы
• ESP32 үшін бір USB кабелі
• сигнал генераторы ретінде Hantek DSO4102C осциллографы
3 -қадам: ESP32 ADC
Espressif мәліметтеріне сәйкес, ESP32 чиптері өлшенген нәтижеде бір чиптен екіншісіне +/- 6% айырмашылықты көрсетуі мүмкін.
Сонымен қатар, конверсияда оқуға арналған барлық қол жетімді диапазонға сызықты жауап жоқ. Espressif калибрлеу әдісін ұсынады және пайдаланушыларға қажетті дәлдікке жетуді қажет деп санаса, басқа әдістерді енгізуді ұсынады.
Біз деректерді жинауды жүргіземіз, осыдан біз ADC жауаптарын және түзетуді оқу үшін математикалық процесті қолданудың мысалын көрсетеміз.
Бұл түзетулерді орындаудың бірнеше (қарапайым немесе күрделі) әдістері бар. Сіздің жобаңызға неғұрлым сәйкес келетінін бағалау сізге байланысты.
Мұнда көрсетілген суреттің иллюстрациялық мақсаты болады және түзету кезінде байқауға болатын қызықты мәселелерді шешуге тырысады.
4 -қадам: Қолданылған схема
Мен 25 МГц жиіліктегі сигнал генераторы бар осциллографты қолдандым, Hantek DSO4102C. Біз ESP A / D және осциллограф оқитын толқын жасадық. Жиналған деректер csv мен электрондық кестеге жазылды, мен оны жүктеу үшін мақаланың соңында қалдырамын.
5 -қадам: Қолданылған белгі
Біз конверсияның барлық диапазонында өтетін пандустарға қол жеткізуге мүмкіндік беретін төмен жиілікті трапеция сигналын таңдадық. Бұл осы рампаларда көптеген үлгілерді алуға мүмкіндік береді.
6 -қадам: Осциллограф көмегімен алынған мәліметтер
Түсірудің суретін осциллограф орындады. Деректер csv файлында сақталды. Сигналдың көтерілетін және түсетін пандустарындағы сәл қисықтыққа назар аударыңыз.
7 -қадам: осциллограф арқылы алынған деректер (Excel -де csv файлы)
Бізде сынамалар осында.
8 -қадам: ADC алған деректер
Сериалдың берілу жылдамдығын өзгерту арқылы біз ADC түсірген деректерді қарай аламыз. Трапеция сигналының деформациясын бақылаңыз.
Деректер Arduino IDE сериялық плоттерінде байқалады
9 -қадам: ADC - Excel алған мәліметтер
Жоғары жылдамдық пен сериялық терминалды қолдана отырып, біз мәндерді түсіріп, оларды салыстыру үшін Excel -де қолдана аламыз.
10 -қадам: көтерілу пандустарын салыстыру
Біз екі аулаудың екі өрмелеу пандусын салыстырамыз.
Екі пандуста пайда болатын қисықтыққа назар аударыңыз.
Есіңізде болсын, сол рампада бізде осциллографқа қарағанда ESP32 үлгісі көп.
11 -қадам: Үлгілер санын теңестіру
ESP32 осциллографқа қарағанда үлкенірек үлгілерді ұсынғандықтан, біз бұл мәндерді теңестіруіміз керек, себебі олар екі қисықты салыстыру үшін көрсеткіш болады.
Ол үшін біз тікелей салыстыруды жасаймыз.
Бізде осциллограф рампасына 305 үлгі және ADC рампасына 2365 үлгі бар.
Пандустар бірдей диапазонда болғандықтан, бізде әрбір осциллограф үшін ADC шамамен 7,75 үлгісі бар деп айтуға болады.
Осциллографтың әрбір үлгісінің индексін көбейту бірдей қисыққа ие, бірақ көрсеткіштері ADC -мен эквивалентті және қайта таратылатын мәліметтерге тең.
Жаңа позициялар бойынша жетіспейтін деректерді толтыру үшін біз белгілі деректерге статистикалық түрде сәйкес келетін қисықты қолданамыз.
12 -қадам: олқылықтарды толтыру - тренд сызығы
Белгілі деректерді (көк нүктелер) таңдап, тінтуірдің оң жақ батырмасын шертіп, біз: «Тренд сызығын қосу …» таңдаймыз.
Пайда болған терезеде біз Полиномия түрін таңдаймыз (2 -ші тапсырыс жеткілікті болады).
Біз сондай-ақ «Диаграммадағы теңдеуді қарау» және «Диаграммада R-квадрат мәнін көрсету» опцияларын тексердік.
Біз «Жабу» түймесін басамыз.
13 -қадам: Бос орындарды толтыру - 2 -дәрежелі полиномдық қисық
Excel бізге екі жаңа ақпарат береді; деректерге сәйкес келетін екінші ретті теңдеу және осы адекваттылықты анықтайтын R-квадрат теңдеу.
Есіңізде болсын, 1 -ге жақындаған сайын теңдеу соғұрлым орынды болады.
Келтірілген математикаға үңілмей, оны құрал ретінде қолданайық.
14 -қадам: олқылықтарды толтыру - функцияны бағалау
Үлгідегі олқылықтарды теңдеу арқылы алынған мәліметтермен толтырайық. Содан кейін оларды нүкте бойынша салыстырыңыз.
y = -9E -08x2 + 0, 0014x + 0, 1505
R² = 0, 9999
Осциллограф кернеуі = -9E -08 * индекс2 + 0, 0014 * индекс + 0, 1505
15 -қадам: осциллограф кернеуін ADC -мен салыстыру үшін эквивалентті мәнге түрлендіру
Осциллограф кернеуінің мәнін ADC баламалы мәніне айналдыру үшін осы мүмкіндікті пайдаланайық.
ESP32 ADP -де алынған ең жоғары мән 4095 болды, бұл сол индекс үшін 2.958V көрсеткішіне тең, біз мынаны айта аламыз:
Осциллографтың әрбір вольты AD шамамен 1384,4 бірлікке тең. Сондықтан осциллографтың барлық өлшемдерін осы мәнге көбейтуге болады.
16 -қадам: Алынған екі пандусты салыстыру
Екі оқылымда алынған айырмашылықтарды бейнелеу.
17 -қадам: ADC оқу айырмашылығының мінез -құлқы (ҚАТЕ)
Төмендегі қисық ADC оқуындағы айырмашылық өлшеу функциясы ретінде қалай әрекет ететінін көрсетеді. Бұл мәліметтер жинағы түзету функциясын табуға мүмкіндік береді.
Бұл қисықты табу үшін біз әр мүмкін болатын AD позициясының функциясы ретінде әр өлшемдегі айырмашылықты саламыз (0 -ден 4095 дейін).
18 -қадам: ADC оқу айырмашылығы - түзету функциясын табу
Біз Excel бағдарламасында түзету функциясын Trend сызығын қосу арқылы анықтай аламыз, ол біздің мәліметтерге сәйкес келетінше.
19 -қадам: Басқа бағдарламалық жасақтаманы пайдалану
Қисықтарды анықтауға арналған басқа қызықты бағдарламалық қамтамасыз ету PolySolve болып табылады, оны тікелей сілтемеде қолдануға болады: https://arachnoid.com/polysolve/ немесе Java қосымшасы ретінде жүктеу.
Ол жоғары дәрежелі полиномды регрессияларды қолдануға және пішімделген функцияны, сондай-ақ басқа функцияларды жеткізуге мүмкіндік береді.
Оны пайдалану үшін бірінші мәтін жолағына деректерді енгізу жеткілікті. Деректер үтірмен немесе қойындымен бөлінген X, Y ретін сақтауы тиіс. Нүктені ондық бөлшек ретінде дұрыс қолдануда сақ болыңыз.
Егер енгізілген мәліметтер дұрыс пішімделген болса, келесі өрісте диаграмма пайда болады.
Міне біздің ADC қате қисығы қалай өтті.
Бұл терезеде регрессияның нәтижесі, оның ішінде функцияның жеткіліктілігі туралы мәліметтер болады, ол өз кезегінде шығысын бірнеше жолмен пішімдеуге болады: C / C ++ функциясы, коэффициенттер тізімі, Java тілінде жазылған функция және т.б.
Ескерту: Ондық бөлгіштерге назар аударыңыз
20 -қадам: Тұрақтылар және орнату ()
Мен мұнда аналогты түсіру үшін қолданылатын GPIO -ны көрсетемін. Мен сериялық портты, сондай -ақ аналогты түсіру үшін анықталған түйреуішті инициализациялаймын.
const int pin_leitura = 36; // GPIO usado for captura analógica void setup () {Serial.begin (1000000); // PinMode (pin_leitura, INPUT) күйін келтіруге арналған портативті портфельді енгізу; // Қатысу әдістері
21 -қадам: Loop () және түзету функциясы
Біз реттелген кернеуді аламыз және мәндерді дұрыс түзетулермен немесе онсыз басып шығарамыз.
void loop () {int valor_analogico = analogRead (pin_leitura); // шынайы ақаулықтарды жою // Serial.print(valor_analogico + f (valor_analogico)); // открытка (COM CORREÇÃO) Serial.print (valor_analogico); // жөндеуден өту (SEM CORREÇÃO) Serial.print («,»); Serial.print (4095); // 4095 Serial.print («,»); Serial.println (0); // 0 -ге дейінгі маржа үшін ең маңыздысы
12 -жолда f (analog_value) айырмашылығы функциясын қосумен деректерді басып шығару мүмкіндігі бар екенін ескеріңіз.
22 -қадам: PolySolve түзету функциясын қолдану
Мұнда біз Arduino IDE ішіндегі PolySolve функциясын қолданамыз.
/* Режим: қалыпты полиномдық дәреже 6, 2365 x, y деректер жұптары Корреляция коэффициенті (r^2) = 9, 907187626418e-01 Стандартты қате = 1, 353761109831e+01 Шығу формасы: C/C ++ функциясы: Copyright © 2012, P. Лутус - https://www.arachnoid.com. Барлық құқықтар сақталған. */ қос f (қос x) {қайтару 2.202196968876e + 02 + 3.561383996027e-01 * x + 1.276218788985e-04 * pow (x, 2) + -3.470360275448e-07 * pow (x, 3) + 2.082790802069e- 10 * pow (x, 4) + -5.306931174991e-14 * pow (x, 5) + 4.787659214703e-18 * pow (x, 6); }
Ондық бөлшек ретінде үтірмен нүктенің өзгеруіне назар аударыңыз.
23 -қадам: Түзету арқылы түсіру - плоттер сериясы
24 -қадам: Есептеу құны
Көпмүшелік есептеулерді орындау үшін процессор бұл тапсырманы орындауы қажет. Бұл бастапқы кодқа және қол жетімді есептеу қуатына байланысты орындалудың кешігуіне әкелуі мүмкін.
Мұнда біз көп дәрежелі көпмүшелерді қолданатын тест нәтижелерінің кестесін көреміз. Pow () функциясы қолданылған және қолданылмаған уақыт арасындағы айырмашылыққа назар аударыңыз.
25 -қадам: Test Code - Setup () және Loop Start ()
Мұнда бізде тестте қолданылатын код бар.
void setup () {Serial.begin (1000000); // ақауды жою үшін бос орындар тізімі} void loop () {float valor_analogico = 500.0; // um valor arbtrario float quantidade = 10000.0; // quantidade de chamadas float contador = 0,0; // contador de chamadas
26 -қадам: Тест коды - Loop () және өңдеу
Мен микросекундтардағы мәнді алу үшін micros () функциясын қолдандым.
// ============== процесс процессі өзгермелі жұмыс = micros (); // marca o instante inicial while (contador <quantidade) {// v (valor_analogico); // função vazia // r (valor_analogico); // função com retorno // f0 (valor_analogico); // grau 0 // f1 (valor_analogico); // grau 1 // f2 (valor_analogico); // grau 2 // f3 (valor_analogico); // grau 3 // f4 (valor_analogico); // grau 4 // f5 (valor_analogico); // grau 5 // f6 (valor_analogico); // grau 6 // f13_semPow (valor_analogico); // grau 13º SEM a função POW // f13_comPow (valor_analogico); // grau 13º COM a função POW contador ++; } агора = (микрос () - агора) / квандидада; // уақыт аралығы анықталады // ============ процесс аяқталады
27 -қадам: Тест коды - Цикл () - Нәтижелер
Біз 13 -ші сынып функциясынан қайтарылған мәнді POW бар және онсыз салыстыру үшін басып шығарамыз, сондай -ақ өңдеу аралығын.
// PERMA. Print (f13_semPow (valor_analogico)) қарулы күштерінің 13 -ші жауынгерлік күші; // grau 13º SEM a função POW Serial.print (« -»); Serial.print (f13_comPow (valor_analogico)); // grau 13º COM a função POW Serial.print (« -»); // сериялық.println (agora, 6); }
28 -қадам: Сынақ коды - пайдаланылған функциялар
0 және 1 дәрежелі бос функциялар (тек қайтарумен).
// FUNÇÃO VAZIAdouble v (қос x) {} // FUNÇÃO SOMENTE COM RETORNO қос r (қос x) {қайтару x; } // FUNÇÃO DE GRAU 0 қос f0 (қос x) {қайтару 2.202196968876e+02; } // FUNÇÃO DE GRAU 1 қосарланған f1 (қосарланған x) {қайтару 2.202196968876e + 02 + 3.561383996027e-01 * x; }
2, 3, 4 -сынып функциялары.
// FUNÇÉ DE GRAU 2double f2 (double x) {return 2.202196968876e + 02 + 3.561383996027e-01 * x + 1.276218788985e-04 * pow (x, 2); } // FUNÇÉ DE GRAU 3 қос f3 (қос x) {қайтару 2.202196968876e + 02 + 3.561383996027e-01 * x + 1.276218788985e-04 * pow (x, 2) + -3.470360275448e-07 * pow (x, 3);)) + 2.082790802069e-10 * pow (x, 4); }
5 және 6 сынып функциялары.
// FUNÇÉ DE GRAU 5double f5 (double x) {return 2.202196968876e + 02 + 3.561383996027e-01 * x + 1.276218788985e-04 * pow (x, 2) + -3.470360275448e-07 * pow (x, 3) + 2.082790802069e-10 * pow (x, 4) + -5.306931174991e-14 * pow (x, 5);)) + 2.082790802069e-10 * pow (x, 4) + -5.306931174991e-14 * pow (x, 5) + 4.787659214703e-18 * pow (x, 6); }
13 -ші дәрежедегі әскери операция.
// FUNÇÉ DE GRAU 13 USANDO O POWdouble f13_comPow (қос x) {қайтару 2, 161282383460e + 02 + 3, 944594843419e-01 * x + 5, 395439724295e-04 * pow (x, 2) + -3, 968558178426 pow (x, 3) + 1, 047910519933e-08 * pow (x, 4) + -1, 479271312313e-11 * pow (x, 5) + 1, 220894795714e-14 * pow (x, 6) + -6, 136200785076e-18 * pow (x, 7) + 1, 910015248179e-21 * pow (x, 8) + -3, 566607830903e-25 * pow (x, 9) + 5, 000280815521e-30 * pow (x, 10) + 3, 434515045670e-32 * pow (x, 11) + -1, 407635444704e-35 * pow (x, 12) + 9, 871816383223e-40 * pow (x, 13); }
Тұтқындарды қолданбай 13 дәрежелі функция.
// FUNÇÉ DE GRAU SEM USAR O POWdouble f13_semPow (қос x) {қайтару 2, 161282383460e + 02 + 3, 944594843419e-01 * x + 5, 395439724295e-04 * x * x + -3, 968558178426e-06 * * x + 1, 047910519933e-08 * x * x * x * x + -1, 479271312313e-11 * x * x * x * x * x + 1, 220894795714e-14 * x * x * x * x * x * x + -6, 136200785076e-18 * x * x * x * x * x * x * x + 1, 910015248179e-21 * x * x * x * x * x * x * x * x + -3, 566607830903e- 25 * x * x * x * x * x * x * x * x * x + 5, 000280815521e-30 * x * x * x * x * x * x * x * x * x * x + 3, 434515045670e- 32 * x * x * x * x * x * x * x * x * x * x * x + x, -1 407635444704e -35 * x * x * x * x * x * x * x * x * x * x * x * x + 9, 871816383223e-40 * x * x * x * x * x * x * x * x * x * x * x * x * x; }
29 -қадам: файлдар
Файлдарды жүктеңіз:
МЕН ЖОҚ
Электрондық кесте
Ұсынылған:
Сіз өсімдіктердің қандай күйде екенін білесіз бе? [Бөлшек+убидоттар]: 6 қадам
Сіз өсімдіктердің қандай күйде екенін білесіз бе? [Бөлшек+Убидоттар]: Өзіңіз үшін топырақпен жүруді ештеңе алмастыра алмайды, бірақ қазіргі технология топырақты қашықтықтан бақылауға және менің адамдық сезімімді өлшеуге болмайтын параметрлерді бақылауға мүмкіндік берді. SHT10 сияқты топырақ зондтары қазір өте дәл және ұсынылған
Сіз қоқыс жәшігі туралы білмеген нәрселер !!: 6 қадам
Қоқыс жәшігі туралы сіз білмегендер !!: Бұл нұсқаулық сізге қоқыс жәшігі туралы білмеген нәрселерді көрсетеді, менің каналыма жазылыңыз, рахмет
ESP32: DAC деген не екенін білесіз бе ?: 7 қадам
ESP32: DAC деген не екенін білесіз бе ?: Бүгін біз екі мәселе туралы сөйлесетін боламыз. Біріншісі-DAC (сандық-аналогты түрлендіргіш). Мен мұны маңызды деп санаймын, өйткені ол арқылы, мысалы, біз ESP32 -де аудио шығыс жасаймыз. Бүгін біз қарастыратын екінші мәселе - осцилль
Сіз туралы білезік: 3 қадам
Сізді білезік туралы ойлау: сүйікті адамның күнін осы қарапайым білезіктер арқылы кез келген жерден ойлап жатқаныңызды (және көруді) хабарлау арқылы жарықтандырыңыз
Кез келген (Хаха) веб -сайтынан музыканы қалай алуға болады (Сіз естігенше оны ала аласыз Жақсы, егер ол флэшке ендірілмесе, онда сіз оған мүмкін емессіз) ӨҢДЕЛДІ !!!!! Қосылған ақпарат: 4 қадам
Кез келген (Хаха) веб -сайтынан музыканы қалай алуға болады (Сіз естігенше оны ала аласыз … Жарайды, егер ол флэшке ендірілмесе, онда сіз оған мүмкін емессіз) ӨҢДЕЛДІ !!!!! Қосымша ақпарат: егер сіз бір кездері веб -сайтқа кірсеңіз және ол сізге ұнайтын және қалайтын әнді ойнаса, онда бірдеңені шатастырсаңыз, менің кінәм жоқ - бұл сізге нұсқаулық ) Мен музыканы ала алдым