Orodha ya maudhui:

Je! Unajua Kuhusu Marekebisho ya ESP32 ADC?: Hatua 29
Je! Unajua Kuhusu Marekebisho ya ESP32 ADC?: Hatua 29

Video: Je! Unajua Kuhusu Marekebisho ya ESP32 ADC?: Hatua 29

Video: Je! Unajua Kuhusu Marekebisho ya ESP32 ADC?: Hatua 29
Video: Как использовать ESP32 WiFi и Bluetooth с Arduino IDE, полная информация с примерами и кодом. 2024, Julai
Anonim
Image
Image
Rasilimali Zilizotumiwa
Rasilimali Zilizotumiwa

Leo, nitazungumza juu ya suala la kiufundi zaidi, lakini nadhani kila mtu anayefanya kazi na ESP32 anapaswa kujua: suala la ADC (kibadilishaji cha analog-to-digital) soma marekebisho. Ninaona hii muhimu kwa sababu wakati wa kufanya "kipimo," haswa na chombo ambacho kina pato la analog, unahitaji kuwa na hakika kabisa kuwa usomaji unafanywa kwa usahihi.

Katika video leo, kwa hivyo, tutafanya vipimo kwa kutumia "kibadilishaji cha analojia-dijiti" ya ESP32, tazama tofauti za uongofu, na tumia njia ya urekebishaji / usawazishaji wa ADC.

Hatua ya 1: Je! AD Converter ni nini?

Kigeuzi cha AD ni mzunguko unaoweza kutafsiri idadi ya analojia (endelevu) katika maadili ya dijiti (tofauti). Hiyo inamaanisha nini? Inamaanisha kwamba wakati maadili ya dijiti yanaweza kudhani tu maadili madhubuti yaliyoundwa na mchanganyiko wa zero na zile, idadi ya analog inaweza kuchukua dhamana yoyote ndani ya anuwai. Kwa mfano, ikiwa tutapima voltage ya seli bora ya AA, tunaweza kupata thamani yoyote kati ya 0V na 1.5V, kwani hii ni idadi ya analog. Hali ya pato la taa bora lazima ichukue majimbo mawili tu (mbali au kuwasha), ambayo ni ukubwa tofauti. Kwa kuwa watawala wadogo hufanya kazi kwa kutumia mantiki hii, tunahitaji mzunguko unaoweza kutafsiri idadi ya analogi kuwa dijiti (au tofauti).

Hatua ya 2: Rasilimali Zilizotumiwa

• Kadi moja ya Lolin32 Lite v1.0.0

• Tektronix TDS1001C oscilloscope ya kukamata

• Kebo moja ya USB ya ESP32

• Hantek DSO4102C oscilloscope kama jenereta ya ishara

Hatua ya 3: ESP32 ADC

ESP32 ADC
ESP32 ADC

Kulingana na data ya Espressif, chips za ESP32 zinaweza kutoa tofauti ya +/- 6% kutoka kwa chip moja hadi nyingine katika matokeo yaliyopimwa.

Kwa kuongezea, ubadilishaji HAUNA jibu la mstari kwa kila anuwai inayopatikana ya kusoma. Espressif hutoa njia ya upimaji na inapendekeza kuwa watumiaji watekeleze njia zingine ikiwa wataona ni muhimu kufikia usahihi unaohitajika.

Tutafanya upatikanaji wa data, na kutoka kwa hii, tutaonyesha majibu ya ADC na mfano wa kutumia mchakato wa hesabu kusoma marekebisho hayo.

Kuna njia kadhaa (rahisi au ngumu zaidi) za kukamilisha marekebisho haya. Ni juu yako kutathmini inayofaa zaidi kwa mradi wako.

Ile iliyoonyeshwa hapa itakuwa na kusudi la kielelezo na kujaribu kushughulikia vidokezo vya kupendeza ambavyo vinaweza kuzingatiwa wakati wa marekebisho.

Hatua ya 4: Mzunguko Umetumika

Mzunguko Umetumika
Mzunguko Umetumika

Nilitumia oscilloscope na jenereta ya ishara ambayo huenda hadi 25 MHz, Hantek DSO4102C. Tulitengeneza wimbi ambalo lilisomwa na ESP A / D na oscilloscope. Takwimu zilizokusanywa zilirekodiwa katika csv na katika lahajedwali, ambayo nitaiacha mwishoni mwa kifungu hicho ili kupakuliwa.

Hatua ya 5: Ishara Imetumika

Ishara Imetumika
Ishara Imetumika

Tulichagua ishara ya trapezoidal ya masafa ya chini ambayo inaruhusu ufikiaji wa barabara zinazopita kwenye wigo mzima wa ubadilishaji. Hii inaruhusu idadi kubwa ya sampuli kwenye barabara hizi.

Hatua ya 6: Takwimu Zinazopatikana na Oscilloscope

Takwimu Zilizopatikana na Oscilloscope
Takwimu Zilizopatikana na Oscilloscope

Picha ya kukamata ilifanywa na oscilloscope. Takwimu zilihifadhiwa kwenye faili ya csv. Kumbuka kupindika kidogo kwenye njia panda zinazoinuka na kushuka za ishara.

Hatua ya 7: Takwimu zilizopatikana na Oscilloscope (faili ya csv katika Excel)

Takwimu zilizopatikana na Oscilloscope (faili ya csv katika Excel)
Takwimu zilizopatikana na Oscilloscope (faili ya csv katika Excel)

Tuna sampuli hapa.

Hatua ya 8: Takwimu Zinazopatikana na ADC

Takwimu Zilizopatikana na ADC
Takwimu Zilizopatikana na ADC

Kwa kubadilisha kiwango cha uhamishaji wa serial, tunaweza kuona data iliyonaswa na ADC. Angalia mabadiliko ya ishara ya trapezoidal.

Takwimu zilizozingatiwa juu ya mpangaji wa serial wa Arduino IDE

Hatua ya 9: Takwimu Zinazopatikana na ADC - Excel

Takwimu Zilizopatikana na ADC - Excel
Takwimu Zilizopatikana na ADC - Excel

Kutumia kiwango cha juu na terminal ya serial, tunaweza kukamata maadili na kuyatumia katika Excel kwa kulinganisha kwetu.

Hatua ya 10: Kulinganisha Njia za Kupanda

Ulinganisho wa Njia za Kupanda
Ulinganisho wa Njia za Kupanda

Tunalinganisha njia mbili za kupanda kwa samaki wawili.

Kumbuka curvature ambayo hufanyika kwenye barabara zote mbili.

Kumbuka pia kuwa kwa njia hiyo hiyo, tuna sampuli nyingi zaidi za ESP32 kuliko kutoka kwa oscilloscope.

Hatua ya 11: Inalinganisha Idadi ya Sampuli

Inalinganisha Idadi ya Sampuli
Inalinganisha Idadi ya Sampuli
Inalinganisha Idadi ya Sampuli
Inalinganisha Idadi ya Sampuli

Kwa sababu ESP32 ilitoa idadi kubwa ya sampuli kuliko oscilloscope, tunahitaji kulinganisha maadili haya, kwani yatatumika kama faharisi kulinganisha curves mbili.

Kwa hili, tutafanya kulinganisha moja kwa moja.

Tuna sampuli 305 kwa njia panda ya oscilloscope na sampuli 2365 za njia panda ya ADC.

Kwa kuwa rampu zina kiwango sawa, tunaweza kusema kuwa tuna sampuli takriban 7.75 za ADC kwa kila oscilloscope.

Kuzidisha faharisi ya kila sampuli ya oscilloscope ina curve sawa, lakini na fahirisi sawa na ADC na data iliyosambazwa tena.

Ili kujaza data iliyokosekana kwa nafasi mpya, tutatumia curve ambayo kwa takwimu inakidhi data inayojulikana.

Hatua ya 12: Kujaza Mapengo - Mstari wa Mwelekeo

Kujaza Mapengo - Mstari wa Mwelekeo
Kujaza Mapengo - Mstari wa Mwelekeo
Kujaza Mapengo - Mstari wa Mwelekeo
Kujaza Mapengo - Mstari wa Mwelekeo

Kuchagua data inayojulikana (dots za samawati), kwa kubofya na kisha kubonyeza na kitufe cha kulia, tunachagua: "Ongeza Mstari wa Mwenendo …"

Katika dirisha inayoonekana, tunachagua aina ya Polynomial (agizo 2 litatosha).

Tuliangalia pia chaguzi "Tazama Mlinganyo kwenye chati" na "Onyesha thamani ya mraba R kwenye chati".

Tunabofya "Funga".

Hatua ya 13: Kujaza Mapengo - Daraja la 2 Polynomial Curve

Kujaza Mapengo - Daraja la 2 Polynomial Curve
Kujaza Mapengo - Daraja la 2 Polynomial Curve

Excel inatupatia habari mpya mbili; equation ya mpangilio wa pili ambayo inafaa zaidi data, na equation yenye mraba R ambayo inakadiria utoshelevu huu.

Kumbuka tu kuwa karibu na 1, sawa sawa equation.

Wacha tuchunguze hesabu zinazohusika, wacha tu tutumie kama zana.

Hatua ya 14: Kujaza Mapengo - Kutathmini Kazi

Wacha tujaze mapungufu ya sampuli na data inayotokana na equation. Na kisha, linganisha hatua kwa hatua.

y = -9E-08x2 + 0, 0014x + 0, 1505

R² = 0, 9999

Voltage ya Oscilloscope = -9E-08 * index2 + 0, 0014 * index + 0, 1505

Hatua ya 15: Kubadilisha Voltage ya Oscilloscope kuwa Thamani Sawa Kulinganisha na ADC

Kubadilisha Voltage ya Oscilloscope kuwa Thamani Sawa Kulinganisha na ADC
Kubadilisha Voltage ya Oscilloscope kuwa Thamani Sawa Kulinganisha na ADC

Wacha tutumie faida hii pia kubadilisha thamani ya voltage ya oscilloscope kuwa sawa na ADC.

Kwa kuwa dhamana kubwa zaidi iliyopatikana katika ADP ya ESP32 ilikuwa 4095, ambayo ni sawa na usomaji wa 2.958V kwa faharisi sawa, tunaweza kusema kuwa:

Kila volt katika vipimo vya oscilloscope ni sawa na takriban vitengo 1384.4 vya AD. Kwa hivyo, tunaweza kuzidisha vipimo vyote vya oscilloscope na thamani hii.

Hatua ya 16: Kulinganisha Njia mbili zilizopatikana

Kulinganisha Njia mbili zilizopatikana
Kulinganisha Njia mbili zilizopatikana

Kuibua tofauti zilizopatikana katika masomo hayo mawili.

Hatua ya 17: Tabia ya Tofauti ya Kusoma kwa ADC (ERROR)

Tabia ya Tofauti ya Kusoma kwa ADC (ERROR)
Tabia ya Tofauti ya Kusoma kwa ADC (ERROR)

Curve hapa chini inaonyesha jinsi tofauti katika usomaji wa ADC inavyofanya kama kazi ya kipimo. Mkusanyiko huu wa data utaturuhusu kupata kazi ya kurekebisha.

Ili kupata safu hii, tunapanga tu tofauti inayopatikana katika kila kipimo kama kazi ya kila nafasi inayowezekana ya AD (0 hadi 4095).

Hatua ya 18: Tabia ya Tofauti ya Kusoma ADC - Kupata Kazi ya Marekebisho

Tabia ya Tofauti ya Kusoma kwa ADC - Kupata Kazi ya Marekebisho
Tabia ya Tofauti ya Kusoma kwa ADC - Kupata Kazi ya Marekebisho

Tunaweza kuamua katika Excel kazi ya kusahihisha kwa kuongeza Mstari wa Mwenendo, sasa wa kiwango cha juu, hadi itoshe kabisa na data yetu.

Hatua ya 19: Kutumia Programu nyingine

Kutumia Programu Nyingine
Kutumia Programu Nyingine
Kutumia Programu Nyingine
Kutumia Programu Nyingine
Kutumia Programu Nyingine
Kutumia Programu Nyingine
Kutumia Programu Nyingine
Kutumia Programu Nyingine

Programu nyingine ya kupendeza ya kuamua curves ni PolySolve, ambayo inaweza kutumika moja kwa moja kwenye kiunga: https://arachnoid.com/polysolve/ au kupakuliwa kama programu ya Java.

Inaruhusu matumizi ya kurudi nyuma kwa kiwango cha juu cha polynomial na utoaji wa kazi iliyofomatiwa, na pia kazi zingine.

Ili kuitumia, ingiza tu data kwenye kisanduku cha maandishi ya kwanza. Takwimu lazima zifuate mpangilio wa X, Y uliotengwa na koma, au kichupo. Kuwa mwangalifu kwa kutumia nukta kwa usahihi kama nukta ya desimali.

Chati itaonekana kwenye kisanduku kijacho ikiwa data iliyoingizwa imeundwa vyema.

Hivi ndivyo kosa letu la ADC lilivyokwenda.

Dirisha hili litawasilisha matokeo ya kurudi nyuma, pamoja na data ya utoshelevu wa kazi, ambayo inaweza kupangiliwa pato lake kwa njia kadhaa: kama kazi ya C / C ++, orodha ya coefficients, kazi iliyoandikwa katika Java, n.k.

Kumbuka: Zingatia watenganishaji wa desimali

Hatua ya 20: Mara kwa mara na Usanidi ()

Ninaonyesha hapa GPIO iliyotumiwa kwa kukamata analog. Ninaanzisha bandari ya serial, pamoja na pini iliyowekwa kwa kukamata analog.

const int pin_leitura = 36; // GPIO usado para captura analógica batili setup () {Serial.begin (1000000); // Iniciciando a porta serial somente para debug pinMode (pin_leitura, INPUT); // Pino utilizado para captura analógica}

Hatua ya 21: Kitanzi () na Kazi ya Marekebisho

Tunafanya kukamata kwa voltage iliyobadilishwa, na tunachapisha maadili na au bila marekebisho sahihi.

kitanzi batili () {int valor_analogico = analogRead (pin_leitura); // realiza a captura da tensão ajustada //Serial.print(valor_analogico + f (valor_analogico)); // imprime os valores para debug (COM CORREÇÃO) Serial.print (valor_analogico); // imprimime os valores para debug (SEM CORREÇÃO) Serial.print (","); Serial.print (4095); Serial.println (0); // cria uma linha kwa marcar o valor mínimo de 0}

Angalia katika mstari wa 12 kwamba tuna chaguo la kuchapisha data na kuongeza kwa tofauti ya kazi f (analog_value).

Hatua ya 22: Kutumia Kazi ya Marekebisho ya PolySolve

Hapa, tunatumia kazi ya PolySolve ndani ya Arduino IDE.

/ * Njia: kiwango cha kawaida cha Polynomial 6, 2365 x, y data jozi mgawo wa uwiano (r ^ 2) = 9, 907187626418e-01 Kosa la kawaida = 1, 353761109831e + 01 Fomu ya Pato: C / C ++ kazi: Hakimiliki © 2012, P. Lutus - https://www.arachnoid.com. Haki zote zimehifadhiwa. * / mara mbili f (mara mbili x) {kurudi 2.202196968876e + 02 + 3.561383996027e-01 * x + 1.276218788985e-04 * pow (x, 2) + -3.470360275448e-07 * pow (x, 3) + 2.082790802069e- 10 * poda (x, 4) + -5.306931174991e-14 * poda (x, 5) + 4.787659214703e-18 * pow (x, 6); }

Kumbuka mabadiliko ya koma-kwa-nukta kama kitenganishi cha desimali.

Hatua ya 23: Kukamata na Marekebisho - Plotter Serial

Piga na Marekebisho - Sherehe ya Plotter
Piga na Marekebisho - Sherehe ya Plotter

Hatua ya 24: Gharama za Kompyuta

Gharama ya Kompyuta
Gharama ya Kompyuta
Gharama ya Kompyuta
Gharama ya Kompyuta

Ili kufanya mahesabu ya polynomial, ni muhimu kwa processor kushughulikia kazi hii. Hii inaweza kusababisha ucheleweshaji wa utekelezaji, kulingana na nambari ya chanzo na nguvu inayopatikana ya kompyuta.

Hapa, tunaona meza ya matokeo ya mtihani kwa kutumia polynomials anuwai. Angalia tofauti kati ya nyakati ambazo kazi ya pow () ilitumika na wakati haikuwa.

Hatua ya 25: Nambari ya Mtihani - Usanidi () na Anza Kitanzi ()

Hapa, tuna nambari inayotumiwa katika mtihani wetu.

kuanzisha batili () {Serial.begin (1000000); // Iniciando a porta serial somente para debug} batili kitanzi () {float valor_analogico = 500.0; // um valor arbtrario kuelea quantidade = 10000.0; // quantidade de chamadas kuelea contador = 0.0; // contador de chamadas

Hatua ya 26: Nambari ya Mtihani - Kitanzi () na Usindikaji

Nilitumia kazi ya micros () kupata thamani katika microseconds.

// ============= inicia o processo kuelea agora = micros (); // marca o instante ya kawaida wakati (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 ya kupendeza POW contador ++; } agora = (micros () - agora) / quantidade; // determina o intervalo que se passou para cada iteração // ============= finaliza o processo

Hatua ya 27: Nambari ya Mtihani - Kitanzi () - Matokeo

Tunachapisha thamani iliyorudishwa kutoka kwa kazi ya daraja la 13 na bila POW kwa kulinganisha, na pia muda wa usindikaji.

// imprime o valor retornado da função de grau 13 com e sem POW para comparação Serial.print (f13_semPow (valor_analogico)); // grau 13º SEM a função POW Serial.print ("-"); Serial.print (f13_comPow (valor_analogico)); // grau 13º COM a função POW Serial.print ("-"); // imprime o intervalo kufanya processamento Serial.println (agora, 6); }

Hatua ya 28: Nambari ya Mtihani - Kazi Zilizotumiwa

Kazi tupu (tu na kurudi) ya digrii 0 na 1.

// FUNÇÃO VAZIA mara mbili v (mara mbili x) {} // FUNÇÃO SOMENTE COM RETORNO mara mbili r (mara mbili x) {kurudi x; } // FUNÇÃO DE GRAU 0 mara mbili f0 (mara mbili x) {kurudi 2.202196968876e + 02; } // FUNÇÃO DE GRAU 1 mara mbili f1 (mara mbili x) {kurudi 2.202196968876e + 02 + 3.561383996027e-01 * x; }

Daraja la 2, 3, na 4 kazi.

// FUNÇÃO DE GRAU 2double f2 (double x) {return 2.202196968876e + 02 + 3.561383996027e-01 * x + 1.276218788985e-04 * pow (x, 2); } // FUNÇÃO DE GRAU 3 mara mbili f3 (mara mbili x) {kurudi 2.202196968876e + 02 + 3.561383996027e-01 * x + 1.276218788985e-04 * pow (x, 2) + -3.470360275448e-07 * pow (x, 3); } // FUNÇÃO DE GRAU 4 mara mbili f4 (mara mbili x) {kurudi 2.202196968876e + 02 + 3.561383996027e-01 * x + 1.276218788985e-04 * pow (x, 2) + -3.470360275448e-07 * pow (x, 3 + 2.082790802069e-10 * poda (x, 4); }

Kazi za Daraja la 5 na 6.

// FUNÇÃO DE GRAU 5dufu f5 (mara mbili x) {kurudi 2.202196968876e + 02 + 3.561383996027e-01 * x + 1.276218788985e-04 * pow (x, 2) + -3.470360275448e-07 * pow (x, 3) + 2.082790802069e-10 * poda (x, 4) + -5.306931174991e-14 * poda (x, 5); } // FUNÇÃO DE GRAU 6 mara mbili f6 (mara mbili x) {kurudi 2.202196968876e + 02 + 3.561383996027e-01 * x + 1.276218788985e-04 * pow (x, 2) + -3.470360275448e-07 * pow (x, 3 + 2.082790802069e-10 * poda (x, 4) + -5.306931174991e-14 * pow (x, 5) + 4.787659214703e-18 * pow (x, 6); }

Daraja la 13 kazi kwa kutumia POW.

// FUNÇÃO DE GRAU 13 USANDO O POW mara mbili f13_comPow (mara mbili x) {kurudi 2, 161282383460e + 02 + 3, 944594843419e-01 * x + 5, 395439724295e-04 * pow (x, 2) + -3, 968558178426e-06 * poda (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 * poda (x, 10) + 3, 434515045670e-32 * poda (x, 11) + -1, 407635444704e-35 * poda (x, 12) + 9, 871816383223e-40 * poda (x, 13); }

Daraja la 13 kazi bila kutumia POW.

// FUNÇÃO DE GRAU SEM USAR O POW mara mbili f13_semPow (mara mbili x) {kurudi 2, 161282383460e + 02 + 3, 944594843419e-01 * x + 5, 395439724295e-04 * x * x + -3, 968558178426e-06 * x * x * x * x * x * x * 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 * 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 + 5, 000280815521e-30 * x * x * x * x * x * x * x * x * x + 3, 434515045670e- X * x * x * x * x * x * x * x * x * x + -1, 407635444704e-35 * 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; }

Hatua ya 29: Faili

Pakua faili:

PDF

INO

Lahajedwali

Ilipendekeza: