- Wat is een capacitieve aanraaksensor en hoe werkt deze?
- Een vierweg capacitieve aanraaksensor bouwen
- Benodigde materialen voor ESP32 Touch Controlled Circuit
- Besturingsschakeling voor onze capacitieve aanraaksensor
- PCB-ontwerp voor het capacitieve aanraaksensorcircuit
- Arduino-code voor op ESP32 gebaseerde capacitieve aanraaksensor
- Het op ESP32 gebaseerde aanraaksensorcircuit testen
- Verdere verbeteringen
In veel gevallen worden aanraaksensoren gebruikt in plaats van drukknoppen. Het voordeel is dat we geen kracht hoeven te leveren om op een knop te drukken, en we kunnen een toets activeren zonder deze aan te raken met behulp van aanraaksensoren. Touch sensing-technologie wordt elke dag populair. En in de afgelopen tien jaar is het moeilijk geworden om de wereld zonder aanraakgevoelige elektronica voor te stellen. Zowel resistieve als capacitieve aanraakmethoden kunnen worden gebruikt om een aanraaksensor te ontwikkelen, en in dit artikel zullen we een grove manier bespreken om een capacitieve aanraaksensor te maken met ESP32, voorheen hebben we ook een capacitieve aanraakknop gebouwd met Raspberry pi.
Hoewel applicatiespecifieke aanraaksensoren een beetje ingewikkeld kunnen zijn, blijft het fundamentele principe van deze technologie hetzelfde, dus in dit artikel zullen we ons concentreren op het ontwikkelen van onze capacitieve aanraaksensor met behulp van onze favoriete ESP32 en een stuk koper- bekleed bord.
In de vorige tutorial hebben we Control Home Lights with Touch gedaan met behulp van TTP223 Touch Sensor en Arduino UNO, Nu in dit project bouwen we een Touch sensor voor ESP32, maar deze kan ook voor Arduino worden gebruikt. Ook gebruikten we eerder op aanraking gebaseerde invoermethoden met behulp van capacitieve touchpads met verschillende microcontrollers, zoals Touch Keypad Interfacing met ATmega32 Microcontroller en Capacitive TouchPad met Raspberry Pi, je kunt ze ook bekijken als je geïnteresseerd bent.
Wat is een capacitieve aanraaksensor en hoe werkt deze?
Condensatoren zijn er in vele vormen. De meest voorkomende komt in de vorm van een pakket met lood of een pakket voor opbouwmontage, maar om een capaciteit te vormen, hebben we geleiders nodig die gescheiden zijn door een diëlektrisch materiaal. Het is dus gemakkelijk om er een te maken. Een goed voorbeeld is het voorbeeld dat we in het volgende voorbeeld gaan ontwikkelen.
Gezien de geëtste PCB als het geleidende materiaal, fungeert de sticker als een diëlektrisch materiaal, dus nu blijft de vraag, hoe het aanraken van de koperen pad ervoor zorgt dat de capaciteit zodanig verandert dat de aanraaksensorcontroller kan detecteren? Een menselijke vinger natuurlijk.
Welnu, er zijn hoofdzakelijk twee redenen: ten eerste omvat de ene de diëlektrische eigenschappen van onze vinger, de tweede is vanwege de geleidende eigenschappen van onze vinger. We gaan een capacitieve aanraking gebruiken. We zullen onze focus dus richten op de capacitieve aanraaksensor. Maar voordat we dit allemaal bespreken, is het belangrijk op te merken dat er geen geleiding plaatsvindt en dat de vinger geïsoleerd is vanwege het papier dat in de sticker is gebruikt. De vinger kan de condensator dus niet ontladen.
Vinger die werkt als diëlektricum:
Het is algemeen bekend dat een condensator een constante waarde heeft die kan worden gerealiseerd door het oppervlak van de twee geleidende platen, de afstand tussen de platen en de diëlektrische constante. We kunnen het oppervlak van de condensator niet veranderen door het aan te raken, maar we kunnen zeker de diëlektrische constante van de condensator veranderen omdat een menselijke vinger een andere diëlektrische constante heeft dan het materiaal dat deze weergeeft. In ons geval is het lucht, we verplaatsen lucht met onze vingers. Als je vraagt hoe? Het is omdat de diëlektrische constante van de lucht 1006 bij kamertemperatuur op zeeniveau en de diëlektrische constante van de vinger veel hoger is rond 80, omdat een menselijke vinger voornamelijk uit water bestaat. Dus de interactie van de vinger met het elektrische veld van de condensator veroorzaakt een toename van de diëlektrische constante, waardoor de capaciteit toeneemt.
Nu we het principe hebben begrepen, gaan we verder met het maken van daadwerkelijke PCB's.
Een vierweg capacitieve aanraaksensor bouwen
De capacitieve aanraaksensor die in dit project wordt gebruikt, heeft vier kanalen en is gemakkelijk te maken. Hieronder hebben we het gedetailleerde proces genoemd om er een te maken.
Eerst hebben we de printplaat voor de sensor gemaakt met behulp van de Eagle PCB-ontwerptool, die er ongeveer zo uitziet als de afbeelding hieronder.
Met behulp van de afmetingen en Photoshop hebben we het sjabloon gemaakt en tot slot de sticker voor de sensor, die er ongeveer zo uitziet als de afbeelding hieronder,
Nu we klaar zijn met de sticker, gaan we verder met het maken van de eigenlijke beklede bordsjabloon die we gaan gebruiken voor het maken van onze PCB, die er ongeveer zo uitziet als de onderstaande afbeelding,
Nu kunnen we dit bestand afdrukken en doorgaan met het maken van een zelfgemaakte printplaat. ALS je nieuw bent, kun je het artikel lezen over hoe je thuis PCB's kunt bouwen. U kunt ook de vereiste PDF- en Gerber-bestanden downloaden via onderstaande link
- GERBER-bestand voor vierkanaals capacitieve aanraaksensor
Als u klaar bent, ziet de eigenlijke geëtste PCB eruit als de onderstaande afbeelding.
Nu is het tijd om wat gaatjes te boren, en we verbinden wat draden met de print. Zodat we het kunnen verbinden met het ESP32-bord. Als u klaar bent, ziet het eruit als de onderstaande afbeelding.
Omdat we geen via's in de printplaat hadden gestoken, soldeer overal tijdens het solderen, hebben we onze fout rechtgezet door een boorgat op de print te plaatsen, dat je kunt vinden in de bovenstaande downloadsectie. Eindelijk was het tijd om de sticker op te plakken en het definitief te maken. Die lijkt op de afbeelding hieronder.
Nu we klaar zijn met het aanraakpaneel, is het tijd om verder te gaan met het maken van het regelcircuit voor het aanraakpaneel.
Benodigde materialen voor ESP32 Touch Controlled Circuit
De componenten die nodig zijn om het controllergedeelte met ESP32 te bouwen, worden hieronder gegeven, je zou de meeste in de plaatselijke hobbywinkel moeten kunnen vinden.
Ik heb ook de componenten in de onderstaande tabel vermeld met het type en de vereiste hoeveelheid, aangezien we een vierkanaals aanraaksensor aansluiten en vier AC-belastingen regelen, zullen we 4 relais gebruiken om de AC-belasting te schakelen en 4 transistors om het relais te bouwen stuurprogramma's.
Sl. Nr |
Onderdelen |
Type |
Aantal stuks |
1 |
Relais |
Schakelaar |
4 |
2 |
BD139 |
Transistor |
4 |
3 |
Schroef Terminal |
Schroef Terminal 5mmx2 |
4 |
4 |
1N4007 |
Diode |
5 |
5 |
0.1uF |
Condensator |
1 |
6 |
100uF, 25V |
Condensator |
2 |
7 |
LM7805 |
Spanningsregelaar |
1 |
8 |
1K |
Weerstand |
4 |
9 |
560R |
Weerstand |
4 |
10 |
Oranje led |
LED |
4 |
11 |
Mannelijke koptekst |
Connector |
4 |
12 |
Vrouwelijke koptekst |
Connector |
30 |
13 |
Rode LED |
LED |
1 |
14 |
ESP32 Dev Board V1 |
ESP32-kaart |
1 |
12 |
Beklede plaat |
Generiek 50x 50 mm |
1 |
13 |
Doorverbindingsdraden |
Draden |
4 |
14 |
Verbindingsdraden |
Draden |
5 |
Besturingsschakeling voor onze capacitieve aanraaksensor
De onderstaande afbeelding toont het volledige schakelschema voor onze op ESP32 gebaseerde aanraaksensor.
Zoals u kunt zien, is het een heel eenvoudig circuit met een minimum aan componenten.
Omdat het een eenvoudig aanraaksensorcircuit is, kan het handig zijn op plaatsen waar u via aanraking met een apparaat wilt communiceren, in plaats van een typische op een bord gemonteerde schakelaar te gebruiken, kunt u uw apparaten met aanraking in- en uitschakelen.
In het schema wordt een DC-vataansluiting gebruikt als een ingang waar we de benodigde stroom leveren die nodig is om het circuit van stroom te voorzien, van daaruit hebben we onze 7805-spanningsregelaar die de ongereguleerde DC-ingang omzet in een constante 5V DC waardoor we leveren de stroom naar de ESP32-module.
Vervolgens hebben we in het schema onze aanraakconnectoren op pin 25, 26, 27, 28, waar we het touchpad gaan verbinden.
Vervolgens hebben we onze relais die worden geschakeld via een BD139-transistor, de diode D2, D3, D4, D5 is er om het circuit te beschermen tegen de spanning van elke transiënte die wordt gegenereerd wanneer het relais schakelt, de diodes in deze configuratie staan bekend als de terugslagdiode / vrijloopdiode. De 560R-weerstanden aan de basis van elke transistor worden gebruikt om de stroom door de basis te beperken.
PCB-ontwerp voor het capacitieve aanraaksensorcircuit
De printplaat voor ons aanraaksensorcircuit is ontworpen voor een enkelzijdig bord. We hebben Eagle gebruikt om mijn PCB te ontwerpen, maar u kunt elke gewenste ontwerpsoftware gebruiken. De 2D-afbeelding van ons bordontwerp wordt hieronder weergegeven.
Er is een voldoende grote diameter gebruikt om de stroomsporen te maken, die wordt gebruikt om de stroom door de printplaat te laten stromen. We hebben de schroefklem bovenaan geplaatst omdat het veel gemakkelijker is om je belasting op die manier aan te sluiten, en de stroomconnector, een DC-barrelconnector, werd aan de zijkant geplaatst, die ook gemakkelijk toegankelijk is. Het complete Design-bestand voor Eagle samen met de Gerber kan worden gedownload via onderstaande link.
- GERBER-bestand voor op ESP32 gebaseerd aanraaksensorbesturingscircuit
Nu ons ontwerp klaar is, is het tijd om het bord te etsen en te solderen. Nadat het ets-, boor- en soldeerproces is voltooid, ziet het bord eruit als de onderstaande afbeelding,
Arduino-code voor op ESP32 gebaseerde capacitieve aanraaksensor
Voor dit project zullen we de ESP32 programmeren met een aangepaste code die we binnenkort zullen beschrijven. De code is heel eenvoudig en gemakkelijk te gebruiken, We beginnen met het definiëren van alle vereiste pinnen, in ons geval definiëren we de pinnen voor onze aanraaksensoren en relais.
#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 TOUCH_PIN_3 14_4 27
Vervolgens beginnen we in de setup-sectie met het initialiseren van de UART voor foutopsporing, vervolgens hebben we een vertraging van 1S geïntroduceerd, wat ons wat tijd geeft om een Serial Monitor-venster te openen. Vervolgens gebruiken we de Arduinos pinMode- functie om de Relay-pinnen als uitvoer te maken, wat het einde markeert van de sectie Setup () .
ongeldige setup () {Serial.begin (115200); vertraging (1000); pinMode (Relay_PIN_1, OUTPUT); pinMode (Relay_PIN_2, UITGANG); pinMode (Relay_PIN_3, OUTPUT); pinMode (Relay_PIN_4, OUTPUT); }
We beginnen onze loop- sectie met een if- statement, de ingebouwde functie touchRead (pin_no) wordt gebruikt om te bepalen of een pin is aangeraakt of niet. De functie touchRead (pin_no) retourneert een geheel getalwaardebereik (0 - 100), de waarde blijft altijd in de buurt van 100, maar als we de geselecteerde pin aanraken, daalt de waarde tot bijna nul, en met behulp van de veranderende waarde, we kunnen bepalen of de specifieke pin door een vinger is aangeraakt of niet.
In de if- instructie controleren we op enige verandering in de integerwaarden en als de waarde onder de 28 komt, kunnen we er zeker van zijn dat we een aanraking hebben erkend. Zodra de if- instructie waar wordt, wachten we 50 ms en controleren we de parameter opnieuw, dit zal ons helpen te bepalen of de sensorwaarde ten onrechte is geactiveerd, daarna keren we de status van de pin om met behulp van de digitalWrite (Relay_PIN_1,! DigitalRead (Relay_PIN_1)) methode, en de rest van de code blijft hetzelfde.
if (touchRead (TOUCH_SENSOR_PIN_1) <28) {if (touchRead (TOUCH_SENSOR_PIN_1) <28) {Serial.println ("Sensor één is aangeraakt"); digitalWrite (Relay_PIN_1,! digitalRead (Relay_PIN_1)); }} else if (touchRead (TOUCH_SENSOR_PIN_2) <28) {if (touchRead (TOUCH_SENSOR_PIN_2) <28) {Serial.println ("Sensor twee is aangeraakt"); digitalWrite (Relay_PIN_2,! digitalRead (Relay_PIN_2)); }} else if (touchRead (TOUCH_SENSOR_PIN_3) <28) {if (touchRead (TOUCH_SENSOR_PIN_3) <28) {Serial.println ("Sensor Three is touched"); digitalWrite (Relay_PIN_3,! digitalRead (Relay_PIN_3)); }} else if (touchRead (TOUCH_SENSOR_PIN_4) <28) {if (touchRead (TOUCH_SENSOR_PIN_4) <28) {Serial.println ("Sensor Four is aangeraakt"); digitalWrite (Relay_PIN_4,! digitalRead (Relay_PIN_4)); }}
Ten slotte eindigen we onze code met nog eens 200 ms blokkeervertraging.
Het op ESP32 gebaseerde aanraaksensorcircuit testen
Omdat dit een heel eenvoudig project is, is de testset heel eenvoudig, zoals je kunt zien, heb ik 4 LED's aangesloten met weerstanden die als belasting werken, omdat het is verbonden met het relais, kun je gemakkelijk elke belasting tot 3 Ampère aansluiten.
Verdere verbeteringen
Hoewel de printplaat eenvoudig is, is er nog ruimte voor verbeteringen zoals je kunt zien aan de onderkant van de eigenlijke printplaat, ik heb veel weerstanden aangesloten in een poging om vier indicatie-LED's aan te sluiten, en de grootte van de printplaat kan ook worden verkleind als dat wordt een vereiste, Ik hoop dat je het artikel leuk vond en iets nuttigs hebt geleerd. Als u vragen heeft, kunt u deze achterlaten in het commentaargedeelte hieronder of onze forums gebruiken om andere technische vragen te stellen.