Სარჩევი:
- ნაბიჯი 1: საჭირო კომპონენტები
- ნაბიჯი 2: სქემატური დიაგრამა
- ნაბიჯი 3: სქემის გაგება
- ნაბიჯი 4: სიხშირისა და ძაბვის გამოთვლა
- ნაბიჯი 5: Arduino კოდი
- ნაბიჯი 6: დასკვნა
ვიდეო: დენის წყაროს სიხშირე და ძაბვის გაზომვა არდუინოს გამოყენებით: 6 ნაბიჯი
2024 ავტორი: John Day | [email protected]. ბოლოს შეცვლილი: 2024-01-30 10:16
შესავალი:
ამ პროექტის მიზანია გაზომოს მიწოდების სიხშირე და ძაბვა, რომელიც ინდოეთში 220 -დან 240 ვოლტამდე და 50 ჰც -მდეა. მე გამოვიყენე Arduino სიგნალის გადასაღებად და გამოვთვალოთ სიხშირე და ძაბვა, თქვენ შეგიძლიათ გამოიყენოთ ნებისმიერი სხვა მიკროკონტროლერი ან დაფა. წრე მოითხოვს რამდენიმე კომპონენტს და საკმაოდ ზუსტია ყველა პრაქტიკული მიზნისთვის.
ნაბიჯი 1: საჭირო კომპონენტები
- არდუინო უნო
- IC LM358
- ქვევით ტრანსფორმატორი (220V დან 12V)
-
კონდენსატორები:
- 0.1uF
- 2 x 1uF
-
რეზისტორები:
- 3 x 1 kOhm
- 2 x 100kOhm
- 1.5 კმ
- 3.3 კმ
- 6.8 კმ
- 3 x 1N4148 დიოდი
- პურის დაფა და ჯუმბერის მავთული (სურვილისამებრ)
ნაბიჯი 2: სქემატური დიაგრამა
ზემოაღნიშნულ წრეში, ტრანსფორმატორის პირველადი დაკავშირებულია მიწოდების ქსელთან და პირველადი დაკავშირებულია ჩვენს საზომ წრედთან
ნაბიჯი 3: სქემის გაგება
ფუნქციონალურობის მიხედვით, ეს წრე შეიძლება დაიყოს ოთხ ნაწილად:
პასუხი: ნულოვანი გადაკვეთის დეტექტორის წრე
ეს სქემა წარმოქმნის 5 ვ კვადრატულ პულსს, როდესაც სინუსის ტალღა პოზიტიურიდან უარყოფითზე გადადის. რეზისტორი R1 D1 და D2– თან ერთად ზღუდავს შეყვანის ძაბვის ცვალებადობას დიოდურ კვანძზე –0,6V– დან +5,6V– მდე (ვივარაუდოთ, რომ დიოდური ძაბვა იქნება 0,6 ვ). გარდა ამისა, თქვენ შეგიძლიათ გაზარდოთ ჩართვის ძაბვის დიაპაზონი R1 მნიშვნელობის გაზრდით.
რეზისტორი R2 და R3 ქმნიან ძაბვის გამყოფს, რათა შეზღუდოს უარყოფითი ძაბვის ცვლა -0.24 ვოლტამდე, რადგან LM358- ის საერთო რეჟიმის ძაბვა შემოიფარგლება -0.3 ვოლტამდე.
რეზისტორი R4, R5, კონდენსატორი C1 და op-amp (აქ გამოიყენება როგორც შედარება) ქმნის Schmitt Trigger სქემას, სადაც რეზისტორი R4 და R5 ადგენენ ჰისტერეზს შეყვანისას +49.5mV მიწის ზემოთ. Schmitt Trigger– ის გამომუშავება მიეწოდება Arduino PIN2– ს შემდგომი დამუშავებისთვის.
B: იზოლაცია და ძაბვა შემცირდება
როგორც სახელი გვთავაზობს, ეს ნაწილი იზოლირებს და ამცირებს ძაბვას დაახლოებით 12Vrms– მდე. შემცირებული ძაბვა შემდგომში იკვებება ინსტრუმენტული წრედით.
C: პიკის დეტექტორის წრე
ეს წრე განსაზღვრავს შეყვანის სიგნალის მაქსიმალურ პიკურ ძაბვას. რეზისტორის გამყოფი R6 და R7 ამცირებენ შეყვანის ძაბვას 0.23 ფაქტორით (12Vrms მცირდება 2.76Vrms– მდე). დიოდი D3 ატარებს სიგნალის მხოლოდ დადებით ნახევარ ციკლს. ძაბვა C2- ზე იზრდება გასწორებული სიგნალის პიკის მნიშვნელობამდე, რომელიც მიეწოდება არდუინოს ანალოგურ პინ A0- ს ძაბვის შემდგომი გამოსათვლელად.
გარდა ამისა, თქვენ შეგიძლიათ შეცვალოთ ეს წრე ზუსტი პიკის დეტექტორის სქემით, როგორც ეს აქ არის ნახსენები. მაგრამ ჩემი სადემონსტრაციო მიზნებისთვის, ზემოხსენებული წრე საკმარისი იქნება.
დ: არდუინო
ამ ნაწილში Arduino იჭერს Schmitt Trigger– ის მიერ წარმოქმნილ კვადრატულ იმპულსებს და კითხულობს ანალოგიურ ძაბვას პიკის დეტექტორის წრიდან. მონაცემები შემდგომში მუშავდება კვადრატული პულსის დროის პერიოდის (შესაბამისად სიხშირის) (რომელიც უდრის ac მიწოდების დრო პირს) და მიწოდების ძაბვის დასადგენად.
ნაბიჯი 4: სიხშირისა და ძაბვის გამოთვლა
სიხშირის გაანგარიშება:
არდუინოს დახმარებით შეგვიძლია გავზომოთ სიგნალის დროის პერიოდი T. კვადრატული ტალღის იმპულსები ნულოვანი გადაკვეთის დეტექტორიდან იკვებება პინ 2-ით, აქედან შეგვიძლია გავზომოთ თითოეული პულსის დროის პერიოდი. ჩვენ შეგვიძლია გამოვიყენოთ არდუინოს შიდა ქრონომეტრი (კონკრეტულად ტაიმერი 1), რათა გამოვთვალოთ დროის შუალედი კვადრატული პულსის ორ ამომავალ კიდეებს შორის შეფერხებების დახმარებით. ტაიმერი იზრდება 1 -ით საათის ციკლზე (წინასწარგამრიცხველი = 1) და მნიშვნელობა ინახება რეესტრში TCNT1. აქედან გამომდინარე, 16 მეგაჰერციანი საათი მრიცხველს ზრდის ყოველ მიკროწამში 16 -ით. ანალოგიურად prescaler = 8 ტაიმერი იზრდება 2 -ით ყოველ მიკროწამში. აქედან გამომდინარეობს პერიოდი ორ ამოსავალ ზღვარს შორის
T = (TCNT1 მნიშვნელობა) / დრო თითოეული დათვლისთვის
სად, თითოეული დათვლისთვის საჭირო დრო = წინასწარგამრიცხველი / (Arduino საათის სიჩქარე (16MHz)
აქედან გამომდინარე, სიხშირე f = 1 / T = (Arduino საათის სიჩქარე (16MHz) / (Prescaler * TCNT! მნიშვნელობა)
მაშასადამე, ტაიმერის სიჩქარე (Hz) არის მითითებული = (Arduino საათის სიჩქარე (16MHz)) / წინასწარგამრიცხველი
და სიგნალის სიხშირე მოცემულია = (Arduino საათის სიჩქარე
შესაბამისად, ჩვენ შეგვიძლია გამოვთვალოთ სიხშირე f მიმართებიდან f = 1/T.
ძაბვის გაანგარიშება:
Arduino– ს საბორტო ADC– ს აქვს 10 ბიტიანი რეზოლუცია (შესაძლო მნიშვნელობები = 2^10 = 1024), დააბრუნებს მნიშვნელობებს 0-1023 დიაპაზონში. შესაბამისი ანალოგური ძაბვის V გამოსათვლელად ჩვენ უნდა გამოვიყენოთ შემდეგი მიმართება
V = (ADC კითხვა) * 5/1023
მიწოდების ძაბვის Vs (rms) გამოსათვლელად უნდა გავითვალისწინოთ ტრანსფორმატორის კოეფიციენტი, რეზისტორის გამყოფი R6R7 და პიკის დეტექტორის წრე. ჩვენ შეგვიძლია უბრალოდ შევაჯამოთ სხვადასხვა ფაქტორი/თანაფარდობა, როგორც:
ტრანსფორმატორის თანაფარდობა = 12/230 = 0.052
რეზისტორის გამყოფი = R7/(R6 + R7) = 0.23
პიკის დეტექტორის წრე = 1.414
Vs (rms) = V/(1.414*0.052*0.23) = (ADC კითხვა)*0.289
უნდა აღინიშნოს, რომ ეს მნიშვნელობა შორს არის ფაქტობრივი მნიშვნელობისაგან, ძირითადად ტრანსფორმატორის თანაფარდობის შეცდომისა და დიოდური ძაბვის ვარდნის გამო. ამის თავიდან აცილების ერთ -ერთი გზაა ფაქტორის განსაზღვრა სქემის შეკრების შემდეგ. ეს არის მიწოდების ძაბვისა და კონდენსატორ C2- ზე ძაბვის გაზომვა ცალკე მულტიმეტრით, შემდეგ გამოითვლება Vs (rms) შემდეგნაირად:
Vs (rms) = ((მიწოდების ძაბვა *5)/(ძაბვა C2 *1023)) *(ADC კითხვა)
ჩემს შემთხვევაში, Vs (rms) = 0.33*(ADC კითხვა)
ნაბიჯი 5: Arduino კოდი
#განსაზღვრეთ ვოლტი_ A0- ში // ანალოგური ძაბვის წაკითხვის პინი
არასტაბილური uint16_t t_ პერიოდი; uint16_t ADC_value = 0; float volt, freq; void isr () {t_period = TCNT1; // შეინახეთ TCNT1 მნიშვნელობა t_period– ში TCNT1 = 0; // გადატვირთეთ ტაიმერი 1 ADC_value = analogRead (volt_in); // წაკითხვის ანალოგური ძაბვა} float get_freq () {uint16_t ქრონომეტრი = t_ პერიოდი; თუ (ტაიმერი == 0) დააბრუნე 0; // ნულის გაყოფის თავიდან აცილების მიზნით სხვაგან დაბრუნება 16000000.0/(8UL*ტაიმერი); // სიხშირე მოცემულია f = clk_freq/(prescaler*timeperiod)} void setup () {TCCR1A = 0; TCCR1B = ბიტი (CS11); // დააყენეთ prescaler 8 TCNT1 = 0; // გადატვირთეთ ტაიმერი 1 მნიშვნელობა TIMSK1 = ბიტი (TOIE1); // Timer1 overflow interrupt EIFR | = bit (INTF0); // გასუფთავება INT0 შეწყვეტის დროშა Serial.begin (9600); } void loop () {attachInterrupt (0, isr, RISING); // გარე შეფერხების (INT0) დაყოვნების (1000) ჩართვა; detachIntruptrupt (0); freq = get_freq (); ვოლტი = ADC_ ღირებულება*0.33; სიმებიანი ბუფ; buf += სიმებიანი (სიხშირე, 3); buf += F ("Hz / t"); buf += სიმებიანი (ვოლტი); buf += F ("ვოლტი"); Serial.println (buf); }
ნაბიჯი 6: დასკვნა
თქვენ შეგიძლიათ შეიკრიბოთ წრე პურის დაფაზე და შეცვალოთ კოდი და დაამატოთ SD ბარათი მონაცემების შესანახად, რომელიც მოგვიანებით შეიძლება გაანალიზდეს. ერთი ასეთი მაგალითია, თქვენ შეგიძლიათ გაანალიზოთ ძაბვა და სიხშირე პიკის საათებში.
მიკროსქემმა, რომელიც მე შევკრიბე პურის დაფაზე, გამოიყენა LM324 (quad opamp) LM358 (ორმაგი opamp) ნაცვლად, რადგან იმ მომენტში მე არ მქონდა ეს IC და COVID-19 პანდემიის გამო ქვეყნის მასშტაბით ჩაკეტვამ გამიჭირდა ახალი IC– ის მიღება რა მიუხედავად ამისა, ეს არ იმოქმედებს მიკროსქემის მუშაობაზე.
მოგერიდებათ კომენტარის გაკეთება ქვემოთ ნებისმიერი შემოთავაზებისა და შეკითხვისთვის.
გირჩევთ:
გაზომეთ ქსელის სიხშირე არდუინოს გამოყენებით: 7 ნაბიჯი (სურათებით)
არდუინოს გამოყენებით გაზომეთ ძირითადი სიხშირე: 3 აპრილს ინდოეთის პრემიერ მინისტრმა შრიმ. ნარენდრა მოდიმ მიმართა ინდიელებს, რომ გამორთონ შუქი და აანთონ ნათურა (დია) 5 აპრილს საღამოს 9:00 საათზე, რათა აღნიშნონ ინდოეთის ბრძოლა კორონა ვირუსთან. გამოცხადების შემდეგ, დიდი ქაოსი იყო
DC ძაბვის გაზომვა Arduino– ს გამოყენებით: 5 ნაბიჯი
DC ძაბვის გაზომვა Arduino– ს გამოყენებით: ამ პროექტში მე გაჩვენებთ თუ როგორ გავზომოთ DC ძაბვა 50 ვ -მდე არდუინოს გამოყენებით და და OLED დისპლეის მოდულის ნაწილზე ჩვენება გვჭირდება arduino გაუმართავი ჩვენება 10k ohm resistor 1k ohm resistor ჯუმბერის კაბელი
2S LiPo/Lion ბატარეის დამტენი მიკრო USB 5V/2A დენის წყაროს გამოყენებით: 3 ნაბიჯი
2S LiPo/Lion ბატარეის დამტენი მიკრო USB 5V/2A დენის წყაროს გამოყენებით: შესავალი: ეს პროექტი აჩვენებს ალტერნატიულ პროცესს 2 ლომის უჯრედის ერთდროულად დატენვის ორი TP4056 1S ბატარეის დამტენის გამოყენებით, ხოლო გამომავალი ძაბვა (7.4 V) საჭიროებისამებრ. ჩვეულებრივ, ლომის უჯრედების დატენვა, როგორიცაა 18650 c
რეგულირებადი ძაბვის DC კვების ბლოკი LM317 ძაბვის რეგულატორის გამოყენებით: 10 ნაბიჯი
რეგულირებადი ძაბვის DC დენის წყარო LM317 ძაბვის მარეგულირებლის გამოყენებით: ამ პროექტში მე შევიმუშავე მარტივი რეგულირებადი ძაბვის დენის წყარო LM317 IC გამოყენებით LM317 კვების ბლოკის სქემით. ვინაიდან ამ წრეს აქვს ჩამონტაჟებული ხიდის მაკორექტირებელი, ასე რომ ჩვენ შეგვიძლია პირდაპირ შევაერთოთ 220V/110V AC მიწოდება შესასვლელში
ძაბვის გაზომვა არდუინოს გამოყენებით: 5 ნაბიჯი
ძაბვის გაზომვა არდუინოს გამოყენებით: ძაბვის გაზომვა საკმაოდ ადვილია ნებისმიერი მიკროკონტროლის გამოყენებით დენის გაზომვასთან შედარებით. ძაბვის გაზომვა აუცილებელი ხდება, თუ თქვენ მუშაობთ ბატარეებთან ან გსურთ შექმნათ თქვენი საკუთარი რეგულირებადი კვების წყარო. მიუხედავად იმისა, რომ ეს მეთოდი გამოიყენება