Orodha ya maudhui:
- Hatua ya 1: Je! AD Converter ni nini?
- Hatua ya 2: Rasilimali Zilizotumiwa
- Hatua ya 3: ESP32 ADC
- Hatua ya 4: Mzunguko Umetumika
- Hatua ya 5: Ishara Imetumika
- Hatua ya 6: Takwimu Zinazopatikana na Oscilloscope
- Hatua ya 7: Takwimu zilizopatikana na Oscilloscope (faili ya csv katika Excel)
- Hatua ya 8: Takwimu Zinazopatikana na ADC
- Hatua ya 9: Takwimu Zinazopatikana na ADC - Excel
- Hatua ya 10: Kulinganisha Njia za Kupanda
- Hatua ya 11: Inalinganisha Idadi ya Sampuli
- Hatua ya 12: Kujaza Mapengo - Mstari wa Mwelekeo
- Hatua ya 13: Kujaza Mapengo - Daraja la 2 Polynomial Curve
- Hatua ya 14: Kujaza Mapengo - Kutathmini Kazi
- Hatua ya 15: Kubadilisha Voltage ya Oscilloscope kuwa Thamani Sawa Kulinganisha na ADC
- Hatua ya 16: Kulinganisha Njia mbili zilizopatikana
- Hatua ya 17: Tabia ya Tofauti ya Kusoma kwa ADC (ERROR)
- Hatua ya 18: Tabia ya Tofauti ya Kusoma ADC - Kupata Kazi ya Marekebisho
- Hatua ya 19: Kutumia Programu nyingine
- Hatua ya 20: Mara kwa mara na Usanidi ()
- Hatua ya 21: Kitanzi () na Kazi ya Marekebisho
- Hatua ya 22: Kutumia Kazi ya Marekebisho ya PolySolve
- Hatua ya 23: Kukamata na Marekebisho - Plotter Serial
- Hatua ya 24: Gharama za Kompyuta
- Hatua ya 25: Nambari ya Mtihani - Usanidi () na Anza Kitanzi ()
- Hatua ya 26: Nambari ya Mtihani - Kitanzi () na Usindikaji
- Hatua ya 27: Nambari ya Mtihani - Kitanzi () - Matokeo
- Hatua ya 28: Nambari ya Mtihani - Kazi Zilizotumiwa
- Hatua ya 29: Faili
Video: Je! Unajua Kuhusu Marekebisho ya ESP32 ADC?: Hatua 29
2024 Mwandishi: John Day | [email protected]. Mwisho uliobadilishwa: 2024-01-30 12:52
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
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
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
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
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)
Tuna sampuli hapa.
Hatua ya 8: Takwimu Zinazopatikana 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
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
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
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
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
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
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
Kuibua tofauti zilizopatikana katika masomo hayo mawili.
Hatua ya 17: 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
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
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
Hatua ya 24: Gharama za 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:
INO
Lahajedwali
Ilipendekeza:
Saa ya RGB ya Kufundisha Watoto Kuhusu Wakati: Hatua 4
Saa ya RGB ya Kufundisha Watoto Kuhusu Wakati: Jana usiku nilikuja na wazo jinsi ya kusaidia 5yo yangu kupata maana ya wakati. Ni wazi kwamba watoto wanaelekeza kwenye hafla za kila siku kupata wazo la nini kinakuja. Lakini hafla za awali kwa kawaida ni fujo kidogo na huwa haijawahi kupangwa.Kwa kuwaambia
Rpibot - Kuhusu Kujifunza Roboti: Hatua 9
Rpibot - Kuhusu Kujifunza Roboti: Mimi ni mhandisi wa programu iliyoingia katika kampuni ya magari ya Ujerumani. Nilianza mradi huu kama jukwaa la kujifunza kwa mifumo iliyoingia. Mradi huo ulifutwa mapema lakini niliufurahiya sana hivi kwamba niliendelea wakati wangu wa bure. Hii ndio matokeo … mimi
Je! Unajua Jinsi Mimea Yako Inavyohisi? [Particle + Ubidots]: 6 Hatua
Je! Unajua Jinsi Mimea Yako Inavyohisi? [Particle + Ubidots]: Hakuna kitu kitakachochukua nafasi ya kutembea nje na kujishughulisha na mchanga, lakini teknolojia ya leo imefanya uwezekano wa kufuatilia kwa mbali udongo na kufuatilia vigezo visivyo na kipimo akili zangu za kibinadamu. Uchunguzi wa mchanga kama SHT10 sasa ni sahihi sana na unatoa
ESP32: Je! Unajua DAC Ni Nini ?: Hatua 7
ESP32: Je! Unajua DAC ni nini?: Leo, tutazungumza juu ya maswala mawili. Ya kwanza ni DAC (Digital-to-Analog Converter). Ninaona kuwa ni muhimu, kwa sababu kupitia hiyo, kwa mfano, tunatoa pato la sauti katika ESP32. Suala la pili tunaloenda kushughulikia leo ni oscil
Mbinu za SL-1200/1210 Uingizwaji wa Marekebisho ya Slider na Marekebisho: Hatua 10
Mbinu SL-1200/1210 Uingizwaji wa Slider Slider na Marekebisho: Kwa hivyo kitelezi chako cha lami huhisi kama imejaa mchanga? Wakati wa kurekebisha. Mafundisho haya yataonyesha jinsi ya kuchukua nafasi ya kitelezi cha lami kilichochakaa kwenye Kiteknolojia cha SL-1200/1210. Pia itaonyesha jinsi ya kurekebisha + 6% thamani ya lami ikiwa imeshuka au i