Სარჩევი:
- ნაბიჯი 1: აუცილებელი (არა ნამდვილად)
- ნაბიჯი 2: ძაბვის გამყოფი
- ნაბიჯი 3: ძაბვის გამყოფი კიბე
- ნაბიჯი 4: შეჯამება
ვიდეო: როგორ წავიკითხოთ ბევრი კონცენტრატორი ერთი MCU პინით: 4 ნაბიჯი
2024 ავტორი: John Day | [email protected]. ბოლოს შეცვლილი: 2024-01-30 10:22
ოდესმე გულახდილხართ პროექტზე (პროექტებზე) და პროექტი სულ უფრო იზრდება და იზრდება, მაშინ როდესაც თქვენ მას უფრო მეტ ნივთს დაამატებთ (ჩვენ ამას ვეძახით დამღუპველ კრეატივიზმს)? ბოლო პროექტზე, მე ვაშენებდი სიხშირის მრიცხველს და დავამატე ხუთი ფუნქციის სიგნალის გენერატორი/სიხშირის სინთეზატორი. მალე უფრო მეტი გადამრთველი გამოვიყენე, ვიდრე დარჩენილი ქინძისთავები დამრჩა, მაშ რა უნდა გააკეთოს ბიჭმა?
თუმცა, მე მალევე მქონდა კიდევ შვიდი გადამრთველი ჩემს 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 ქინძისთავების შესანახად. ძლიერი მექანიზმი გადართვის წვდომის დასადგენად.
გირჩევთ:
როგორ წავიკითხოთ ელექტროენერგიის მრიცხველი არდუინოს საშუალებით: 3 ნაბიჯი
როგორ წავიკითხოთ ელექტროენერგიის მრიცხველი არდუინოს საშუალებით: ხშირად საინტერესო იქნებოდა იცოდეთ თქვენი სახლის ამჟამინდელი ენერგიის მოხმარება ან ენერგიის მთლიანი მოხმარება ელექტროენერგიის ხარჯების შეზღუდვისა და გარემოს დაცვის მიზნით. ეს ნამდვილად არ არის პრობლემა, რადგან ძირითადად ნახავთ ჭკვიან ციფრულ ელ
როგორ წავიკითხოთ DHT მონაცემები LCD– ზე ჟოლოს Pi გამოყენებით: 6 ნაბიჯი
როგორ წავიკითხოთ DHT მონაცემები LCD– ზე ჟოლოს პი გამოყენებით: ტემპერატურა და ფარდობითი ტენიანობა არის მნიშვნელოვანი ამინდის პირობები გარემოში. ეს ორი შეიძლება იყოს მონაცემები, რომელსაც მინი ამინდის სადგური აწვდის. თქვენი ტემპერატურისა და შედარებით ტენიანობის წაკითხვა ჟოლოს პიით შესაძლებელია მიღწეული იქნას სხვადასხვა სახის
როგორ წავიკითხოთ მრავალი ანალოგური მნიშვნელობა ერთი ანალოგური პინის გამოყენებით: 6 ნაბიჯი (სურათებით)
როგორ წავიკითხოთ მრავალი ანალოგური მნიშვნელობა ერთი ანალოგური პინის გამოყენებით: ამ გაკვეთილში მე ვაპირებ გაჩვენოთ როგორ წაიკითხოთ მრავალი ანალოგური მნიშვნელობა მხოლოდ ერთი ანალოგური შეყვანის პინის გამოყენებით
როგორ მართოთ ბევრი ები რამდენიმე მიკროკონტროლერის ქინძისთავებიდან .: 6 ნაბიჯი (სურათებით)
როგორ მართოთ ბევრი LED- ები რამდენიმე მიკროკონტროლერის ქინძისთავებიდან: იმის გათვალისწინებით, რომ ბევრ მიკროკონტროლერის ქინძისთავს აქვს სამი მდგომარეობა (+V, GND, ან "მაღალი წინაღობა", შეგიძლიათ მართოთ N*(N-1) LED- ები N ქინძისთავებიდან ასე რომ, პატარა 8 პინიან მიკროკონტროლერს, როგორიცაა PIC12Fxxx ან ATtiny11, შეუძლია მართოს 20 LED ები ხუთ ხელმისაწვდომზე
გააკონტროლეთ ყველაფერი ერთი AVR პინით: 4 ნაბიჯი
გააკონტროლეთ ყველაფერი ერთი AVR პინით: ეს ინსტრუქცია გვიჩვენებს, თუ როგორ უნდა ვაკონტროლოთ ჯგუფის ლიდერები ერთი მიკროპროცესორული გამომუშავებით. მიკრო რომელსაც მე ვიყენებ არის Atmel Attiny2313