فهرست مطالب:

یک تستر دیگر ظرفیت باتری: 6 مرحله
یک تستر دیگر ظرفیت باتری: 6 مرحله

تصویری: یک تستر دیگر ظرفیت باتری: 6 مرحله

تصویری: یک تستر دیگر ظرفیت باتری: 6 مرحله
تصویری: سری موازی باتری،آموزش اتصال سری موازی باتری،تفاوت اتصال سری و موازی باتری ها به یکدیگر چیست؟ 2024, جولای
Anonim
یک تستر دیگر ظرفیت باتری
یک تستر دیگر ظرفیت باتری
یک تستر دیگر ظرفیت باتری
یک تستر دیگر ظرفیت باتری

چرا یک تستر ظرفیت دیگر

من دستورالعمل های مختلف ساخت تستر را مطالعه کردم ، اما به نظر می رسد هیچ کدام از آنها با نیازهای من مطابقت ندارد. من می خواستم بتوانم بیش از سلولهای NiCd/NiMH یا Lion آزمایش کنم. من می خواستم بتوانم باتری ابزار قدرت را بدون در نظر گرفتن قطعه اولیه آزمایش کنم. بنابراین ، من تصمیم گرفتم که موضوع را دقیق تر ببینم و یکی از آن ها را خودم طراحی کنم. یک چیز منجر به چیز دیگری می شود و من بالاخره تصمیم گرفتم که یک دستورالعمل بنویسم. من همچنین تصمیم گرفتم که در مورد نحوه ساخت دستگاه تستر به هیچ وجه توضیح ندهم زیرا همه می توانند در مورد انتخاب های خاصی مانند مقاومت اندازه مورد استفاده یا نیاز به PCB یا نیاز به Veroboard و همچنین دستورالعمل های زیادی برای نحوه تصمیم گیری تصمیم گیری کنند. نصب عقاب یا نحوه ساخت PCB به عبارت دیگر ، من روی نمودارها و کد و نحوه کالیبراسیون تستر تمرکز می کنم.

مرحله 1: تاریخچه - نسخه 1

تاریخچه - نسخه 1
تاریخچه - نسخه 1

در بالا اولین نسخه با پشتیبانی ورودی 10 ولت اضافه شده در زیر (R12 & R17 & Q11 & Q12) در بالا آمده است.

نسخه اول کمابیش از دستور deba168 گرفته شده است (متأسفانه من نمی توانم راهنمای او را برای ارائه پیوند پیدا کنم). فقط برخی تغییرات جزئی انجام شد. در این نسخه یک مقاومت بار 10 اهم داشتم که توسط یک mosfet کنترل می شد. هرچند این کار مشکلاتی را به همراه داشت. هنگام آزمایش یک سلول NiCd یا NiMH ، زمان مورد نیاز به راحتی در چند ساعت و یا چند روز اندازه گیری شد. یک باتری 1500 میلی آمپر ساعتی بیش از 12 ساعت طول کشید (جریان فقط 120 میلی آمپر بود). از سوی دیگر ، نسخه اول فقط می تواند باتری های زیر 10 ولت را آزمایش کند. و باتری 9.6 ولت به طور کامل شارژ می تواند حداکثر تا 11.2 ولت باشد که به دلیل محدودیت 10 ولت قابل آزمایش نیست. باید یک کاری کرد. اول ، من فقط چند مصفه و مقاومت اضافه کردم تا تقسیم کننده های ولتاژ بتوانند بیش از 10 ولت اجازه دهند. اما این از طرف دیگر مشکل دیگری را به وجود آورد. باتری 14.4 ولت به طور کامل بارگذاری شده می تواند تا 16.8 ولت tp داشته باشد که با مقاومت 10 اهم به معنای جریان 1.68 آمپر و البته اتلاف توان از مقاومت بار تقریباً 30 وات است. بنابراین ، با ولتاژ پایین زمان آزمایش زیاد و با ولتاژ بالا جریان بسیار زیاد. بدیهی است که این یک راه حل مناسب نبود و توسعه بیشتری مورد نیاز بود.

مرحله 2: نسخه 2

من راه حلی می خواستم که جریان بدون محدودیت ولتاژ باتری در محدوده خاصی بماند. یکی از راه حل ها استفاده از PWM و فقط یک مقاومت بود ، اما من ترجیح می دادم که محلول بدون جریان تپنده داشته باشم یا نیاز به دفع حرارت mosfet داشته باشم. بنابراین ، من یک راه حل با 10 شکاف ولتاژ ، هر 2 عرض 2 ، با استفاده از 10 مقاومت 3.3 اهم و یک mosfet برای هر مقاومت ایجاد کردم.

مرحله 3: به این ترتیب شکل گرفت

اینگونه است که معلوم شد
اینگونه است که معلوم شد

یکی می تواند استدلال کند که افت ولتاژ بر روی mosfet بسیار ناچیز است زیرا مقاومت mosfet بسیار کم است ، اما من انتخاب mosfet را به خواننده واگذار کرده ام و بنابراین مقاومت می تواند حتی بیش از 1 اهم در آنجا شروع شود موضوع. در نسخه 1 انتخاب mosfet مناسب نیاز به اندازه گیری نقطه پایین را برطرف می کند اما در نسخه 2 تصمیم گرفتم که ولتاژ را فقط بر روی یک مقاومت اندازه گیری کنم که این امر داشتن دو نقطه اندازه گیری را بسیار مهم می کند. و دلیل این انتخاب سادگی در سیم کشی Veroboard بود. این امر خطای دقت را افزایش می دهد زیرا ولتاژ اندازه گیری شده در یک مقاومت به طور قابل توجهی کوچکتر از اندازه گیری روی تمام مقاومت ها است. در انتخاب اجزاء تصمیم گرفتم از آنچه که قبلاً در دست داشتم یا آنچه به راحتی به دست می آوردم استفاده کنم. این منجر به BOM زیر شد:

  • Arduino Pro Mini 5V! مهم! من از نسخه 5V استفاده کردم و همه بر اساس آن است
  • صفحه نمایش OLED 128x64 I2C
  • مقاومت 10 x 5W 3.3 اهم
  • 3 x 2n7000 mosfets
  • 10 x mosfets IRFZ34N
  • 6 مقاومت 10 کیلو اهم
  • 2 مقاومت 5 کیلو اهم
  • خازن 16V 680uF
  • 1 عدد فن CPU قدیمی

من موارد زیر را در نمودارها اضافه نکرده ام

  • مقاومت های کششی در خطوط I2C ، که متوجه شدم صفحه نمایش پایدارتر است
  • خطوط برق
  • خازن در خط 5V که صفحه نمایش را نیز تثبیت کرده است

در حین آزمایش متوجه شدم مقاومتهای بار بسیار داغ می شوند ، به ویژه اگر همه آنها در حال استفاده باشند. درجه حرارت به بیش از 100 درجه سانتیگراد (که بیش از 212 درجه فارنهایت است) افزایش یافته است و اگر قرار است کل سیستم در یک جعبه بسته شود باید نوعی خنک کننده ارائه شود. مقاومتهایی که من استفاده کردم 3.3 اهم / 5 وات است و حداکثر جریان باید در حدود 2 ولت در هر مقاومت ایجاد شود که 2 ولت / 3.3 = 0.61 آمپر است که منجر به 1.21 وات می شود. در نهایت یک فن ساده را در جعبه اضافه کردم. بیشتر به این دلیل که تصادفاً تعدادی فن قدیمی CPU در اطراف من وجود داشت.

قابلیت های شماتیک

کاملاً مستقیم است و خود توضیح می دهد. باتری مورد آزمایش به سری مقاومتها و زمین متصل است. نقاط اندازه گیری ولتاژ عبارتند از اتصال باتری و اولین مقاومت. سپس از تقسیم کننده های ولتاژ برای کاهش ولتاژ به سطحی استفاده می شود که بهتر از آردوینو باشد. یک خروجی دیجیتالی برای انتخاب محدوده 10V یا 20V تقسیم کننده ها استفاده می شود. هر مقاومت در بار را می توان به صورت جداگانه با استفاده از mosfets ، که مستقیماً توسط آردوینو هدایت می شوند ، متصل کرد. و در نهایت ، صفحه نمایش به پین های Arduino I2C متصل می شود. در مورد J شماتیک چیز زیادی برای گفتن نیست

مرحله 4: کد

کد
کد

در بالا می توان عملکرد خشن کد را مشاهده کرد. بیایید نگاهی دقیق تر به کد داشته باشیم (فایلهای arduino ino ضمیمه شده اند). تعدادی توابع و سپس حلقه اصلی وجود دارد.

حلقه اصلی

هنگامی که اندازه گیری آماده است نتایج نشان داده می شود و اجرا در آنجا به پایان می رسد. اگر اندازه گیری هنوز انجام نشده است ، ابتدا نوع باتری انتخاب شده و سپس ولتاژ ورودی بررسی می شود. اگر ولتاژ از 0.1 ولت بیشتر باشد ، باید حداقل نوعی باتری متصل باشد. در این حالت ، از یک زیر برنامه استفاده می شود تا بفهمد چند سلول در باتری است تا نحوه آزمایش را تعیین کند. تعداد سلولها کمابیش اطلاعاتی است که می توان بهتر از آنها استفاده کرد ، اما در این نسخه ، فقط از طریق رابط سریال گزارش می شود. اگر همه چیز خوب باشد ، روند تخلیه شروع می شود و در هر دور حلقه اصلی ظرفیت باتری محاسبه می شود. در انتهای حلقه اصلی ، صفحه نمایش دارای مقادیر شناخته شده است.

روش نمایش نتایج

عملکرد showResults به سادگی خطوطی را که روی صفحه نمایش داده می شوند و همچنین رشته ای را که به رابط سریال ارسال می شود تنظیم می کند.

روش اندازه گیری ولتاژ

در ابتدای عملکرد Vcc آردوینو اندازه گیری می شود. برای محاسبه ولتاژهای اندازه گیری شده با استفاده از ورودی های آنالوگ لازم است. سپس ولتاژ باتری با استفاده از محدوده 20 ولت اندازه گیری می شود تا بتوانید از کدام محدوده استفاده کنید. سپس ولتاژ باتری و ولتاژ مقاومت محاسبه می شود. اندازه گیری ولتاژ باتری از کلاس DividerInput استفاده می کند که دارای روش های خواندن و ولتاژ برای خواندن خام یا ولتاژ محاسبه شده ورودی آنالوگ مورد نظر است.

روش انتخاب مقادیر مورد استفاده

در تابع selectUsedValues تعداد سلول ها حدس زده می شود و محدوده بالا و پایین برای باتری با روش تخلیه تنظیم می شود. همچنین اندازه گیری به عنوان شروع علامت گذاری شده است ، محدودیت های این روش در ابتدای متغیرهای جهانی تعیین شده است. اگرچه آنها می توانند ثابت باشند ، و همچنین می توانند در داخل روش تعریف شوند زیرا در سطح جهانی استفاده نمی شوند. اما همیشه چیزی برای بهبود وجود دارد:)

روش محاسبه ظرفیت باتری

عملکرد تخلیه از شمارش ظرفیت باتری مراقبت می کند. محدوده کم و زیاد ولتاژ باتری تحت آزمایش را به عنوان پارامتر بدست می آورد. مقدار بالا در این نسخه استفاده نمی شود ، اما مقدار پایین برای تصمیم گیری در مورد زمان توقف آزمایش استفاده می شود. در ابتدای عملکرد با استفاده از تابعی که برای این منظور ایجاد شده است تعداد مقاومتهای مورد استفاده مشخص می شود. تابع تعداد مقاومت را برمی گرداند و همزمان تخلیه را شروع می کند و شمارنده را تنظیم مجدد می کند. سپس ولتاژها اندازه گیری شده و همراه با مقدار مقاومت شناخته شده برای محاسبه جریان استفاده می شود. اکنون که ولتاژ و جریان را می دانیم و زمان آن از آخرین اندازه گیری گذشته است ، می توان ظرفیت را محاسبه کرد. در پایان فرایند تخلیه ، ولتاژ باتری با حد پایین مقایسه می شود و اگر به زیر حد رسیده باشد ، مرحله تخلیه متوقف می شود ، mosfets بسته می شوند و اندازه گیری به عنوان آماده علامت گذاری می شود.

روش یافتن تعداد مقاومت برای استفاده

در عملکرد selectNumOfResistors مقایسه ساده ولتاژ با مقادیر از پیش تعیین شده انجام می شود و در نتیجه تعداد مقاومتهای مورد استفاده تصمیم گیری می شود. mosfet مناسب باز می شود تا برخی از مقاومت ها رد شوند. شکاف های ولتاژ به گونه ای انتخاب شده اند که حداکثر جریان در هر زمان در طول تخلیه کمی بیش از 600mA (2V/3.3Ohm = 606mA) باقی می ماند. این تابع تعداد مقاومت های استفاده شده را برمی گرداند. از آنجا که فن از همان خط اولین مسفت خارج می شود ، باید همیشه هنگام تخلیه باز شود.

مرحله 5: کالیبراسیون متر

کالیبراسیون متر
کالیبراسیون متر

برای کالیبراسیون متر ، برنامه دیگری ایجاد کردم (پیوست شده است). از سخت افزار یکسانی استفاده می کند. در ابتدا مقادیر تقسیم کننده تصحیح همه روی 1000 تنظیم شده است.

const int divCorrectionB10V = 1000؛ // ضرب تصحیح تقسیم کننده در محدوده 10V const int divCorrectR10V = 1000 ؛ // ضرب تصحیح تقسیم کننده در محدوده 10V const int divCorrectionB20V = 1000 ؛ // ضرب تصحیح تقسیم کننده در محدوده 20V const int divCorrectionR20V = 1000 ؛ // ضرب تصحیح تقسیم کننده در محدوده 20 ولت

در تابع readVcc () ولتاژ Vcc حاصل از تنظیم مقدار آخرین خط تابع قبل از بازگشت کاهش می یابد. معمولاً در اینترنت می توانید مقدار 1126400L را پیدا کنید تا در محاسبه استفاده شود. متوجه شدم نتیجه درست نیست.

فرایند کالیبراسیون:

  1. برنامه اندازه گیری را در آردوینو بارگذاری کنید.
  2. اگر بار روشن است ، می توانید در آردوینو (و در خروجی سریال و اگر فن در حال چرخش است) را مشاهده کنید. اگر فعال است ، کلید انتخاب نوع باتری را بچرخانید.
  3. مقدار را در readuVCC () تنظیم کنید تا نتیجه صحیح داشته باشید. مقداری را که تابع می دهد (که بر حسب میلی ولت است) بگیرید و مقدار طولانی را با آن تقسیم کنید. مقدار خام مرجع داخلی را دریافت خواهید کرد. اکنون ولتاژ تغذیه واقعی را بر حسب میلی ولت با یک مولتی متر اندازه گیری کرده و با مقدار محاسبه شده قبلی ضرب کنید و مقدار طولانی اصلاح شده جدید را بدست آورید. در مورد من عملکرد هنگامی که Vcc واقعی 5.14 ولت بود 5288 میلی ولت برگشت داد. محاسبه 1126400/5288*5408*5140 = 1094874 که من مجدداً با آزمایش مجدداً تنظیم کردم. مقدار جدید را در کد قرار دهید و دوباره آن را در آردوینو بارگذاری کنید.
  4. تنظیم مقادیر اصلاح کننده مقاومت ورودی آنالوگ با استفاده از منبع تغذیه قابل تنظیم که برای تغذیه ورودی متر استفاده می شود. ساده ترین روش استفاده از ولتاژهای 1 ولت تا 20 ولت با مراحل 1 ولت و ثبت نتایج در صفحه گسترده است. در صفحه گسترده میانگین در نظر گرفته شده است. مقادیر تصحیح شده با فرمول زیر محاسبه می شود: "مقدار_خام*محدوده*Vcc/Vin" که در آن مقدار خام مقدار 10VdivB ، 10VdivR ، 20VdivB یا 20VdivR است بسته به اینکه کدام اصلاح باید محاسبه شود.

صفحه گسترده را ببینید که برای من چگونه به نظر می رسید. میانگین ها فقط از مقادیری که باید در محدوده باشند محاسبه می شوند و سپس این مقادیر در برنامه متر واقعی تنظیم می شوند.

مثل این

const int divCorrectionB10V = 998؛ // تقسیم تقسیم تصحیح در محدوده 10V const int divCorrectR10V = 1022؛ // تقسیم تقسیم تصحیح در محدوده 10V const int divCorrectionB20V = 1044؛ // تقسیم کننده تصحیح تقسیم کننده در محدوده 20V const int divCorrectionR20V = 1045؛ // تقسیم کننده تصحیح تقسیم کننده در محدوده 20 ولت

تنظیم مقدار مقاومت را می توان با ارائه مقداری ولتاژ به ورودی (یعنی 2 ولت) ، تغییر کلید نوع خفاش (برای بارگیری) و اندازه گیری جریان ورودی و ولتاژ مقاومت اول و تقسیم ولتاژ با جریان به برای من 2 ولت 607 میلی آمپر داد که 2/0.607 = 3.2948 اهم می دهد که من آن را به 3.295 اهم رساندم. بنابراین اکنون کالیبراسیون انجام شده است.

مرحله 6: آخرین یادداشت

یک نکته مهم در اینجا. ضروری است که همه اتصالات در شرایط اولیه از باتری تا مقاومت ها باشند. من یک اتصال بد داشتم و می پرسیدم چرا در شبکه مقاومت 0.3 ولت ولتاژ کمتری نسبت به باتری دریافت کردم. این بدان معناست که فرایند اندازه گیری تقریباً بلافاصله با سلولهای NiCd 1.2V به پایان رسید زیرا حد پایینی 0.95V به سرعت به دست آمد.

توصیه شده: