Përmbajtje:

Përzgjedhësi i akordimit DIP duke përdorur 1 kunj: 4 hapa
Përzgjedhësi i akordimit DIP duke përdorur 1 kunj: 4 hapa

Video: Përzgjedhësi i akordimit DIP duke përdorur 1 kunj: 4 hapa

Video: Përzgjedhësi i akordimit DIP duke përdorur 1 kunj: 4 hapa
Video: Таких голубцов вы не ели никогда!!! Обязательно приготовьте!!! Пошаговый рецепт 2024, Nëntor
Anonim
Përzgjedhësi i akordimit të DIP -it duke përdorur 1 kunj
Përzgjedhësi i akordimit të DIP -it duke përdorur 1 kunj

Pak kohë më parë punova në një projekt "kuti muzikore" që duhej të zgjidhte midis 10 copave të ndryshme të melodisë. Një zgjedhje e natyrshme për zgjedhjen e një melodie të veçantë ishte një ndërprerës me 4 pin meqë 4 ndërprerës sigurojnë 24= 16 cilësime të ndryshme. Sidoqoftë, zbatimi i forcës brutale për këtë qasje kërkon 4 kunja të pajisjes, një për secilin ndërprerës. Meqenëse po planifikoja të përdor ATtiny85 për zhvillim, humbja e 4 kunjave ishte pak a shumë. Për fat të mirë, hasa në një artikull i cili përshkruan një metodë gjeniale për përdorimin e 1 kunji analog për të trajtuar hyrje të shumta të ndërprerësve.

Teknika me shumë ndërprerës; 1 hyrje përdor një qark të Ndarësit të Tensionit për të siguruar një vlerë unike të plotë për secilën nga 16 kombinimet e mundshme të vendosjes së ndërprerësit. Ky grup prej 16 identifikuesish të plotë përdoret më pas në programin e aplikacionit për të lidhur një veprim me një cilësim.

Ky udhëzues përdor metodën multi-switch për të zbatuar përzgjedhjen e melodisë për aplikacionin e kutisë muzikore. Melodia e zgjedhur pastaj luhet përmes një zile piezo duke përdorur funksionin e tonit Arduino.

Hapi 1: Hardueri i kërkuar

Hardueri i kërkuar
Hardueri i kërkuar

Përdorimi i UNO si platforma e zbatimit minimizon numrin e komponentëve të kërkuar të harduerit. Zbatimi i metodës së hyrjes me shumë ndërprerës kërkon vetëm një ndërprerës me 4 kunja, 5 rezistorët e përdorur për ndarjen e tensionit dhe tela lidhës për lidhjet. Një zile piezo i shtohet konfigurimit për zbatimin e përzgjedhësit të melodisë së kutisë muzikore. Opsionale, në varësi të llojit të ndërprerësit të përdorur, është e dobishme të përdorni një prizë 2x4 me 8 kunja për të lidhur çelësin e zhytjes në dërrasën e bukës, sepse kunjat standarde të ndërprerësit duket se janë bërë për bashkim në një dërrasë që nuk lidhet drejtpërdrejt me një pjatë. Foleja stabilizon lidhjet e ndërprerësit dhe mban ndërprerësin që të mos ngrihet lehtë kur vendosni çelsin e ndërrimit.

Emri Burimi i mundshëm Si Përdoret
Ndërprerës i zhytjes me 4 kunja Zgjedhja e sintonizimit
Fole 2x4 pin (Opsionale) Amazon Postimet në shumicën e ndërprerësve nuk e mbajnë çelësin shumë mirë në një dërrasë buke. Një prizë ndihmon për ta bërë lidhjen më të fortë. Një alternativë është gjetja e një ndërprerësi dip që është bërë vërtet për përdorim në dërrasën e bukës me kunja të rregullta IC.

rezistente:

  • 10K x2
  • 20K
  • 40K
  • 80K
Zbatoni ndarësin e tensionit
zhurmë piezo pasive Amazon Luani melodinë e drejtuar nga aplikacioni përmes funksionit të tonit Arduino

Hapi 2: Metoda me shumë ndërrime Shpjegimi

Metoda me shumë ndërprerës Shpjegimi
Metoda me shumë ndërprerës Shpjegimi

Ky seksion diskuton konceptet themelore për metodën me shumë ndërprerës dhe zhvillon ekuacionet e nevojshme për llogaritjen e pavarur të identifikuesve unikë për secilën prej 16 konfigurimeve të mundshme të vendosjes së ndërprerësit. Këta identifikues mund të përdoren më pas në një program aplikimi për të shoqëruar konfigurimin e ndërprerësit me një veprim. Për shembull, ju mund të dëshironi cilësimin - ndizni 1, fikni 2, fikni 3, fikni 4 (1, 0, 0, 0) - për të luajtur Amazing Grace dhe (0, 1, 0, 0) për të luajtur Luani fle sonte. Për shkurtësinë dhe koncizitetin, identifikuesit e konfigurimit referohen si krahasues në pjesën e mbetur të dokumentit.

Imazhi
Imazhi

Koncepti themelor për metodën me shumë ndërprerës është qarku i Ndarësit të Tensionit i cili përbëhet nga 2 rezistenca në seri të lidhura me një tension hyrës. Plumbi i tensionit të daljes është i lidhur midis rezistencave, R1 dhe R2, siç tregohet më sipër. Tensioni dalës i ndarësit llogaritet si tension i hyrjes shumëzuar me raportin e rezistencës R2 deri në shumën e R1 dhe R2 (ekuacioni 1). Ky raport është gjithmonë më pak se 1 kështu që tensioni i daljes është gjithmonë më i vogël se voltazhi i hyrjes.

Siç tregohet në diagramin e projektimit më sipër, ndërprerësi i shumëfishtë është konfiguruar si një ndarës i tensionit me R2 fikse dhe R1 e barabartë me rezistencën e përbërë/ekuivalente për rezistencat me 4 ndërprerës. Vlera e R1 varet nga cilat çelësa dip janë ndezur dhe, për këtë arsye, duke kontribuar në rezistencën e përbërë. Meqenëse rezistencat e kalimit të zhytjes janë paralele, ekuacioni ekuivalent i llogaritjes së rezistencës është deklaruar në drejtim të reciprokëve të rezistorëve përbërës. Për konfigurimin tonë dhe rastin kur të gjithë çelsat janë të ndezur, ekuacioni bëhet

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

duke dhënë R1 = 5333.33 volt Për të marrë parasysh faktin se shumica e cilësimeve kanë të paktën një nga çelsat e fikur, gjendja e kalimit përdoret si shumëzues:

1/R1 = s1*1/80000 + s2*1/40000 + s3*1/20000 + s4*1/10000 (2)

ku shumëzuesi shtetëror, sune, është e barabartë me 1 nëse çelësi është i ndezur dhe i barabartë me 0 nëse çelësi është i fikur. R1 tani mund të përdoret për të llogaritur raportin e rezistencës të nevojshme në ekuacionin 1. Duke përdorur rastin kur të gjithë çelsat janë të ndezur si shembull përsëri

Raporti = R2/(R1+R2) = 10000/(5333.33+10000) =.6522

Hapi i fundit në llogaritjen e vlerës së parashikuar të krahasuesit është shumëzimi i RATIO me 1023 në mënyrë që të imitohet efekti i funksionit analogRead. Identifikuesi për rastin kur të gjithë çelsat janë të ndezur është atëherë

krahasues15 = 1023*.6522 = 667

Të gjitha ekuacionet tani janë vendosur për llogaritjen e identifikuesve për 16 cilësimet e mundshme të ndërprerësit. Për të përmbledhur:

  1. R1 llogaritet duke përdorur ekuacionin 2
  2. R1 dhe R2 përdoren për të llogaritur raportin e rezistencës së lidhur
  3. RATIO shumëzohet me 1023 për të marrë vlerën krahasuese
  4. sipas dëshirës, tensioni i parashikuar i daljes gjithashtu mund të llogaritet si RATIO*Vin

Grupi i krahasuesve varet vetëm nga vlerat e rezistencës të përdorura për ndarësin e tensionit dhe janë një nënshkrim unik për konfigurimin. Për shkak se tensionet dalëse të ndarësit do të luhaten nga drejtimi në ekzekutim (dhe lexohen për të lexuar), unike në këtë kontekst do të thotë që ndërsa dy grupe identifikuesish mund të mos jenë saktësisht të njëjtë, ato janë aq afër sa dallimet krahasuese të komponentëve bien brenda një paraprake të vogël interval i caktuar. Parametri i madhësisë së intervalit duhet të zgjidhet mjaftueshëm i madh për të llogaritur luhatjet e pritshme, por mjaft i vogël sa që cilësimet e ndryshme të ndërprerësit të mos mbivendosen. Zakonisht 7 funksionon mirë për intervalin me gjysmë gjerësi.

Një grup krahasuesish për një konfigurim të veçantë mund të merren me disa metoda - drejtoni programin demo dhe regjistroni vlerat për secilin cilësim; përdorni tabelën në seksionin tjetër për të llogaritur; kopjoni një grup ekzistues. Siç u përmend më lart, të gjitha grupet ka shumë të ngjarë të jenë paksa të ndryshme, por duhet të funksionojnë. Unë sugjeroj të përdorni grupin e identifikuesve të autorit të metodës për konfigurimin me shumë ndërprerës dhe tabelën nga pjesa tjetër nëse ndonjë nga rezistorët ndryshohet ndjeshëm ose shtohen më shumë rezistorë.

Programi demo i mëposhtëm ilustron përdorimin e krahasuesve për të identifikuar cilësimin aktual të ndërprerësit. Në çdo cikël programi kryhet një analogRead për të marrë një identifikues për konfigurimin aktual. Ky identifikues krahasohet më pas në listën krahasuese derisa të gjendet një ndeshje ose lista të jetë ezauruar. Nëse një ndeshje gjendet një mesazh dalës lëshohet për verifikim; nëse nuk gjendet, lëshohet një paralajmërim. Një vonesë prej 3 sekondash futet në lak në mënyrë që dritarja e daljes serike të mos mbingarkohet me mesazhe dhe të japë pak kohë për të rivendosur konfigurimin e ndërprerësit.

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

// Program demo për të lexuar daljen e ndarësit të tensionit dhe për ta përdorur atë për të identifikuar konfigurimin e kalimit // të dipit të tanishëm duke shikuar vlerën e daljes në një grup vlerash // krahasimi për secilin cilësim të mundshëm. Vlerat në grupin e kërkimit mund // ose të merren nga një ekzekutim i mëparshëm për konfigurimin ose përmes llogaritjes // bazuar në ekuacionet themelore. // ---------------------------------------------------- -------------------------------------- int krahasues [16] = {0, 111, 203, 276, 339, 393, 434, 478, 510, 542, 567, 590, 614, 632, 651, 667}; // Përcaktoni ndryshoret e përpunimit int dipPin = A0; // pin analog për hyrjen e ndarësit të tensionit int dipIn = 0; // mban daljen e tensionit ndarës të përkthyer me analogRead int count = 0; // numëruesi i lakut int epsilon = 7; // intervali i krahasimit gjysmë-gjerësi bool dipFound = false; // e vërtetë nëse dalja aktuale e ndarësit të tensionit gjendet në shikimin e tabelës void setup () {pinMode (dipPin, INPUT); // konfiguroni pinin e ndarësit të tensionit si INPUT Serial.begin (9600); // aktivizo komunikimin serik} loop void () {vonesë (3000); // mbaj daljen nga rrotullimi shumë i shpejtë // Inicializo numërimin e parametrave të kërkimit = 0; dipFound = false; // Lexoni dhe dokumentoni tensionin e daljes aktuale dipIn = analogRead (dipPin); Serial.print ("dalja e ndarësit"); Serial.print (dipIn); // Kërkoni listën e krahasuesit për vlerën aktuale ndërsa ((numëroni <16) && (! DipFound)) {if (abs (dipIn - krahasues [numërimi]) <= epsilon) {// e gjeti dipFound = true; Serial.print ("gjendet në hyrje"); Serial.print (numërimi); Serial.println ("vlera" + String (krahasues [numërimi])); pushim; } numëroni ++; } if (! dipFound) {// vlera jo në tabelë; nuk duhet të ndodhë Serial.println ("OOPS! Nuk u gjet; më mirë telefononi Ghost Busters"); }}

Hapi 3: Tabela e krahasimit

Imazhi
Imazhi

Llogaritjet për 16 vlerat krahasuese janë dhënë në tabelën e paraqitur më sipër. Skedari shoqërues excel është i disponueshëm për shkarkim në fund të këtij seksioni.

Kolonat e tabelave A-D regjistrojnë vlerat e rezistencës së çelësit të zhytjes dhe 16 cilësimet e mundshme të ndërprerësit. Ju lutemi vini re se ndërprerësi i pajisjeve DIP i treguar në diagramin e dizajnit të frigorizuar në të vërtetë numërohet nga e majta në të djathtë në vend të numërimit nga e djathta në të majtë të treguar në spreadsheet. E gjeta disi konfuze, por alternativa nuk e vendos konfigurimin "1" (0, 0, 0, 1) në të parën e listës. Kolona E përdor formulën 2 të seksionit të mëparshëm për të llogaritur rezistencën ekuivalente të Ndarësit të Tensionit R1 për vendosjen. Kolona F përdor këtë rezultat për të llogaritur RATIO -n e rezistencës së lidhur, dhe, së fundi, Kolona G shumëzon RATIO -n me vlerën maksimale të analogRead (1023) për të marrë vlerën e parashikuar të krahasuesit. 2 kolonat e fundit përmbajnë vlerat aktuale nga një ekzekutim i programit demo së bashku me ndryshimet midis vlerave të parashikuara dhe atyre aktuale.

Seksioni i mëparshëm përmendi tre metoda për të marrë një grup vlerash krahasuese duke përfshirë shtrirjen e kësaj spreadsheet nëse vlerat e rezistencës ndryshohen ndjeshëm ose shtohen më shumë çelsa. Duket se ndryshimet e vogla në vlerat e rezistencës nuk ndikojnë dukshëm në rezultatet përfundimtare (gjë që është e mirë pasi që specifikimet e rezistencës japin një tolerancë, të themi 5%, dhe rezistori rrallë është i barabartë me vlerën e tij aktuale të deklaruar).

Hapi 4: Luani një ton

Luaj një ton
Luaj një ton

Për të ilustruar se si mund të përdoret teknika multi-switch në një aplikacion, programi demo i krahasimit nga seksioni "Shpjegimi i metodës" është modifikuar për të zbatuar përpunimin e përzgjedhjes së melodisë për programin e kutisë muzikore. Konfigurimi i përditësuar i aplikacionit është treguar më lart. Shtesa e vetme në harduer është një zhurmë piezo pasive për të luajtur melodinë e zgjedhur. Ndryshimi bazë në softuer është shtimi i një rutine për të luajtur një melodi, pasi të identifikohet, duke përdorur zilen dhe rutinën e tonit Arduino.

Pjesët e disponueshme të melodisë përmbahen në një skedar titulli, Tunes.h, së bashku me përcaktimin e strukturave të nevojshme mbështetëse. Çdo melodi përcaktohet si një grup strukturash të lidhura me shënimet që përmbajnë frekuencën dhe kohëzgjatjen e shënimit. Frekuencat e shënimeve përmbahen në një skedar të veçantë të titullit, Pitches.h. Programi dhe skedarët e kokës janë në dispozicion për shkarkim në fund të këtij seksioni. Të tre skedarët duhet të vendosen në të njëjtën drejtori.

Përzgjedhja dhe identifikimi vazhdon si më poshtë:

  1. "Përdoruesi" vendos ndërprerësit në konfigurimin e lidhur me melodinë e dëshiruar
  2. çdo cikël lak programi identifikuesi për cilësimin aktual të dip switch -it merret nëpërmjet analogRead
  3. Identifikuesi i konfigurimit të hapit 2 krahasohet me secilin nga krahasuesit në listën e melodive në dispozicion
  4. Nëse gjendet një ndeshje, rutina e playTune thirret me informacionin e nevojshëm për të hyrë në listën e shënimeve të melodisë

    Duke përdorur funksionin e tonit Arduino, çdo shënim luhet përmes ziles

  5. Nëse asnjë ndeshje nuk gjendet, nuk ndërmerret asnjë veprim
  6. përsërisni 1-5

Cilësimet e ndërprerësit DIP për meloditë e disponueshme tregohen në tabelën më poshtë ku 1 do të thotë që çelësi është aktiv, 0 fikur. Kujtoni që mënyra se si orientohet ndërprerësi e vendos çelësin 1 në pozicionin më të majtë (ai i lidhur me rezistencën 80K).

EMRI Kaloni 1 Kaloni 2 Kaloni 3 Ndërroni 4
Danny Boy 1 0 0 0
Ariu i Vogël 0 1 0 0
Luani fle sonte 1 1 0 0
Askush nuk e njeh telashen 0 0 1 0
Hiri i mahnitshëm 0 0 0 1
Hapësirë bosh 1 0 0 1
Kodra Tallëse e Zogut 1 0 1 1

Cilësia e zërit nga një zile piezo sigurisht që nuk është e madhe, por të paktën është e njohur. Në fakt nëse tonet maten, ato janë shumë afër frekuencës së saktë të shënimeve. Një teknikë interesante e përdorur në program është ruajtja e të dhënave të sintonizimit në seksionin flash/memoria e programit në vend të seksionit të paracaktuar të kujtesës së të dhënave duke përdorur direktivën PROGMEM. Seksioni i të dhënave mban variablat e përpunimit të programit dhe është shumë më i vogël, rreth 512 bajtë për disa nga mikrokontrolluesit ATtiny.

Recommended: