Szukaj kodu

Użycie modułu dotykowego TTP223B i przekaźnika do sterowania obciążeniami AC/DC za pomocą Arduino

Użycie modułu dotykowego TTP223B i przekaźnika do sterowania obciążeniami AC/DC za pomocą Arduino

W tym samouczku dowiemy się, jak używać pojemnościowego modułu dotykowego TTP223B wraz z przekaźnikiem do sterowania obciążeniami AC lub DC za pomocą Arduino. Ta konfiguracja umożliwia wygodne włączanie urządzeń, takich jak żarówki lub inne elementy elektryczne, za pomocą dotyku. Nauczysz się, jak podłączyć komponenty, napisać kod Arduino oraz dostosować czas, przez jaki obciążenie pozostaje aktywne po dotknięciu. To świetny projekt zarówno dla początkujących, jak i doświadczonych użytkowników chcących poszerzyć swoje umiejętności.

Schematic of TTP223 module
Arduino wring for TTP223 Touch sensor with relay
TTP223 Touch module - Top view
TTP223 Touch module - Top view

W trakcie tego przewodnika przeprowadzimy Cię przez niezbędne komponenty, instrukcje podłączenia oraz programowanie wymagane do uruchomienia tego projektu. Dowiesz się również, jak zmodyfikować czas aktywacji obciążenia zgodnie z własnymi preferencjami (na filmie w 10:15). Koniecznie obejrzyj towarzyszące wideo, aby zobaczyć wizualną demonstrację procesu.

Wyjaśnienie sprzętu

Kluczowymi komponentami tego projektu są moduł dotykowy TTP223B, przekaźnik oraz Arduino. Moduł TTP223B wykrywa dotyk i wysyła sygnał do Arduino, które następnie może sterować przekaźnikiem. Przekaźnik działa jak przełącznik, umożliwiając bezpieczne sterowanie obciążeniami AC lub DC o wyższym napięciu.

Układ TTP223B jest produkowany przez Taiwan Semiconductor (TONTEK), a moduł działa przy napięciu zasilania od 2,2 V do 5,5 V i ma trzy piny: VCC (zasilanie), GND (masa) i SIG (sygnał). Gdy pad dotykowy jest aktywowany, pin SIG wysyła wysoki sygnał do Arduino. Pełne szczegóły znajdziesz w karcie katalogowej. Z kolei przekaźnik wymaga sygnału sterującego z Arduino, aby włączyć lub wyłączyć obciążenie. Sterowanie to realizowane jest przez cyfrowy pin wyjściowy podłączony do przekaźnika.

Szczegóły z karty katalogowej

ProducentTaiwan Semiconductor (TONTEK)
Numer częściTTP223B
Napięcie logiczne/IO2,2 - 5,5 V
Napięcie zasilania2,2 - 5,5 V
Prąd wyjściowy (na kanał)maks. 20 mA
Prąd szczytowy (na kanał)maks. 50 mA
Zalecenia dotyczące częstotliwości PWMNie dotyczy
Progi logiczne wejścia0,3 * VCC (niski), 0,7 * VCC (wysoki)
Spadek napięcia / RDS(on) / nasycenieNie dotyczy
Limity termiczneNie dotyczy
ObudowaTO-220
Uwagi / wariantyZnany również jako BA6

  • Zapewnij prawidłowe uziemienie, aby uniknąć fałszywych wyzwalaczy.
  • Użyj kondensatora, aby odfiltrować szumy na linii sygnału dotykowego.
  • Sprawdź specyfikację przekaźnika, aby dopasować go do wymagań obciążenia.
  • Zachowaj ostrożność przy połączeniach AC — zapewnij odpowiednią izolację i środki bezpieczeństwa.
  • Dostosuj czas w kodzie do pożądanego czasu aktywacji obciążenia.

Instrukcje podłączenia

Aby podłączyć moduł dotykowy TTP223B i przekaźnik do Arduino, wykonaj następujące kroki:

Najpierw podłącz pin VCC modułu TTP223B do źródła zasilania 5 V, zarówno z Arduino, jak i z zewnętrznego zasilacza. Następnie podłącz pin GND modułu TTP223B do masy. Pin SIG należy podłączyć do pinu 2 na Arduino, który będzie odczytywał sygnał dotykowy.

W przypadku przekaźnika podłącz jego pin VCC do tego samego źródła zasilania 5 V, a pin GND do masy. Pin sygnału sterującego przekaźnika należy podłączyć do pinu 10 na Arduino. Upewnij się, że przekaźnik jest prawidłowo podłączony do obciążenia, które chcesz sterować — jeden przewód do pinu wspólnego (COM), a drugi do pinu normalnie otwartego (NO). Taka konfiguracja umożliwia przekaźnikowi włączanie i wyłączanie obciążenia na podstawie sygnału sterującego z Arduino.

Przykłady kodu i omówienie

Poniższy fragment kodu inicjalizuje konfigurację modułu dotykowego TTP223B i przekaźnika. Ustawia tryby pinów dla wejścia i wyjścia, umożliwiając Arduino odczytywanie sygnałów dotykowych i sterowanie przekaźnikiem.

void setup() {
    Serial.begin(9600);
    pinMode(10, OUTPUT); // Pin sterujący przekaźnikiem
    pinMode(2, INPUT);   // Pin wejściowy dotyku
    Serial.println("Robojax Test: TTP223B touch");
}

W funkcji setup definiujemy pin 10 jako wyjście do sterowania przekaźnikiem oraz pin 2 jako wejście do odczytu sygnału dotykowego. Monitor szeregowy jest inicjalizowany do celów debugowania.

Główna pętla programu sprawdza, czy przycisk dotykowy został naciśnięty. Jeśli tak, przekaźnik jest aktywowany, włączając podłączone obciążenie.

void loop() {
    if(digitalRead(2)) {
        Serial.println("Button Touched"); 
        digitalWrite(10, LOW); // Włącz przekaźnik     
        delay(LD); 
    } else {
        digitalWrite(10, HIGH); // Wyłącz przekaźnik
    }
}

Ten kod w sposób ciągły odczytuje stan pinu 2. Jeśli czujnik dotykowy jest aktywowany, włącza przekaźnik na określony czas zdefiniowany przez zmienną LD. Jeśli czujnik nie jest dotknięty, przekaźnik jest wyłączany.

Demonstracja / Czego się spodziewać

Po zakończeniu podłączania i wgraniu kodu powinieneś zobaczyć, że podłączone obciążenie (np. żarówka) włącza się po dotknięciu modułu TTP223B. Czas, przez który obciążenie pozostaje włączone, jest kontrolowany przez zmienną LD w kodzie. Jeśli chcesz, aby obciążenie było włączone dłużej, po prostu zwiększ wartość LD do pożądanego czasu w milisekundach.

Typowe problemy obejmują nieprawidłowe podłączenie, które może prowadzić do braku aktywacji przekaźnika lub braku reakcji czujnika dotykowego. Upewnij się, że wszystkie połączenia są pewne i że używasz właściwych pinów zdefiniowanych w kodzie. Ponadto zachowaj ostrożność podczas pracy z obciążeniami AC, aby uniknąć porażenia prądem lub uszkodzeń.

Znaczniki czasu wideo

  • 00:00 - Wprowadzenie do projektu
  • 02:30 - Przegląd okablowania
  • 05:15 - Wyjaśnienie kodu
  • 10:15 - Demonstracja konfiguracji

Obrazy

Arduino wring for TTP223 Touch sensor with relay (blue)
Arduino wring for TTP223 Touch sensor with relay (blue)
Arduino wring for TTP223 Touch sensor with relay
Arduino wring for TTP223 Touch sensor with relay
TTP223 Touch module - Top view
TTP223 Touch module - Top view
TTP223 Touch module - back view
TTP223 Touch module- back view
TTP223 Touch module - Top view
TTP223 Touch module - Top view
TTP223 Touch module - back view
TTP223 Touch module - back view
Schematic of TTP223 module
Schematic of TTP223 module
21-TTP223B capacitive touch sensor with relay and AC load code
Język: C++
/*
 * This is the Arduino code for TTP223B capacitive touch switch with relay
 * The output pin 10 is connected to the relay 
 * By touching the touch pad TTP223B or TTP223N-BA6, the relay will be turned ON

 * 
 * Written by Ahmad Nejrabi for Roboja Video
 * Date: December 4, 2017, in Ajax, Ontario, Canada
 * Permission granted to share this code, given that this
 * note is kept with the code.
 * Disclaimer: This code is "AS IS" and for educational purposes only.
 * 
 */


 int LD = 200; // Loop Delay. Controls how long after release the bulb is ON

void setup() {
    Serial.begin(9600);
    // output pins
    pinMode(10, OUTPUT);// LED for button 1
          

    // input pins
    pinMode(2, INPUT);// Button 1 input pin 2  
           


    Serial.println("Robojax Test: TTP223B touch");

}

void loop() {

    // button 1 action
    if(digitalRead(2)){
      Serial.println("Button Touched"); 
      digitalWrite(10, LOW); // Turn the LED ON     
      delay(LD); 
    }else{
      digitalWrite(10, HIGH);// Turn OFF the LED
    }


}// loop
29-How to turn on an AC bulb with a TTP223 capacitive touch Arduino and relay code
Język: C++
/*
 * This is the Arduino code for TTP223 Capacitive Touch switch with relay to turn AC or DC load
 // December 13, 2017
 // Written for Robojax.com video 
 // Using TTP223 Touch module to turn AC (or DC) load ON or OFF.
 // When the touch pad is touched the light on the relay will turn on and the COM and NO pin will be connected
 * watch video for details https://youtu.be/YSI1PdSLbt0
 * 

 * 
 * Written by Ahmad Nejrabi for RoboJax Video
 * Date: December 4, 2017, in Ajax, Ontario, Canada
 * Permission granted to share this code given that this
 * note is kept with the code.
 * Disclaimer: this code is "AS IS" and for educational purposes only.
 * 
 */

 // December 12, 2017
 // Written for Robojax.com video 
 // Using TTP223 Touch module to turn AC (or DC) load ON or OFF.
 // When the touch pad is touched the light on the relay will turn on and the COM and NO pin will be connected


int touchPin = 2;// connect output from TTP223 to this
int val = 0; 
int relayPin = 10;// Connected to relay



void setup() {
  Serial.begin(9600);
  pinMode(touchPin, INPUT); 
  pinMode(relayPin, OUTPUT);

}

void loop() {
  digitalWrite(relayPin, HIGH);
  val = digitalRead(touchPin); 
  if(val ==1){
    Serial.println("Touched");
    digitalWrite(relayPin, LOW);

  }
  delay(100);
  Serial.println();
}
30-TTP223 Capacitive Touch Arduino with relay code and a 5-second delay
Język: C++
/*
 * This is the Arduino code for TTP223 Capacitive Touch switch with relay to turn AC or DC load with delay
 // December 13, 2017
 // Written for Robojax.com video 
 // Using TTP223 Touch module to turn an AC (or DC) load ON and waits for 5 seconds before it goes OFF
 // When the touch pad is touched the light on the relay will turn on and the COM and NO pins will be connected
 * Watch the video for details: https://youtu.be/YSI1PdSLbt0
 * 

 * 
 * Written by Ahmad Nejrabi for RoboJax Video
 * Date: December 4, 2017, in Ajax, Ontario, Canada
 * Permission granted to share this code given that this
 * note is kept with the code.
 * Disclaimer: This code is "AS IS" and for educational purposes only.
 * 
 */

 // December 12, 2017
 // Written for Robojax.com video 
 // Using TTP223 Touch module to turn an AC (or DC) load ON or OFF.
 // When the touch pad is touched the light on the relay will turn on and the COM and NO pins will be connected


int touchPin = 2;// connect output from TTP223 to this
int val = 0; 
int relayPin = 10;// Connected to relay
int wait = 5;// wait for 5 seconds


void setup() {
  Serial.begin(9600);
  pinMode(touchPin, INPUT); 
  pinMode(relayPin, OUTPUT);

}

void loop() {
  digitalWrite(relayPin, HIGH);
  val = digitalRead(touchPin); 
  if(val ==1){
    Serial.println("Touched");
    digitalWrite(relayPin, LOW);
    delay(wait*1000);
  }
  delay(100);
  Serial.println();
}

Zasoby i odniesienia

Brak zasobów.

Pliki📁

Karta katalogowa (pdf)

Inne pliki