Mundarija:
- 1 -qadam: AD konvertori nima?
- 2 -qadam: Ishlatilgan manbalar
- 3 -qadam: ESP32 ADC
- 4 -qadam: O'chirish davri
- 5 -qadam: ishlatilgan belgi
- 6 -qadam: Osiloskop yordamida olingan ma'lumotlar
- 7 -qadam: Osiloskop yordamida olingan ma'lumotlar (Excelda csv fayli)
- 8 -qadam: ADC tomonidan olingan ma'lumotlar
- 9 -qadam: ADC - Excel tomonidan olingan ma'lumotlar
- 10 -qadam: ko'tarilish rampalarini solishtirish
- 11 -qadam: Namunalar sonini tenglashtirish
- 12 -qadam: bo'shliqlarni to'ldirish - trend chizig'i
- 13 -qadam: Bo'shliqlarni to'ldirish - 2 -darajali polinom egri chizig'i
- 14 -qadam: Bo'shliqlarni to'ldirish - funktsiyani baholash
- 15 -qadam: Osiloskop kuchlanishini ADC bilan solishtirish uchun teng qiymatga aylantirish
- 16 -qadam: Olingan ikkita rampani solishtiring
- 17 -qadam: ADC o'qish farqining xatti -harakati (ERROR)
- 18 -qadam: ADC o'qish farqi xatti - tuzatish funktsiyasini topish
- 19 -qadam: Boshqa dasturlardan foydalanish
- 20 -qadam: Konstantalar va sozlash ()
- 21 -qadam: Loop () va tuzatish funktsiyasi
- 22 -qadam: PolySolve tuzatish funktsiyasidan foydalanish
- 23 -qadam: Tuzatish bilan yozib oling - Plotter seriyali
- 24 -qadam: hisoblash xarajatlari
- 25 -qadam: Sinov kodi - O'rnatish () va Loop Start ()
- 26 -qadam: Test kodi - Loop () va ishlov berish
- 27 -qadam: Test kodi - Loop () - Natijalar
- 28 -qadam: Test kodi - ishlatilgan funktsiyalar
- 29 -qadam: fayllar
Video: ESP32 ADCni sozlash haqida bilasizmi ?: 29 qadam
2024 Muallif: John Day | [email protected]. Oxirgi o'zgartirilgan: 2024-01-30 13:26
Bugun men ko'proq texnik muammo haqida gaplashmoqchiman, lekin menimcha, ESP32 bilan ishlaydigan har bir kishi bilishi kerak: ADC (analog-raqamli konvertor) o'qishni sozlash masalasi. Men buni juda muhim deb bilaman, chunki "o'lchov" ni amalga oshirayotganda, ayniqsa analog chiqadigan asbob bilan, o'qishning to'g'ri bajarilishiga to'liq ishonch hosil qilish kerak.
Bugungi videoda biz ESP32 "analog-raqamli konvertori" yordamida o'lchovlarni o'tkazamiz, konversiyadagi farqlarni kuzatamiz va ADCni sozlash / kalibrlash usulini qo'llaymiz.
1 -qadam: AD konvertori nima?
AD konvertori - analog (uzluksiz) miqdorni raqamli (diskret) qiymatlarga aylantira oladigan elektron. U nimani anglatadi? Bu shuni anglatadiki, raqamli qiymatlar faqat nol va bitta kombinatsiyasidan hosil bo'lgan diskret qiymatlarni qabul qilishi mumkin, analog miqdor esa diapazon ichidagi har qanday qiymatni qabul qilishi mumkin. Masalan, agar biz ideal AA hujayraning kuchlanishini o'lchagan bo'lsak, biz 0V dan 1,5V gacha bo'lgan har qanday qiymatni topa olamiz, chunki bu analog miqdor. Ideal chiroqning chiqish holati faqat ikkita holatni olishi kerak (o'chirilgan yoki yoqilgan), bu alohida kattalikdir. Mikrokontrollerlar bu diskret mantiqdan foydalanganligi uchun bizga analog miqdorni raqamli (yoki diskret) ga aylantira oladigan elektron kerak.
2 -qadam: Ishlatilgan manbalar
• Bitta Lolin32 Lite kartasi v1.0.0
• Rasmga olish uchun Tektronix TDS1001C osiloskopi
• ESP32 uchun bitta USB kabeli
• signal generatori sifatida Hantek DSO4102C osiloskopi
3 -qadam: ESP32 ADC
Espressif ma'lumotlariga ko'ra, ESP32 chiplari o'lchangan natijalarda bir chipdan boshqasiga +/- 6% farq ko'rsatishi mumkin.
Bundan tashqari, konvertatsiya o'qishning har bir diapazoni uchun chiziqli javobga ega emas. Espressif kalibrlash usulini taqdim etadi va foydalanuvchilar kerakli aniqlikka erishish zarur deb hisoblasalar, boshqa usullarni qo'llashni taklif qiladi.
Biz ma'lumotlarni yig'ishni amalga oshiramiz va shundan biz ADC javoblarini va sozlashni o'qish uchun matematik jarayonni qo'llash misolini ko'rsatamiz.
Ushbu tuzatishlarni bajarishning bir necha (oddiy yoki murakkab) usullari mavjud. Sizning loyihangizga eng mos keladiganini baholash sizga bog'liq.
Bu erda ko'rsatilgan tasviriy maqsadga ega bo'ladi va sozlash paytida kuzatilishi mumkin bo'lgan qiziqarli fikrlarga e'tibor qaratishga harakat qiladi.
4 -qadam: O'chirish davri
Men 25 MGts gacha bo'lgan signal generatori bo'lgan osiloskopdan foydalanardim, Hantek DSO4102C. Biz ESP A / D va osiloskop tomonidan o'qilgan to'lqinni yaratdik. To'plangan ma'lumotlar csv -da va elektron jadvalda qayd etilgan, men yuklash uchun maqolaning oxirida qoldiraman.
5 -qadam: ishlatilgan belgi
Biz past chastotali trapezoidal signalni tanladik, bu butun konvertatsiya diapazonida ishlaydigan rampalarga kirishga imkon beradi. Bu ushbu rampalarda ko'p sonli namunalarni olish imkonini beradi.
6 -qadam: Osiloskop yordamida olingan ma'lumotlar
Suratga olish tasvirini osiloskop bajargan. Ma'lumotlar csv faylida saqlangan. Signalning ko'tarilish va tushish rampalaridagi engil egrilikka e'tibor bering.
7 -qadam: Osiloskop yordamida olingan ma'lumotlar (Excelda csv fayli)
Bizda bu erda namunalar bor.
8 -qadam: ADC tomonidan olingan ma'lumotlar
Serialning uzatish tezligini o'zgartirib, biz ADC tomonidan olingan ma'lumotlarni ko'rishimiz mumkin. Trapezoidal signalning deformatsiyasini kuzating.
Ma'lumotlar Arduino IDE seriyali chizgichida kuzatilgan
9 -qadam: ADC - Excel tomonidan olingan ma'lumotlar
Yuqori tezlik va ketma -ket terminal yordamida biz qiymatlarni yozib olamiz va ularni taqqoslash uchun Excelda qo'llashimiz mumkin.
10 -qadam: ko'tarilish rampalarini solishtirish
Biz ikkita tutqichning ikkita ko'tarilish rampasini solishtiramiz.
Ikkala rampada ham egrilikka e'tibor bering.
E'tibor bering, xuddi shu rampada bizda osiloskopdan ko'ra ko'proq ESP32 namunalari mavjud.
11 -qadam: Namunalar sonini tenglashtirish
ESP32 osiloskopga qaraganda ko'proq namunalarni taqdim etganligi sababli, biz bu qiymatlarni tenglashtirishimiz kerak, chunki ular ikkita egri chiziqni solishtirish uchun indeks bo'lib xizmat qiladi.
Buning uchun biz to'g'ridan -to'g'ri taqqoslashni amalga oshiramiz.
Bizda osiloskop rampasi uchun 305 ta namuna va ADC rampasi uchun 2365 ta namuna bor.
Rampalar bir xil diapazonda bo'lgani uchun, bizda har bir osiloskop uchun ADC ning taxminan 7,75 namunasi bor, deyishimiz mumkin.
Har bir osiloskop namunasining indeksini ko'paytirish bir xil egri chiziqqa ega, lekin ADC va qayta taqsimlangan ma'lumotlarga teng indekslarga ega.
Yangi pozitsiyalar uchun etishmayotgan ma'lumotlarni to'ldirish uchun biz ma'lum ma'lumotlarga statistik jihatdan mos keladigan egri chiziqni qo'llaymiz.
12 -qadam: bo'shliqlarni to'ldirish - trend chizig'i
Ma'lum ma'lumotlarni (ko'k nuqta) tanlab, sichqonchaning o'ng tugmachasini bosib, keyin "Trend chizig'ini qo'shish …" ni tanlaymiz.
Ko'rsatilgan oynada biz Polinom turini tanlaymiz (2 -tartib etarli bo'ladi).
Shuningdek, biz "Diagrammadagi tenglamani ko'rish" va "Diagrammada R-kvadrat qiymatini ko'rsatish" variantlarini tekshirdik.
Biz "Yopish" tugmasini bosamiz.
13 -qadam: Bo'shliqlarni to'ldirish - 2 -darajali polinom egri chizig'i
Excel bizga ikkita yangi ma'lumot beradi; ma'lumotlarga eng mos keladigan ikkinchi tartibli tenglama va bu adekvatlikni aniqlaydigan R-kvadrat tenglama.
Shuni yodda tutingki, 1 ga yaqinroq bo'lsa, tenglama shunchalik mos keladi.
Keling, matematikani o'rganmaylik, faqat uni vosita sifatida ishlataylik.
14 -qadam: Bo'shliqlarni to'ldirish - funktsiyani baholash
Tenglama hosil qilgan ma'lumotlar bilan namuna olishdagi bo'shliqlarni to'ldiraylik. Va keyin ularni nuqta -qadam bilan solishtiring.
y = -9E -08x2 + 0, 0014x + 0, 1505
R² = 0, 9999
Osiloskop kuchlanish = -9E -08 * indeks2 + 0, 0014 * indeks + 0, 1505
15 -qadam: Osiloskop kuchlanishini ADC bilan solishtirish uchun teng qiymatga aylantirish
Keling, bundan foydalanib, osiloskop kuchlanishining qiymatini ADC ekvivalentiga aylantiramiz.
ESP32 ADP -da olingan eng yuqori qiymat 4095 edi, bu xuddi shu indeks uchun 2.958V o'qishga teng, biz shunday deyishimiz mumkin:
Osiloskop o'lchovlaridagi har bir volt milodiy taxminan 1384,4 birlikka teng. Shuning uchun biz osiloskopning barcha o'lchovlarini shu qiymatga ko'paytirishimiz mumkin.
16 -qadam: Olingan ikkita rampani solishtiring
Ikki o'qishda olingan farqlarni ingl.
17 -qadam: ADC o'qish farqining xatti -harakati (ERROR)
Quyidagi egri chiziq ADC o'qishidagi farq o'lchov funktsiyasi sifatida o'zini qanday tutishini ko'rsatadi. Ushbu ma'lumotlar to'plami bizga tuzatish funktsiyasini topishga imkon beradi.
Bu egri chiziqni topish uchun biz har bir o'lchovdagi farqni har bir mumkin bo'lgan AD pozitsiyasi (0 dan 4095 gacha) funktsiyasi sifatida chizamiz.
18 -qadam: ADC o'qish farqi xatti - tuzatish funktsiyasini topish
Biz Excelga to'g'rilash funktsiyasini Trend ma'lumotlarini qo'shish orqali aniqlay olamiz, u bizning ma'lumotlarimizga mos kelguncha.
19 -qadam: Boshqa dasturlardan foydalanish
Egri chiziqlarni aniqlash uchun boshqa qiziqarli dastur PolySolve bo'lib, uni to'g'ridan -to'g'ri havolada ishlatish mumkin: https://arachnoid.com/polysolve/ yoki Java ilovasi sifatida yuklab olish.
Bu yuqori darajali polinom regressiyalarini qo'llash va formatlangan funktsiyani, shuningdek boshqa funktsiyalarni bajarishga imkon beradi.
Uni ishlatish uchun ma'lumotlarni birinchi matn maydoniga kiritish kifoya. Ma'lumotlar vergul yoki yorliq bilan ajratilgan X, Y tartibiga mos kelishi kerak. Nuqtani kasrli nuqta sifatida to'g'ri ishlatishda ehtiyot bo'ling.
Agar kiritilgan ma'lumotlar to'g'ri formatlangan bo'lsa, keyingi maydonda grafik paydo bo'ladi.
Mana ADC xato egri qanday ketdi.
Bu oynada regressiya natijasi, shu jumladan funktsiyalarning adekvatligi to'g'risidagi ma'lumotlar ko'rsatiladi, ular o'z navbatida chiqishini bir necha usul bilan formatlashi mumkin: C / C ++ funktsiyasi, koeffitsientlar ro'yxati, Java -da yozilgan funksiya va boshqalar.
Eslatma: O'nli ajratuvchilarga e'tibor bering
20 -qadam: Konstantalar va sozlash ()
Men bu erda analog yozish uchun ishlatiladigan GPIO -ni ko'rsataman. Men ketma -ket portni, shuningdek analog ta'qib qilish uchun belgilangan pinni ishga tushiraman.
const int pin_leitura = 36; // GPIO usado para captura analógica void setup () {Serial.begin (1000000); // PinMode (pin_leitura, INPUT) disk raskadrovka uchun ketma -ket ketma -ketlik; // Bosh sahifa analogikasi uchun foydalanish mumkin
21 -qadam: Loop () va tuzatish funktsiyasi
Biz sozlangan kuchlanishni qo'lga kiritamiz va biz qiymatlarni to'g'ri tuzatishlar bilan yoki bo'lmasdan chop etamiz.
void loop () {int valor_analogico = analogRead (pin_leitura); // realizatsiya a captura da tensão ajustada //Serial.print(valor_analogico + f (valor_analogico)); // xatolarni tuzatish (COM CORREÇÃO) Serial.print (valor_analogico); // nosozliklarni tuzatish (SEM CORREÇÃO) Serial.print (","); Serial.print (4095); // 4095 Serial.print (","); Serial.println (0); // 0 -sonli ma'lumotlarga ko'ra, marhamat.
12 -qatorga e'tibor bering, bizda f (analog_value) funktsiyasi qo'shilgan holda ma'lumotlarni chop etish imkoniyati mavjud.
22 -qadam: PolySolve tuzatish funktsiyasidan foydalanish
Bu erda biz Arduino IDE ichida PolySolve funktsiyasidan foydalanamiz.
/* Rejim: oddiy Polinom daraja 6, 2365 x, y ma'lumotlar juftlari Korrelyatsiya koeffitsienti (r^2) = 9, 907187626418e-01 Standart xato = 1, 353761109831e+01 Chiqish shakli: C/C ++ funktsiyasi: Mualliflik huquqi © 2012, P. Lutus - https://www.arachnoid.com. Barcha huquqlar himoyalangan. */ double f (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) + 4.787659214703e-18 * pow (x, 6); }
O'nli kasrni ajratuvchi sifatida vergul bilan nuqta o'zgarishiga e'tibor bering.
23 -qadam: Tuzatish bilan yozib oling - Plotter seriyali
24 -qadam: hisoblash xarajatlari
Polinomli hisoblarni bajarish uchun protsessor bu vazifani bajarishi kerak. Bu manba kodiga va mavjud hisoblash quvvatiga bog'liq holda bajarilishning kechikishiga olib kelishi mumkin.
Bu erda biz ko'p darajali polinomlardan foydalangan holda test natijalari jadvalini ko'ramiz. Pow () funktsiyasi ishlatilgan va ishlatilmagan vaqtlar orasidagi farqga e'tibor bering.
25 -qadam: Sinov kodi - O'rnatish () va Loop Start ()
Bu erda bizda testda ishlatiladigan kod mavjud.
void setup () {Serial.begin (1000000); // disk raskadrovka uchun disk raskadrovka} void loop () {float valor_analogico = 500.0; // umrbod arbtrario float quantidade = 10000.0; // quantidade de chamadas float contador = 0,0; // contador de chamadas
26 -qadam: Test kodi - Loop () va ishlov berish
Mikrosaniyadagi qiymatni olish uchun micros () funktsiyasidan foydalandim.
// ============== protsessual float agora = micros (); // marca o instante inicial while (contador <quantidade) {// v (valor_analogico); // funktsiya 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); // 13º SEM va harbiy asirlik // f13_comPow (valor_analogico); // 13º MAQOMOTI va POW kontor ++; } agora = (mikrosxemalar () - agora) / kvantidad; // aniqlangan vaqt oralig'ida, bu jarayonni bajaradi // ============ final jarayoni
27 -qadam: Test kodi - Loop () - Natijalar
Biz taqqoslash uchun 13 -darajali funktsiyadan qaytarilgan qiymatni POW bilan va ularsiz chop etamiz.
// majburiy javobgarlikka tortishish 13 -sonli harbiy kuchlar uchun Serial.print (f13_semPow (valor_analogico)); // grau 13º SEM a funchão POW Serial.print (" -"); Serial.print (f13_comPow (valor_analogico)); // grau 13º COM a funchão POW Serial.print (" -"); // vaqt oralig'ida ishlov berish Serial.println (agora, 6); }
28 -qadam: Test kodi - ishlatilgan funktsiyalar
0 va 1 darajali bo'sh funktsiyalar (faqat qaytish bilan).
// FUNÇÃO VAZIAdouble v (double x) {} // FUNÇÃO SOMENTE COM RETORNO double r (double x) {return x; } // FUNÇÃO DE GRAU 0 dubl f0 (ikki marta x) {qaytish 2.202196968876e+02; } // FUNÇÃO DE GRAU 1 dubl f1 (dubl x) {qaytish 2.202196968876e + 02 + 3.561383996027e-01 * x; }
2, 3 va 4 -darajali funktsiyalar.
// FUNÇo DE GRAU 2double f2 (double x) {return 2.202196968876e + 02 + 3.561383996027e-01 * x + 1.276218788985e-04 * pow (x, 2);));)) + 2.082790802069e-10 * pow (x, 4); }
5 va 6 -sinf vazifalari.
// FUNÇO 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); }
Harbiy asirlar yordamida 13 -sinf funktsiyasi.
// FUNÇO DE GRAU 13 USANDO O POWdouble f13_comPow (double x) {return 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); }
Harbiy asirlarni ishlatmasdan 13 -sinf funktsiyasi.
// FUNCHO DE GRAU SEM USAR O POWdouble f13_semPow (double x) {return 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 + -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 -qadam: fayllar
Fayllarni yuklab oling:
INO
Elektron jadval
Tavsiya:
AWS va ESP32 yordamida harorat va namlik haqida ogohlantirish: 11 qadam
AWS va ESP32 yordamida harorat va namlik haqida ogohlantirish: Ushbu darsda biz harorat va namlik sensori yordamida harorat va namlikning har xil ma'lumotlarini o'lchaymiz. Shuningdek, siz ushbu ma'lumotlarni AWS -ga qanday yuborishni bilib olasiz
O'simliklar qanday his qilayotganini bilasizmi? [Zarrachalar+Ubidotlar]: 6 qadam
O'simliklar qanday his qilayotganini bilasizmi? [Zarrachalar+Ubidotlar]: O'zingiz uchun tuproqni olib chiqib ketishni hech narsa o'zgartira olmaydi, lekin bugungi texnologiya tuproqni masofadan kuzatib borish va insoniy sezgilarimni o'lchab bo'lmas parametrlarini kuzatish imkonini berdi. SHT10 kabi tuproq problari hozir juda aniq va taklif qilinmoqda
Statik va DHCP IP sozlamalarini sozlash uchun ESP32 qo'lga olish portali: 8 qadam
Statik va DHCP IP sozlamalarini sozlash uchun ESP32 qo'lga oluvchi portali: ESP 32 - bu Wi -Fi va BLE bilan birlashtirilgan qurilma. Bu IoT loyihalari uchun o'ziga xos sovg'adir. Faqat SSID, parol va IP konfiguratsiyangizni bering va narsalarni bulutga birlashtiring. Biroq, IP sozlamalari va foydalanuvchi ma'lumotlarini boshqarish bosh bo'lishi mumkin
ESP32: DAC nima ekanligini bilasizmi ?: 7 qadam
ESP32: DAC nima ekanligini bilasizmi ?: Bugun biz ikkita muammo haqida gaplashamiz. Birinchisi-DAC (raqamli-analogli konvertor). Men buni muhim deb hisoblayman, chunki u orqali, masalan, biz ESP32 -da ovoz chiqaramiz. Bugun biz muhokama qilmoqchi bo'lgan ikkinchi masala - bu ossil
WeMos TTgo ESP32 Uno D1 R32 ni qanday sozlash va ishlatish kerak: 3 qadam
WeMos TTgo ESP32 Uno D1 R32 -ni qanday sozlash va ishlatish: WeMos® TTgo ESP32 -ni D1 R32 -ni qanday sozlash kerak, WeMos® TTgo ESP32 uno D1 R32 -ni ishga tushirish uchun barcha amallar bajariladi