Სარჩევი:

როგორ წავიკითხოთ ბევრი კონცენტრატორი ერთი MCU პინით: 4 ნაბიჯი
როგორ წავიკითხოთ ბევრი კონცენტრატორი ერთი MCU პინით: 4 ნაბიჯი

ვიდეო: როგორ წავიკითხოთ ბევრი კონცენტრატორი ერთი MCU პინით: 4 ნაბიჯი

ვიდეო: როგორ წავიკითხოთ ბევრი კონცენტრატორი ერთი MCU პინით: 4 ნაბიჯი
ვიდეო: როგორ ვიკითხოთ სწორად? 2024, ნოემბერი
Anonim
როგორ წავიკითხოთ ბევრი გადამრთველი ერთი MCU პინით
როგორ წავიკითხოთ ბევრი გადამრთველი ერთი MCU პინით

ოდესმე გულახდილხართ პროექტზე (პროექტებზე) და პროექტი სულ უფრო იზრდება და იზრდება, მაშინ როდესაც თქვენ მას უფრო მეტ ნივთს დაამატებთ (ჩვენ ამას ვეძახით დამღუპველ კრეატივიზმს)? ბოლო პროექტზე, მე ვაშენებდი სიხშირის მრიცხველს და დავამატე ხუთი ფუნქციის სიგნალის გენერატორი/სიხშირის სინთეზატორი. მალე უფრო მეტი გადამრთველი გამოვიყენე, ვიდრე დარჩენილი ქინძისთავები დამრჩა, მაშ რა უნდა გააკეთოს ბიჭმა?

თუმცა, მე მალევე მქონდა კიდევ შვიდი გადამრთველი ჩემს Funbox– ში (დიახ, მე ასე ვუწოდებ ჩემს ფუნქციის გენერატორს… ეს არ საჭიროებს რაიმე ცვლის რეგისტრატორს ან კონკრეტულ IC- ს. სინამდვილეში, ის არ საჭიროებს მიკროკონტროლერს, თუ დისკრეტული ნახევარგამტარები მოძრაობენ. აქ არის ერთი გზა, რომლითაც შეგიძლიათ წაიკითხოთ/მართოთ მრავალი კონცენტრატორი თქვენს AVR– ზე ერთი პინის გამოყენებით (ან სხვა მიკროკონტროლერის … მე მოვისმინე, რომ AVR– ის გარდა სხვა მიკროკონტროლერებიც არიან, მაგრამ ვერ წარმომიდგენია …).:)

ნაბიჯი 1: აუცილებელი (არა ნამდვილად)

ამ მიზნის მისაღწევად, დაგჭირდებათ რამდენიმე კომპონენტი. ეს გვეხმარება გქონდეთ მრავალი გადამრთველი, რომელთა მართვაც გჭირდებათ. თქვენ ასევე დაგჭირდებათ რეზისტორები და ან მიკროკონტროლერი, რომელსაც აქვს ADC (ანალოგურ-ციფრულ კონვერსიას) ან რაიმე სხვა გზით გსურთ მიუთითოთ, რომ იყო გადამრთველი გააქტიურებული და რომელი გადამრთველი.

თუ მოინდომებთ, შეგიძლიათ გამოიყენოთ ძაბვის კონტროლირებადი ოსცილატორი ამის საჩვენებლად, შესაძლოა მოციმციმე შუქებით, ან ალტერნატიულად, ხმით. ამ ილუსტრაციაში მე ვაპირებ ვითომ ვითომ AVR- ს ვიყენებთ, მაგრამ შენს სამყაროში შენ შეგიძლია წარმოიდგინო ის, რაც გაგახარებს. მენატრება ბობ როსი.

ნაბიჯი 2: ძაბვის გამყოფი

ძაბვის გამყოფი
ძაბვის გამყოფი
ძაბვის გამყოფი
ძაბვის გამყოფი

არსებითად, გზა, რომლის გაკეთებასაც ჩვენ ვაპირებთ არის ტექნიკისა და წრის გამოყენებით, რომელსაც ეწოდება ძაბვის გამყოფი. ძაბვის გამყოფი აკეთებს, როგორც თქვენ ალბათ მიხვდით, ყოფს V,, in,, ძაბვას გარკვეული მნიშვნელობით, რომელსაც თქვენ განსაზღვრავთ. თქვენ შეგიძლიათ გაყოთ ძაბვა რამდენიმე კომპონენტზე, მათ შორის კონდენსატორებსა და ინდუქტორებზე, მაგრამ მე ამას ვაკეთებ კარგი რეზისტორის გამოყენებით. იდეა რასაც ჩვენ ვაკეთებთ არის სერიის ორი კომპონენტის განთავსება, რაც გამოიწვევს თითოეული კომპონენტის ძაბვის ვარდნას. შეხედეთ პირველ სურათს, თუ აზრი არ მაქვს. არსებობს პოტენციური სხვაობა 9V რკინიგზადან რკინიგზაზე. 9V და 0V შორის არის ორი რეზისტორი სერიაში. თითოეული მათგანი განიცდის ძაბვის ვარდნას თავისთავად, წინააღმდეგობის მიხედვით, როგორც თქვენ ალბათ გახსოვთ V = IR– დან. თუ თქვენ მიიღებთ ძაბვის გაზომვას ორ რეზისტორს შორის, თქვენ მიიღებთ გარკვეულ მნიშვნელობას 9V– დან 0V– მდე, ეს დამოკიდებულია იმაზე, თუ რამდენი ძაბვა დაეცა პირველ რეზისტორზე და რამდენი დარჩა დასატოვებლად მე –2 რეზისტორზე, 0V– მდე. ამ სიტუაციაში არსებობს რეზისტორზე ძაბვის ვარდნის გამოანგარიშების პირდაპირი ფორმულა და ის ასე გამოიყურება. ძაბვა რეზისტორზე 1 (R1) იყოს V1 და ძაბვა რეზისტორზე ორზე (R2) იყოს V2. ვინაიდან მე აღარ შემიძლია ფორმატირება, შეხედეთ ფორუმს ქვემოთ მოცემულ სურათზე 2 … ასე რომ, ჩვენს რეზისტენტულ გამყოფში, Vout ძაბვა შეიძლება განისაზღვროს ჩვენი ფორმულისთვის V2 (რადგან ჩვენ მივუთითებთ GND– ს 0V– ზე). რა კავშირშია ეს იმასთან, რომ ერთი პინიდან არის გამოვლენილი გადამრთველები? აბა, გადააბრუნე გვერდი და მე გაჩვენებ!

ნაბიჯი 3: ძაბვის გამყოფი კიბე

ძაბვის გამყოფი კიბე
ძაბვის გამყოფი კიბე

ახლა დავუშვათ, რომ ჩვენ გვაქვს ყველა ჩვენი კონცენტრატორი, შესაძლოა ექვსი ან რვა თუ თექვსმეტი, ყველა დაკავშირებული რეზისტორების საშუალებით და თითოეული მოქმედებს როგორც ძაბვის გამყოფი ისე, რომ როდესაც გადართვის პინის მდგომარეობა იცვლება, ძაბვა იკითხება და ძაბვის დონიდან გამომდინარე, ჩვენ შეუძლია იცოდეს რომელი გადამრთველი იყო მხოლოდ გააქტიურებული. შეხედე ქვემოთ. ქვემოთ მოცემულ სურათზე, მე დავუკავშირე კონცენტრატორების ორი ბლოკი. ყველაზე მეტად ბლოკს აქვს ორი კონცენტრატორი, ხოლო ქვედა ბლოკს აქვს ხუთი გადამრთველი. თქვენ შეგიძლიათ დააკავშიროთ თქვენი ცალკეული გადამრთველი, წამიერი, ტაქტილური და სხვა გადამრთველები ანალოგიურად. მთავარია, რომ შენიშნოთ არის რეზისტორი, რომელსაც თქვენი გადამრთველი უკავშირდება. ჩემს მაგალითში, მე თითქმის გაორმაგებული მაქვს შემდეგი რეზისტორის წინააღმდეგობა ძაბვის უფსკრული შესაქმნელად, რომლის გაზომვა ადვილია და შეცდომა შეცდომაში არ შეიძლება მოხდეს მის წინ ან მის შემდეგ. თუ აქამდე არ შეგიმჩნევიათ, გადახედეთ ისევ და მიხვდით, რომ ჩვენ დავუბრუნდით ძველ მეგობარს, წინააღმდეგობის ძაბვის გამყოფს. პირველი რეზისტორი, 10k ohm, უკავშირდება 5V- ს და მე -2 რეზისტორი - რეზისტორი, რომელიც განსაზღვრავს V- სგარეთ SWITCH_ADC პინისთვის, დაკავშირებულია თითოეულ გადამრთველთან და, შესაბამისად, თითოეული გადამრთველი ასოცირდება Vout– ის კონკრეტულ ძაბვასთან, რომლის წაკითხვა შესაძლებელია SWITCH_ADC– ზე დაკავშირებული ADC პინიდან. შემდეგი, განსაზღვრეთ მოსალოდნელი Vout თითოეული გადამრთველიდან ასე

Vout = Vin * (R2 / (R1 + R2))

ერთი გადართვისთვის:

Vout = 5V * (500 / (10000 + 500)) = 5 * 0.048 = 0.24V ან 240 mV

მეორე გადართვისთვის:

Vout = 5V * (2200 / (10000 + 2200)) = 5 * 0.18 = 0.9V ან ~ 900mV

და ასე შემდეგ.. მოგერიდებათ ჩაანაცვლოთ თქვენი საკუთარი მნიშვნელობებით R2, თუ თქვენ გაქვთ მხოლოდ გარკვეული რეზისტორები მოსახერხებელი … აქ მთავარია, რომ კონცენტრატორებს შორის იყოს ძაბვის საკმაოდ ფართო უფსკრული ისე, რომ ADC– ს შეცდომის ზღვარი მოიგოს” არ დაგაყენებთ ძაბვას მეზობელი გადამრთველისგან. მე აღმოვაჩინე უადვილესი რამ არის გამყოფი კიბის აშენება და მულტიმეტრი/ვოლტმეტრი ADC პინზე და დააჭირეთ თითოეულ პინზე და ნახეთ რა ღირებულებებს მიიღებთ. ისინი საკმაოდ კარგად უნდა იყვნენ გათვლილი. მას შემდეგ რაც თქვენ მიიღებთ ძაბვის ყველა მოსალოდნელ მნიშვნელობას თითოეული გადამრთველიდან კონკრეტული რეზისტორის გამოყენებით, მაშინ შეგიძლიათ თქვენი MCU წაიკითხოთ ADC პინი და შეადაროთ იგი თქვენს ცნობილ მნიშვნელობებს, რათა დადგინდეს რომელი გადამრთველი იყო დაჭერილი. მაგალითად, თქვით, რომ თქვენ დაარეგისტრირეთ სერვისის შეწყვეტის რეჟიმი, რომელსაც დარეკავთ, როდესაც ADC პინზე გამოჩნდება რაიმე ცვლილება. ამ ISR– ში შეგიძლიათ წაიკითხოთ ADC და შეადაროთ ეს მნიშვნელობა თქვენს გადართვის ცხრილს. თუ თქვენ იყენებთ 8 ბიტიან ADC მნიშვნელობას, თქვენი ძაბვა გარდაიქმნება რიცხვში 0-დან 255-მდე, რაც შეესაბამება ძაბვას 0V- დან 5V- მდე. ეს ნიშნავს, რომ თქვენ გაქვთ თქვენი ADC კონფიგურირებული ამ გზით.

ნაბიჯი 4: შეჯამება

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

გირჩევთ: