Სარჩევი:

Arduino Volt Meter (0-100V DC) - ვერსია 2 (უკეთესი): 3 ნაბიჯი
Arduino Volt Meter (0-100V DC) - ვერსია 2 (უკეთესი): 3 ნაბიჯი

ვიდეო: Arduino Volt Meter (0-100V DC) - ვერსია 2 (უკეთესი): 3 ნაბიჯი

ვიდეო: Arduino Volt Meter (0-100V DC) - ვერსია 2 (უკეთესი): 3 ნაბიჯი
ვიდეო: IGBT რეგულირებადი კვების წყარო 0-60V 30A | DC ძაბვის რეგულატორი 2024, ნოემბერი
Anonim
Image
Image
ნაბიჯი 1: სქემა
ნაბიჯი 1: სქემა

ამ ინსტრუქციულად, მე ავაშენე ვოლტმეტრი, რომ გავზომოთ მაღალი ძაბვები DC (0-100v) შედარებით სიზუსტით და სიზუსტით Arduino Nano- ს და ADS 1115 ADC გამოყენებით.

ეს არის ვოლტმეტრის მეორე ვერსია, რომელიც გამოყენებულია ჩემი წინა ინსტრუქციით აქ:

ტესტის გაზომვები იყო ზუსტი, ძირითადად სტანდარტული ვოლტმეტრით გაზომილი ფაქტობრივი ძაბვის 0.1 ვ ფარგლებში (მე გამოვიყენე Astro AI DM6000AR).

ეს ბევრად უკეთესი და ადვილია ჩემი აზრით, ვიდრე არდუინოს გარე ძაბვის მითითების გამოყენება.

მარაგები

1 x Arduino Nano - ბმული

1 x Oled ეკრანი (SSD 1306) - ბმული

1 x ADS 1115 - 16 ბიტიანი ADC - ბმული

1 x 1/4W (მე ვთავაზობ 1W რეზისტორების გამოყენებას) 1% რეზისტორები - 220k ohm - ბმული

1 x 1/4W (მე ვთავაზობ 1W რეზისტორების გამოყენებას) 1% რეზისტორები - 10k ohm - ბმული

პურის დაფა და მავთულები - ბმული

Astro AI DM6000AR - ბმული

USB დენის ბანკი - ბმული

9V ბატარეები - ბმული

CanadianWinters არის Amazon Services LLC Associates პროგრამის მონაწილე, შვილობილი სარეკლამო პროგრამა, რომელიც შექმნილია იმისთვის, რომ უზრუნველყოს საიტებზე საფასურის გამომუშავება Amazon.com– თან და მასთან დაკავშირებულ საიტებთან დაკავშირებით. ამ ბმულების გამოყენებით, როგორც ამაზონის ასოცირებული, მე ვიღებ შემოსავალს შესარჩევი შესყიდვებიდან, თუნდაც სხვა რამის ყიდვა-და ეს არაფერს დაგიჯდებათ.

ნაბიჯი 1: ნაბიჯი 1: სქემა

ნაბიჯი 1: სქემა
ნაბიჯი 1: სქემა

მე დავაკავშირე ყველა ნაწილი ზემოთ მოცემული სქემის მიხედვით.

მე მიბმული მაქვს ADC1115– ის ADDR პინი მიწასთან. ეს ადგენს ADC მისამართს 0x48.

ნაბიჯი 2: ნაბიჯი 2: კოდი და რეზისტორული გამოთვლები

ნაბიჯი 2: კოდი და რეზისტორის გამოთვლები
ნაბიჯი 2: კოდი და რეზისტორის გამოთვლები

როგორც წინა ინსტრუქციებში, სქემის იდეა იმაში მდგომარეობს, რომ DC ძაბვა გასაზომად გადის ძაბვის რეზისტორზე. გაფართოებული ძაბვა და შემდეგ შედის ADC კონვერტორის ანალოგიურ პინში წასაკითხად, შემდეგ გადადის Arduino– ზე I2C– ით და შემდეგ ხელახლა მასშტაბირდება და ნაჩვენებია OLed ეკრანზე.

ამ შემთხვევაში მე არ გამოვიყენე კოდის საშუალო გადიდება ან დამარბილება, რადგან კითხვები საკმაოდ ზუსტი და ზუსტი ჩანს. ხმაურის შესამცირებლად, შეიძლება დაგჭირდეთ მცირე კონდენსატორის დამატება A0 (ADC) - სა და მიწას შორის. ეს არ იყო საჭირო ჩემი გამოცდისთვის.

ერთი რამ შევნიშნე, იყო ცოტა ხმაური, როდესაც ბატარეა არ იყო ჩართული (0 ვოლტი). მე გამოვიყენე Arduino– ს სერიული მონიტორი ADC მნიშვნელობის საჩვენებლად და კოდის საშუალებით შესწორება/კორექტირება.

როგორც წინა ინსტრუქციებში, მე შევქმენი ცხრილი, რომელიც ავტომატიზირებს გამოთვლებს იმ შემთხვევაში, თუ გსურთ ძაბვის გამყოფში გამოიყენოთ სხვადასხვა რეზისტორული მნიშვნელობები: ბმული Google Sheet– ზე

აქ არის კოდი, რომელიც გამოვიყენე ამ პროექტისთვის:

#ჩართეთ

#მოიცავს #მოიცავს #მოიცავს Adafruit_ADS1115 რეკლამას (0x48); // ADC U8G2_SSD1306_128X64_NONAME_F_HW_I2C u8g2 (U8G2_R0); // (როტაცია, [გადატვირთვა]) int calib = 7; // ADS1115- ის დაკალიბრების მნიშვნელობა შეცდომის მცურავი ძაბვის შესამცირებლად = 0; // გამოიყენება ძაბვის მნიშვნელობის float Radjust = 0.043421905 შესანახად; // ძაბვის გამყოფი ფაქტორი (R2 / R1+R2) float vbat = 0; // საბოლოო ძაბვა გამოთვლის შემდეგ- ბატარეის ძაბვა // ცვლადი ეკრანის განახლებისთვის ხელმოუწერელი გრძელი წინა გამოყენების გარეშე მილიისი = 0; // შეინახავს ბოლო დროს როდესაც ეკრანი განახლდა // მუდმივები არ შეიცვლება: const ხანგრძლივი ინტერვალი = 250; // ინტერვალი, რომლის დროსაც ხდება ეკრანის განახლება (მილიწამი) void setup (void) {Serial.begin (9600); u8g2. დაიწყოს (); ads.begin (); } void loop (void) {int16_t adc0; // 16 ბიტიანი ADC წაკითხვის შესასვლელი A0 adc0 = ads.readADC_SingleEnded (0); ძაბვა = ((adc0 + calib) * 0.1875)/1000; ხელმოუწერელი გრძელი მიმდინარემილის = მილილი (); vbat = ძაბვა/გასწორება; // თავიდან აიცილოთ უარყოფითი ძაბვის ჩვენება, როდესაც ბატარეა გათიშულია, თუ (vbat = ინტერვალი) {previousMillis = currentMillis; u8g2.clearBuffer (); // გაასუფთავეთ შიდა მეხსიერება // პაკეტის ძაბვის ჩვენება - შრიფტები ამ გვერდზე: https://github.com/olikraus/u8g2/wiki/fntlistall //u8g2.setFont(u8g2_font_fub20_tr); // 20px შრიფტი u8g2.setFont (u8g2_font_fub35_tr); // 35px შრიფტი u8g2.setCursor (1, 42); u8g2.print (vbat, 2); u8g2.setFont (u8g2_font_8x13B_mr); // 10 px შრიფტი u8g2.setCursor (1, 60); u8g2.print ("ვოლტი"); } u8g2.sendBuffer (); // შიდა მეხსიერების გადატანა ჩვენების დაყოვნებაზე (1); }

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

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

ამ ვოლტმეტრის შესამოწმებლად გამოვიყენე 10x 9v ბატარეები, რომლებიც მივიღე ადგილობრივ მაღაზიაში. ამჯერად 97 ვოლტამდე გავზომე! მე ვგეგმავ გამოვიყენო ეს ვოლტმეტრი, რომ გავზომო ძაბვა ჩემს ელექტრო ველოსიპედის ბატარეებზე (მათ აქვთ ძაბვა 24-60 ვ-დან, ზოგჯერ 72 ვ).

მას შემდეგ, რაც ელექტრონიკა შეფუთულია კომპიუტერში და პატარა ყუთში, ეს გახდება ლამაზი და პორტატული ბატარეის მრიცხველი. OLED გრაფიკა და შრიფტები შეიძლება მორგებული იყოს თქვენს საჭიროებებზე (მაგ. უფრო დიდი შრიფტი ადვილი წასაკითხად). ჩემი მიზანი იყო ძაბვის კითხვა Oled/Arduino მეტრზე არც ისე შორს ჩემი ციფრული მულტიმეტრისგან. მე ვცდილობდი +/- 0, 3v max დელტაზე.

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

ვიმედოვნებ, რომ მოგეწონათ ეს ინსტრუქცია და გამაგებინეთ თქვენი აზრი!

გირჩევთ: