Სარჩევი:

გამოიყენეთ 1 ანალოგური შეყვანა 6 ღილაკზე Arduino– სთვის: 6 ნაბიჯი
გამოიყენეთ 1 ანალოგური შეყვანა 6 ღილაკზე Arduino– სთვის: 6 ნაბიჯი

ვიდეო: გამოიყენეთ 1 ანალოგური შეყვანა 6 ღილაკზე Arduino– სთვის: 6 ნაბიჯი

ვიდეო: გამოიყენეთ 1 ანალოგური შეყვანა 6 ღილაკზე Arduino– სთვის: 6 ნაბიჯი
ვიდეო: Control 10 output pins or relay using 10 push button switch with 1 Arduino input pin ANPB-V2 2024, ივლისი
Anonim
გამოიყენეთ 1 ანალოგური შეყვანა 6 ღილაკზე Arduino– სთვის
გამოიყენეთ 1 ანალოგური შეყვანა 6 ღილაკზე Arduino– სთვის

ხშირად მიფიქრია, როგორ შემეძლო უფრო მეტი ციფრული შეყვანის მიღება ჩემი არდუინოსთვის. ცოტა ხნის წინ გამიჩნდა აზრი, რომ მე უნდა შემეძლოს ერთი ანალოგური შეყვანის გამოყენება მრავალჯერადი ციფრული შეყვანის შესატანად. მე ჩავატარე სწრაფი ძებნა და აღმოვაჩინე სად შეძლეს ადამიანებმა ამის გაკეთება, მაგრამ ეს მხოლოდ ერთ ღილაკზე დაჭერის საშუალებას იძლეოდა. მე მინდა მქონდეს ღილაკების ნებისმიერი კომბინაცია, რომელიც ერთდროულად უნდა იყოს დაჭერილი. ასე რომ, TINKERCAD CIRCUITS- ის დახმარებით, მე განვახორციელე ამის განხორციელება.

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

წრე, რომლითაც გამოვედი, იყენებს 5V წყაროს, რომელიც ხელმისაწვდომია Arduino– დან და იყენებს 7 რეზისტორს და 6 ღილაკს ან კონცენტრატორს.

ნაბიჯი 1: წრე

წრე
წრე

Arduino– ს აქვს ანალოგური შეყვანა, რომელიც იღებს 0V– დან 5V– მდე შეყვანას. ამ შეყვანის აქვს 10 ბიტიანი გარჩევადობა, რაც იმას ნიშნავს, რომ სიგნალი იყოფა 2^10 სეგმენტად, ანუ 1024 რიცხვად. ამის საფუძველზე, ყველაზე მეტად, რაც კი ოდესმე შეგვეძლო შევსებულიყო ანალოგურ შეყვანისას, ერთდროული დაჭერის დროს, იქნებოდა 10 ღილაკი 1 ანალოგურ შეყვანაზე. მაგრამ, ეს არ არის სრულყოფილი სამყარო. არსებობს წინააღმდეგობა გამტარებში, ხმაური გარე წყაროებიდან და არასრულყოფილი ძალა. ასე რომ, საკუთარი თავისთვის მოქნილობის უზრუნველსაყოფად, მე ვგეგმავდი ამ დიზაინის შექმნას 6 ღილაკისთვის. ამაზე ნაწილობრივ იმოქმედა იმ ფაქტმა, რომ TinkerCAD სქემებს ჰქონდათ 6-გადამრთველი DIP გადამრთველი ობიექტი, რაც ტესტირებას გაადვილებდა.

ჩემი დიზაინის პირველი ნაბიჯი იყო დარწმუნებულიყო, რომ თითოეული ღილაკი, ინდივიდუალურად დაჭერისას, უზრუნველყოფდა უნიკალურ ძაბვას. ეს გამორიცხავს, რომ ყველა რეზისტორი იყოს იგივე ღირებულებით. შემდეგი ნაბიჯი იყო ის, რომ წინააღმდეგობის მნიშვნელობები, როდესაც პარალელურად დაემატებოდა, არ შეიძლებოდა ჰქონოდა იგივე წინააღმდეგობა, როგორც რეზისტორის ერთი მნიშვნელობა. როდესაც რეზისტორები დაკავშირებულია პარალელურად, შედეგად მიღებული წინააღმდეგობა შეიძლება გამოითვალოს Rx = 1/[(1/R1)+(1/R2)]. ასე რომ, თუ R1 = 2000 და R2 = 1000, Rx = 667. მე ვვარაუდობდი, რომ თითოეული რეზისტორის ზომის გაორმაგებით, მე ვერ ვხედავ ერთსა და იმავე წინააღმდეგობას რომელიმე კომბინაციისთვის.

ამრიგად, ჩემს წრედ ამ წერტილამდე უნდა ჰქონოდა 6 კონცენტრატორი, თითოეულს თავისი რეზისტორი. მაგრამ, კიდევ ერთი რეზისტენტულია საჭირო ამ წრის დასასრულებლად.

ბოლო რეზისტორს აქვს 3 მიზანი. პირველი, ის მოქმედებს როგორც Pull-Down რეზისტორი. რეზისტორის გარეშე, როდესაც ღილაკებს არ დააჭერთ, წრე არასრულია. ეს საშუალებას მისცემს არდუინოს ანალოგიურ შეყვანის ძაბვას დაძაბოს ნებისმიერი ძაბვის პოტენციალზე. Pull-Down რეზისტორი არსებითად ამცირებს ძაბვას 0 ვ-მდე. მეორე მიზანი არის ამ წრის დენის შეზღუდვა. ომის კანონი აცხადებს, რომ V = IR, ან ძაბვა = დენი გამრავლებული წინააღმდეგობაზე. მოცემული ძაბვის წყაროსთან, რაც უფრო დიდია რეზისტორი ნიშნავს, რომ დენი უფრო მცირე იქნება. ასე რომ, თუ 5 ვ სიგნალი გამოიყენებოდა 500 ოჰმ რეზისტორზე, ყველაზე დიდი დენი, რომელსაც ჩვენ ვხედავთ, იქნება 0.01 ა, ანუ 10 მამ. მესამე მიზანი არის სიგნალის ძაბვის უზრუნველყოფა. მთლიანი დენი, რომელიც გადის ბოლო რეზისტორში იქნება: i = 5V/Rtotal, სადაც Rtotal = Rlast+{1/[(1/R1)+(1/R2)+(1/R3)+(1/R4)+ (1/R5)+(1/R6)]}. ამასთან, ჩართეთ მხოლოდ 1/Rx თითოეული რეზისტორისთვის, რომელსაც აქვს შესაბამისი ღილაკი დაჭერილი. მთლიანი დენიდან, ანალოგური შეყვანისთვის მიწოდებული ძაბვა იქნება i*Rlast, ან i*500.

ნაბიჯი 2: დადასტურება - Excel

მტკიცებულება - Excel
მტკიცებულება - Excel

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

მე შევქმენი ჩამრთველი შეყვანის ყველა შესაძლო კომბინაცია და მოვაწყე ეს თანმიმდევრულად ორობითი შაბლონები. "1" მნიშვნელობა მიუთითებს, რომ გადამრთველი ჩართულია, ცარიელი მიუთითებს, რომ ის გამორთულია. ცხრილის ზედა ნაწილში, მე ჩავსვამ წინააღმდეგობის მნიშვნელობებს თითოეული გადამრთველისთვის და ჩამოსაშლელი რეზისტორისთვის. შემდეგ გამოვთვალე ექვივალენტური წინააღმდეგობა თითოეული კომბინაციისთვის, გარდა იმ შემთხვევისა, როდესაც ყველა რეზისტორი გამორთულია, რადგან ამ რეზისტორებს არ ექნებათ გავლენა ენერგიის წყაროს გარეშე. იმისათვის, რომ გამოთვლები გამიადვილდეს, რათა თითოეულ კომბინაციაზე დავაკოპირო და ჩასვა, გამოთვლაში შევიტანე ყველა კომბინაცია თითოეული გადართვის მნიშვნელობის (0 ან 1) გამრავლებით მისი შემობრუნებული წინააღმდეგობის მნიშვნელობით. ამით აღმოიფხვრა მისი წინააღმდეგობა გაანგარიშებიდან, თუ გადამრთველი გამორთული იყო. შედეგად მიღებული განტოლება ჩანს ცხრილის სურათში, მაგრამ Req = Rx + 1/(Sw1/R1 + Sw2/R2 + Sw3/R3 + Sw4/R4 + Sw5/R5 + Sw6/R6). Itotal = 5V / Req- ის გამოყენებით, ჩვენ განვსაზღვრავთ მთლიანი დენი წრეში. ეს არის იგივე მიმდინარეობა, რომელიც გადის Pull-down resistor– ით და გვაძლევს ძაბვას ჩვენს ანალოგიურ შეყვანისას. ეს გამოითვლება როგორც Vin = Itotal x Rx. როგორც Req მონაცემების, ასევე Vin მონაცემების შესწავლით, ჩვენ ვხედავთ, რომ ჩვენ ნამდვილად გვაქვს უნიკალური ღირებულებები.

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

ნაბიჯი 3: Arduino პროგრამირება

არდუინოს პროგრამირება
არდუინოს პროგრამირება
არდუინოს პროგრამირება
არდუინოს პროგრამირება
არდუინოს პროგრამირება
არდუინოს პროგრამირება

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

აქ არის სწრაფი გაკვეთილი, თუ როგორ უნდა დადგინდეს ხაზის განტოლება Excel- ში.

1) შეარჩიეთ უჯრედი, რომელიც არ შეიცავს მონაცემებს. თუ თქვენ გაქვთ შერჩეული უჯრედი, რომელსაც აქვს მონაცემები, Excel შეეცდება გამოიცნოს რა გსურთ გახადოთ ტენდენცია. ეს გაცილებით ართულებს ტენდენციის შექმნას, რადგან Excel იშვიათად სწორად პროგნოზირებს.

2) აირჩიეთ "ჩასმა" ჩანართი და აირჩიეთ "გაფანტვის" სქემა.

3) დააჭირეთ მარჯვენა ღილაკს დიაგრამის ყუთში და დააწკაპუნეთ "აირჩიეთ მონაცემები …". ამის შემდეგ გამოჩნდება ფანჯარა "აირჩიეთ მონაცემთა წყარო". მონაცემების არჩევის გასაგრძელებლად აირჩიეთ ღილაკი დამატება.

4) მიეცი მას სერიის სახელი (სურვილისამებრ). შეარჩიეთ დიაპაზონი X- ღერძისთვის ზემოთ ისრის დაჭერით და შემდეგ ძაბვის მონაცემების არჩევით. აირჩიეთ დიაპაზონი Y- ღერძისათვის ისრის ზემოთ დაწკაპუნებით და შემდეგ აირჩიეთ მთლიანი მონაცემები (0-63).

5) მარჯვენა ღილაკით დააწკაპუნეთ მონაცემთა წერტილებზე და აირჩიეთ "ტრენდლაინის დამატება …" "ფორმატის ტრენდის ხაზის" ფანჯარაში აირჩიეთ პოლინომიალური ღილაკი. ტენდენციის შემყურე, ჩვენ ვხედავთ, რომ 2 -ის ორდენი არ ემთხვევა. მე შევარჩიე 3 -ე ორდენი და ვიგრძენი, რომ ეს ბევრად უფრო ზუსტი იყო. შეარჩიეთ ჩამრთველი "განტოლების ჩვენება დიაგრამაზე". საბოლოო განტოლება ახლა ნაჩვენებია დიაგრამაზე.

6) შესრულებულია.

ᲙᲐᲠᲒᲘ. დავუბრუნდეთ არდუინოს პროგრამას. ახლა, როდესაც გვაქვს განტოლება, არდუინოს დაპროგრამება ადვილია. მთელი რიცხვი, რომელიც წარმოადგენს გადართვის პოზიციებს, გამოითვლება კოდის 1 სტრიქონში. "Bitread" ფუნქციის გამოყენებით, ჩვენ შეგვიძლია მივიღოთ თითოეული ბიტის მნიშვნელობა და ამით ვიცოდეთ თითოეული ღილაკის მდგომარეობა. (იხილეთ ფოტოები)

ნაბიჯი 4: TinkerCAD სქემები

TinkerCAD სქემები
TinkerCAD სქემები

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

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

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

შემდეგ მე შევცვალე ყველა გადამრთველი ყველა შესაძლო კომბინაციისთვის და ვამაყობ, რომ ვამბობ "მუშაობს" !!!

ნაბიჯი 5: "ასე დიდხანს და მადლობა ყველა თევზისთვის". (ref.1)

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

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

გთხოვთ დატოვეთ კომენტარები თუ თქვენ სცადეთ ამ დაბრკოლების დაძლევა და როგორ მოაგვარეთ იგი. დიდი სიამოვნებით ვისწავლი ამას.

ნაბიჯი 6: მითითებები

თქვენ არ ფიქრობდით, რომ ციტირებას გავაკეთებდი მისი წყაროს მითითების გარეშე?

ref 1: ადამსი, დუგლასი. ასე დიდხანს და მადლობა ყველა თევზისთვის. (ავტოსტოპერის გალაქტიკის გზამკვლევის მე -4 წიგნი "ტრილოგია")

გირჩევთ: