Kapazitiver Touchsensor

Gast #4207558
Lesenswert?
• ▲
▼
Hallo
Ich versuche nun schon seit längerer Zeit einen kapazitiven Touchsensor 
mit einem Atmega8 zu bauen.
Ich habe auch schon sämtliche Beiträge durchforstet und bin nicht 
dahintergekommen wieso es bei mir nicht funtkioniert.
Mein Aufbau ist folgendermaßen:
An PC3 ist ein Widerstand und die Touchelektrode (ca 15x15mm große 
Verzinnte Fläche) in Reihe geschaltet.
Zwischen PC3 und PC2 ist ein Keramikkondensator mit 22nF.
An PB1 ist eine LED.
Mein Problem ist, dass die LED bereits nach einem Durchlauf leuchtet 
(auch Testweise bei 10uF Elko, müsste länger dauern beim Laden als ein 
Schleifendurchlauf). Vllt findet jemand einen Fehler im Code:
1
int main(void)
2
{
3
  DDRB |= (1<<PB1);
4
  DDRC |= ((1<<PC2) | (1<<PC3));
5
  PORTC &= ~((1<<PC2) | (1<<PC3));
6
  PORTB &= ~(1<<PB1);
7
  uint16_t Zaehler;
8
    while(1)
9
    {
10
  //Zähler zurück  
11
  Zaehler = 0;
12
  //Entladen
13
  DDRC |= ((1<<PC2) | (1<<PC3));
14
  PORTC &= ~((1<<PC2) | (1<<PC3));
15
  
16
  //Schleife
17
  do 
18
  {  
19
    //Touch Elektrode Laden
20
    DDRC |= (1<<PC3); //PC3 als Ausgang
21
    DDRC &= ~(1<<PC2); //PC2 als Eingang
22
    PORTC &= ~(1<<PC2); //Pullup aus
23
    PORTC |= (1<<PC3); //PC3 auf high
24
    _delay_us(10); //warten
25
    //Ladungen verteilen
26
    DDRC &= ~(1<<PC3); //PC3 als Eingang
27
    PORTC &= ~(1<<PC3); //Pullup aus
28
    DDRC |= (1<<PC2); //PC2 als Ausgang
29
    PORTC &= ~(1<<PC2); //PC2 auf low
30
    _delay_us(10); //warten
31
    //Zähler
32
    Zaehler++;
33
  } while (PORTC & (1<<PC3)); //Abfrage ob PC3 bereits high ist
34
  
35
  if (Zaehler < 2) 
36
  {
37
    PORTB ^= (1<<PB1);
38
  }
39
  }
40
}

Antwort schreiben

Hinweis: der ursprüngliche Beitrag ist mehr als 6 Monate alt. Bitte hier nur auf die ursprüngliche Frage antworten, für neue Fragen einen neuen Beitrag erstellen.

Formatierung
  • [c]C-Code[/c]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] – Link zu einem Artikel
  • Verweis auf einen anderen Beitrag: Rechtsklick auf dessen Beitrags-ID (#8078628), „Adresse kopieren“, in den Text einfügen

Mehr zur Formatierung

Längeren Sourcecode als Anhang, nicht in den Text. JPG nur für Fotos und Scans; Zeichnungen und Screenshots als PNG oder GIF. Siehe Bildformate.

Schon registriert? Anmelden

Wird nicht angezeigt. Wir schicken dir einen Link; sobald du damit bestätigst, erscheint dein Beitrag.

Mit dem Abschicken legst du einen kostenlosen Account an und erkennst die Nutzungsbedingungen und die Datenschutzerklärung an.