Სარჩევი:

DIP Tune Selector 1 პინის გამოყენებით: 4 ნაბიჯი
DIP Tune Selector 1 პინის გამოყენებით: 4 ნაბიჯი

ვიდეო: DIP Tune Selector 1 პინის გამოყენებით: 4 ნაბიჯი

ვიდეო: DIP Tune Selector 1 პინის გამოყენებით: 4 ნაბიჯი
ვიდეო: ქარგვის მანქანის ელექტრონული დიაგრამა @hass indoembro 2024, ნოემბერი
Anonim
DIP მელოდიის ამომრჩევი 1 პინის გამოყენებით
DIP მელოდიის ამომრჩევი 1 პინის გამოყენებით

რამდენიმე ხნის წინ მე ვმუშაობდი პროექტზე "მუსიკალური ყუთი", რომელიც საჭიროებდა 10 სხვადასხვა მელოდიის ამონარიდს შორის არჩევანის გაკეთებას. ნატურალური არჩევანი კონკრეტული მელოდიის არჩევისთვის იყო 4 პინიანი დიპლომატიური გადამრთველი, რადგანაც 4 გადამრთველი იძლევა 2 -ს4= 16 სხვადასხვა პარამეტრი. ამასთან, ამ მიდგომის უხეში ძალის განხორციელება მოითხოვს მოწყობილობის 4 პინს, თითო თითოეულ გადამრთველზე. ვინაიდან მე ვგეგმავდი ATtiny85– ის გამოყენებას განვითარებისთვის, 4 ქინძისთავის დაკარგვა ძალიან ბევრი იყო. საბედნიეროდ, მე წავაწყდი სტატიას, რომელიც აღწერს 1 ანალოგური პინის გამოყენების ინტელექტუალურ მეთოდს მრავალჯერადი გადართვის შეყვანის დასამუშავებლად.

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

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

ნაბიჯი 1: საჭირო აპარატურა

საჭირო აპარატურა
საჭირო აპარატურა

UNO- ს გამოყენება როგორც განხორციელების პლატფორმა ამცირებს საჭირო აპარატურის კომპონენტების რაოდენობას. მრავალფუნქციური გადართვის შეყვანის მეთოდის განხორციელება მოითხოვს მხოლოდ 4 პინიან დიპლომატს, ძაბვის გამყოფისთვის გამოყენებულ 5 რეზისტორს და კავშირებისათვის მავთულხლართებს. მუსიკალური ყუთის მელოდიის ამომრჩევის განსახორციელებლად კონფიგურაციას ემატება პიეზო ზუზერი. სურვილისამებრ, გამოყენებული დიპლომატიური გადამრთველის ტიპზეა დამოკიდებული, გამოსაყენებლად გამოიყენეთ 2x4 8 პინიანი ბუდე, რომ დიპლომატიური გადამრთველი დააკავშიროთ პურის დაფაზე, რადგან სტანდარტული ჩამრთველი ქინძისთავები, როგორც ჩანს, გამზადებულია პერფორდზე დასაკავშირებლად და არა უშუალოდ დაფაზე. სოკეტი ასტაბილურებს ამომრთველ კავშირებს და იცავს გადამრთველის ადვილად აწევას გადამრთველების გადამრთველების დაყენებისას.

სახელი შესაძლო წყარო როგორ გამოიყენება
4 პინიანი დიპლომატიური გადამრთველი შერჩევის შერჩევა
2x4 pin სოკეტი (სურვილისამებრ) ამაზონი უმეტეს ჩამრთველ ჩამრთველებს პოსტი არ უჭირავთ გადამრთველს ძალიან კარგად. სოკეტი ხელს უწყობს კავშირის გამყარებას. ალტერნატივაა დიპლომატიური გადამრთველის პოვნა, რომელიც ნამდვილად დამზადებულია პურის დაფისთვის, რეგულარული IC ქინძისთავებით.

რეზისტორები:

  • 10K x2
  • 20K
  • 40K
  • 80 ათასი
განახორციელეთ ძაბვის გამყოფი
პასიური პიეზო ზუზუნი ამაზონი დაუკარით მელოდიას, როგორც აპლიკაცია მართავს არდუინოს ტონის ფუნქციის საშუალებით

ნაბიჯი 2: მრავალფუნქციური მეთოდის ახსნა

მრავალფუნქციური გადართვის მეთოდის ახსნა
მრავალფუნქციური გადართვის მეთოდის ახსნა

ეს ნაწილი განიხილავს მრავალფუნქციური გადართვის მეთოდის ძირითად კონცეფციებს და შეიმუშავებს განტოლებებს, რომლებიც საჭიროა ცალკეული იდენტიფიკატორების დამოუკიდებელი გაანგარიშებისთვის 16 შესაძლო დიპლომატიური გადართვის პარამეტრების თითოეული კონფიგურაციისათვის. ეს იდენტიფიკატორები შეიძლება გამოყენებულ იქნას პროგრამულ პროგრამაში, გადამრთველის კონფიგურაციის მოქმედებასთან დასაკავშირებლად. მაგალითად, შეიძლება დაგჭირდეთ პარამეტრი - ჩართეთ 1 ჩართეთ, გამორთეთ 2, გამორთეთ 3, გამორთეთ 4 (1, 0, 0, 0) - ითამაშეთ Amazing Grace და (0, 1, 0, 0) ლომს სძინავს ამაღამ. მოკლედ და ლაკონურად კონფიგურაციის იდენტიფიკატორები დოკუმენტის დანარჩენ ნაწილში შედარებითია.

გამოსახულება
გამოსახულება

მრავალფუნქციური გადართვის მეთოდის ფუნდამენტური კონცეფცია არის ძაბვის გამყოფი წრე, რომელიც შედგება სერიის 2 რეზისტორისგან, რომელიც დაკავშირებულია შეყვანის ძაბვასთან. გამომავალი ძაბვის დენი დაკავშირებულია რეზისტორებს შორის, R1 და რ2, როგორც ნაჩვენებია ზემოთ. გამყოფი გამომავალი ძაბვა გამოითვლება, როგორც შემავალი ძაბვა გამრავლებული რეზისტორის R თანაფარდობით2 R- ის ჯამამდე1 და რ2 (განტოლება 1). ეს თანაფარდობა ყოველთვის 1 -ზე ნაკლებია, ამიტომ გამომავალი ძაბვა ყოველთვის უფრო მცირეა ვიდრე შეყვანის ძაბვა.

როგორც ზემოთ აღინიშნა დიზაინის დიაგრამაში, მრავალფუნქციური გადამრთველი კონფიგურებულია როგორც ძაბვის გამყოფი R- ით2 ფიქსირებული და რ1 კომპოზიტური/ექვივალენტური წინააღმდეგობის ტოლი 4 დიპლომატიური გადამრთველის რეზისტენტებისთვის. R- ის მნიშვნელობა1 დამოკიდებულია იმაზე, თუ რომელი დიპლომატიური ჩართვაა ჩართული და, შესაბამისად, ხელს უწყობს კომპოზიტურ წინააღმდეგობას. ვინაიდან დიპლომის გადამრთველები პარალელურად არიან, წინააღმდეგობის გაანგარიშების ექვივალენტი განტოლებაა ნათქვამი კომპონენტის რეზისტორების საპასუხო ურთიერთობების თვალსაზრისით. ჩვენი კონფიგურაციისთვის და იმ შემთხვევისთვის, როდესაც ყველა გადამრთველი ჩართულია, განტოლება ხდება

1/რ1 = 1/80000 + 1/40000 + 1/20000 + 1/10000

1 = 5333.33 ვოლტი იმის გათვალისწინებით, რომ პარამეტრების უმეტესობას აქვს მინიმუმ ერთი გადამრთველი გამორთული, გადართვის მდგომარეობა გამოიყენება როგორც მულტიპლიკატორი:

1/რ1 = ს1*1/80000 + წ2*1/40000 + წ3*1/20000 + წ4*1/10000 (2)

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

კოეფიციენტი = რ2/(რ1+რ2) = 10000/(5333.33+10000) =.6522

პროგნოზირებული შედარების მნიშვნელობის გაანგარიშების ბოლო ნაბიჯი არის RATIO- ს გამრავლება 1023 -ით, რათა გამოვხატოთ ანალოგური ფუნქციის ეფექტი. მაშინ არის იდენტიფიკატორი იმ შემთხვევისთვის, როდესაც ყველა გადამრთველი ჩართულია

შედარება15 = 1023*.6522 = 667

ყველა განტოლება ახლა იდენტიფიკატორების გამოსათვლელად არის შესაძლებელი გადართვის 16 შესაძლო პარამეტრისათვის. Შეჯამება:

  1. 1 გამოითვლება 2 განტოლების გამოყენებით
  2. 1 და რ2 გამოიყენება დაკავშირებული წინააღმდეგობის კოეფიციენტის გამოსათვლელად
  3. RATIO გამრავლებულია 1023 -ით, რათა მივიღოთ შედარებითი მნიშვნელობა
  4. სურვილისამებრ, პროგნოზირებული გამომავალი ძაბვა ასევე შეიძლება გამოითვალოს როგორც RATIO*Vin

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

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

შემდეგი დემო პროგრამა ასახავს შედარების გამოყენებას დიპლომატიური გადართვის ამჟამინდელი პარამეტრის დასადგენად. თითოეულ პროგრამულ ციკლში ანალოგიკითხვა ხორციელდება მიმდინარე კონფიგურაციის იდენტიფიკატორის მისაღებად. ეს იდენტიფიკატორი შედარებული იქნება შედარების სიაში, სანამ დამთხვევა არ მოიძებნება ან სია ამოიწურება. თუ შესატყვისი მოიძებნა, გამომავალი შეტყობინება გაიცემა გადამოწმებისთვის; თუ არ იქნა ნაპოვნი გაფრთხილება გაიცემა. 3 წამიანი შეფერხება ჩადებულია მარყუჟში ისე, რომ სერიული გამომავალი ფანჯარა არ იყოს გადატვირთული შეტყობინებებით და გარკვეული დრო მისცეს დიპლომატიური გადამრთველის კონფიგურაციის გადატვირთვისთვის.

//-------------------------------------------------------------------------------------

// დემო პროგრამა, რომ წაიკითხოს ძაბვის გამყოფი გამომავალი და გამოიყენოს იგი // მიმდინარე დიპლომატიური გადართვის კონფიგურაციის იდენტიფიცირებისთვის, თითოეული შესაძლო პარამეტრისათვის გამომავალი მნიშვნელობის // მასივის // მასივის მასივებში გადახედვით. საძიებო მასივის მნიშვნელობები შეიძლება // მიიღოთ კონფიგურაციის წინა გაშვებიდან ან გაანგარიშებით // ძირითადი განტოლებების საფუძველზე. // ---------------------------------------------------- -------------------------------------- int comparator [16] = {0, 111, 203, 276, 339, 393, 434, 478, 510, 542, 567, 590, 614, 632, 651, 667}; // ცვლადების დამუშავების განსაზღვრა int dipPin = A0; // ძაბვის გამყოფის ანალოგური პინი int dipIn = 0; // ინახავს გამყოფი ძაბვის გამომუშავებას analogRead int ითარგმნება = 0; // მარყუჟის მრიცხველი int epsilon = 7; // შედარების ინტერვალი ნახევრად სიგანე bool dipFound = false; // ჭეშმარიტი, თუ მიმდინარე ძაბვის გამყოფი გამომავალი ნაპოვნია ცხრილში void setup () {pinMode (dipPin, INPUT); // ძაბვის გამყოფი პინის კონფიგურაცია, როგორც INPUT Serial.begin (9600); // სერიული კომუნიკაციის ჩართვა} void loop () {დაგვიანებით (3000); // შეინარჩუნეთ გამომავალი გადახვევა ძალიან სწრაფად // ინიციალიზება საძიებელი პარამეტრების რაოდენობა = 0; dipFound = ყალბი; // მიმდინარე გამომავალი ძაბვის წაკითხვა და დოკუმენტირება dipIn = analogRead (dipPin); Serial.print ("გამყოფი გამომავალი"); Serial.print (dipIn); // მოძებნეთ შედარების სია მიმდინარე მნიშვნელობისათვის ((რაოდენობა <16) && (! DipFound)) {if (abs (dipIn - comparator [count]) <= epsilon) {// იპოვა ის dipFound = true; Serial.print ("ნაპოვნია შესვლისას"); სერიული. ბეჭდვა (რაოდენობა); Serial.println ("მნიშვნელობა" + სიმებიანი (შედარებითი [რაოდენობა])); შესვენება; } დათვლა ++; } if (! dipFound) {// მნიშვნელობა არ არის ცხრილში; არ უნდა მოხდეს Serial.println ("ოოპ! არ მოიძებნა; ჯობია დაურეკო მოჩვენებათა დამცველებს"); }}

ნაბიჯი 3: შედარების ცხრილი

გამოსახულება
გამოსახულება

გამოთვლები 16 შედარების მნიშვნელობებისთვის მოცემულია ცხრილში, რომელიც ნაჩვენებია ზემოთ. თანმხლები Excel ფაილი შეგიძლიათ ჩამოტვირთოთ ამ განყოფილების ბოლოში.

ცხრილების სვეტები A-D ჩაწერს დიპლომატიური გადამრთველის რეზისტორის მნიშვნელობებს და 16 შესაძლო გადართვის პარამეტრებს. გთხოვთ გაითვალისწინოთ, რომ მყარი დიზაინის დიაგრამაში ნაჩვენები აპარატურის DIP გადართვა ფაქტიურად დანომრილია მარცხნიდან მარჯვნივ ნაცვლად ცხრილში ნაჩვენები ნუმერაციისა მარცხნიდან მარჯვნივ. მე აღმოვაჩინე ეს გარკვეულწილად დამაბნეველი, მაგრამ ალტერნატივამ არ დააყენა "1" კონფიგურაცია (0, 0, 0, 1) სიის პირველ ნაწილში. სვეტი E იყენებს წინა ნაწილის ფორმულას 2 ძაბვის გამყოფის ექვივალენტური წინააღმდეგობის გამოსათვლელად R1 პარამეტრისთვის. სვეტი F იყენებს ამ შედეგს, რათა გამოთვალოს ასოცირებული წინააღმდეგობა RATIO, და, საბოლოოდ, G სვეტი ამრავლებს RATIO– ს ანალოგიით წაკითხვის მაქსიმალურ მნიშვნელობას (1023), რათა მიიღოთ სავარაუდო შედარების მნიშვნელობა. ბოლო 2 სვეტი შეიცავს რეალურ მნიშვნელობებს დემო პროგრამის გაშვებასთან ერთად, განსხვავებებს პროგნოზირებულსა და რეალურ მნიშვნელობებს შორის.

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

ნაბიჯი 4: ითამაშეთ სრულყოფილი

ითამაშეთ ჰანგზე
ითამაშეთ ჰანგზე

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

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

შერჩევა და იდენტიფიკაცია ხდება შემდეგნაირად:

  1. "მომხმარებელი" აყენებს ამომრთველებს სასურველ მელოდიასთან დაკავშირებულ კონფიგურაციაში
  2. პროგრამის თითოეული ციკლის ციკლის იდენტიფიკატორი მიმდინარე დიპლომატიური გადართვის პარამეტრებისათვის მიიღება analogRead- ის საშუალებით
  3. ნაბიჯი 2 კონფიგურაციის იდენტიფიკატორი შევადაროთ თითოეულ შედარებას არსებული მელოდიების სიაში
  4. თუ დამთხვევა იქნა ნაპოვნი, playTune– ის რუტინას ეწოდება ინფორმაცია, რომელიც საჭიროა სრულყოფილი ჩანაწერების სიაში შესასვლელად

    Arduino- ს ტონის ფუნქციის გამოყენებით თითოეული ნოტი უკრავს ზუზერის საშუალებით

  5. თუ შესატყვისი ვერ მოიძებნა, არანაირი ქმედება არ ხდება
  6. გაიმეორეთ 1-5

DIP გადამრთველის პარამეტრები ხელმისაწვდომი მელოდიებისთვის ნაჩვენებია ქვემოთ მოცემულ ცხრილში, სადაც 1 ნიშნავს, რომ ჩართულია ჩართვა, 0 გამორთულია. შეგახსენებთ, რომ დიპლომის გადამრთველის ორიენტაციის გზა ათავსებს ჩამრთველს 1 მარცხენა პოზიციაში (ის, რაც დაკავშირებულია 80K რეზისტორთან).

სახელი გადართვა 1 გადართვა 2 გადართვა 3 გადართვა 4
დენი ბიჭი 1 0 0 0
Პატარა დათვი 0 1 0 0
ლომს სძინავს ამაღამ 1 1 0 0
არავინ იცის უბედურება 0 0 1 0
Საოცარი მადლი 0 0 0 1
Ცარიელი სივრცე 1 0 0 1
დამცინავი ფრინველის გორა 1 0 1 1

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

გირჩევთ: