Obsah:

Jak číst mnoho přepínačů jedním pinem MCU: 4 kroky
Jak číst mnoho přepínačů jedním pinem MCU: 4 kroky

Video: Jak číst mnoho přepínačů jedním pinem MCU: 4 kroky

Video: Jak číst mnoho přepínačů jedním pinem MCU: 4 kroky
Video: Home Automation: How to use 7 Program 0.1s to 9999 minutes Relay Timer XY-LJ02 2024, Červen
Anonim
Jak číst mnoho přepínačů s jedním kolíkem MCU
Jak číst mnoho přepínačů s jedním kolíkem MCU

Vyhýbali jste se někdy projektu (projektům) a projekt stále roste a roste, zatímco k němu přidáváte další věci (říkáme tomu Feaping Creaturism)? Na nedávném projektu jsem stavěl měřič kmitočtu a přidal jsem pětifunkční generátor signálu/frekvenční syntetizátor. Brzy jsem skončil s více přepínači, než jsem měl k dispozici, takže co má chlap dělat?

Brzy jsem však měl na svém Funboxu dalších sedm přepínačů (jo, tomu jsem říkal generátor funkcí … Vím, nemám žádnou kreativitu) a tady je krátký návod, který vám ukáže, jak můžete udělat to samé. Nevyžaduje žádné posuvné registry ani konkrétní integrované obvody. Ve skutečnosti to nevyžaduje ani mikrokontrolér, pokud diskrétní polovodiče jsou to, jak se valíte. Zde je jeden způsob, jak můžete číst/spravovat více přepínačů pomocí jediného kolíku na vašem AVR (nebo jiném mikrokontroléru… Slyšel jsem, že kromě AVR existují i další mikrokontroléry, ale neumím si to představit …).:)

Krok 1: Základní informace (ne ve skutečnosti)

Abyste toho dosáhli, budete potřebovat několik komponent. Pomáhá mít velké množství přepínačů, které musíte spravovat. Budete také potřebovat nějaké odpory a buď mikrokontrolér, který má ADC (Analog-to-Digital Conversion), nebo nějaký jiný způsob, kterým byste chtěli naznačit, že byl aktivován přepínač a který to byl.

Pokud byste chtěli, můžete k tomu použít napěťově řízený oscilátor, možná s některými blikajícími světly, nebo alternativně se zvukem. V tomto případě budu předstírat, že používáme AVR, ale ve svém světě můžete předstírat, cokoli vás dělá šťastným. Chybí mi Bob Ross.

Krok 2: Dělič napětí

Dělič napětí
Dělič napětí
Dělič napětí
Dělič napětí

V zásadě to uděláme pomocí techniky a obvodu nazývaného dělič napětí. Oddělovače napětí dělí, jak jste asi uhodli, napětí V,, v, nějakou hodnotou, kterou určíte. Napětí můžete rozdělit na několik komponent, včetně kondenzátorů a induktorů, ale tady to udělám s dobrým odporem. Myšlenka To, co děláme, je uvedení dvou komponent do série, které způsobí, každý jednotlivě, pokles napětí napříč komponentou. Pokud nedávám smysl, podívejte se na první obrázek. Existuje potenciální rozdíl 9 V mezi kolejnicemi. Mezi 9V a 0V jsou dva odpory v sérii. Každý z nich pocítí na sobě pokles napětí v závislosti na odporu, jak si pravděpodobně pamatujete z V = IR. Pokud provedete měření napětí mezi dvěma odpory, získáte nějakou hodnotu mezi 9V a 0V, v závislosti na tom, kolik napětí kleslo přes první odpor a kolik zbývá k poklesu přes 2. odpor, před 0V. V této situaci existuje přímý vzorec pro výpočet poklesu napětí na rezistoru a vypadá to takto. Nechť napětí na rezistoru 1 (R1) je V1 a napětí na rezistoru dvě (R2) je V2. Protože formátování již nemohu použít, podívejte se na vzorec 2 na obrázku níže … Takže v našem odporovém děliči lze napětí Vout určit podle našeho vzorce pro V2 (protože budeme odkazovat na GND na 0V). Co to má společného s tím, že je z jednoho pinu detekována spousta přepínačů? Otočte stránku a já vám to ukážu!

Krok 3: Žebřík dělič napětí

Žebřík dělič napětí
Žebřík dělič napětí

Nyní předpokládejme, že máme všechny naše přepínače, možná šest nebo osm nebo šestnáct, všechny připojené přes odpory, z nichž každý funguje jako dělič napětí tak, že když se změní stav spínacího pinu, napětí se načte a na základě napěťové úrovně může vědět, který přepínač byl právě aktivován. Podívej se dolů. Na obrázku níže jsem připojil dva bloky přepínačů. Horní blok má dva přepínače a spodní blok má pět přepínačů. Stejným způsobem můžete připojit své samostatné přepínače, momentální, hmatové atd. Důležitou věcí, kterou si musíte všimnout, je odpor, ke kterému je připojen váš přepínač. V mém příkladu jsem téměř zdvojnásobil odpor dalšího rezistoru, abych vytvořil napěťovou mezeru, kterou lze snadno měřit a nezaměňovat s přepínačem před nebo po. Pokud jste si toho předtím nevšimli, podívejte se znovu a uvědomte si, že jsme zpět u našeho starého přítele odporového děliče napětí. První odpor, 10 k ohmů, je připojen k 5 V a druhý odpor - odpor, který bude určovat Vven pro pin SWITCH_ADC, je připojen ke každému přepínači, a proto je každý spínač spojen s konkrétním napětím Vout, které lze číst z pinu ADC připojeného na SWITCH_ADC. Dále určete očekávaný Vout z každého přepínače takto

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

pro přepínač jedna:

Vout = 5V * (500 / (10 000 + 500)) = 5 * 0,048 = 0,24V nebo 240 mV

pro přepínač dva:

Vout = 5V * (2200 / (10 000 + 2200)) = 5 * 0,18 = 0,9V nebo ~ 900mV

a tak dále.. Neváhejte nahradit ve svých vlastních hodnotách R2, pokud máte po ruce pouze určité odpory … Klíčovou věcí zde je udržovat dostatečně širokou mezeru v napětí mezi přepínači, aby vyhrál jakýkoli rozsah chyby na ADC ' t vás uvede do napětí očekávaného od sousedního přepínače. Zjistil jsem, že nejjednodušší je postavit dělicí žebřík a nasadit multimetr/voltmetr na kolík ADC a stisknout každý kolík a zjistit, jaké hodnoty získáte. Měli by být docela přesní na to, co vypočítáte. Jakmile budete mít všechny očekávané hodnoty napětí z každého přepínače pomocí konkrétního odporu, pak můžete nechat svůj MCU přečíst pin ADC a porovnat to se svými známými hodnotami, abyste zjistili, který spínač byl stisknut. Řekněme například, že jste zaregistrovali rutinu služby přerušení, která bude volána vždy, když dojde k detekované změně na pinu ADC. Uvnitř tohoto ISR byste mohli přečíst ADC a porovnat tuto hodnotu s vaší přepínací tabulkou. Pokud používáte 8bitovou hodnotu ADC, bude vaše napětí převedeno na číslo mezi 0 a 255, které odpovídá napětí mezi 0V a 5V. To předpokládá, že máte takto nakonfigurovaný ADC.

Krok 4: Shrnutí

Nyní byste tedy měli vědět, jak šetřit na používání pinů GPIO pro přepínače. Kdykoli vám dochází GPIO piny, nebo sotva máte nějaké, nebo pokud si uvědomíte, že budete využívat banku přepínačů, odporový dělič je způsob, jak zachránit vaše GPIO piny a přitom stále poskytovat robustní mechanismus pro detekci přístupu přepínačů.

Doporučuje: