-         

Ergebnis 1 bis 3 von 3

Thema: Kapazitiver sensor

  1. #1
    Erfahrener Benutzer Begeisterter Techniker
    Registriert seit
    11.01.2008
    Ort
    Krefeld
    Beiträge
    272

    Kapazitiver sensor

    Anzeige

    Guten Tag,

    also ich habe bis jetzt den Kapazitäten Sensor immer aus Hardware gemacht, da ich jetzt ein bisschen platz sparen wollte,
    wollte ich nur zwei PORT's vom micro benutzen oder wenn es mir einer erklärt aus ein Port HIER.

    Jetzt habe ich im netz ein code Schnipsel gefunden, der aber nur bei Berührung funktionier und auch nicht die Näherung
    sonder ehrlich 1 oder 0 ist.

    Code:
    
    
    Code:
    #defineF_CPU9600000
    
    
    #include<avr/io.h>
    #include<util/delay.h>
    #include<stdint.h>
    
    
    intmain(void)
    {
    uint16_ti,d;
    
    
    DDRB|=(1<<PB1);
    
    
    while(1)
      {
        d = 1;
    
    
    for(i=1;i<1500;i++)
        {
    DDRB&=~(1<<PB3);// B3 hochohmig
    PORTB|=(1<<PB4);// B4 high
    DDRB|=(1<<PB4);// B4 niederohmig
    
    
    if(!(PINB&(1<<PB3)))
            break;
    
    
    DDRB&=~(1<<PB4);// B4 hochohmig
    PORTB&=~(1<<PB4);// ohne Pullup
    DDRB|=(1<<PB3);// B3 high
    
    
          d++;
        }
    
    
    PORTB&=~(1<<PB3);
    PORTB&=~(1<<PB4);
    DDRB|=(1<<PB3);
    DDRB|=(1<<PB4);
    
    
        if (d < 50)
    PORTB|=(1<<PB1);
        else
    PORTB&=~(1<<PB1);
    
    
    _delay_ms(50);
      }
    }
    Hab mehret Kondensatoren benutzt aber bei 2.2 nf klappt es am besten, mit der Einschränkung das es nur bei Berührung geht.

    Hat jemand eine Idee wieso? oder hat jemand ein anderen Code? Oder weiß jemand wie und ob das Projekt
    mit dem einen Port klappt, denn im Video sieht es recht zuverlässig aus.

    Gruß David
    Ich kam, sah und alles funktionierte **** doch dann klingelte mein Wecker!!!

  2. #2
    Erfahrener Benutzer Begeisterter Techniker
    Registriert seit
    11.01.2008
    Ort
    Krefeld
    Beiträge
    272
    Ich hab es noch mal versucht in dem ich noch einen schritt zurück gegenagen bin.

    Leider komm ich nicht aus der for schleife raus, wo ist mein Fehler?
    Ich benutze zum versuchen den RN-Control und habe einen Kondensator 3,3 nf auf PA7 und GND.

    Code:
    #define F_CPU 9600000 // 9.6 MHz
    
    #include <avr/io.h>
    #include <util/delay.h>
    #include <stdint.h>
    
    int main(void)
    {
      uint16_t i;
    DDRC=0xff;
    PORTC = 0xff;
     
    
      while (1)
      {
    		 DDRA=(1<<PA7);//entladen
    		PORTA=(0<<PA7);
        
    		_delay_us(100);//warten
    
    	
    
        DDRA=(0<<PA7);//aufladen
    	PORTA=(1<<PA7);
    
        for (i = 0;PINA & (1 << PA7) ; i++)
        {
    //Zählt die Schleifen bis PA7 aufgeladen ist.
       
        }
    
    		PORTC = 0xff;
    
      }
    }
    Ich kam, sah und alles funktionierte **** doch dann klingelte mein Wecker!!!

  3. #3
    Erfahrener Benutzer Roboter Genie Avatar von HeXPloreR
    Registriert seit
    08.07.2008
    Ort
    24558
    Alter
    39
    Beiträge
    1.356
    Hallo,

    na vielleicht bringe ich Dich wenigstens auf Ideen zur Fehlersuche.
    Ich denke da ist ein dicker Hund drin und ich frage mich was das nun mit dem Kapazitiven Sensor zu tun hat?

    Wenn die for-Schleife nicht verlassen werden kann, stimmt anscheinend etwas nicht mit der Abbruchbedingung.
    Woher weißt du das Du in der Schleife hängst?

    Und dann noch...

    Wie hoch zählt deine for-Schleife - Ist "i" dafür sicher groß genug?(Überlauf)

    Was macht "PortC = 0xff" nach der for-Schleife? Das stand schon mal irgendwo...falls an dem Port LED hängen, passiert da noch etwas mit wenn er angeht und dann wieder an geht - falls mal dieser Programmteil erreicht wird?

    Gab es eine Compilerwarnung zum "return 0;"?

    Kann ein Kondensator aufladen der zwischen PB7 und GND geschaltet ist und PB7 auf Eingang geschaltet wird?
    Müßte deine Entladung und Aufladung nicht andersherum sein? Bei DDRA = 1 wird geladen, bei 0 entladen?
    Da könnte es schon passiert sein das die Bedingung in die du danach eintrittst nie erfüllt wird und er zählt sich tot.

    Hast Du dir die Beschreibung von deinem Link durchgelesen? Da steht nichts von einem Kondensator der geladen wird?


    Also wenn ich da eine größeres Verständnissproblem habe und ich hier auch nur Müll schreibe, dann klärt mich bitte jemand auf. Am besten direkt hier


    mfg
    Geändert von HeXPloreR (17.07.2012 um 20:25 Uhr)
    "Es ist schwierig, jemanden dazu zu bringen, etwas zu verstehen, wenn er sein Gehalt dafür bekommt, dass er es nicht versteht" [Upton Sinclair] gez-boykott

Ähnliche Themen

  1. Verkaufe Räumung:US-Sensor, IR-Sensor,Displays,MTreiber,Servorboard, Pan&Tilt Köpfe
    Von kellerkind im Forum Kaufen, Verkaufen, Tauschen, Suchen
    Antworten: 3
    Letzter Beitrag: 18.06.2012, 18:42
  2. led's als sensor
    Von Che Guevara im Forum Basic-Programmierung (Bascom-Compiler)
    Antworten: 19
    Letzter Beitrag: 22.04.2010, 23:39
  3. pir sensor
    Von lukiwuki im Forum Sensoren / Sensorik
    Antworten: 16
    Letzter Beitrag: 07.05.2008, 19:51
  4. US-Sensor
    Von nux im Forum Controller- und Roboterboards von Conrad.de
    Antworten: 3
    Letzter Beitrag: 17.08.2004, 13:08
  5. Temp-Sensor KT130 (PTC-Sensor) an C-Control
    Von Thomas im Forum Sensoren / Sensorik
    Antworten: 1
    Letzter Beitrag: 02.12.2003, 13:53

Berechtigungen

  • Neue Themen erstellen: Nein
  • Themen beantworten: Nein
  • Anhänge hochladen: Nein
  • Beiträge bearbeiten: Nein
  •