- Vad är en kapacitiv beröringssensor och hur fungerar den?
- Bygga en fyrvägs kapacitiv pekssensor
- Material som krävs för ESP32 Touch-kontrollerad krets
- Kontrollkrets för vår kapacitiva beröringssensor
- PCB-design för den kapacitiva beröringssensorkretsen
- Arduino-kod för ESP32-baserad kapacitiv pekssensor
- Testar den ESP32-baserade pekssensorkretsen
- Ytterligare förbättringar
I många fall används beröringssensorer istället för tryckknappar. Fördelen är att vi inte behöver ge kraft för att trycka på en knapp, och vi kan aktivera en knapp utan att röra vid den med hjälp av pekssensorer. Touch-sensing-teknik blir populärt dag för dag. Och under det senaste decenniet har det blivit svårt att föreställa sig världen utan beröringskänslig elektronik. Både resistiva och kapacitiva beröringsmetoder kan användas för att utveckla en beröringssensor, och i den här artikeln kommer vi att diskutera ett grovt sätt att skapa en kapacitiv beröringssensor med ESP32, tidigare har vi också byggt en kapacitiv beröringsknapp med Raspberry pi.
Även om applikationsspecifika pekssensorer kan vara lite komplicerade förblir den grundläggande principen för denna teknik densamma, så i den här artikeln kommer vi att fokusera på att utveckla vår kapacitiva pekssensor med hjälp av vår favorit ESP32 och en bit koppar- pläterad bräda.
I föregående handledning har vi gjort Control Home Lights with Touch med TTP223 Touch Sensor och Arduino UNO. Nu i det här projektet bygger vi en Touch-sensor för ESP32 men detsamma kan också användas för Arduino. Dessutom använde vi tidigare pekbaserade inmatningsmetoder med kapacitiva pekplattor med olika mikrokontroller, t.ex. Touch Keypad Interfacing med ATmega32 Microcontroller och Capacitive TouchPad med Raspberry Pi, du kan också kolla in dem om du är intresserad.
Vad är en kapacitiv beröringssensor och hur fungerar den?
Kondensatorer finns i många former. Den vanligaste kommer en gång i form av en blyförpackning eller en ytmonterad förpackning men för att bilda en kapacitans behöver vi ledare åtskilda av ett dielektriskt material. Således är det enkelt att skapa en. Ett bra exempel skulle vara det som vi ska utveckla i följande exempel.
Med tanke på det etsade kretskortet som det ledande materialet fungerar klistermärket som ett dielektriskt material, så nu återstår frågan hur beröring av kopparkudden gör att kapacitansen ändras på ett sådant sätt att pek-sensorns styrenhet kan upptäcka? Naturligtvis ett mänskligt finger.
Tja, det finns huvudsakligen två anledningar: För det första inkluderar den ena de dielektriska egenskaperna hos vårt finger, den andra är på grund av de ledande egenskaperna hos vårt finger. Vi kommer att använda en kapacitiv baserad touch. Så vi kommer att rikta vårt fokus mot den kapacitiva baspekssensorn. Men innan vi diskuterar allt detta är det viktigt att notera att det inte sker någon ledning och att fingret är isolerat på grund av papperet som används i klistermärket. Så fingret kan inte ladda ur kondensatorn.
Finger agerar som dielektrisk:
Det är allmänt känt att en kondensator har ett konstant värde som kan realiseras av området för de två ledande plattorna, avståndet mellan plattorna och dess dielektriska konstant. Vi kan inte ändra kondensatorns område genom att bara röra vid det men vi kan säkert ändra kondensatorns dielektriska konstant eftersom ett mänskligt finger har en annan dielektrisk konstant än det material som visar den. I vårt fall är det luft, vi förskjuter luft med fingrarna. Om du frågar hur? Det beror på att den dielektriska konstanten för luften 1006 vid havsnivå rumstemperatur och den dielektriska konstanten för fingret är mycket högre runt 80 eftersom ett mänskligt finger består av mestadels vatten. Så, interaktionen mellan fingret och kondensatorns elektriska fält orsakar en ökning av dielektrisk konstant, varför kapacitansen ökar.
Nu när vi har förstått principen, låt oss gå vidare till tillverkningen av faktiska PCB.
Bygga en fyrvägs kapacitiv pekssensor
Den kapacitiva beröringssensorn som används i detta projekt har fyra kanaler och är lätt att skapa. Nedan har vi nämnt den detaljerade processen för att skapa en.
Först gjorde vi kretskortet för sensorn med hjälp av Eagle PCB-designverktyget, som ser ungefär ut som bilden nedan.
Med hjälp av måtten och Photoshop gjorde vi mallen och slutligen klistermärket för sensorn, som ser ut som bilden nedan,
Nu, när vi är klara med klistermärket, går vi vidare till att skapa den faktiska klädda mallen som vi ska använda för att göra vår PCB med, som ser ungefär ut som bilden nedan,
Nu kan vi skriva ut den här filen och fortsätta med att skapa en hemlagad PCB. Om du är ny kan du kolla in artikeln om hur man bygger PCB hemma. Du kan också ladda ner nödvändiga PDF- och Gerber-filer från länken nedan
- GERBER-fil för fyra kanals kapacitiv pekssensor
När det är gjort ser det faktiska etsade kretskortet ut som bilden nedan.
Nu är det dags att borra några hål, och vi ansluter några kablar till kretskortet. Så att vi kan ansluta den till ESP32-kortet. När du är klar ser det ut som bilden nedan.
Eftersom vi inte satte via i kretskortet, fick löd överallt medan vi lödde, rättade vi till vårt misstag genom att sätta ett borrhål på kretskortet, vilket du hittar i nedladdningsavsnittet ovan. Slutligen var det dags att sätta på klistermärket och göra det slutgiltigt. Som ser ut som bilden nedan.
Nu är vi klara med pekskärmen, det är dags att gå vidare till att göra kontrollkretsen för pekskärmen.
Material som krävs för ESP32 Touch-kontrollerad krets
Komponenterna som krävs för att bygga kontrollenheten med hjälp av ESP32 ges nedan, du borde kunna hitta de flesta av dem i den lokala hobbybutiken.
Jag har också listat komponenterna i tabellen nedan med önskad typ och kvantitet, eftersom vi kopplar ihop en fyrkanalers peksensor och kontrollerar fyra växelström, kommer vi att använda 4 reläer för att växla växelström och 4 transistorer för att bygga relä förarkretsar.
Sl. Nr |
Delar |
Typ |
Kvantitet |
1 |
Relä |
Växla |
4 |
2 |
BD139 |
Transistor |
4 |
3 |
Skruvterminal |
Skruvterminal 5mmx2 |
4 |
4 |
1N4007 |
Diod |
5 |
5 |
0,1 uF |
Kondensator |
1 |
6 |
100uF, 25V |
Kondensator |
2 |
7 |
LM7805 |
Spänningsregulator |
1 |
8 |
1K |
Motstånd |
4 |
9 |
560R |
Motstånd |
4 |
10 |
Gul lysdiod |
LED |
4 |
11 |
Manlig rubrik |
Anslutning |
4 |
12 |
Kvinnlig rubrik |
Anslutning |
30 |
13 |
Röd lysdiod |
LED |
1 |
14 |
ESP32 Dev Board V1 |
ESP32-styrelse |
1 |
12 |
Klädda brädor |
Generisk 50x 50mm |
1 |
13 |
Bygeltrådar |
Ledningar |
4 |
14 |
Anslutande ledningar |
Ledningar |
5 |
Kontrollkrets för vår kapacitiva beröringssensor
Bilden nedan visar hela kretsschemat för vår ESP32-baserade pekssensor.
Som du kan se är det en mycket enkel krets med mycket minimala komponenter som krävs.
Eftersom det är en enkel beröringssensorkrets kan den vara användbar på platser där du vill interagera med en enhet via beröring, till exempel istället för att använda en vanlig brädemonterad brytare kan du slå på / stänga av dina apparater med beröring.
I schemat används ett likströmsuttag som ingång där vi tillhandahåller den nödvändiga effekten som krävs för att driva kretsen, därifrån har vi vår 7805 spänningsregulator som omvandlar den oreglerade likströmsingången till en konstant 5V likström genom vilken vi tillhandahåller strömmen till ESP32-modulen.
Därefter har vi i schemat våra pekkontakter på stift 25, 26, 27, 28, där vi ska ansluta pekplattan.
Därefter har vi våra reläer som växlas via en BD139-transistor, dioden D2, D3, D4, D5 är där för att skydda kretsen från alla transientens spänningar som genereras när reläet växlar, dioderna i denna konfiguration är kända som fly-back diode / freewheeling diode. 560R-motstånden vid basen av varje transistor används för att begränsa strömflödet genom basen.
PCB-design för den kapacitiva beröringssensorkretsen
Kretskortet för vår beröringssensorkrets var designat för ett ensidigt kort. Vi har använt Eagle för att designa min PCB, men du kan använda valfri designprogramvara. 2D-bilden av vår brädedesign visas nedan.
En tillräcklig spårdiameter användes för att framställa kraftspåren, som används för att strömma strömmen genom kretskortet. Vi sätter skruvterminalen högst upp eftersom det är mycket lättare att ansluta din last på det sättet och strömkontakten, som är ett likströmsuttag, placerades på sidan, vilket också ger enkel åtkomst. Den kompletta designfilen för Eagle tillsammans med Gerber kan laddas ner från länken nedan.
- GERBER-fil för ESP32-baserad beröringssensorkrets
Nu när vår design är klar är det dags att etsa och lödda brädet. Efter etsning, borrning och lödningsprocessen är klar ser kortet ut som bilden som visas nedan,
Arduino-kod för ESP32-baserad kapacitiv pekssensor
För detta projekt kommer vi att programmera ESP32 med en anpassad kod som vi snart kommer att beskriva. Koden är väldigt enkel och lätt att använda, Vi börjar med att definiera alla nödvändiga stift, i vårt fall definierar vi stiften för våra beröringssensorer och reläer.
#define Relay_PIN_1 15 #define Relay_PIN_2 2 #define Relay_PIN_3 4 #define Relay_PIN_4 16 #define TOUCH_SENSOR_PIN_1 13 #define TOUCH_SENSOR_PIN_2 12 #define TOUCH_SENSOR_PIN_3 14 #define
Därefter, i installationssektionen, börjar vi med att initialisera UART för felsökning, nästa har vi infört en fördröjning på 1S som ger oss lite tid för att öppna ett Serial Monitor-fönster. Därefter använder vi Arduinos pinMode- funktion för att göra reläpinnarna som utgång, vilket markerar slutet på avsnittet Setup () .
ogiltig installation () {Serial.begin (115200); fördröjning (1000); pinMode (Relay_PIN_1, OUTPUT); pinMode (Relay_PIN_2, OUTPUT); pinMode (Relä_PIN_3, UTGÅNG); pinMode (Relä_PIN_4, UTGÅNG); }
Vi börjar vår loop- sektion med ett if- uttalande, den inbyggda funktionen touchRead (pin_no) används för att avgöra om en pin berördes eller inte. Den (pin_no) touchRead returnerar ett heltal områden (0 - 100), värdet stannar nära 100 hela tiden, men om vi rör det valda stiftet faller värdet till nära noll, och med hjälp av den förändrade värde, vi kan avgöra om den särskilda stiftet berördes av ett finger eller inte.
I if- uttalandet letar vi efter ändringar i heltalets värden, och om värdet når under 28 kan vi vara säkra på att vi har bekräftat en beröring. När if- uttalandet blir sant väntar vi på 50 ms och kontrollerar parametern igen, detta hjälper oss att avgöra om sensorvärdet utlöstes falskt, därefter inverterar vi statusen på stiftet med hjälp av digitalWrite (Relay_PIN_1,! DigitalRead (Relay_PIN_1)) -metoden och resten av koden förblir densamma.
if (touchRead (TOUCH_SENSOR_PIN_1) <28) {if (touchRead (TOUCH_SENSOR_PIN_1) <28) {Serial.println ("Sensor one is touched"); digitalWrite (Relay_PIN_1,! digitalRead (Relay_PIN_1)); }} annars om (touchRead (TOUCH_SENSOR_PIN_2) <28) {if (touchRead (TOUCH_SENSOR_PIN_2) <28) {Serial.println ("Sensor två är berörd"); digitalWrite (Relay_PIN_2,! digitalRead (Relay_PIN_2)); }} annat om (touchRead (TOUCH_SENSOR_PIN_3) <28) {if (touchRead (TOUCH_SENSOR_PIN_3) <28) {Serial.println ("Sensor Three är berörd"); digitalWrite (Relay_PIN_3,! digitalRead (Relay_PIN_3)); }} annat om (touchRead (TOUCH_SENSOR_PIN_4) <28) {if (touchRead (TOUCH_SENSOR_PIN_4) <28) {Serial.println ("Sensor Four är berörd"); digitalWrite (Relay_PIN_4,! digitalRead (Relay_PIN_4)); }}
Slutligen avslutar vi vår kod med ytterligare 200 ms blockeringsfördröjning.
Testar den ESP32-baserade pekssensorkretsen
Eftersom detta är ett mycket enkelt projekt är testuppsättningen väldigt enkel, som ni kan se, jag har anslutit 4 lysdioder med motstånd som fungerar som belastningar, eftersom den är ansluten till reläet kan du enkelt ansluta vilken belastning som helst upp till 3 ampere.
Ytterligare förbättringar
Även om kretskortet är enkelt, finns det fortfarande utrymme för förbättringar som du kan se från undersidan av själva kretskortet, jag har anslutit många motstånd i ett försök att ansluta fyra indikatorlampor, och storleken på kretskortet kan också minskas om det blir ett krav, Hoppas du gillade artikeln och lärde dig något användbart. Om du har några frågor kan du lämna dem i kommentarfältet nedan eller använda våra forum för att skicka andra tekniska frågor.