Mundarija:

Yana bir batareya quvvati sinovchisi: 6 qadam
Yana bir batareya quvvati sinovchisi: 6 qadam

Video: Yana bir batareya quvvati sinovchisi: 6 qadam

Video: Yana bir batareya quvvati sinovchisi: 6 qadam
Video: Электроскутер РЕВОЛЮЦИЯ КАЧЕСТВА CITYCOCO 3000W SKYBOARD BR70 Тест Драйв ситикоко харлей электроцикл 2024, Iyul
Anonim
Yana bir batareya quvvatini tekshiruvchi
Yana bir batareya quvvatini tekshiruvchi
Yana bir batareya quvvatini tekshiruvchi
Yana bir batareya quvvatini tekshiruvchi

Nima uchun yana bitta quvvat sinovchisi

Men turli xil sinov qurilmalari bo'yicha ko'rsatmalarni o'qib chiqdim, lekin ularning hech biri mening ehtiyojlarimga mos kelmaydi. Men nafaqat NiCd/NiMH yoki Lion hujayralarini sinab ko'rishni xohlardim. Men elektr asboblar akkumulyatorini birinchi qismiga ajratmasdan sinovdan o'tkazishni xohlardim. Shunday qilib, men bu masalani batafsil ko'rib chiqishga va o'zimnikini loyihalashga qaror qildim. Bir narsa boshqasiga olib keladi va men nihoyat o'zim ko'rsatma yozishga qaror qildim. Men, shuningdek, testerni qanday qurish kerakligi haqida batafsil ma'lumot bermaslikka qaror qildim, chunki har bir kishi rezistorni qanday o'lchamda ishlatishi mumkinligi to'g'risida qaror qabul qilishi mumkin, yoki PCB kerakmi yoki Veroboard etarlimi? burgutni o'rnatish yoki tenglikni qanday yasash kerak. Boshqacha qilib aytganda, men sxemaga va kodga va sinov qurilmasini qanday kalibrlashga e'tibor qarataman.

1 -qadam: Tarix - 1 -versiya

Tarix - 1 -versiya
Tarix - 1 -versiya

Yuqorida yuqorida aytib o'tilgan 10V dan ortiq kirish qo'llab -quvvatlashi qo'shilgan birinchi versiya (R12, R17, Q11 va Q12).

Birinchi versiya deba168 tomonidan ko'rsatma beruvchidan ko'p yoki kamroq olingan (afsuski, men uning havolasini ko'rsatadigan ko'rsatma topa olmayapman). Faqat ba'zi kichik o'zgarishlar kiritildi. Ushbu versiyada men mosfet tomonidan boshqariladigan bitta 10 ohmli yuk qarshiligiga ega bo'ldim. Bu ba'zi muammolarni keltirib chiqardi. Bir NiCd yoki NiMH xujayrasini sinab ko'rganda, kerakli vaqtni kunlar emas, balki soatlarda o'lchash oson edi. 1500 mA / soat batareya 12 soatdan ko'proq vaqtni oladi (oqim faqat 120 mA edi). Boshqa tomondan, birinchi versiya faqat 10 V dan past bo'lgan batareyalarni sinovdan o'tkazishi mumkin edi. To'liq zaryadlangan 9,6V batareya 11,2 V gacha bo'lishi mumkin, bu 10 V chegarasi tufayli sinovdan o'tkazilmagan. Biror narsa qilish kerak edi. Birinchidan, men kuchlanish taqsimlagichlarini 10 V dan yuqori ruxsat berish uchun bir nechta moskva va rezistor qo'shdim. Ammo bu boshqa tomondan boshqa muammoni keltirib chiqardi. To'liq yuklangan 14,4 V batareya 16,8 V gacha bo'lishi mumkin, bu 10 ohmli qarshilik 1,68 A oqimni va 30 Vt yuk qarshiligidan quvvat sarfini bildiradi. Shunday qilib, past kuchlanish bilan juda uzoq sinov muddati va yuqori kuchlanish bilan juda yuqori oqim. Shubhasiz, bu etarli echim emas edi va uni yanada rivojlantirish kerak edi.

2 -qadam: 2 -versiya

Men batareyaning kuchlanishidan qat'i nazar, oqim ma'lum chegaralarda qoladigan echimni xohlardim. Bir yechim PWM va bitta rezistordan foydalanish bo'lar edi, lekin men pulsatsiyalanuvchi oqimsiz yoki mosfet issiqligini tarqatish kerak bo'lgan yechimga ega bo'lishni ma'qul ko'rardim. Shunday qilib, har bir 2V kengligida 10 ta 3,3 ohmli rezistorlar va har bir rezistor uchun mosfet yordamida 10 ta kuchlanishli uyasi bo'lgan yechim yaratdim.

3 -qadam: Mana shunday bo'ldi

Bu shunday bo'lib chiqdi
Bu shunday bo'lib chiqdi

O'chirish bo'yicha sharhlar Birining aytishicha, mosfet ustidagi kuchlanish yo'qotilishi ahamiyatsiz, chunki mosfetaning qarshiligi juda past, lekin men o'quvchiga mosfetani tanlash imkoniyatini qoldirdim va shu sababli qarshilik 1 ohmdan oshib ketishi mumkin. masala. Bir variantda, mosfetni to'g'ri tanlash pastroq nuqtani o'lchash zaruratini yo'q qiladi, lekin 2 -versiyada men faqat bitta rezistor ustidagi kuchlanishni o'lchashga qaror qildim, bu esa ikkita o'lchash nuqtasiga ega bo'lishni muhim qiladi. Va tanlovning sababi Veroboard simlarini ulashning soddaligi edi. Bu aniqlik xatosini qo'shadi, chunki bitta rezistorda o'lchangan kuchlanish barcha rezistorlar ustidan o'lchashdan ancha kichik. Komponentlarni tanlashda men o'zimga qulay bo'lgan narsalarni yoki osonlikcha qo'lga kiritadigan narsalarni ishlatishga qaror qildim. Bu quyidagi BOMga olib keldi:

  • Arduino Pro Mini 5V! MUHIM! Men 5V versiyasini ishlatardim va barchasi unga asoslangan
  • 128x64 I2C OLED displey
  • 10 x 5 Vt 3.3 Ohmli rezistorlar
  • 3 x 2n7000 mosfets
  • 10 ta IRFZ34N moslamasi
  • 6 x 10 kOm qarshilik
  • 2 x 5 kOhm rezistorlar
  • 16V 680uF kondansatör
  • 1 ta eski CPU fanati

Men sxemaga quyidagilarni qo'shmaganman

  • Men sezgan I2C liniyalaridagi tortishish rezistorlari displeyni yanada barqaror qildi
  • elektr uzatish liniyalari
  • 5V liniyali kondansatör, bu displeyni barqarorlashtirdi

Sinov paytida men yuk rezistorlari juda qizib ketishini payqadim, ayniqsa ular ishlatilgan bo'lsa. Harorat 100 darajadan yuqori (212 darajadan yuqori) va agar butun tizim qutiga yopilsa, qandaydir sovutish ta'minlanishi kerak. Men foydalangan rezistorlar 3,3 ohm / 5 Vt va maksimal oqim 2V / 3,3 = 0,61A ga teng bo'lgan har bir qarshilik uchun taxminan 2 V bo'lishi kerak, bu 1,21 Vt ga olib keladi. Men qutiga oddiy fanni qo'shib qo'ydim. Sababi, menda eski CPU muxlisi bor edi.

Sxematik funksionallik

Bu juda aniq va o'z -o'zidan tushunarli. Tekshiriladigan batareya rezistorlar va erga ulangan. Voltaj o'lchash nuqtalari batareyaning ulanishi va birinchi qarshilikdir. Kuchlanishni ajratgichlar Arduino -ga mos keladigan kuchlanishni pasaytirish uchun ishlatiladi. Bitta raqamli chiqish 10V yoki 20V bo'luvchilarni tanlash uchun ishlatiladi. Yukdagi har bir qarshilik to'g'ridan -to'g'ri Arduino tomonidan boshqariladigan moslamalar yordamida alohida -alohida erga o'rnatilishi mumkin. Va nihoyat, displey Arduino I2C pinlariga ulangan. Sxematik J haqida ko'p gapirish mumkin emas

4 -qadam: Kod

Kodeks
Kodeks

Yuqorida kodning qo'pol funksionalligini ko'rish mumkin. Keling, kodni batafsil ko'rib chiqaylik (arduino ino fayllari biriktirilgan). Bir qator funktsiyalar va keyin asosiy tsikl mavjud.

Asosiy halqa

O'lchov tayyor bo'lganda natijalar ko'rsatiladi va ijro shu erda tugaydi. Agar o'lchash hali tugallanmagan bo'lsa, avval batareyaning qaysi turi tanlangani, keyin esa kirishdagi kuchlanish tekshiriladi. Agar kuchlanish 0,1 V dan oshsa, hech bo'lmaganda qandaydir batareya ulangan bo'lishi kerak. Bunday holda, qanday dasturni sinab ko'rish uchun batareyada qancha hujayralar borligini aniqlashga yordamchi dastur chaqiriladi. Hujayralar soni yaxshiroq yoki kamroq ma'lumotdir, lekin bu versiyada faqat ketma -ket interfeys orqali xabar qilinadi. Agar hamma narsa yaxshi bo'lsa, zaryadsizlanish jarayoni boshlanadi va har bir asosiy davrada batareya quvvati hisoblab chiqiladi. Asosiy tsikl oxirida displey ma'lum qiymatlar bilan to'ldiriladi.

Natijalarni ko'rsatish tartibi

ShowResults funktsiyasi shunchaki displeyda ko'rsatiladigan qatorlarni va ketma -ket interfeysga yuboriladigan qatorni o'rnatadi.

Voltajni o'lchash tartibi

Funktsiyaning boshida Arduino VC o'lchanadi. Analog kirishlar yordamida o'lchangan kuchlanishlarni hisoblay olish kerak. Keyin batareyaning kuchlanishi 20V diapazonidan foydalanib o'lchanadi va qaysi diapazondan foydalanishni hal qila oladi. Keyin ham batareya quvvati, ham rezistor kuchlanishi hisoblab chiqiladi. Batareya zo'riqishining o'lchovlari DividerInput sinfining afzalliklaridan foydalaniladi, u o'qish va kuchlanishning analog o'qish yoki hisoblangan kuchlanishini hisoblash usullariga ega.

Ishlatilgan qiymatlarni tanlash tartibi

SelectUsedValues funktsiyasida hujayralar soni taxmin qilinadi va batareyaning yuqori va past chegaralari zaryadsizlanish protsedurasi bilan o'rnatiladi. Shuningdek, o'lchov boshlangan deb belgilanadi, bu protsedura chegaralari global o'zgaruvchilar boshida o'rnatiladi. Garchi ular doimiy bo'lishi mumkin bo'lsa va ularni butun dunyo miqyosida ishlatilmasligi uchun protsedura ichida ham aniqlash mumkin edi. Lekin har doim yaxshilanadigan narsa bor:)

Batareya quvvatini hisoblash tartibi

Zaryadsizlanish funktsiyasi batareyaning hajmini hisoblash bilan shug'ullanadi. U sinov ostida bo'lgan batareya zo'riqishining past va yuqori chegaralarini parametr sifatida oladi. Ushbu versiyada yuqori qiymat ishlatilmaydi, lekin past qiymat testni qachon to'xtatishni hal qilish uchun ishlatiladi. Funktsiyaning boshida, rezistorlar sonini shu maqsadda yaratilgan funktsiyadan foydalanib bilib olamiz. Funktsiya qarshilik sonini qaytaradi va shu bilan birga zaryadni ishga tushiradi va hisoblagichni tiklaydi. Keyin kuchlanish o'lchanadi va oqimni hisoblash uchun ma'lum qarshilik qiymati bilan birgalikda ishlatiladi. Endi biz kuchlanishni va tokni bilamiz va oxirgi o'lchovdan keyingi vaqtni bilamiz, biz quvvatni hisoblay olamiz. Bo'shatish jarayonining oxirida batareya zo'riqishining past chegarasi bilan taqqoslanadi va agar u chegaradan pastga tushsa, tushirish fazasi to'xtaydi, moslamalar yopiladi va o'lchov tayyor deb belgilanadi.

Foydalaniladigan rezistorlar sonini topish tartibi

SelectNumOfResistors funktsiyasida kuchlanishni oldindan belgilangan qiymatlar bilan oddiy taqqoslash amalga oshiriladi va natijada rezistorlar soni aniqlanadi. Rezistorlarning bir qismini o'tkazib yuborish uchun mos mosfet ochiladi. Quvvat bo'shliqlari shunday tanlanganki, tushirish paytida har qanday vaqtda maksimal oqim 600 mA (2V/3,3Ohm = 606mA) dan oshadi. Funktsiya ishlatilgan rezistorlar sonini qaytaradi. Chunki fan birinchi mosfet bilan bir xil chiziqdan chiqariladi, chunki uni tushirish paytida har doim ochish kerak.

5 -qadam: Hisoblagichni kalibrlash

Hisoblagichni kalibrlash
Hisoblagichni kalibrlash

Hisoblagichni kalibrlash uchun men boshqa ilovani yaratdim (ilova qilingan). Xuddi shu uskuna ishlatiladi. Boshida tuzatuvchi bo'luvchi qiymatlari 1000 ga o'rnatiladi.

const int divCorrectionB10V = 1000; // 10V oralig'ida bo'luvchi tuzatish ko'pligi int divCorrectionR10V = 1000; // 10V oralig'ida bo'luvchi tuzatish ko'paytmasi int divCorrectionB20V = 1000; // 20V oralig'idagi ajratuvchi tuzatish ko'pligi const int divCorrectionR20V = 1000; // 20V diapazonidagi ajratuvchi tuzatish multiplikatori

readVcc () funktsiyasida, VC kuchlanishining qaytishi funksiyaning oxirgi satridagi qiymatni belgilashga bog'liq. Odatda Internetda siz hisoblashda ishlatiladigan 1126400L qiymatini topishingiz mumkin. Men natija to'g'ri emasligini payqadim.

Kalibrlash jarayoni:

  1. O'lchov dasturini Arduino -ga yuklang.
  2. Agar yuklanish yoqilgan bo'lsa, siz Arduino -da (va ketma -ket chiqishda va fan aylanayotgan bo'lsa) ko'rishingiz mumkin. Agar shunday bo'lsa, batareya turini tanlash tugmachasini burang.
  3. To'g'ri natijaga erishish uchun readuVCC () qiymatini o'rnating. Funktsiya beradigan qiymatni oling (millivoltda) va uzun qiymatni unga bo'ling. Siz ichki ma'lumotnomaning xom qiymatini olasiz. Haqiqiy besleme zo'riqishini millivoltlarda multimetr bilan o'lchab, uni avval hisoblangan qiymatga ko'paytiring va siz yangi tuzatilgan uzun qiymatni olasiz. Mening holatimda, funktsiya 5288 mV ga qaytdi, agar haqiqiy Vcc 5,14 V bo'lsa. 1126400/5288*5140 = 1094874 ni hisoblab chiqdim. Yangi qiymatni kodga qo'ying va uni yana Arduino -ga yuklang.
  4. Analog kirish qarshiligini ajratgichni to'g'rilash qiymatlari hisoblagichning kirishini ta'minlash uchun sozlanadigan quvvat manbai yordamida amalga oshiriladi. Eng oddiy - 1V dan 20V gacha bo'lgan kuchlanishlarni 1V bosqichlar bilan ishlatish va natijalarni elektron jadvalga yozish. Jadvalda o'rtacha ko'rsatkich olinadi. Tuzatilgan qiymatlar quyidagi formula bilan hisoblanadi: "raw_value*diapazon*Vcc/Vin", bu erda raw_value - 10VdivB, 10VdivR, 20VdivB yoki 20VdivR qiymati, qaysi tuzatish hisoblanishiga bog'liq.

Elektron jadval men uchun qanday ko'rinishini ko'ring. O'rtachalar faqat diapazonda bo'lishi kerak bo'lgan qiymatlar bo'yicha hisoblab chiqiladi va bu qiymatlar haqiqiy hisoblagich ilovasida o'rnatiladi.

Shunga o'xshash

const int divCorrectionB10V = 998; // 10V oralig'ida bo'luvchi tuzatuvchi bo'luvchi int int divCorrectionR10V = 1022; // 10V oralig'idagi ajratuvchi tuzatish bo'luvchi const int divCorrectionB20V = 1044; // 20V oralig'ida ajratuvchi tuzatish bo'luvchi const int divCorrectionR20V = 1045; // 20V diapazonida bo'luvchi tuzatuvchi bo'luvchi

Rezistor qiymatini sozlash kirish uchun bir oz kuchlanishni ta'minlash (ya'ni 2V), tayoqchali kalitni almashtirish (yuklash uchun) va birinchi rezistor ichidagi oqim va kuchlanishni o'lchash va kuchlanishni oqimga bo'lish yo'li bilan amalga oshirilishi mumkin.. Men uchun 2V 607mA berdi, bu 2/0.607 = 3.2948 ohmni beradi, men uni 3.295 ohmga yaxlitladim. Shunday qilib, endi kalibrlash amalga oshiriladi.

6 -qadam: oxirgi eslatma

Bu erda bitta muhim eslatma. Batareyadan tortib to rezistorgacha bo'lgan barcha ulanishlar eng yaxshi holatda bo'lishi shart. Menda bitta yomon aloqa bor edi va men nima uchun rezistorlar tarmog'ida batareyaga qaraganda 0,3V kamroq volt olganimni bilardim. Bu shuni anglatadiki, o'lchash jarayoni deyarli 1,2V NiCd hujayralari bilan tugadi, chunki 0,95V pastki chegarasiga tezda erishildi.

Tavsiya: