نکات طرّاحی یک سیستم برای استفاده از یک باطری
درخلال طراحی یک سیستم برای استفاده از یک باطری باید ابتدا سیستم مورد نظر و نیازهای آن را کاملاً شناخت و در یکی از دسته بندی های زیر طبقه بندی کرد؛ سپس هنگام طراحی اجزاء سیستم نکات ذکر شده را باید لحاظ کرد.
الف .
سیستمهای باطریهای اولیّهای که به طور خودکار فعّال میشوند
روشهای فعّال سازی (الکتریکی یا مکانیکی)
زمان فعّال سازی مورد نیاز
دمای زمان شارژ
ب .
سیستمهای مبتنی بر باطریهای ثانویّه
عمر مفید استفاده از باطری، مدّت و تعداد شارژ و دشارژ
مدت نگهداری باطری به صورت شارژ شده
روشهای شارژ
روشهای نگهداری
فرایند تست
اطلاعات عملکرد یک باطری پس از طی فرایند تست حاصل میشود؛ به همین جهت بسیاری از این فرایندها بصورت استاندارد تعریف شده است .
این فرایندها تنها یک سری اطلاعات قابل مقایسه تولید میکنند تا بکمک آن بتوان خصوصیات مطلوب باطریها از قبیل عمر مفید و آمپر ساعت هر کدام را بدست آورد.
با اینحال باید به این نکته توجّه داشت که دادههای بدست آمده در شرایطی متفاوت با شرایط استخراج مشخصات محصول در محل تولید حاصل شده است و لزوماً با مشخصات ارائه شده یکسان نیست.
در طول تست یک باطری سعی میشود شرایط محیطی طوری فراهم شود که فرایند دشارژ و عوامل مؤثّر در پیر شدن باطری تسریع شود .
برای اینکار روشهای متفاوتی وجود دارد: بررسی خوردگی در دمای بالا، تست باطریهای بزرگ ثابت بکمک تنظیم سوپاپهای مخصوص تعبیه شده در محفظه باطری، تست جریانی با سرعت بسیار بالا.
مشکلات اصلی این روشها افزایش دمای داخلی است در حالی که اطلاعات مرجع موجود در شرایط استاندارد حاصل شدهاند؛ و از طرفی تست باطریها در شرایط واقعی بسیار وقتگیر و بعضاً غیر عملی است.
حتّی تست در شرایط تسریع داده شده نیز بخصوص برای با مدّت دشارژ زیاد وطول عمر بالا بعضاً تا چند روز طول میکشد.
4-2 . طراحی و ساخت یک شارژر
برای طراحی یک مدار مناسب برای شارژ، دشارژ و تست باطری ابتدا منابع اطلاعاتی موجود در این زمینه گردآوری شد سپس با مقایسه تطبیقی طرحهای مدارات موجود برای شارژ انواع باطریهای متداول و نکات مطرح شده در فصول قبل در مورد شارژ و دشارژ باطریها از بین طرحهای موجود چند طرح برگزیده انتخاب شد.
در ادامه چند طرح اولیه که مورد بررسی قرار گرفت و بر پایه آنها طرح نهایی بدست آمده است ارائه شده است.
در ادامه چند طرح اولیه که مورد بررسی قرار گرفت و بر پایه آنها طرح نهایی بدست آمده است ارائه شده است.
شکل 4-1 مدار سمت چپ ساده ترین شکل ممکن یک شارژر نوعی است.
درمدار سمت راست قسمت کنترل کننده جریان اضافه شده است.
شکل 4-2 یک مدار شارژر متداول که ابتدا با کاهش و یکسوسازی برق شهر ورودی یک رگولاتور ولتاژ را تأمین میکند و سپس بکمک یک مقاومت متغیر میتوان میزان ولتاژ خروجی مورد نیاز برای باطریهای متفاوت را تنظیم کرد؛ علاوه براین این مدار علاوه بر قابلیت کنترل جریان دارای فیدبک حرارتی میباشد.
شکل 4-3 این مدار طرح یکی از شارژرهای شرکت موتورولا است.
در این مدار مزیات اساسی دیکری نسبت به مدارهای ساده قبلی وجود دارد مانند جداسازی قسمت ولتاژ بالا از قسمت ولتاژ پایین و رگولاسیون بسیار عالی.
البته بدلیل وجود مدارات مجتمع خاص این مدار به صورت دستی قابل ساخت نیست.
شکل 4-4 در مدار فوق کنترل حرارتی بسیار دقیقی صورت گرفته است.
4-3 .
طراحی و ساخت یک تستر دیجیتال برای ساخت یک تستر دیجیتال ایدههای متفاوتی وجود دارد که وجه مشترک همه آنها استفاده از یک مبدّل آنالوگ به دیجیتال است.
بعنوان مثال ایده ای که در ابتدا ممکن است بنظر آید استفاده از ADC0809 میباشد ؛ این تراشه یک تراشه 28 پایانهای 8 بیتی است که شامل یک مالتیپلکسر علاوه بر مبدل آنالوگ به دیجیتال میباشد؛ این مالتیپلکسر دارای هشت ورودی آنالوگ است که توسط سه ورودی دیگرآدرسدهی میشود.
با وجود مزیّت فوق بدلیل اینکه تراشه مذکور برای کار با ریزپردازنده طراحی شده است زمانبندی و تنظیم سطوح ولتاژ ورودی آن مشکل است در ضمن قیمت این تراشه نیز نسبت به انواع 4 بیتی و 8 بیتی های بدون مالتی پلکسر بالاست (19000 ریال).
ایده دیگر برای ساخت مدار تستر استفاده از یک مبدل سادهتر بنامADC0804 میباشد .
این تراشه 20 پایهای در مقابل تراشه ADC0809 سادهتر است و قیمت پایینتری نسبت به ADC0809 دارد و به کمک یک مدار نسبتاً ساده میتوان یک مبدّل برای تبدیل اطلاعات آنالوگ به دیجیتال ساخت.
با این حال مقادیر دیجیتال خروجی ADC0804 هنگامی کهSOC به EOC متصل است در همه زمانها معتبر نمی باشد لذا در این پروژه با توجه به مطالب فوق و به کمک Handshake با تراشه از طریق درگاه موازی کامپیوتر برای ساخت تستر دیجیتال از تراشه ADC0809 استفاده شده است.
مدار تستر از دو بخش مبدّل آنالوگ به دیجیتال و مالتیپلکسر آنالوگ با چهار ورودی تشکیل شده است ؛ بکمک این مدار بهمراه یک رایانه شخصی میتوان دو ورودی آنالوگ ولتاژ و دما ( بصورت ولتاژ ) را به اطلاعات دیجیتایز شده تبدیل کرد و سپس بکمک زبانPascal این اطلاعات را به یک فایل قابل اجرا در محیط Matlab تبدیل کرد.
تبدیل کرد، در پایان توسط برنامهMatlab میتوان نمودار اطلاعات موجود را رسم کرد.
برای زمانبندی نمودارهای مشخصات باطریهای مختلف از مقیاسهای متفاوتی استفاده شده است؛ علت این مقیاسبندی متفاوت سرعتهای متفاوت دشارژ باطریهای گوناگون است.
باطریهای قابل شارژ با سرعت بیشتری نسبت به باطریهای معمولی تخلیه میشود ، علاوه بر این انواع گوناگون باطریها با توجّه به کاربردی که دارند با سرعتهای متفاوتی دشارژ میشوند.
طرح مداری که برای تستر دیجیتال این پروژه طرّای شده است در شکل صفحه بعد آمده است.
شکل این مدار بکمک برنامه Orcad 9.1 کشیده شده است.
(الف) (ب) شکل 4-5 شماتیک مدار تستر الف – مدار مبدل آنالوگ به دیجیتال ب- مدار شارژر و تستر مقاومت داخلی بر پایه سخت افزار فوق Flow chart نرم افزار مورد نیاز برای أخذ و ثبت مشخصات عمومی در طول مدت عملکرد نامی باطری نوعی تحت تست نوشته شده است.
شمای کلی این Flowchart در صفحات بعد آمده است.
Start Get sampling specifications and a path for storing samples Initialization 1.
Settling parallel port as input 2.
Getting samplinginformation (sample number, time & etc.) from user Setting address for desired analog input (A0) Next page شکل 4-6 Flow chart نرم افزار مورد استفاده توسط کامپیوتر Continue from previous page Set ALE SOC No EOC?
No Get and store data Increase sample time counter No time up?
Increase time counter sample number up ?
END شکل 4-6 Flow chart نرم افزار مورد استفاده توسط کامپیوتر (ادامه) نرم افزار مورد نیاز برای اجرا بر روی رایانه شخصی ذخیره کننده مشخص عملکرد یک باطری تحت تست به زبان پاسکال نوشته شده است.
متن این نرم افزار در پیوست " خ " به همراه توضیحات مورد نیاز در خلال متن اصلی آمده است.
پس از Compile کردن این نرم افزار بکمک فایل اجرایی حاصله تست باطری های مورد نظر انجام شده است.
پس از انجام هر تست یک فایل matlab ، m_file ، ایجاد می شود؛ در ادامه بعنوان نمونهm_file ایجاد شده برای تست مقاومت داخلی آورده شده است.
sample_number = 620; %data=[time(S) voltage(mV) internal resistor(mOhm) ] data = [ .
.
247 70 70000 248 70 70000 249 70 70000 250 70 70000 ]; voltage_range = 70; data(:,2) = (data(:,2)/voltage_range)*1.5; data(:,3) = (data(:,3)/voltage_range)*0.0015; subplot(2,1,1);plot(data(:,1),data(:,2)); ylabel)'Open circuit voltage (V)'); subplot(2,1,2);plot(data(:,1),data(:,3)); ylabel('internal resistor (ohm)'); پس از اجرای m_file های حاصل از انجام تست های مختلف روی باطری 1.2V قلمی NiCd با نام تجارتی National و 1.5V قلمی پارس نمودارهای مشخصه برای این باطری خاص بدست آمد؛ این نمودارها در بخش مشاهدات در ادامه متن آمده است.
البته این تست ها اگرچه به صورت ناقص (تنها تست دشارژ و تخلیه تحت بار ثابت) بر روی باطری های غیر قابل شارژ نیز می توان انجام داد.
به همین دلیل در این گزارش برای اینکه بتوان تمام تست های مورد نیاز را انجام داد از یک باطری قابل شارژ استفاده شده است.
البته علاوه بر این تست برای آشنایی با عملکرد باطری های پارس که بیشترین تولید باطری در ایران را به خود اختصاص داده است باطری 1.5 ولتی پارس نیز تست شده است.
و مأخذ منابع لاتین 1.
T.R.
Cormpton, 2000, Battery Reference Book, Third Edition, Plant A Tree.
2.
D.
Brendt, 1997, Maintenance-free Batteries, Second Edition, Research Studies Press & John Wiley And sons.
3.
C.
Fubberman, 1995, Battery Supplier And Charger, Adison Wisley.
4.
Rydh, C.
J.
and Karlstrِm, M.
(2001) Life Cycle Assessment of Recycling Portable Nickel-Cadmium Batteries, Submitted to Resources, Conservation and Recycling.
5.
(1999) Environmental Assessment of Vanadium Redox and Lead-acid Batteries for Stationary Energy Storage, Journal of Power Sources, No 80, p.
21-29.
6.
Stephen J.Fonash,Solar Cell Device Physics,1977, Academic Press.
7.
Linden David,Handbook of Battery and Fuel Cell,1984,McGraw-Hill.
8.
S.
Uno Falk,Alkaline Storage Battreies,1969, John Willey & Sons.
9.
L.
Semoyonov,Storage Batteries Maintenance Manual, 1964, Mir Publisher.
10.
O'M Bockris, Fuel Cell:Their Chemistry,1969,McGraw-Hill.
11.
Colin A.
Vincent,Modern Batteries,1984, Edward Arnold.
12.
Mantell,Batteries and Energy Systems, 1983,McGraw-Hill 13.
Rudolf F.
Graf, The Modern Power Supply and Battery Charger Circuit Encyclopedia, 1992,Tab Books منابع شبکه http://www.corrosion-doctors.org/Batteries/merit.htm http://www.bwvortex.net/bwvortex.php3?page=tats http://www.portableenergy.com/graphs/comparative_table.hm http://www.hepi.com/basics/history.htm http://www.europulse.com/battery_history/battery_history.hm http://www.ttcorp.com/fccg/fc_what3.htm http://www.cyb.com.au/encyclopedia/efault.htm http://www.avointl.com/products/battery/cbite/CBite.pdf http://www.collectnicad.org http://www.minerals.usgs.gov http://www.europa.eu.int/comm/environment/waste/nicd.htm http://www.batterybaseball.com/toc.htm http://www.reillysbattery.org/contents.htm http://www.data.energizer.com/batteryinfo/typical_ characteristics.htm http://www.batterychargers.com/battery_charger_contents.hm http://www.cyber-dyne.com/~keithl/battery/table.htm http://www.antonbauer.com/handbook/handbook.html منابع فارسی قائمی ، علی ، روش تحقیق ، 1356 ه.ش.
، مرکزانتشارات دارالتبلیغ اسلامی مارکوس ، جان ، فرهنگ جامع الکترونیک ، ترجمه حسین کاظمزاده ، 1380 ه.ش.
، نشر توتیا آریانپور ، منوچهر ، نسخه الکترونیکی فرهنگ شش جلدی پیشرو آریانپور ، 1379 ه.ش.
، نشر الکترونیکی و اطلاعرسانی جهان رایانه پیوست ح: تراشهها و اطلاعات مربوط به آنها 1.
مالتیپلکسر آنالوگ( 4052 ) 2.
رگولاتور( 7805 ) 3 .
مبدّل آنالوگ به دیجیتال( ADC0804 ) 4 .
مبدّل آنالوگ به دیجیتال ( ADC0808 ) 5 .
مشخصات درگاه موازی استاندارد ( parallel port ) شکل ح-1 اسامی ورودی ها و خروجی های استاندارد Centronics شکل ح-2 اسامی ، آدرس ها و مشخصات Register های استاندارد که بعنوان ورودی یا خروجی برای تبادل اطلاعات و Handshake بین کامپیوتر و مدار مبدل آنالوگ به دیجیتال استفاده شده اند.
پیوست خ: نرم افزار تستر دیجیتال uses dos ,crt; var voltage ,temp ,internal_resistor ,v_oc : array[1..2000] of integer; h, m, s, hund ,time ,timer ,start ,go ,stop : word; counter ,sampling_time ,high , low ,sample_number : longint; test_current ,min_digital_temp ,max_digital_temp ,digital _temp_range ,max_digital_voltage ,dummy ,mv_range ,room_temp ,max_temp ,temp_range : integer; load_resistor ,voltage_range : real; TF : text; filepath : string; ch_dis : char; function LeadingZero(w : Word) : String; var s : String; begin Str(w:0,s); if Length(s) = 1 then s := '0' + s; LeadingZero := s; end; {-------------------------------------------- main body ----------------------------------------} begin {-------------------------------- geting information from user -----------------------------} clrscr; writeln(' GENERAL TEST '); writeln('Your battery is under a general test; please insert your favoraite test charachterestics'); writeln(' *for unwaned data insert zero*'); write('output file path = '); readln(filepath); writeln(' *for charge test insert one and insert zero for decharge test*'); write('(C)harge or (D)ischarge ?
' readln(ch_dis); write('test current (mA) = '); readln(test_current); write('load_resistor (Ohm) = '); readln(test_current); write('sample_number = '); readln(sample_number); write('sampling_time (S) = '); readln(sampling_time); {---------------------------- store user inputs in a matlab_file ---------------------------} assign (TF,filepath); rewrite(TF); writeln(TF, 'ch_dis =',ch_dis,';'); writeln(TF, 'sample_number = ',sample_number,';'); writeln(TF, 'sampling_time = ',sampling_time,';'); writeln(TF, 'test_current = ',test_current,';'); writeln(TF, 'load_resistor = ',load_resistor,';'); {--------------------------------- Initiliaze tester software --------------------------------} voltage_range := 1.5; mv_range := round(1000*voltage_range); room_temp := 30; max_temp := 60; temp_range := max_temp - min_temp; max_digital_voltage := 95; min_digital_temp := 130; max_digital_temp := 170; digital_temp_range := max_digital_temp - min_digital_temp; counter := 1; port [$37A] := port [$37A] or $04; {-- setting decharge control signal high ------} delay(10); writeln(TF, '%data = [time(S) voltage(mV) v_oc(mv) internal_resistor(mohm) temperature(''''c) ]'); writeln(TF, 'data = [ '); {-------------------------- settling start time of sampling --------------------------------} GetTime(h,m,s,hund); start := (3600*h)+(60*m)+s; {------------- setling of internal resistor testing decharge duty sycle -----------------} low := 5000; high := 95000; {------------- sampling loop with sample number and kepress condition ------------} while (counter begin {--------------- get and diplay and storing current system time ---------------------} writeln(counter,' th sample.
'); GetTime(h,m,s,hund); WriteLn('It is now : ',LeadingZero(h),':', LeadingZero(m),':',LeadingZero(s), '.',LeadingZero(hund)); timer := (3600*h)+(60*m)+s; time := timer - start; write(TF, time,' '); {------------------ set ALE & set A0(read voltage) & reset ALE ------------------} port [$37A] := port [$37A] or $08; dela(10); port [$37A] := port [$37A] and $FD; delay(10); port [$37A] := port [$37A] and $F7; delay(10); {----------------------------------- SOC & wait for EOC ------------------------------} port [$37A] := port [$37A] and $FE; while port [$379] <> 63 do delay(1); delay(10); {------------------- set clock and activate data register as input --------------------} port [$37A] := port [$37A] or $04; delay(high div 2); port [$37A] := port [$37A] or $23; delay(10); port [$37A] := port [$37A] and $FD; delay(10); {--------------------------------- read voltage from PP --------------------------------} dummy := port [$378]; delay(high div 2); voltage[counter] := (dummy * mv_range) / max_digital_voltage ; writeln('voltage (mv) : ',voltage[counter]); write(TF,voltage[counter],' '); {------------------- set ALE & set A0 (read voltage) & reset ALE -----------------} port [$37A] := port [$37A] or $08; delay(10); port [$37A] := port [$37A] and $FD; delay(10); port [$37A] := port [$37A] and $F7; delay(10); {--------------------------------- SOC & wait for EOC -------------------------------} port [$37A] := port [$37A] and $FE; while port [$379] <> 63 do delay(1); delay(10); {------- reset decharge control signal and activate data register as input --------} port [$37A] := port [$37A] and $FB; delay(low div 2); port [$37A] := port [$37A] or $23; delay(10); port [$37A] := port [$37A] and $FD; delay(10); {--------------------------------- read voltage from PP -------------------------------} dummy := port[$378]; delay(10); v_oc[counter] := (dummy * mv_range) / max_digital_voltage ; writeln('v_oc (mv) : ',v_oc[counter]); write(TF,v_oc[counter],' '); delay(low div 2); internal_resistor[counter] := 1000 * (( v_oc[counter] - voltage[counter] ) / test_current); write(TF,internal_resistor[counter],' '); writeln('internal resistor (mOhm) : ',internal_resistor[counter]); {------------ set ALE & reset A0(read temperature) & reset ALE ---------------} port [$37A] := port [$37A] or $08; delay(10); port [$37A] := port [$37A] and $FD; delay(10); port [$37A] := port [$37A] and $F7; delay(10); {---------------------------------- SOC & wait for EOC -------------------------------} port [$37A] := port [$37A] and $FE; while port [$379] <> 63 do delay(1); delay(10); {--------------------------- activate data register as input ----------------------------} port [$37A] := port [$37A] or $23; delay(10); port [$37A] := port [$37A] and $FD; delay(10); {------------------------------ read temperature from PP -----------------------------} dummy := 255 - port[$378]; delay(10); temp[counter] := round(dummy * ( temp_range / digital_temp_range )); writeln(TF, temp[counter],' '); writeln('temperature (''c) : ',round(temp[counter])); writeln; counter := counter + 1; end; {---------------- Store test results in specified matlab_file by user ------------------} writeln(TF, ']; '); writeln(TF, 'IF load_resistor <> 0 '); writeln(TF, ' subplot(2,1,1);plot(data(:,1),data(:,2)/1000); '); writeln(TF, ' ylabel(''Voltage (mV)''); '); writeln(TF, ' subplot(2,1,2);plot(data(:,1),data(:,2)/load_resistor); '); writeln(TF, ' ylabel(''Current (mA)''); '); writeln(TF, 'ELSE '); writeln(TF, ' IF ch_dis == 0 '); writeln(TF, ' subplot(4,1,1);plot(data(:,1),data(:,2)/1000); '); writeln(TF, ' ylabel(''Voltage under constant current''); '); writeln(TF, ' subplot(4,1,2);plot(data(:,1),data(:,5)); '); writeln(TF, ' xlabel(''Time (S)'');ylabel(''Temperature(''''C)''); '); writeln(TF, ' subplot(4,2,1);plot(data(:,1),data(:,3)/1000); '); writeln(TF, ' ylabel(''Open circuit voltage (V)''); '); writeln(TF, ' subplot(4,2,2);plot(data(:,1),data(:,4)/1000); '); writeln(TF, ' ylabel(''internal resistor (ohm)''); '); writeln(TF, ' ELSE '); writeln(TF, ' subplot(4,1,1);plot(data(:,1),data(:,2)/1000); '); writeln(TF, ' ylabel(''Voltage under constant current''); '); writeln(TF, ' subplot(4,1,2);plot(data(:,1),data(:,5)); '); writeln(TF, ' xlabel(''Time (S)'');ylabel(''Temperature(''''C)''); '); writeln(TF, ' subplot(4,2,1);plot(data(:,1),data(:,3)/1000); '); writeln(TF, ' ylabel(''Open circuit voltage (V)''); '); Writeln(TF, ' data(:,4)=-data(:,4); '); writeln(TF, ' subplot(4,2,2);plot(data(:,1),data(:,4)/1000); '); writeln(TF, ' ylabel(''internal resistor (ohm)''); '); close(TF); end.