Სარჩევი:

ბატარეის სიმძლავრის კიდევ ერთი ტესტერი: 6 ნაბიჯი
ბატარეის სიმძლავრის კიდევ ერთი ტესტერი: 6 ნაბიჯი

ვიდეო: ბატარეის სიმძლავრის კიდევ ერთი ტესტერი: 6 ნაბიჯი

ვიდეო: ბატარეის სიმძლავრის კიდევ ერთი ტესტერი: 6 ნაბიჯი
ვიდეო: ეკჰარტ ტოლე - "აწმყოს ძალა" - აუდიო წიგნი - Audible Read Along 2024, ივლისი
Anonim
ბატარეის სიმძლავრის კიდევ ერთი შემმოწმებელი
ბატარეის სიმძლავრის კიდევ ერთი შემმოწმებელი
ბატარეის სიმძლავრის კიდევ ერთი შემმოწმებელი
ბატარეის სიმძლავრის კიდევ ერთი შემმოწმებელი

რატომ კიდევ ერთი სიმძლავრის შემმოწმებელი

მე წავიკითხე ბევრი სხვადასხვა ტესტერის შექმნის ინსტრუქცია, მაგრამ არცერთი მათგანი არ შეესაბამება ჩემს საჭიროებებს. მინდოდა შემეძლო მეტის გამოცდა, ვიდრე უბრალოდ NiCd/NiMH ან ლომის უჯრედები. მინდოდა შევძლებდი ელექტროენერგიის ბატარეის გამოცდას მისი პირველი ნაწილის გარეშე. ასე რომ, მე გადავწყვიტე უფრო ახლოს გამეხედა საკითხის შესახებ და შემექმნა ჩემი საკუთარი. ერთი რამ მეორეს მივყავართ და მე საბოლოოდ გადავწყვიტე დამეწერა სასწავლო ინსტრუქცია. მე ასევე გადავწყვიტე, რომ არ განვიხილო დეტალური ინფორმაცია იმის შესახებ, თუ როგორ უნდა ავაშენო ტესტერი, რადგან ყველას შეუძლია გადაწყვიტოს გარკვეული არჩევანი, როგორიც არის ის, თუ რა ზომის რეზისტორი გამოიყენოს, ან საჭიროა თუ არა PCB, არის თუ არა Veroboard საკმარისი და ასევე არის ტონალობა ინსტრუქციებში, თუ როგორ დააინსტალირეთ არწივი ან როგორ გააკეთოთ PCB. სხვა სიტყვებით რომ ვთქვათ, მე გავამახვილებ ყურადღებას სქემაზე და კოდზე და იმაზე, თუ როგორ დავაკალიბროთ ტესტერი.

ნაბიჯი 1: ისტორია - ვერსია 1

ისტორია - ვერსია 1
ისტორია - ვერსია 1

ზემოთ არის პირველი ვერსია ქვემოთ მოყვანილი 10 ვ -ზე მეტი შეყვანის მხარდაჭერით (R12 & R17 & Q11 & Q12).

პირველი ვერსია მეტ -ნაკლებად აღებულია deba168– ის მიერ ინსტრუქციულად (სამწუხაროდ, მე ვერ ვპოულობ მის მითითებას ბმულის მიწოდების მიზნით). მხოლოდ მცირედი ცვლილებები განხორციელდა. ამ ვერსიაში მე მქონდა ერთი 10 ohm დატვირთვის რეზისტორი, რომელსაც აკონტროლებდა mosfet. თუმცა ამას გარკვეული პრობლემები მოჰქონდა. ერთი NiCd ან NiMH უჯრედის შემოწმებისას საჭირო დრო ადვილად იზომება საათებში თუ არა დღეებში. 1500 mAh ბატარეას დასჭირდა 12 საათი (მიმდინარე იყო მხოლოდ 120 mA). მეორეს მხრივ, პირველ ვერსიას შეეძლო მხოლოდ 10 ვტ -ზე ნაკლები ბატარეის გამოცდა. სრულად დამუხტული 9.6 ვ ბატარეა შეიძლება იყოს რეალურად 11.2 ვ -მდე, რომლის გამოცდა შეუძლებელია 10 ვ ლიმიტის გამო. რაღაცის გაკეთება იყო საჭირო. პირველ რიგში, მე დავამატე რამდენიმე მოსფეტი და რეზისტორი, რათა ძაბვის გამყოფებმა შეძლონ 10 ვ -ზე მეტი დაშვება. მაგრამ ამან მეორე მხრივ წარმოშვა სხვა პრობლემა. სრულად დატვირთული 14.4V ბატარეა შეიძლება იყოს 16,8V, რაც 10 ohm რეზისტორით ნიშნავს 1.68A დენს და, რა თქმა უნდა, ენერგიის გაფრქვევას დატვირთვის რეზისტორისგან თითქმის 30W. ასე რომ, დაბალი ძაბვის ძალიან გრძელი საცდელი დრო და მაღალი ძაბვის ძალიან მაღალი დენით. ცხადია, რომ ეს არ იყო ადეკვატური გამოსავალი და საჭირო იყო შემდგომი განვითარება.

ნაბიჯი 2: ვერსია 2

მე მინდოდა გამოსავალი, სადაც დენი დარჩებოდა გარკვეულ ზღვრებში, ბატარეის ძაბვის მიუხედავად. ერთი გამოსავალი იქნებოდა PWM- ის და მხოლოდ ერთი რეზისტორის გამოყენება, მაგრამ მე მირჩევნია მქონდეს ხსნარი პულსირებული დენის გარეშე ან მქონდეს საჭიროება მომეცი სითბოს გაფრქვევა. ამრიგად, მე შევქმენი გამოსავალი 10 ძაბვის სლოტით, თითოეული 2 ვ სიგანით, 10 3.3 ოჰმ რეზისტორისა და მოსფეტის გამოყენებით თითოეული რეზისტორისთვის.

ნაბიჯი 3: ასე გამოვიდა

ასე გამოვიდა
ასე გამოვიდა

შეიძლება ითქვას, რომ ძაბვის დაკარგვა mosfet– ზე უმნიშვნელოა, რადგან mosfet– ის წინააღმდეგობა ძალიან დაბალია, მაგრამ მე mosfet– ის არჩევანი მკითხველს დავუტოვე და ამგვარად წინააღმდეგობა შეიძლება 1 ohm– ზე მეტიც კი წავიდეს, სადაც ის იწყებს საკითხზე. პირველ ვერსიაში სწორი მოსფეტის არჩევა ამოიღებს ქვედა წერტილის გაზომვის აუცილებლობას, მაგრამ მე 2 ვერსიაზე გადავწყვიტე გავზომოთ ძაბვა მხოლოდ ერთ რეზისტორზე, რაც შემდეგ მნიშვნელოვნად აქცევს ორი საზომი წერტილის არსებობას. და არჩევანის მიზეზი იყო Veroboard– ის გაყვანილობის სიმარტივე. ეს ამატებს სიზუსტის შეცდომას, რადგან გაზომილი ძაბვა ერთ რეზისტორზე გაცილებით მცირეა ვიდრე ყველა რეზისტორზე. კომპონენტების შერჩევისას გადავწყვიტე გამოვიყენო ის, რაც მე უკვე მქონდა მოსახერხებელი ან ის, რისი მოპოვებაც ადვილად შემეძლო. ამან გამოიწვია შემდეგი BOM:

  • Arduino Pro Mini 5V! მნიშვნელოვანია! მე გამოვიყენე 5V ვერსია და ყველაფერი მასზეა დაფუძნებული
  • 128x64 I2C OLED ეკრანი
  • 10 x 5W 3.3 Ohm რეზისტორები
  • 3 x 2n7000 mosfets
  • 10 x IRFZ34N mosfets
  • 6 x 10 kOhm რეზისტორები
  • 2 x 5 kOhm რეზისტორები
  • 16V 680uF კონდენსატორი
  • 1 ძველი პროცესორის ფანი

სქემაში მე არ დავამატე შემდეგი

  • გამყვანი რეზისტორები I2C ხაზებზე, რაც შევამჩნიე, ჩვენება უფრო სტაბილური გახდა
  • ელექტრო სადენები
  • კონდენსატორი 5V ხაზში, რომელმაც ასევე სტაბილიზაცია მოახდინა ჩვენებაზე

ტესტირებისას შევამჩნიე, რომ დატვირთვის რეზისტორები საკმაოდ ცხელდებოდა, განსაკუთრებით თუ ისინი ყველა გამოიყენებოდა. ტემპერატურა მოიმატებს 100 გრადუს ცელსიუსზე (რაც 212 გრადუსი ფარენჰეიტზე მეტია) და თუ მთელი სისტემა უნდა დაიხუროს ყუთში, უნდა მოხდეს რაიმე სახის გაგრილება. რეზისტორები, რომლებიც მე გამოვიყენე არის 3.3 ohm / 5W და მაქსიმალური დენი უნდა მოხდეს დაახლოებით 2V თითო რეზისტორზე, რაც იძლევა 2V / 3.3 = 0.61A, რაც იწვევს 1.21W. მე დავამთავრე უბრალო გულშემატკივართა დამატება ყუთში. ძირითადად იმიტომ, რომ მე შემთხვევით მყავდა ძველი პროცესორის გულშემატკივარი.

სქემატური ფუნქციონირება

ეს არის საკმაოდ პირდაპირი და თავისთავად ახსნილი. გამოსაცდელი ბატარეა დაკავშირებულია რეზისტორების სერიასთან და მიწასთან. ძაბვის გაზომვის წერტილებია ბატარეის კავშირი და პირველი რეზისტორი. ძაბვის გამყოფი გამოიყენება შემდეგ ძაბვის დასაწევად იმ დონემდე, რომელიც უკეთესად შეესაბამება Arduino- ს. ერთი ციფრული გამომავალი გამოიყენება გამყოფების 10V ან 20V დიაპაზონის შესარჩევად. დატვირთვის თითოეული რეზისტორი შეიძლება ინდივიდუალურად იყოს დასაბუთებული მოსფეთების გამოყენებით, რომლებსაც უშუალოდ მართავს არდუინო. დაბოლოს, ჩვენება დაკავშირებულია Arduino I2C ქინძისთავებთან. სქემატური ჯ

ნაბიჯი 4: კოდი

Კოდი
Კოდი

ზემოთ ჩანს კოდის უხეში ფუნქციონირება. მოდით უფრო ახლოს განვიხილოთ კოდი (arduino ino ფაილები თან ერთვის). არსებობს მთელი რიგი ფუნქციები და შემდეგ მთავარი მარყუჟი.

მთავარი მარყუჟი

როდესაც გაზომვა მზად არის შედეგები ნაჩვენებია და შესრულება აქ მთავრდება. თუ გაზომვა ჯერ არ დასრულებულა, ჯერ შეამოწმეთ რომელი ბატარეის ტიპია არჩეული და შემდეგ ძაბვა შეყვანისას. თუ ძაბვა აღემატება 0.1 ვ -ს, უნდა იყოს დაკავშირებული რაიმე სახის ბატარეას. ამ შემთხვევაში ქვეპროგრამას ეძახიან იმის გასარკვევად, თუ რამდენი უჯრედია ბატარეაში, რომ გადაწყვიტოს როგორ გამოსცადოს. უჯრედების რაოდენობა მეტ -ნაკლებად არის ინფორმაცია, რომელიც შეიძლება უკეთესად იქნას გამოყენებული, მაგრამ ამ ვერსიაში ის მხოლოდ სერიული ინტერფეისის საშუალებით არის მოხსენებული. თუ ყველაფერი კარგადაა, იწყება ჩაშვების პროცესი და ძირითადი მარყუჟის ყოველ რაუნდზე გამოითვლება ბატარეის სიმძლავრე. მთავარი მარყუჟის ბოლოს ჩვენება დასახლებულია ცნობილი მნიშვნელობებით.

შედეგების ჩვენების პროცედურა

ფუნქცია showResults უბრალოდ ადგენს ეკრანზე გამოსაჩენ ხაზებს და ასევე სერიულ ინტერფეისზე გასაგზავნ სტრიქონს.

ძაბვის გაზომვის პროცედურა

ფუნქციის დასაწყისში იზომება არდუინოს Vcc. ეს აუცილებელია იმისთვის, რომ გამოითვალოს ძაბვები, რომლებიც იზომება ანალოგური შეყვანის გამოყენებით. შემდეგ ბატარეის ძაბვა იზომება 20V დიაპაზონის გამოყენებით, რათა გადაწყვიტოს რომელი დიაპაზონი გამოიყენოს. შემდეგ გამოითვლება ბატარეის ძაბვა და რეზისტორის ძაბვა. ბატარეის ძაბვის გაზომვები უპირატესობას ანიჭებს DividerInput კლასს, რომელსაც აქვს კითხვის მეთოდები და ძაბვა, რათა მივიღოთ ნედლეული კითხვა ან ანალოგური შეყვანის გამოთვლილი ძაბვა.

გამოყენებული ღირებულებების შერჩევის პროცედურა

SelectUsedValues ფუნქციაში უჯრედების რაოდენობა გამოიცნობა და ბატარეის მაღალი და დაბალი ლიმიტები დაყენებულია გამოსაყენებლად. ასევე გაზომვა აღინიშნება დაწყებული, ამ პროცედურის ლიმიტები დადგენილია გლობალური ცვლადების დასაწყისში. მიუხედავად იმისა, რომ ისინი შეიძლება იყოს მუდმივი და ისინი ასევე შეიძლება განისაზღვროს პროცედურის შიგნით, რადგან ისინი გლობალურად არ გამოიყენება. მაგრამ ყოველთვის არის რაღაც გასაუმჯობესებელი:)

ბატარეის სიმძლავრის გამოთვლის პროცედურა

გამონადენის ფუნქცია ზრუნავს ბატარეის სიმძლავრის რეალურად დათვლაზე. იგი იღებს ძაბვის დაბალ და მაღალ ზღვრებს ბატარეისთვის ტესტირების პროცესში, როგორც პარამეტრებს. ამ ვერსიაში მაღალი მნიშვნელობა არ გამოიყენება, მაგრამ დაბალი მნიშვნელობა გამოიყენება იმის დასადგენად, როდის უნდა შეწყდეს ტესტირება. ფუნქციის დასაწყისში რეზისტორების რაოდენობა გამოირჩევა ამ მიზნით შექმნილი ფუნქციის გამოყენებით. ფუნქცია აბრუნებს რეზისტორის რაოდენობას და ამავდროულად იწყებს გამონადენს და აღადგენს მრიცხველს. შემდეგ ძაბვები იზომება და გამოიყენება რეზისტორის ცნობილ მნიშვნელობასთან ერთად დენის გამოსათვლელად. ახლა, როდესაც ჩვენ ვიცით ძაბვა და დენი და დრო, რაც გავიდა ბოლო გაზომვის შემდეგ, ჩვენ შეგვიძლია გამოვთვალოთ სიმძლავრე. დამუხტვის პროცესის დასასრულს ბატარეის ძაბვა შედარებულია დაბალ ლიმიტთან და თუ ის ზღვარს ქვემოთ გადავიდა, გამონადენის ფაზა ჩერდება, მოსფეტი იკეტება და საზომი აღინიშნება როგორც მზა.

პროცედურა გამოვიყენოთ რეზისტორების რაოდენობა გამოსაყენებლად

SelectNumOfResistors ფუნქციაში ხდება ძაბვის უბრალო შედარება წინასწარ განსაზღვრულ მნიშვნელობებთან და შედეგად გადაწყდება გამოყენებული რეზისტორების რაოდენობა. შესაბამისი mosfet იხსნება ზოგიერთი წინააღმდეგობის გამოტოვების მიზნით. ძაბვის სლოტები შეირჩევა ისე, რომ მაქსიმალური დენი ნებისმიერ დროს გამონადენის დროს დარჩება ოდნავ მეტი 600mA (2V/3.3Ohm = 606mA). ფუნქცია აბრუნებს გამოყენებული რეზისტორების რაოდენობას. იმის გამო, რომ ვენტილატორი მოძრაობს იმავე ხაზიდან, როგორც პირველი მოსფეტი, ის ყოველთვის უნდა გაიხსნას, როდესაც გამონადენი მიმდინარეობს.

ნაბიჯი 5: მეტრის დაკალიბრება

მეტრის დაკალიბრება
მეტრის დაკალიბრება

მრიცხველის დაკალიბრების მიზნით მე შევქმენი სხვა აპლიკაცია (მიმაგრებულია). იგი იყენებს იმავე ტექნიკას. დასაწყისში შესწორების გამყოფი მნიშვნელობები დაყენებულია 1000 -მდე.

const int divCorrectB10V = 1000; // გამყოფის შესწორების მულტიპლიკატორი დიაპაზონში 10V const int divCorrectR10V = 1000; // გამყოფის შესწორების მულტიპლიკატორი დიაპაზონში 10V const int divCorrectB20V = 1000; // გამყოფის შესწორების მულტიპლიკატორი დიაპაზონში 20V const int divCorrectR20V = 1000; // გამყოფის შესწორების მულტიპლიკატორი 20V დიაპაზონში

readVcc () ფუნქციაში შედეგად მიღებული Vcc ძაბვა მცირდება ფუნქციის ბოლო ხაზზე მნიშვნელობის დადგენაზე დაბრუნებამდე. ჩვეულებრივ, ინტერნეტში შეგიძლიათ იპოვოთ 1126400L მნიშვნელობა, რომელიც გამოსაყენებლად გამოიყენება. შევამჩნიე, რომ შედეგი არ იყო სწორი.

დაკალიბრების პროცესი:

  1. ჩატვირთეთ გაზომვის აპლიკაცია არდუინოში.
  2. თქვენ შეგიძლიათ ნახოთ არდუინოში (და სერიულ გამომავალში და თუ ვენტილატორი ბრუნავს) თუ დატვირთვა ჩართულია. თუ ეს არის ჩართეთ ბატარეის ტიპის შერჩევის გადამრთველი.
  3. შეცვალეთ მნიშვნელობა readuVCC () - ში, რომ მიიღოთ სწორი შედეგი. მიიღეთ მნიშვნელობა, რომელიც ფუნქცია იძლევა (რომელიც არის მილივოლტებში) და გაყავით გრძელი მნიშვნელობა მასთან. თქვენ მიიღებთ შიდა მითითების ნედლ მნიშვნელობას. ახლა გაზომეთ მიწოდების ფაქტობრივი ძაბვა მილივოლტებში მულტიმეტრით და გაამრავლეთ იგი ადრე გამოთვლილი მნიშვნელობით და მიიღებთ ახალ შესწორებულ ხანგრძლივ მნიშვნელობას. ჩემს შემთხვევაში, ფუნქცია დაბრუნდა 5288mV, როდესაც რეალური Vcc იყო 5.14V. გამოთვლა 1126400/5288*5140 = 1094874 რომელიც მე დავამთავრე ცდით. ჩადეთ ახალი მნიშვნელობა კოდში და კვლავ ატვირთეთ არდუინოში.
  4. ანალოგური შეყვანის რეზისტორის გამყოფის კორექტირების მნიშვნელობების რეგულირება ხდება რეგულირებადი ენერგიის წყაროს გამოყენებით, რომელიც გამოიყენება მრიცხველის შეყვანის შესანახი. უმარტივესია გამოიყენოთ ძაბვები 1V– დან 20V– მდე 1V ნაბიჯებით და შედეგების ჩაწერა ცხრილში. ცხრილში მიიღება საშუალო. შესწორებული მნიშვნელობები გამოითვლება შემდეგი ფორმულით: „ნედლეულის_ ღირებულება*დიაპაზონი*Vcc/Vin“, სადაც ნედლი_შეფასება არის მნიშვნელობა 10VdivB, 10VdivR, 20VdivB ან 20VdivR იმის მიხედვით, თუ რომელი კორექტირება უნდა გამოითვალოს.

ნახე ცხრილი როგორ მომეჩვენა. საშუალო გამოითვლება მხოლოდ იმ მნიშვნელობებიდან, რომლებიც უნდა იყოს დიაპაზონში და ეს მნიშვნელობები დადგენილია ფაქტობრივი მრიცხველის აპლიკაციაში.

Ამგვარად

const int divCorrectB10V = 998; // გამყოფი გამასწორებელი გამყოფი დიაპაზონში 10V const int divCorrectR10V = 1022; // გამყოფი შესწორების გამყოფი დიაპაზონში 10V const int divCorrectB20V = 1044; // გამყოფი გამასწორებელი გამყოფი დიაპაზონში 20V const int divCorrectR20V = 1045; // გამყოფის შესწორების გამყოფი დიაპაზონში 20V

რეზისტორის მნიშვნელობის რეგულირება შესაძლებელია შეყვანისას გარკვეული ძაბვის მიწოდებით (ანუ 2V), ღამურის ტიპის გადამრთველით (დატვირთვის მისაღებად) და პირველი რეზისტორის გასწვრივ მიმდინარე და ძაბვის გაზომვით და ძაბვის დენით გაყოფით რა ჩემთვის 2V მისცა 607mA რაც იძლევა 2/0.607 = 3.2948 ohms რომელიც მე დამრგვალებული 3.295 ohms. ახლა კალიბრაცია დასრულებულია.

ნაბიჯი 6: ბოლო შენიშვნა

აქ ერთი მნიშვნელოვანი შენიშვნა. აუცილებელია ყველა კავშირი იყოს კარგ მდგომარეობაში ბატარეიდან რეზისტორებამდე. მე მქონდა ერთი ცუდი კავშირი და მაინტერესებდა რატომ მივიღე 0.3V ნაკლები ვოლტი რეზისტორის ქსელში ვიდრე ბატარეაზე. ეს ნიშნავს, რომ გაზომვის პროცესი თითქმის მაშინვე დასრულდა 1.2V NiCd უჯრედებით, რადგან ქვედა ზღვარი 0.95V სწრაფად იქნა მიღწეული.

გირჩევთ: