Gallery

კომპარატორი მიკროკონტროლერში.

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

ანალოგური სიგნალების მიღებისა და დამუშავებისათვის AVR მიკროკონტროლერებში გათვალისწინებულია ანალოგური სიგნალების კომპარატორი. Atmega8 მიკროკონტროლერში ანალოგური კომპარატორის AIN0, AIN1 გამომყვანები შეთავსებულია D პორტის PD6, PD7 გამომყვანებთან.

ჩვეულებრივი ანალოგური კომპარატორის მუშაობის პრინციპი დაწვრილებით არის განხილული პუბლიკაციაში „ანალოგური ელექტრონიკა“. მისი არსი იმაში მდგომარეობს, რომ თუ კომპარატორის პირდაპირ (არა ინვერსულ) შესასვლელზე ძაბვის მნიშვნელობა გადააჭარბებს ძაბვის მნიშვნელობას ინვერსულ შესასვლელზე, მაშინ კომპარატორის გამოსასვლელი ლოგიკურ „1“-ში გადაირთვება, წინააღმდეგ შემთხვევაში კომპარატორის გამოსასვლელზე ლოგიკური „0“ გვაქვს. მიკროკონტროლერის კომპარატორის გამოსასვლელს ცალკე გამომყვანი არ აქვს. გამოსასვლელის ლოგიკური მნიშვნელობა იწერება მიკროკონტროლერის ACSR რეგისტრის (Analog Comparator Control and Status Register) მე-5 ბიტში, რომელიც ატარებს სახელწოდებას ACO (Analog Comparator Out). ამრიგად, იმისთვის, რომ დავადგინოთ კომპარატორის ორი შესასვლელიდან რომელს მიეწოდება მეტი ძაბვა, უნდა წავიკითხოთ ACSR რეგისტრის მე-5 ბიტის მნიშვნელობა. გარდა ACO ბიტის ცვლილებისა, კომპარატორის გადართვა იწვევს, აგრეთვე, წყვეტის მოთხოვნის სიგნალის გამომუშავებასაც, თუ, რა თქმა უნდა, წყვეტა კომპარატორისაგან ნებადართულია. წყვეტის ნებართვას განაპირობებს ACSR რეგისტრის მე-3 ბიტი ACIE (Analog Comparator Interrupt Enable), – თუ მისი მნიშვნელობა „1“ -ის ტოლია, მაშინ წყვეტა ნებადართულია.  ACSR რეგისტრის ბიტები 0 და 1  (ACIS0 და  ACIS1) განაპირობებენ წყვეტის გამომუშავების კრიტერიუმებს.

მცდარი წყვეტის თავიდან ასაცილებლად, ამ ბიტების პროგრამულად ცვლილების წინ კომპარატორიდან წყვეტის ნებართვა გამორთული უნდა იქნეს. წყვეტა თავს იჩენს იმით, რომ ACSR რეგისტრის მე-4 ბიტი ACI (Analog Comparator Interrupt) ლოგიკურ  “1”-ში გადაირთვება.
კომპარატორის კიდევ ერთი ფუნქცია მდგომარეობს იმაში, რომ მისი გამოსასვლელი სიგნალის მიხედვით შესაძლებელია Timer1 16 ბიტიანი ტაიმერ/მრიცხველის შიგთავსის გადაწერა სპეციალურ რეგისტრში, რომელსაც ჩაჭერის რეგისტრი ეწოდება. თვით ამ პროცედურას ტაიმერის ჩაჭერას  (Capture) უწოდებენ. კომპარატორის გამოსასვლელის მიერთება ტაიმერის ჩაჭერის ბლოკთან შესაძლებელია ACSR რეგისტრის მე-2 ბიტში „1“-ის ჩაწერით.
კომპარატორის საშუალებით შესაძლებელია არა მხოლოდ ორი, გარედან მიწოდებული ძაბვების ერთმანეთთან შედარება, არამედ შესაძლებელია, აგრეთვე, AIN1 ინვერსულ შესასვლელზე არსებული ძაბვის შედარება შიდა ეტალონურ ძაბვასთან, რომლის მნიშვნელობა Atmega8 მიკროკონტროლერისათვის 1.23 ვოლტს შეადგენს. ამისათვის საჭიროა ACSR რეგისტრის მე-6 ბიტის ლოგიკურ „1“ -ში დაყენება.
ACSR რეგისტრის მე-7 ბიტის  მართვით შესაძლებელია კომპარატორის ჩართვა – გამორთვა. ლოგიკურ „1“ -ს კომპარატორის ჩართვა შეესაბამება. ამ ბიტის ცვლილება იწვევს წყვეტის სიგნალის გამომუშავებას, ამიტომ მისი ცვლილების წინ წყვეტის ნებართვა უნდა გამოირთოს.
ნახაზებზე ქვემოთ ნაჩვენებია ACSR რეგისტრის ფორმატი.
acsr

მიკროკონტროლერის კიდევ ორი სხვა რეგისტრის ცალკეული ბიტების გამოყენება საშუალებას იძლევა საგრძნობლად გავაფართოვოთ კომპარატორის შესაძლებლობები.  Atmega8 მიკროპროცესორის SFIOR რეგისტრის მე-3 ბიტის ACME (Analog Comparator Multiplexer Enable) ლოგიკურ „1“-ში დაყენება იწვევს კომპარატორის ინვერსული შესასვლელის გათიშვას  AIN1 გამომყვანისაგან და მის მიერთებას  ADC0 – ADC5 გამომყვანებიდან ერთ-ერთზე. თუ რომელ მათგანზე მიერთდება ეს გამომყვანი, დამოკიდებულია ADMUX რეგისტრის 0-2 ბიტების (MUX0-MUX2) მნიშვნელობებზე.

(PDIP კორპუსში მოთავსებულ Atmega8 კონტროლერს  ADC6 და ADC7 გამომყვანები არ გააჩნია. სხვა ტიპის კორპუსებში მოთავსებულებს – რვავე გამომყვანი აქვთ).
კომპარატორის შესასვლელის სხვადასხვა გამომყვანთან თანმიმდევრობით მიერთება (მულტიპლექსირება)  საშუალებას იძლევა, თანმიმდევრობით გამოიკითხოს 6 – 8 ანალოგური სიგნალის წყარო და დადგინდეს, რომელ მათგანს შეესაბამება ყველაზე მეტი (ან ნაკლები) ძაბვა.
ქვემოთ მოყვანილია უმარტივესი გენერატორის სქემა, ალგორითმი და Algorithm Builder -ის სეტერის პარამეტრები. გენერატორი გამოიმუშავებს მართკუთხა და სამკუთხა ფორმის სიგნალებს.  გენერატორის სიხშირე განისაზღვრება R1 რეზისტორისა და C1 კონდენსატორის პარამეტრებით.

მიკროკონტროლერის  კომპარატორი ახორციელებს C1 კონდენსატორზე არსებული ძაბვის მნიშნელობის შედარებას  R2, R3 ძაბვის გამყოფის ძაბვის მნიშვნელობასთან.  R4 რეზისტორის საშუალებით ხორციელდება დადებითი უკუკავშირი სქემის გამოსასვლელსა და კომპარატორის პირდაპირ (არამაინვერტირებელ) შესასვლელს შორის, რაც განაპირობებს კომპარატორის ჰისტერეზისს.
სქემის მუშაობის ალგორითმი ისეა შედგენილი, რომ თავდაპირველად C1 კონდენსატორი  R1 წინაღობის საშუალებით იმუხტება კომპარატორის  PD0 გამომყვანზე არსებული ძაბვით. როდესაც კონდენსატორის ძაბვა მიაღწევს გადართვის მნიშვნელობას, კომპარატორი გამოიმუშავებს წყვეტას, ხოლო წყვეტის ქვეპროგრამა გადართავს PD0 გამომყვანს ლოგიკური „0“-ის მდგომარეობაში, რაც გამოიწვევს კონდენსატორის განმუხტვის დაწყებას. იმ მომენტში, როდესაც კონდენსატორის ძაბვა ნაკლები გახდება ჰისტერეზისის ძაბვის მინიმალურ მნიშვნელობაზე, კომპარატორი კვლავ გამოიმუშავებს წყვეტას, მაგრამ, ამჯერად, წყვეტის ქვეპროგრამა PD0 გამომყვანს გადართავს ლოგიკური „1“- მდგომარეობაში და პროცესი განმეორდება.
comparator_algcomparator_setter

Algorithm Builder -ის და  Proteus -ის ფაილები შეგიძლიათ ჩამოტვირთოთ საიტის “Files” განყოფილებიდან (mc9day.rar).

ყურადღება  Proteus 7.6 პროგრამაში აღმოჩენილია ბაგები, ამიტომ “Files” განყოფილებაში იგი შეცვლილია  Proteus 7.8 ვერსიით. ჩამოტვირთეთ 7.8 ვერსია.

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

Fill in your details below or click an icon to log in:

WordPress.com Logo

You are commenting using your WordPress.com account. Log Out / შეცვლა )

Twitter picture

You are commenting using your Twitter account. Log Out / შეცვლა )

Facebook photo

You are commenting using your Facebook account. Log Out / შეცვლა )

Google+ photo

You are commenting using your Google+ account. Log Out / შეცვლა )

Connecting to %s