- 12V Akku mit 280 Ah bauen         
Ergebnis 1 bis 10 von 10

Thema: Kapazitiven Sensor -> 1 Port

Hybrid-Darstellung

Vorheriger Beitrag Vorheriger Beitrag   Nächster Beitrag Nächster Beitrag
  1. #1
    Erfahrener Benutzer Begeisterter Techniker
    Registriert seit
    11.01.2008
    Ort
    Krefeld
    Beiträge
    272
    Ja Punt 3 war ja mein Vorhaben:

    Ich würde dann ein Port als Eingang setzen, und den Kondensator aufladen und warten bis der Port High wird.
    dann den Pull up widerstand setzen so der sich wieder entläd.
    Das habe ich alles in einer "for" schleife gesetzt und zähl die Durchgänge bis der Port high wird.
    Die laufvariabel wird dann abgefragt. sollte die sich ändern, braucht der Kondensator wegen den Finger länger, und
    müsste das so abfangen.
    Hab da mal zwei Zeilen geschrieben, werde es aber erst morgen Testen und optimieren sobald
    meine Sachen ankommen.

    [QUOTE]

    #include<avr/io.h>


    intmain(void)
    {
    intvar=0;
    inti=0;
    intgrenzwert=0;//grenzwert eintragen
    intdurchschnitt=0;
    DDRA=(0<<PA0);
    PORTA=(0<<PA0);
    DDRB=(1<<PB0);
    PORTB=(0<<PB0);
    while(1)
    {
    for(i=0;(1<<PA0);++i)
    {

    var=var+1;
    }

    PORTA=(1<<PA0);//Pullup aktivieren

    for(i=0;(0<<PA0);++i)
    {

    var=var+1;
    }
    durchschnitt=var/2;

    if(durchschnitt>=grenzwert)
    {
    PORTB=(1<<PB0);
    }
    else
    {
    PORTB=(0<<PB0);
    }

    }
    }
    [QUOTE]

    Was ich mich jetzt nur gefragt habe, wie der hier das macht, mit zwei Kondensatoren?
    Ich glaube die sensor flache ist ein halber Kondensator und mittels den Finger vervollständigt man den Kondensator und
    man fängt das ab.
    Das was ich so Vorteilhaft finde ist die Schaltung bei Ihm.
    Und nach dem Video funktioniert sie sehr genau und parallel...
    Ich kam, sah und alles funktionierte **** doch dann klingelte mein Wecker!!!

  2. #2
    Erfahrener Benutzer Roboter-Spezialist
    Registriert seit
    26.11.2004
    Beiträge
    451
    Hi,

    Die Kondensatoren bei ihm in der Schaltung sind Optional (Falls die Fläche zu klein ist), bzw Abblockkondensatoren.

    Habe mal deinen Code überflogen und meine 2 Fehler gefunden zu haben.

    1. Die Bedingung in deiner For-Schleife Da fehlt noch der Pin

    2. Die Entladezeit musst du nicht messen, da die Relativ egal ist. Denn du entlädst den Sensor direkt an GND und das sollte innerhalb von ein Paar Takten erledigt sein (mit und ohne Finger). Wichtig ist die Ladezeit.

    In deinem Späteren Code sollte der Pull Up am Pin dauerhaft deaktiviert sein, nur zum Messen wird er Aktiviert und dann hochgezählt, bis der Eingang high ist.

    Code:
    while(1)
    {
    PORTA=(0<<PA0);//Pullup deaktivieren um Sensor zu entladen
    
    sleep(1); // Bestimmte Zeit warten, damit der Sensor entladen ist.
    
    PORTA=(1<<PA0);//Pullup aktivieren um Sensor zu laden
    
    for(i=0;PINA & (1<<PA0);i++) // Abfrage ob sensor schon geladen ist.
    {
    var=var+1;   // Wird evtl nicht benötigt, da i schon hochgezählt wird (?)
    }
    
    // Ausgabe
    if(var>=grenzwert)
    {
    PORTB=(1<<PB0);
    }
    else
    {
    PORTB=(0<<PB0);
    }
    
    }
    }
    So würde ich das Machen, bin aber in C nicht so fit, kann also noch ein Paar Fehler haben.

  3. #3
    Erfahrener Benutzer Begeisterter Techniker
    Registriert seit
    11.01.2008
    Ort
    Krefeld
    Beiträge
    272
    Danke erstmal, hoffe ich Krieg heute meine Sachen und kann das mal so aufbauen!

    Hat den schon jemand den Code von der Website durchgeguckt, wie er das macht, hab
    sein ekläungs Text mal über google übersetzen lassen, da kam aber nichts vernümpftigen raus!
    Ich kam, sah und alles funktionierte **** doch dann klingelte mein Wecker!!!

  4. #4
    Erfahrener Benutzer Begeisterter Techniker
    Registriert seit
    11.01.2008
    Ort
    Krefeld
    Beiträge
    272
    Es klappt nicht

    Habe den Kondensator zwischen PA7 und masse gesteckt und die LED liegt an PA2

    #include<avr/io.h>#defineF_CPU1000000UL// 1 MHz
    #include<util/delay.h>






    intmain(void)
    {

    inti=0;
    intgrenzwert=20;//grenzwert eintragen

    DDRA=(0<<PA7);
    PORTA=(0<<PA7);
    DDRA=(1<<PA2);
    PORTA=(0<<PA2);

    while(1)
    {
    PORTA=(0<<PA7);

    _delay_ms(1);
    PORTA=(1<<PA7);

    for(i=0;PINA&(1<<PA7);++i)
    {


    }

    if(i>=grenzwert)
    {
    PORTA=(1<<PA2);
    }
    else
    {
    PORTA=(0<<PA2);
    }

    }
    }



    Habe ein 2,2 pF Kerko dran...

    Was ist falsch?
    Ich kam, sah und alles funktionierte **** doch dann klingelte mein Wecker!!!

  5. #5
    Erfahrener Benutzer Robotik Visionär
    Registriert seit
    26.11.2005
    Ort
    bei Uelzen (Niedersachsen)
    Beiträge
    7.942
    Für die Messung muss wohl schon das Datenrichtungsregister umgeschaltet werden zum entladen des Kondensators.

    Es ist auch zu beachten, das man sehr leicht Störungen von der Netzfrequenz einfängt. Es reicht also nicht eine Messung, sondern man wird viele Messungen über 20 ms Verteilt machen müssen. So ist das auch im längeren Code drin (nur für 1/60 s).

  6. #6
    Erfahrener Benutzer Begeisterter Techniker
    Registriert seit
    11.01.2008
    Ort
    Krefeld
    Beiträge
    272
    aber um den Pull up wiederstand zu aktivieren reicht doch
    PORTA=(1<<PA7);
    oder nicht?
    Ich kam, sah und alles funktionierte **** doch dann klingelte mein Wecker!!!

  7. #7
    Erfahrener Benutzer Robotik Visionär
    Registriert seit
    26.11.2005
    Ort
    bei Uelzen (Niedersachsen)
    Beiträge
    7.942
    Für die Messung muss man umschalten zwischen Ausgang-low und PullUp akitv. Dazu muss man sowohl das Daterichtungsregister (DRRA) ändern als auch das Ausgaberegister (PORTA).
    Also etwa in der Reihenfolge:
    DRRA=(1<<PA7);
    PORTA=(0<<PA7);
    etwas Warten
    DRRA=(0<<PA7);
    PORTA=(1<<PA7); // ab hier zählt die Zeit

    In der Regel wird man das ganz auch noch mehrmals über 20 ms machen müssen und dann sehen wie oft man über die Schwelle kommt, bzw. was als Mittelwert rauskommt.

Ähnliche Themen

  1. Frage zur Funktion des kapazitiven Regensensors
    Von Flummibär im Forum Sensoren / Sensorik
    Antworten: 7
    Letzter Beitrag: 16.09.2011, 08:22
  2. Antworten: 11
    Letzter Beitrag: 18.02.2009, 10:07
  3. Kapazitiven Sensor auslösen
    Von beginner1101 im Forum Sensoren / Sensorik
    Antworten: 10
    Letzter Beitrag: 03.07.2008, 08:21
  4. Schalter als Sensor an Port A
    Von mintekinder im Forum Sensoren / Sensorik
    Antworten: 1
    Letzter Beitrag: 31.01.2008, 16:55
  5. Kapazitiven Sensor selber bauen
    Von KsB im Forum Sensoren / Sensorik
    Antworten: 8
    Letzter Beitrag: 28.06.2007, 19:43

Berechtigungen

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

LiFePO4 Speicher Test