Hur man läsa många switchar med en MCU Pin (3 / 4 steg)
Steg 3: spänningsavdelare stege
I bilden nedan har jag anslutit två block av växlar. Översta blocket har två växlar, och nedersta blocket har fem växlar. Du kan ansluta din separata växla, momentan, taktil, etc växlar på samma sätt. Viktigt att märka är motståndet som växeln är ansluten till.
I mitt exempel har jag nästan fördubblat motståndet av nästa motståndet att skapa en spänning lucka som är lätt att mäta och inte missförstå för växeln före eller efter. Om du inte har märkt innan, titta igen, och inser att vi är tillbaka på vår gamla vän den Resistiva spänningsdelare. Det första motståndet, 10 k ohm, är ansluten till 5V och 2: a motståndet--motståndet som kommer att avgöra Vut för SWITCH_ADC pin, är ansluten till varje switch och därför varje switch är associerad med en viss Vout spänning som kan läsas från ADC pin ansluten vid SWITCH_ADC.
Sedan ta reda på den förväntade Vout från varje switch som så:
Vout = Vin * (R2 / (R1 + R2))
för att byta en:
Vout = 5V * (500 / (10000 + 500)) = 5 * 0,048 = 0.24V eller 240 mV
för byta två:
Vout = 5V * (2200 / (10000 + 2200)) = 5 * 0,18 = 0.9V eller ~ 900mV
och så vidare...
Känn dig fri att ersätta i egna värden för R2 om du bara har vissa motstånd händig... Viktigaste här är att hålla en tillräckligt bred lucka i spänningen mellan växlarna så att någon felmarginal på ADC inte kommer att sätta dig in spänningen förväntas från en närliggande switch. Jag har hittat den enklaste sak att göra är att bygga divider stegen och sätta en multimeter/voltmeter på ADC PIN-koden och tryck på varje stift och se vilka värden som du får. De bör vara vacker plats på till vad du beräkna.
När du har alla förväntade spänningsvärden från varje växla med ett visst motstånd, då du kan ha din MCU läsa ADC stiftet och jämför det till din kända värden att avgöra vilka växla trycktes. Till exempel, säga att du har registrerat en avbrottstjänstens rutin som kommer att anropas när det finns en upptäckt förändring på ADC stift. Inuti det ISR, kan du läsa ADC och jämföra värdet mot din switch tabell. Om du använder en 8-bitars ADC värde, kommer din spänning att omvandlas till ett tal mellan 0 och 255 som motsvarar en spänning mellan 0V och 5V. Detta förutsätter att du har din ADC konfigurerat detta sätt.