Სარჩევი:

Arduino ქრონომეტრები: 8 პროექტი: 10 ნაბიჯი (სურათებით)
Arduino ქრონომეტრები: 8 პროექტი: 10 ნაბიჯი (სურათებით)

ვიდეო: Arduino ქრონომეტრები: 8 პროექტი: 10 ნაბიჯი (სურათებით)

ვიდეო: Arduino ქრონომეტრები: 8 პროექტი: 10 ნაბიჯი (სურათებით)
ვიდეო: Cara Membuat Timer IC555 1-11 000 second Ide Kreatif DIY Project IC555 2024, ნოემბერი
Anonim
არდუინოს ქრონომეტრები: 8 პროექტი
არდუინოს ქრონომეტრები: 8 პროექტი

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

ქრონომეტრების გამოყენება შეიძლება შემაშინებელი იყოს, თუ დაიწყებთ ATMEGA328– ის სრული მონაცემთა ფურცლიდან, რომელსაც აქვს 90 გვერდი, რომელიც ეძღვნება მათ აღწერილობას! რამდენიმე ჩაშენებული Arduino ბრძანება უკვე იყენებს ტაიმერს, მაგალითად millis (), delay (), tone (), AnalogWrite () და servo ბიბლიოთეკას. მაგრამ მათი სრული სიმძლავრის გამოსაყენებლად, თქვენ დაგჭირდებათ მათი შექმნა რეესტრების საშუალებით. მე გაგიზიარებთ რამოდენიმე მაკროსა და ფუნქციას, რომ ეს უფრო ადვილი და გამჭვირვალე გახდეს.

ქრონომეტრების ძალიან მოკლე მიმოხილვის შემდეგ, მიჰყევით 8 მაგარ პროექტს, რომელიც ეყრდნობა სიგნალის გენერირებას ქრონომეტრებით.

ნაბიჯი 1: საჭირო კომპონენტები

საჭირო კომპონენტები
საჭირო კომპონენტები

რვავე პროექტის შესაქმნელად დაგჭირდებათ:

  • Arduino Uno ან თავსებადი
  • პროტოტიპის ფარი მინი პროტობორდით
  • 6 breadboard jumper კაბელები
  • 6 მოკლე ბორბლიანი მხტუნავები (გააკეთეთ თავი 10 სმ მყარი ბირთვიანი მავთულისგან)
  • 2 ნიანგის ტყვია
  • 1 თეთრი 5 მმ LED
  • 220 Ohm რეზისტორი
  • 10kOhm რეზისტორი
  • 10kOhm პოტენომეტრი
  • 2 კერამიკული 1muF კონდენსატორი
  • 1 ელექტროლიტური 10muF კონდენსატორი
  • 2 დიოდი, 1n4148 ან მსგავსი
  • 2 მიკრო სერვო ძრავა SG90
  • 1 8 Ohm სპიკერი
  • 20 მ თხელი (0.13 მმ) ემალირებული მავთული

ნაბიჯი 2: Arduino ქრონომეტრების მიმოხილვა სიგნალის წარმოქმნისათვის

Timer0 და timer2 არის 8 ბიტიანი ქრონომეტრები, რაც იმას ნიშნავს, რომ მათ შეუძლიათ დათვლა 0-დან 255-მდე. ტაიმერი 1 არის 16 ბიტიანი ქრონომეტრი, ასე რომ მას შეუძლია 65535-მდე დათვლა. თითოეულ ტაიმერს აქვს ორი გამომავალი ქინძი: 6 და 5 ტაიმერისთვის 0, 9 და 10 ტაიმერისთვის 1, 11 და 3 ქრონომეტრისთვის 2. ტაიმერი იზრდება Arduino– ს საათის თითოეულ ციკლზე, ან სიჩქარით, რომელიც მცირდება წინასწარი მასშტაბის ფაქტორით, რაც არის 8, 64, 256 ან 1024 (32 და 128 ასევე დასაშვებია ტაიმერისთვის 2). ტაიმერები ითვლიან 0 -დან "TOP" - მდე და შემდეგ ისევ (სწრაფი PWM) ან ქვევით (ფაზის სწორი PWM). "TOP" - ის მნიშვნელობა ამდენად განსაზღვრავს სიხშირეს. გამომავალ ქინძისთავებს შეუძლიათ დაადგინონ, გადატვირთონ ან შეცვალონ გამომავალი შედარების რეესტრის მნიშვნელობა, ასე რომ ისინი განსაზღვრავენ მოვალეობის ციკლს. მხოლოდ ტაიმერს 1 აქვს შესაძლებლობა დამოუკიდებლად განსაზღვროს სიხშირე და სამუშაო ციკლი ორივე გამომავალი ქინძისთავისთვის.

ნაბიჯი 3: LED მოციმციმე

Image
Image
LED მოციმციმე
LED მოციმციმე
LED მოციმციმე
LED მოციმციმე

ყველაზე დაბალი სიხშირე, რომლის მიღწევაც შესაძლებელია 8 ბიტიანი ქრონომეტრებით არის 16 MHz/(511*1024) = 30, 6Hz. ასე რომ, LED- ის მოციმციმე 1 ჰც -ით, ჩვენ გვჭირდება ტაიმერი 1, რომელსაც შეუძლია მიაღწიოს სიხშირეებს 256 -ჯერ პატარა, 0.12 ჰც.

შეაერთეთ LED მისი ანოდით (გრძელი ფეხი) pin9- თან და დააკავშირეთ მისი კათოდი 220 Ohm რეზისტორთან მიწასთან. ატვირთეთ კოდი. LED აციმციმდება ზუსტად 1 Hz– ზე, სამუშაო ციკლი 50%–ით. მარყუჟის () ფუნქცია ცარიელია: ტაიმერი ინიციალიზებულია დაყენებისას () და არ საჭიროებს დამატებით ყურადღებას.

ნაბიჯი 4: LED Dimmer

Image
Image
LED Dimmer
LED Dimmer
LED Dimmer
LED Dimmer

პულსის სიგანის მოდულაცია არის ეფექტური გზა LED ინტენსივობის რეგულირებისთვის. სათანადო დრაივერთან ერთად, ასევე სასურველი მეთოდია ელექტრომოტორების სიჩქარის რეგულირება. ვინაიდან სიგნალი არის 100% ჩართული ან 100% გამორთული, ენერგიის ნაკლებობა არ იკარგება სერიის წინააღმდეგობაზე. ძირითადად, ეს იგივეა, რაც LED უფრო სწრაფად ანათებდეს, ვიდრე თვალი მოჰყვება. 50 ჰერცი პრინციპში საკმარისია, მაგრამ შეიძლება მაინც ციმციმდეს და როდესაც LED ან თვალები მოძრაობს, შეიძლება შემაშფოთებელი უწყვეტი "ბილიკი" გამოჩნდეს. 64 – ის წინასწარი მასშტაბის გამოყენებით 8 – ბიტიანი ტაიმერით, ჩვენ ვიღებთ 16 MHz/(64*256) = 977Hz, რაც შეესაბამება მიზანს. ჩვენ ვირჩევთ timer2- ს, რომ timer1 ხელმისაწვდომი იყოს სხვა ფუნქციებისთვის და ჩვენ არ ჩავერიდოთ Arduino time () ფუნქციას, რომელიც იყენებს timer0- ს.

ამ მაგალითში მოვალეობის ციკლი და, შესაბამისად, ინტენსივობა, რეგულირდება პოტენომეტრით. მეორე LED შეიძლება დამოუკიდებლად დარეგულირდეს იმავე ტაიმერით პინ 3 -ში.

ნაბიჯი 5: ციფრული ანალოგური გადამყვანი (DAC)

Image
Image
ციფრული ანალოგური გადამყვანი (DAC)
ციფრული ანალოგური გადამყვანი (DAC)
ციფრული ანალოგური გადამყვანი (DAC)
ციფრული ანალოგური გადამყვანი (DAC)

Arduino– ს არ აქვს ნამდვილი ანალოგური გამომავალი. ზოგიერთი მოდული იღებს ანალოგიურ ძაბვას პარამეტრების დასარეგულირებლად (ჩვენების კონტრასტი, გამოვლენის ბარიერი და ა. შ.). მხოლოდ ერთი კონდენსატორითა და რეზისტორით, ტაიმერი 1 შეიძლება გამოყენებულ იქნას ანალოგური ძაბვის შესაქმნელად 5 მვ ან უკეთესი გარჩევადობით.

დაბალგამტარ ფილტრს შეუძლია PWM სიგნალის 'საშუალო' ანალოგური ძაბვისკენ. კონდენსატორი რეზისტორის საშუალებით არის დაკავშირებული PWM პინთან. მახასიათებლები განისაზღვრება PWM სიხშირით და რეზისტორისა და კონდენსატორის მნიშვნელობებით. 8 ბიტიანი ქრონომეტრების გარჩევადობა იქნება 5V/256 = 20mV, ამიტომ ჩვენ ვირჩევთ Timer1- ს 10 ბიტიანი გარჩევადობის მისაღებად. RC წრე არის პირველი რიგის დაბალი გამავლობის ფილტრი და მას ექნება ტალღა. RC მიკროსქემის დროის მასშტაბი უნდა იყოს ბევრად უფრო დიდი ვიდრე PWM სიგნალის პერიოდი, რათა შეამციროს ტალღა. პერიოდი, რომელსაც ვიღებთ 10-ბიტიანი სიზუსტისთვის არის 1024/16MHz = 64mus. თუ ჩვენ ვიყენებთ 1muF კონდენსატორს და 10kOhm რეზისტორს, RC = 10ms. პიკიდან პიკამდე ტალღა არის მაქსიმუმ 5V*0.5*T/(RC) = 16mV, რაც აქ საკმარისად ითვლება.

გაითვალისწინეთ, რომ ამ DAC– ს აქვს ძალიან მაღალი გამომავალი წინაღობა (10 kOhm), ამიტომ ძაბვა მნიშვნელოვნად შემცირდება, თუ ის დენს გამოიტანს. ამის თავიდან ასაცილებლად, ის შეიძლება იყოს ბუფერირებული opamp– ით, ან R და C– ის სხვა კომბინაციის არჩევა, მაგალითად 1 kOhm 10 muF– ით.

მაგალითში, DAC გამომავალი მართულია პოტენომეტრით. მეორე დამოუკიდებელი DAC არხის გაშვება შესაძლებელია timer1– ით პინ 10 – ზე.

ნაბიჯი 6: მეტრონომი

Image
Image
მეტრონომი
მეტრონომი
მეტრონომი
მეტრონომი

მეტრონომი ხელს უწყობს რიტმის თვალყურის დევნებას მუსიკის დაკვრისას. ძალიან მოკლე იმპულსებისთვის, არდუინოს ქრონომეტრის გამომუშავება შესაძლებელია პირდაპირ დინამიკზე, რომელიც გამოიღებს მკაფიოდ მოსმენილ დაწკაპუნებებს. პოტენომეტრით, დარტყმის სიხშირე შეიძლება დარეგულირდეს 40 -დან 208 დარტყმამდე წუთში, 39 საფეხურზე. ტაიმერი 1 საჭიროა საჭირო სიზუსტისთვის. "TOP" - ის მნიშვნელობა, რომელიც განსაზღვრავს სიხშირეს, იცვლება მარყუჟის () ფუნქციის შიგნით და ეს მოითხოვს ყურადღებას! თქვენ ხედავთ, რომ WGM რეჟიმი განსხვავდება სხვა მაგალითებისგან, რომლებსაც აქვთ ფიქსირებული სიხშირე: ამ რეჟიმს, TOP- ით დადგენილი OCR1A რეგისტრით, აქვს ორმაგი ბუფერული დაცვა და იცავს დაკარგული TOP- ისგან და გრძელი შეცდომისგან. თუმცა, ეს ნიშნავს, რომ ჩვენ შეგვიძლია გამოვიყენოთ მხოლოდ 1 გამომავალი პინი.

ნაბიჯი 7: ხმის სპექტრი

Image
Image
ხმის სპექტრი
ხმის სპექტრი
ხმის სპექტრი
ხმის სპექტრი

ადამიანებს შეუძლიათ მოისმინონ ხმის სიხშირის 3 -ზე მეტი რიგი, 20 ჰც -დან 20 კჰც -მდე. ეს მაგალითი წარმოქმნის სრულ სპექტრს პოტენომეტრით. 10muF კონდენსატორი მოთავსებულია დინამიკსა და არდუინოს შორის, რათა დაბლოკოს DC დენი. ტაიმერი 1 აწარმოებს კვადრატულ ტალღას. Waveform თაობის რეჟიმი აქ არის ფაზის სწორი PWM. ამ რეჟიმში, მრიცხველი იწყებს ათვლას უკან, როდესაც ის მიაღწევს ზედა, რაც იწვევს იმპულსებს, რომელთა საშუალო მაჩვენებელი ფიქსირდება, მაშინაც კი, როდესაც სამუშაო ციკლი იცვლება. თუმცა, ის ასევე იწვევს პერიოდს (თითქმის) ორმაგად და უბრალოდ ხდება, რომ წინასწარი მასშტაბის 8 -ით ტაიმერი 1 მოიცავს სრულ მოსმენილ სპექტრს, წინასწარი მასშტაბის შეცვლის საჭიროების გარეშე. ასევე აქ, ვინაიდან TOP– ის მნიშვნელობა იცვლება მოძრაობისას, OCR1A– ს ზედა ნაწილის გამოყენება ამცირებს ხარვეზებს.

ნაბიჯი 8: სერვო მოტორსი

Image
Image
სერვო მოტორსი
სერვო მოტორსი
სერვო მოტორსი
სერვო მოტორსი

არსებობს მძლავრი სერვო ბიბლიოთეკები, მაგრამ თუ თქვენ გაქვთ მხოლოდ ორი სერვო სატრანსპორტო საშუალება, შეგიძლიათ ეს გააკეთოთ უშუალოდ ტაიმერით 1 და ამით შეამციროთ პროცესორი, მეხსიერების გამოყენება და თავიდან აიცილოთ შეფერხებები. პოპულარული SG90 servo იღებს 50Hz სიგნალს და პულსის სიგრძე აფიქსირებს პოზიციას. იდეალურია ტაიმერისთვის 1. სიხშირე ფიქსირებულია, ამიტომ ორივე შედეგი pin 9 -ზე და pin 10 -ზე შეიძლება გამოყენებულ იქნას სერვოების დამოუკიდებლად მართვისთვის.

ნაბიჯი 9: ძაბვის გაორმაგება და ინვერტორი

ძაბვის გამორმაგებელი და ინვერტორი
ძაბვის გამორმაგებელი და ინვერტორი
ძაბვის გამორმაგებელი და ინვერტორი
ძაბვის გამორმაგებელი და ინვერტორი
ძაბვის გამორმაგებელი და ინვერტორი
ძაბვის გამორმაგებელი და ინვერტორი

ზოგჯერ თქვენი პროექტი მოითხოვს ძაბვას, რომელიც აღემატება 5 ვ ან უარყოფით ძაბვას. ეს შეიძლება იყოს MOSFET– ის გაშვება, პიეზო ელემენტის გაშვება, opamp– ის ჩართვა ან EEPROM– ის გადატვირთვა. თუ მიმდინარე გათამაშება საკმარისად მცირეა, m 5mA- მდე, დამუხტვის ტუმბო შეიძლება იყოს უმარტივესი გამოსავალი: მხოლოდ 2 დიოდი და ორი კონდენსატორი, რომელიც დაკავშირებულია ქრონომეტრიდან იმპულსურ სიგნალთან, იძლევა არდუინოს 5V- ის გაორმაგებას 10V- მდე. პრაქტიკაში, არის 2 დიოდური წვეთი, ასე რომ, ეს იქნება უფრო მეტად 8.6V პრაქტიკაში ორმაგად, ან -3,6V ინვერტორზე.

კვადრატული ტალღის სიხშირე საკმარისი უნდა იყოს დიოდების მეშვეობით საკმარისი მუხტის გადასატანად. 1muF კონდენსატორი ცვლის 5muC ცვლილებას, როდესაც ძაბვა იცვლება 0 -დან 5V- მდე, ამიტომ 10mA დენისთვის სიხშირე უნდა იყოს მინიმუმ 2kHz. პრაქტიკაში, უკეთესი სიხშირე უკეთესია, რადგან ის ამცირებს ტალღას. ტაიმერი 2 ითვლის 0 -დან 255 -მდე წინასწარი გაფართოების გარეშე, სიხშირეა 62.5 კჰც, რაც კარგად მუშაობს.

ნაბიჯი 10: უკაბელო ენერგიის გადაცემა

Image
Image
უკაბელო ენერგიის გადაცემა
უკაბელო ენერგიის გადაცემა
უკაბელო ენერგიის გადაცემა
უკაბელო ენერგიის გადაცემა

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

პირველი მოამზადეთ კოჭები. მე გამოვიყენე 8.5 სმ დიამეტრის ქაღალდის რულეტი და 0.13 მმ დიამეტრის მინანქარიანი მავთული, რათა გავაკეთო 2 კოჭა: პირველადი 20 ბრუნვით, მეორადი 50 ბრუნვით. ამ ტიპის გრაგნილის თვითინდუქცია N გრაგნილებითა და R რადიუსით არის ~ 5muH * N^2 * R. ასე რომ N = 20 – ისთვის და R = 0.0425 იძლევა L = 85muH, რაც დადასტურდა კომპონენტის შემმოწმებლით. ჩვენ ვაწარმოებთ სიგნალს 516kHz სიხშირით, რის შედეგადაც წინაღობა 2pi*f*L = 275Ohm. ეს იმდენად მაღალია, რომ არდუინო არ გადადის ზედმეტ დენში.

კოჭის ყველაზე ეფექტურად გასაშვებად, ჩვენ გვსურს გამოვიყენოთ ნამდვილი AC წყარო. არსებობს ხრიკი, რომლის გაკეთებაც შესაძლებელია: ტაიმერის ორი გამოსავალი შეიძლება შესრულდეს საპირისპირო ფაზაში, ერთი ამოსვლის შემობრუნებით. იმისათვის, რომ ის კიდევ უფრო დაემსგავსოს სინუსურ ტალღას, ჩვენ ვიყენებთ ფაზის სწორ PWM- ს. ამ გზით, პინ 9 და 10 შორის, ძაბვა იცვლება ორივე 0V, pin 9 +5V, ორივე 0V, pin 10 +5V. ეფექტი ნაჩვენებია სურათზე დიაპაზონის კვალიდან (1024 წინასწარი მასშტაბით, ამ სათამაშოს არ აქვს დიდი გამტარობა).

შეაერთეთ პირველადი კოჭა პინ 9 და 10. შეაერთეთ LED მეორად კოჭასთან. როდესაც მეორადი კოჭა პირვანდელთან ახლოს მიიწევს, LED ნათლად ანათებს.

გირჩევთ: