გალერეა

PWM

მიკროკონტროლერი. დღე 7. 

PWM

ელექტროძრავების სიჩქრის ან ნათურის სიკაშკაშის  რეგულირებისთვის საჭიროა ამ მოწყობილობებში გამოყოფილი სიმძლავრის რეგულირება. ციფრული მოწყობილობების, მათ შორის მიკროკონტროლერის გამომყვანებზე შესაძლებელია სიგნალის მხოლოდ ორი დონის (ლოგიკური „0“ ან ლოგიკური „1“)  გამოყვანა. Pulse Width Modulation -იმპულსის სიგანის მოდულაცია საშუალებას იძლევა ამ ორი ლოგიკური დონის მონაცვლეობით მივაღწიოთ გამომყვანთან მიერთებულ მოწყობილობაში სიმძლავრის რეგულირებას.
თუ ელექტროძრავს მივაერთებთ კვების წყროსთან, მაშინ ის თანდათანობით აკრეფს სიჩქარეს და შემდეგ გააგრძელებს ბრუნვას მაქსიმალური სიჩქარით. დენის წყაროს გამორთვისას ელექტროძრავი, ინერციულობის გამო, თანდათან შეამცირებს სიჩქარეს და მხოლოდ რამოდენიმე ხნის შემდეგ გაჩერდება. იგივე ითქმის ნათურის სიკაშკაშეზეც, რადგან ვარვარების ნათურასაც გააჩნია ინერცია – სითბური ინერცია.
თუ ელექტროძრავს მხოლოდ მცირე ხნით ჩავრთავთ და შემდეგ ისევ გამოვრთავთ, მაშინ მისი სიჩქარე ვერ მოასწრებს მაქსიმალური მნიშვნელობის მიღწევას. პერიოდული ჩართვა – გამორთვებით შეიძლება მივაღწიოთ ელექტროძრავის საჭირო სიჩქარით ბრუნვას.
თუ მიკროკონტროლერის გამომყვანს დროის ტოლ შუალედებში მონაცვლეობით გადავრთავთ ლოგიკური „0“ -დან ლოგიკურ „1“ -ში და პირიქით, მაშინ გამომყვანზე მივიღებთ მუდმივი სიხშირის იმპულსების მიმდევრობას. ამ მიმდევრობაში ლოგიკურ „0“ -ის და ლოგიკური „1“-ის ხანგრძლივობები ტოლი იქნება. თუ იმპულსების ასეთი მიმდევრობით ვმართავთ ელექტროძრავს, მაშინ ის იბრუნებს მაქსიმალური მნიშვნელობის ნახევარის ტოლი სიჩქარით. თუ ლოგიკური „1“ -ის ხანგრძლივობას გავზრდით და ლოგიკური „0“ -ის ხანგრძლივობას შევამცირებთ ისე, რომ იმპულსების სიხშირე არ შეიცვალოს, მაშინ ელექტროძრავის ბრუნვის სიჩქარე გაიზრდება. ლოგიკური „1“ -ის ხანგრძლივობის შემცირება და ლოგიკური „0“ -ის ხანგრძლივობის გაზრდა გამოიწვევს ელექტროძრავის სიჩქარის შემცირებას.

თუ ასეთ იმპულსებს RC წრედს მივუერთებთ, მაშინ იმის გამო, რომ  C კონდენსატორს იმპულსების ცვლადი მდგენელისათვის მცირე წინააღმდეგობა გააჩნია, სიგნალი ცვლადი კომპონენტისაგან გაიფილტრება და კონდენსატორზე გვექნება მხოლოდ მუდმივი ძაბვა.
Atmel მიკროკონტროლერებში PWM იმპულსების ფორმირება ხორციელდება აპარატურულად (მიკროკონტროლერის მიკროპროცესორის ჩაურევლად) ტაიმერების საშუალებით. წინა პუბლიკაციაში განვიხილეთ, თუ როგორ ხდება ტაიმერის TCNT მთვლელისა (მრიცხველის) და შესაბამისი OCR რეგისტრის შიგთავსის მნიშვნელობათა დამთხვევისას ტაიმერის წყვეტის ფორმირება. PWM იმპულსების ფორმირებაც ანალოგიურად ხორციელდება. ნახაზის მარცხენა მხარეს მოყვანილია ე.წ. Fast PWM მეთოდის აღმწერი დიაგრამები.

ტაიმერის TCNT მრიცხველი ითვლის იმპულსებს 0-დან მაქსიმალურ მნიშვნელობამდე; მისი შიგთავსის მნიშვნელობის თანხვედრისას OCR რეგისტრის შიგთავსის მნიშვნელობასთან მიკროკონტროლერის სპეციალური OC გამომყვანი გადაირთვება ლოგიკურ „1“ -ში; მრიცხველი გააგრძელებს ტაიმერის სატაქტო იმპულსების თვლას და, მისი შიგთავსის მნიშვნელობის მაქსიმუმის მიღწევისას თვლას თავიდან, 0-დან დაიწყებს; ამ დროს მიკროკონტროლერის OC გამომყვანი უკან, ლოგიკური „0“ -ის მდგომარეობაში გადაირთვება და პროცესი თავიდან დაიწყება. ამგვარად, რაც უფრო დიდი რიცხვი იქნება ჩაწერილი OCR რეგისტრში, მით ხანმოკლე იქნება დადებითი იმპულსი (შეადარეთ ნახაზის ზედა და ქვედა ნაწილები) OC გამომყვანზე.  Atmega8 მიკროკონტროლერის Timer2 ტაიმერის TCNT მრიცხველი 8 თანრიგიანია. ამიტომ იპულსების თვლისას იგი იღებს მნიშვნელობებს 0-დან 255-ის ჩათვლით. შესაბამისად, OCR რეგისტრში სხვადასხვა რიცხვების ჩაწერით, შესაძლებელია დადებითი იმპულსის ხანგრძლევობის 255 მნიშვნელობის მიღება ისე, რომ იმპულსების სიხშირე არ იცვლება. ეს სიხშირე 256 -ჯერ ნაკლებია ტაიმერის (არა მიკროკონტროლერის) სატაქტო იმპულსების სიხშირეზე.
ნახაზის მარჯვენა ნაწილში ნაჩვენებია PWM იმპულსების ფორმირების მეორე მეთოდის (Phase Correct PWM) აღმწერი დიაგრამები. აქ, ისევე როგორც წინა შემთხვევაში, მრიცხველისა და რეგისტრის შიგთავსების მნიშვნელობების თანხვედრისას ხდება შესაბამისი გამომყვანის „1“-ში გადართვა, მაგრამ მრიცხველის შიგთავსის მაქსიმუმის მიღწევისას ხდება არა მისი ჩამოყრა, არამედ უკუთვლის რეჟიმში გადართვა და მრიცხველი იწყებს თვლას მაქსიმუმიდან 0-მდე. უკუთვლის პროცესში მრიცხველისა და რეგისტრის შიგთავსების მნიშვნელობების თანხვედრისას ხდება შესაბამისი გამომყვანის გადართვა ლოგიკურ „0“-ში. ასეთი გზით მიღებული იმპულსების სიხშირე ორჯერ ნაკლებია, ვიდრე Fast PWM შემთხვევაში. ამ მეთოდის გამოყენება განსაკუთრებით რეკომენდირებულია ელექტროძრავების მართვისთვის. სხვა დანარჩენ შემთხვევაში უმჯობესია Fast PWM მეთოდის გამოყენება, მისი იმპულსების მეტი სიხშირის გამო.
ჩვენი უკანასკნელი ალგორითმი (მიკროკონტროლერი. დღე 6.  ტაიმერი მიკროკონტროლერში) ახორციელებს შუქდიოდების ციმციმის რეალიზებას Timer1 ტაიმერის გამოყენაბით. შეგახსენებთ, რომ საიტზე გამოქვეყნებული ყველა ალგორითმი და მათი Proteus-ში მოდელირებისთვის საჭირო პროექტები შეგიძლიათ ჩამოტვირთოთ საიტის მარჯვენა მხარეს მოთავსებული სექციიდან “Files”. მაგ., არქივი  mc6day.rar შეიცავს პუბლიკაციაში „მიკროკონტროლერი. დღე 6“ გამოყენებულ მასალებს, კერძოდ Algorithმ Builder -ის პროექტს  “.alp” გაფართოებით და Proteus -ის პროექტს “.dsn” გაფართოებით. ამდენად არ არის საჭირო ალგორითმის თავიდან აკრეფა ან სქემის თავიდან დახაზვა.

გახსენით Algorith Builder -ში თქვენი უკანასკნელი ალგორითმი და შეიტანეთ მასში უმნიშვნელო ცვლილებები.
შესწორებული ალგორითმის სიმულატორში გაშვებით დავრწმუნდებით, რომ ცვლილებები მართლაც უმნიშვნელოა. ცვლილებამდე ლოგიკურ  „1“ -ში მონაცვლეობით ირთვებოდნენ B პორტის ყველა ლუწი და ყველა კენტი გამომყვანი. შესწორების შემდეგ ციმციმში მონაწილეობენ მხოლოდ PB0 და PB1 გამომყვანები. ეს საჭიროა PB3 გამომყვანის გამოსათავისუფლებლად, რომელიც შეთავსებით ასრულებს აგრეთვე, Timer2 8-თანრიგიანი ტაიმერის OC2 გამომყვანის ფუნქციას.
ახლა დავამატოთ ალგორითმში Timer2 ტაიმერი (Elements, Setter, Timer/Counter2) და სეტერი დავაყენოთ ისე, როგორც ეს სურათზეა ნაჩვენები.
საბოლოოდ ალგორითმი მიიღებს სახეს:
სეტერის პარამეტრების არჩევისას ავირჩიეთ Phase Correct PWM. კიდევ ერთი პარამეტრი, რომელიც ლურჯად არის გამოყოფილი, მიუთითებს მიკროკონტროლერს, რომ OC2 გამომყვანის გადართვა „0“ -ში უნდა ხდებოდეს მრიცხველის პირდაპირი თვლისას, ხოლო „1“ -ში გადართვა უკუთვლისას. ეს მოსახერხებელია, რადგან ამ შემთხვევაში დადებითი იმპულსის ხანგრძლივობა და, მაშასადამე, ექვივალენტური ძაბვაც მით მეტია, რაც მეტი მნიშვნელობის რიცხვი იქნება ჩაწერილი OCR2 რეგისტრში.
ალგორითმში წითლად გამოყოფილია ოპერაციები, რომლებიც ახორციელებენ OCR2 რეგისტრში სხვადასხვა რიცხვების ჩაწერას. თავიდან რეგისტრში პატარა რიცხვია  ჩაწერილი (10), ამიტომ კვების წყაროს ჩართვის შემდეგ ელექტროძრავი, რომელიც OC2 გამომყვანიდან იმართება, დაბალი სიჩქარით იბრუნებს. ღილაკზე დაჭერისას რეგისტრში უფრო დიდი რიცხვი (40) ჩაიწერება და ელექტროძრავიც მოუმატებს ბრუნვის სიჩქარეს. ღილაკზე მეორე დაჭერა გამოიწვევს თითქმის მაქსიმალური რიცხვის (250) ჩაწერას და ელექტროძრავიც თითქმის მაქსიმალური სიჩქარით დაიწყებს ბრუნვას.
ალგორითმის სიმულაციისთვის Proteus -ში შექმენით ახალი პროექტი ან ჩამოტვირთეთ mc7day.rar არქივი, რომელშიც მოთავსებულია მზა პროექტი mc7day.dsn.

პროექტის პრინციპული სქემიდან ჩანს, რომ OC2 გამომყვანი უშუალოდ ელექტროძრავასთან არ არის მიერთებული. ეს სრულიად გასაგებია, რადგან ელექტროძრავა 500 მილიამპერ დენის ძალას მოიხმარს, ხოლო მაქსიმალური დენის ძალა, რომელიც Atmega8 მიკროკონტროლერის გამომყვანმა შეიძლება მოგვცეს 40 მილიამპერს შეადგენს (იხ. Atmega8 -ს დატაშიტი). გარდა ამისა, ძრავა 12 ვოლტ ძაბვაზეა გათვლილი, ჩვენს მიკროკნტროლერს კი შეუძლია მხოლოდ 5 ვოლტი ძაბვა მოგვცეს. ერთერთი გამოსავალი მდგომარეობს ველით მართვადი ტრანზისტორის გამოყენებაში. BUZ20 ტრანზისტორის წინააღმდეგობა ღია მდგომარეობაში 0.1 ომის რიგისაა, ხოლო ჩაკეტილ მდგომარეობაში – 1 მეგაომის რიგის. ტრანზისტორი იღება ჩამკეტზე დადებითი ძაბვის მიწოდებისას. სქემაზე გამოსახული C1 კონდენსატორი საჭიროა მხოლოდ ვოლტმეტრის სწორი ჩვენებების უზრუნველსაყოფად. მეორე ელექტროძრავი პირდაპირ არის მიერთებული 12 ვოლტი ძაბვის კვების წყაროსთან. იგი შემოყვანილია სქემაში მხოლოდ იმისთვის, რომ სიმულირების პროცესში თქვენ საშუალება გქონდეთ შეადაროთ მის სიჩქარეს მიკროკონტროლერის მიერ მართული ძრავის სიჩქარე. გაუშვით სიმულატორი და დააკვირდით ვოლტმეტრის ჩვენებებს და მარცხენა ელექტროძრავის სიჩქარის ცვლილებას ღილაკზე  დაჭერისას.
Proteus -ის პანელზე აირჩიეთ ვირტუალური ინსტრუმენტების რეჟიმი და დაამატეთ სქემაში ოსცილოსკოპი.

ოსცილოსკოპი ყველაზე მნიშვნელოვანი და უნივერსალური იარაღია ელექტრონიკის მოყვარულთა არსენალში. ოსცილოსკოპის საშუალებით შესაძლებელია  ცვლადი და მუდმივი სიგნალების დაკვირვება და მათი პარამეტრების გაზომვა,  მაგრამ იგი საკმაოდ ძვირი ღირს. Proteus -ის ვირტუალური ინსტრუმენტების კომპლექტში არის ოთხ არხიანი ოსცილოსკოპის ვირტუალური მოდელი, რომელიც ნამდვილი ოსცილოსკოპის სრული იმიტაციის საშუალებას იძლევა. ექსპერიმენტების ჩატარება ოსცილოსკოპზე და მისი მართვის ორგანოებთან გაცნობა გაგიადვილებთ ნამდვილი ოსცილოსკოპის ათვისებას. ჩვენი პროექტის ოსცილოსკოპიან ვარიანტს – mc7day_oscill.dsn ფაილს აგრეთვე შეიცავს mc7day.rar არქივი.

 


4 responses to “PWM

  1. მშვენიერი პოსტია…
    კითხვა მაქვს… აი RC მანქანებს რომ აქვთ რადიო მიმღები, მაქედან გამოსული იმპულსი ტრანზისტორს გახსნის?

  2. კარგი იყო
    გაიხარე ნათურის აწყობა მინდა ამავე პრინციპით და ტიპ31 ვრთავდი და არ ივარგა

დატოვეთ კომენტარი