Სარჩევი:

LED სიკაშკაშის დაკალიბრება: 5 ნაბიჯი
LED სიკაშკაშის დაკალიბრება: 5 ნაბიჯი

ვიდეო: LED სიკაშკაშის დაკალიბრება: 5 ნაბიჯი

ვიდეო: LED სიკაშკაშის დაკალიბრება: 5 ნაბიჯი
ვიდეო: ორთვალიანი კამერა გაკვირვებული განახლების შემდეგ!!! 2024, ნოემბერი
Anonim
LED სიკაშკაშის დაკალიბრება
LED სიკაშკაშის დაკალიბრება

სანამ ზღაპრულ შუქს ვაკეთებდი, მივხვდი, რომ PWM მნიშვნელობა არაწრფივი პროპორციულია LED- ის სიკაშკაშესთან. მარტივად რომ ვთქვათ, თუ PWM მნიშვნელობა ორმაგია, სიკაშკაშე არ არის ორმაგი; განსაკუთრებით მაშინ, როდესაც PWM მაქსიმუმთან ახლოს არის, ნებისმიერი ცვლილება არ არის ცნობადი ჩემი თვალით. ვფიქრობდი, რომ ეს უნდა იყოს მარტივი დაკალიბრების საკითხი! და ეს როგორ გავაკეთე ეს პროექტი! იდეა არის გავზომოთ LED სიკაშკაშე ზოგიერთი მოწყობილობით (სიკაშკაშის სენსორი ან ფოტორეზისტორი) და ვიპოვოთ კორელაცია PWM მნიშვნელობასა და სიკაშკაშეს შორის. შემდეგ მოგვიანებით, თუ სიკაშკაშე 50%-ზე დავაყენე, არდუინო გამოთვლის შესაბამის PWM- ს და შესაბამისად დაბნელდება LED.

ამიტომ, მე მჭირდება სიკაშკაშის სენსორი და LED სიკაშკაშის გასაზომად. SD ბარათის გამოყენებით, მე შევინახავ მონაცემებს მოგვიანებით დამონტაჟების პროცედურისთვის. მორგება მოხდება Excel- ში (ან ნებისმიერ სხვა პროგრამაში). Out out გამოყენებული იქნება Arduino კოდში და ეს არის ის! ეს ერთხელ უნდა გაკეთდეს. მაშინ სამუდამოდ შეგიძლიათ გამოიყენოთ კალიბრაციის პარამეტრი!

ნაბიჯი 1: ნაწილები

1- WEMOS mini D1: Aliexpress 3 €

2- TSL 2561 (სიკაშკაშის სენსორი): Aliexpress 3 €

3- SD ბარათის მოდული: Aliexpress 1 €

4- LED

5- რეზისტორი 220 ომი

6- მავთულები

საერთო ღირებულება: 8 -10 €

ნაბიჯი 2: გაყვანილობა

გაყვანილობა
გაყვანილობა
გაყვანილობა
გაყვანილობა
გაყვანილობა
გაყვანილობა

SD ბარათის მოდული და სიკაშკაშის სენსორის მავთულები არ უნდა შეიცვალოს (მათი უმეტესობა). Led უნდა იყოს დაკავშირებული PWM პინთან.

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

კოდი
კოდი

მე გავაერთიანე სამი ცალი კოდი:

SD ბარათი: გამოყენებული მაგალითი> SD> ReadWrite Arduino IDE- ში

TSL 2561: გამოყენებული Adafruit TSL2561 ბიბლიოთეკის მაგალითი (სენსორაპი); თქვენ ნახავთ მას მაგალითებში, თუ დააინსტალირებთ ბიბლიოთეკას (მე ვთვლი რომ თქვენ იცით როგორ დააინსტალიროთ ბიბლიოთეკა Arduino IDE– ში).

LED ქრებოდა: გამოყენებული მაგალითები> ანალოგი> ქრებოდა

კოდი, მოდულების ინიციალიზაციის შემდეგ, დაბნელებს led- ს და წაიკითხავს სიკაშკაშეს და შეინახავს SD ბარათში. ამ გზით მე ვაგროვებ მონაცემებს კალიბრაციისთვის.

მე შევცვალე თითოეული კოდი ჩემი საჭიროებების შესაბამისად. საბოლოო კოდი ერთვის.

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

შენიშვნა: მე ვიყენებ wemo mini D1- ს არდუინოს ნაცვლად. რატომღაც, რაც მე არ ვიცი, PWM არის 0-დან 1023-მდე. არდუინოში ის უნდა იყოს 0-255-ს შორის. თუ გსურთ გამოიყენოთ arduino– ს კოდი, თქვენ უნდა იზრუნოთ მასზე (სტრიქონი 90).

ნაბიჯი 4: მორგება და გამოყენება

მორგება და გამოყენება
მორგება და გამოყენება
მორგება და გამოყენება
მორგება და გამოყენება

მონაცემების შეგროვების შემდეგ, გავხსენი ფაილი Excel- ში და დავდე მონაცემები (შეხედეთ სურათს). პირველი სვეტი არის PWM მნიშვნელობა და მეორე არის ლუქსი (სენსორის კითხვა, ერთეულს დიდი მნიშვნელობა არ აქვს). აქედან გამომდინარე, ნაკვეთი ლუქსი (y ღერძი) და PWM (x ღერძი). როგორც ხედავთ, სიკაშკაშე ხაზოვანი პროპორციულია PWM მნიშვნელობასთან. მე მივამაგრე ხაზი.

ხაზის დასაყენებლად მიჰყევით შემდეგს:

1- ჩაწერეთ მონაცემები (ჩასვით> გაფანტეთ ნაკვეთი) მე ვთვლი რომ თქვენ იცით როგორ.

2- დააწკაპუნეთ მარჯვენა სურათზე მოცემულ მონაცემებზე

3- დააწკაპუნეთ ტრენდლაინზე.

4- (Excel 2013-ში) მარჯვენა მხარეს გამოჩნდება პანელი. აირჩიეთ ხაზოვანი. ბოლოში აირჩიეთ "ეკრანზე განტოლება დიაგრამაზე".

ხაზოვანი ურთიერთობა განსხვავდება ჩემი აღქმისგან. ამიტომ, მე ვფიქრობ, რომ უნდა არსებობდეს ლოგარითმული კავშირი ჩემს აღქმასა და სიკაშკაშეს შორის (ეს არის უმარტივესი გზა, რაც მომივიდა აზრად!). ამიტომ ავიღე მორთვის ფერდობი. ჩარევა არ არის მნიშვნელოვანი, რადგან ეს დამოკიდებულია მიმდებარე სინათლის დაბინძურებაზე! სამაგიეროდ, მე დავამატე 1. რადგან Log10 (0) უსასრულოა. ასე რომ, მე მჭირდება ჩარევა პრობლემის გადასაჭრელად. ჩემს შემთხვევაში განტოლება ასე გამოიყურება:

y = Log10 (0.08 x +1), y არის სიკაშკაშე და x არის PWM მნიშვნელობა (0-1023)

მე ნორმალიზება განტოლება მაქსიმალური მნიშვნელობა. მაშინ გამომავალი ზარი ყოველთვის 0-100-ს შორისაა. ამ გზით შემიძლია არდუინოს ვთხოვო გარკვეული ნათესავი სიკაშკაშე, მაქსიმალური აბსოლუტური სიკაშკაშის გარეშე.

y = Log10 (0.08 x +1)*100/1.914

იმის გამო, რომ არდუინოში ჩემი შეყვანა არის ფარდობითი სიკაშკაშე, მე უნდა განვაახლო განტოლება x- ისთვის (PWM):

x = (10^(y*1.914 / 100) - 1) / 0.08

კოდში ამ განტოლების გამოყენებით ჩვენ შეგვიძლია მივიღოთ წრფივი სიკაშკაშის ცვლილება. თქვენ ითხოვთ arduino– ს სიკაშკაშეს (y) 0-100 – ს შორის, და arduino ითვლის შესაბამის PWM მნიშვნელობას. ამ გზით, თუ გაორმაგდება სიკაშკაშე, თქვენი აღქმაც იგივეა.

თუ გსურთ გამოიყენოთ იგი თქვენს კოდში, უმჯობესია დაამატოთ ეს ხაზები:

სიკაშკაშე = 50; // პროცენტულად

PWM = ძალა (10, სიკაშკაშე*1.914/100) -1) /0.0793;

analogWrite (ledpin, PWM);

შენიშვნა: ნორმალიზება ხდება მაქსიმალური PWM 1023 (Wemos mini D1– ისთვის). Arduino– სთვის PWM არის 0-255 – ს შორის. თქვენ უნდა გამოთვალოთ იგი შესაბამისად.

შენიშვნა 2: მე დავამატე ჟურნალი-წრფივი ნაკვეთი იმის საჩვენებლად, თუ როგორ არის დაკავშირებული ჩვენი აღქმა და PWM მნიშვნელობა. არ უნდა გამოიყენოთ იგი შესაკრავად!

ნაბიჯი 5: დასკვნა

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

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

გირჩევთ: