Tartalomjegyzék:

Hogyan lehet sok kapcsolót olvasni egy MCU tűvel: 4 lépés
Hogyan lehet sok kapcsolót olvasni egy MCU tűvel: 4 lépés

Videó: Hogyan lehet sok kapcsolót olvasni egy MCU tűvel: 4 lépés

Videó: Hogyan lehet sok kapcsolót olvasni egy MCU tűvel: 4 lépés
Videó: How measure DC Voltage and Current and build Energy meter with LCD Display | Lesson 104 2024, November
Anonim
Hogyan lehet sok kapcsolót olvasni egy MCU tűvel
Hogyan lehet sok kapcsolót olvasni egy MCU tűvel

Előfordult már, hogy elfojtott egy projekt (eke) t, és a projekt folyamatosan növekszik és növekszik, miközben további dolgokat ad hozzá (ezt nevezzük félelmetes kreativitásnak)? Egy nemrégiben készült projektben egy frekvenciamérőt építettem, és hozzáadtam egy öt funkciós jelgenerátort/frekvenciaszintetizátort. Hamarosan több kapcsolóval végeztem, mint amennyi tűm maradt, szóval mit tegyen egy fickó?

Azonban hamarosan további hét kapcsolóm volt a Funbox -on (igen, így hívtam a függvénygenerátoromat… tudom, nincs kreativitásom), és itt van egy rövid útmutató, amely bemutatja, hogyan teheti meg ugyanezt. Nem igényel műszakregisztereket vagy specifikus IC -ket. Valójában ehhez nincs szükség mikrokontrollerre sem, ha diszkrét félvezetők gurulnak. Íme az egyik módja annak, hogy több kapcsolót is olvashat/kezelhet egyetlen tűvel az AVR -n (vagy más mikrokontrolleren… hallottam, hogy az AVR -n kívül más mikrokontrollerek is vannak, de nem tudom elképzelni…).:)

1. lépés: Az alapvető dolgok (nem igazán)

Ennek eléréséhez szüksége lesz néhány összetevőre. Segít, ha számos kapcsolóval rendelkezik, amelyeket kezelnie kell. Szükséged lesz néhány ellenállásra és egy mikrokontrollerre, amely rendelkezik ADC-vel (analóg-digitális átalakítás), vagy más módon, amellyel jelezni szeretnéd, hogy egy kapcsoló aktiválva van, és melyik kapcsoló volt.

Ha szeretné, feszültségvezérelt oszcillátorral jelezheti ezt, esetleg néhány villogó lámpával, vagy hanggal. Ebben az ible -ben úgy teszek, mintha AVR -t használnánk, de a maga világában bármit tehet, ami boldoggá tesz. Hiányzik Bob Ross.

2. lépés: A feszültségosztó

A feszültségosztó
A feszültségosztó
A feszültségosztó
A feszültségosztó

Lényegében ezt úgy fogjuk megtenni, hogy egy feszültségosztónak nevezett technikát és áramkört használunk. A feszültségosztók - amint azt sejthettétek - osztják a V,,,, feszültséget az Ön által meghatározott értékkel. A feszültséget több komponenssel is megoszthatja, beleértve a kondenzátorokat és az induktorokat, de itt a jó ellenállással fogom megtenni. Az ötlet Amit teszünk, két komponenst sorba rakunk, amelyek egyenként feszültségcsökkenést okoznak az alkatrészen. Nézd meg az első képet, ha nincs értelme. 9V potenciális különbség van a vasúttól a vasútig. 9V és 0V között két ellenállás van sorban. Ezek mindegyike feszültségcsökkenést tapasztal önmagában, az ellenállástól függően, amint azt valószínűleg V = IR -ból emlékszik. Ha feszültségmérést végez a két ellenállás között, akkor 9V és 0V közötti értéket kap, attól függően, hogy mennyi feszültség esett az első ellenálláson, és mennyi maradt a második ellenálláson, 0V előtt. Van egy egyszerű képlet az ellenállás feszültségcsökkenésének kiszámítására ebben a helyzetben, és így néz ki. Legyen az 1 ellenállás feletti feszültség (R1) V1, a második ellenállás feletti feszültség (R2) pedig V2. Mivel a formázást már nem tudom használni, nézze meg a képletet az alábbi 2. képen … Tehát a rezisztív elosztónkban a Vout feszültség meghatározható a V2 képletünkkel (mivel a GND -t 0V -ra fogjuk vonatkoztatni). Ennek mi köze ahhoz, hogy egy csomó kapcsolót észlelnek egy tűről? Nos, lapozz, és megmutatom!

3. lépés: Feszültségosztó létra

Feszültségosztó létra
Feszültségosztó létra

Most tegyük fel, hogy az összes kapcsolónk, talán hat, nyolc vagy tizenhat, mind ellenállásokon keresztül van csatlakoztatva, amelyek mindegyike feszültségosztóként működik, így amikor a kapcsolócsap állapota megváltozik, a feszültséget leolvassuk és a feszültségszint alapján tudja, melyik kapcsoló volt aktiválva. Nézz le. Az alábbi képen két kapcsolóblokkot csatlakoztattam. A legfelső blokk két kapcsolóval, a legalsó blokk pedig öt kapcsolóval rendelkezik. Hasonló módon csatlakoztathatja a külön kapcsolót, pillanatnyi, tapintható stb. Fontos megjegyezni az ellenállást, amelyhez a kapcsoló csatlakoztatva van. Példámban majdnem megdupláztam a következő ellenállás ellenállását, hogy könnyen mérhető feszültségrést hozzunk létre, és ne tévesszük meg a kapcsoló előtt vagy után. Ha még nem vette észre, nézzen újra, és rájön, hogy visszatértünk régi barátunkhoz, az ellenállásos feszültségosztóhoz. Az első ellenállás, a 10 k ohm, 5 V -ra van csatlakoztatva, és a 2. ellenállás - az ellenállás, amely meghatározza a Vki a SWITCH_ADC csap esetén minden kapcsolóhoz csatlakozik, ezért minden kapcsolóhoz egy bizonyos Vout feszültség kapcsolódik, amely leolvasható a SWITCH_ADC -hez csatlakoztatott ADC csapból. Ezután határozza meg a várható Vout értéket minden kapcsolóról

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

az első kapcsolóhoz:

Vout = 5V * (500 / (10000 + 500)) = 5 * 0,048 = 0,24V vagy 240 mV

a második kapcsolóhoz:

Vout = 5V * (2200 / (10000 + 2200)) = 5 * 0,18 = 0,9V vagy ~ 900mV

és így tovább.. Nyugodtan cserélje le saját értékeit az R2 -re, ha csak bizonyos ellenállások vannak kéznél… A legfontosabb itt az, hogy elég széles feszültségrést tartsunk a kapcsolók között, hogy az ADC -nél minden hibahatár megnyerje” ne helyezze be a szomszédos kapcsolótól elvárt feszültségbe. Úgy találtam, hogy a legegyszerűbb, ha felépítem az elválasztó létrát, és multimétert/voltmérőt teszek az ADC csapjára, és minden gombot lenyomva megnézem, milyen értékeket kap. Elég pontosnak kell lenniük abban, amit kiszámít. Miután megkapta az összes elvárt feszültségértéket minden kapcsolóból egy adott ellenállás használatával, akkor kérheti az MCU -t, hogy olvassa el az ADC tűt, és hasonlítsa össze az ismert értékekkel annak meghatározásához, hogy melyik kapcsolót nyomták meg. Tegyük fel például, hogy regisztrált egy megszakítási szolgáltatási rutint, amelyet akkor hívnak meg, amikor észlelt változást észlel az ADC -n. Az ISR -ben elolvashatja az ADC -t, és összehasonlíthatja ezt az értéket a kapcsolótáblájával. Ha 8 bites ADC értéket használ, akkor a feszültséget 0 és 255 közötti számgá alakítja át, amely 0V és 5V közötti feszültségnek felel meg. Ez feltételezi, hogy az ADC -je így van konfigurálva.

4. lépés: Összefoglalás

Tehát most tudnia kell, hogyan kell takarékoskodni a GPIO csapok használatával a kapcsolókhoz. Amikor elfogy a GPIO csapok száma, vagy aligha kell kezdeni, vagy ha rájön, hogy egy kapcsolócsoportot fog használni, akkor az ellenállásos elválasztó az út, amellyel mentheti GPIO csapjait, miközben robusztus mechanizmus a kapcsolóhoz való hozzáférés észlelésére.

Ajánlott: