Forum: Mikrocontroller und Digitale Elektronik Qtouch mit ADC Rotor


von Waldemar M. (waldim90)


Angehängte Dateien:

Lesenswert?

Hi Leute,
da es hier im Forum nicht sehr viel bezüglich Qtouch mittels ADC gibt, 
dachte ich mir ich poste hier vielleicht einfach mal, zumindest bei mir, 
funktionierenden Code. Außerdem habe ich eine Platine mit einem Rotor 
geätzt (nur mit Edding per Hand schnell :) ) um das auch mal 
auszuprobieren.
Da ich zur Qtouch Lib auch nicht viel gefunden habe, möchte ich hier 
gerne auch meinen Code zum Rotor posten und würde mich freuen wenn mir 
jemand Tipps geben kann/will wie man den Code eventuell vereinfacht oder 
verkürzt.

Vielleicht hätte auch jemand Lust eine kleine Lib/Framework zu erstellen 
für Qtouch mit ADC...

Hier der Code für reines Auslesen des ADC Wertes eines Qtouch Button. 
Ich habe 1K als Widerstand in Reihe zum Button...
1
for (int i=0; i<16; i++){       //16 Messungen für Mittelwertbildung
2
    DDRF = 0xFF;                //PortF auf Ausgang setzten
3
    PORTF = 0b00000001;          // PINF0 auf High um CS zu laden und PINF1 auf LOW um Sample & Hold Kondensator(Cs&h) entladen zu können
4
    delayMicroseconds(5);        // kurz warten bis geladen
5
    ADMUX = (ADMUX & 0b11100001) | (1<<MUX0); //ADC Kanal ändern um Cs&h zu entladen
6
    ADCSRA |= (1<<ADSC);          // ADC Cs&h entladen
7
    while(ADCSRA & (1<<ADSC)){  }
8
    adc0 = ADC;                  //speichern um nachher zu überprüfen
9
    DDRF = 0x00;                  //Port auf Eingang
10
    PORTF = 0x00;                  //Tristate
11
    ADMUX = (ADMUX & 0b11100000);  //Wieder ADC0 Kanal wählen
12
    delayMicroseconds(5);          //warten?! geht auch ohne...
13
    ADCSRA |= (1<<ADSC);            //Messung
14
    while(ADCSRA & (1<<ADSC)){  }
15
    adc1 = ADC;
16
    adc2 += adc1;                  //Mittelwertbildung
17
  }
18
  adc2 /=16;
Wie man an der delayMicroseconds erkennt, habe ich das alles in der 
Arduino IDE ausprobiert, funktioniert eindwandfrei...
Im Anhang eine C-Datei mit dem Code um einen Rotor (wie auf dem Bild im 
Anhang) auszuwerten...

Vielleicht kann ja jemand was mit dem Code für seine Projekte anfangen.

MfG Waldemar

Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.