- 3D-Druck Einstieg und Tipps         
Seite 1 von 2 12 LetzteLetzte
Ergebnis 1 bis 10 von 15

Thema: ADC-port defekt??

  1. #1
    Benutzer Stammmitglied
    Registriert seit
    06.10.2009
    Beiträge
    42

    ADC-port defekt??

    Anzeige

    Praxistest und DIY Projekte
    hi

    ich habe folgendes problem:
    ich will mit der adcwert funktion des demoprogrammes den widerstand eines fototransistors(http://www.conrad.de/ce/de/product/1...FW-300/0231210) berechnen bzw. die helligkeit.
    aber egal an welchem pin ich den sensor anschließe zeigt das bord 1023 als adc wert an .
    bitte helft mir...

  2. #2
    Moderator Robotik Einstein Avatar von Kampi
    Registriert seit
    21.11.2009
    Ort
    Monheim, Nordrhein-Westfalen, Germany
    Alter
    34
    Beiträge
    3.501
    Blog-Einträge
    9
    Benutzt du einen SPannungsteiler zum messen oder hast du nur den Widerstand woran du misst?
    Du baust einen SPannungsteiler aus einem 10kOhm Widerstand z.B. und dem LDR. Wenn sich nun die Helligkeit ändert ändert sich der Widerstandswert des LDRs und damit auch der Spannungsabfall an diesem.

    Wenn der ADC kaputt ist wird der sicher nicht Anzeigen das 5V an dem anliegen, weil der ADC dann wahrscheinlich gar nichts mehr misst

  3. #3
    Benutzer Stammmitglied
    Registriert seit
    06.10.2009
    Beiträge
    42
    danke für die antwort

    ich habe jetzt einen spannugsteiler gebaut mit einem 10kohm widerstand aber wenn ích den internen pullup anhabe zeigt er 1023 an und wenn nicht schwankt der wert zwischen 500 und 480 egal was ich mache (ich hab auch einfach den sensor abmontiert und der wert blieb gleich ) das multimeter zeigt aber immer noch halbwegs korrekte werte beim sensor an :/
    woran liegt das und wie behebe ich das?????

    lg tobi

  4. #4
    Erfahrener Benutzer Robotik Visionär
    Registriert seit
    26.11.2005
    Ort
    bei Uelzen (Niedersachsen)
    Beiträge
    7.942
    Ein paa schwankungen sind bei einem LDR recht schnell eingefangen. Das meiste künstliche Licht ist mit 100 Hz moduliert. Das sieht man nicht, aber der LDR / AD Wandler kreigt das mit und mißt dann zu einem mehr oder weniger zufälligen Zeitpunkt auch mehr oder weniger zufällige Werte. Wenn man das etwas unterdrücken will, müßte man mehr Werte messen und über z.B. 10 / 20 oder 40 ms mitteln - so machen das die meisten Multimeter auch.

    Wenn der interne Pullup so viel Einfluß hat, ist da was falsch. Entweder ist die Signalquelle zu hochohmig, oder man hat den Pin noch als Ausgang.

  5. #5
    Benutzer Stammmitglied
    Registriert seit
    06.10.2009
    Beiträge
    42
    hi
    der adcwert schwankt aber egal was ich mache ich hab den sogar direkt mit gnd und vcc verbunden da tut sich nix.
    die pins sind alle als eingange definiert und wenn uch die pullups an habe zeigt er ca. 480 +-20 an wenn nicht 1023 +-1
    :/

    lg tobi

  6. #6
    Moderator Robotik Einstein Avatar von Kampi
    Registriert seit
    21.11.2009
    Ort
    Monheim, Nordrhein-Westfalen, Germany
    Alter
    34
    Beiträge
    3.501
    Blog-Einträge
    9
    Post mal bitte dein Programm + Schaltplan. Möchte da mal drüber schauen kann mir anhand von dem Text recht wenig vorstellen.

  7. #7
    Benutzer Stammmitglied
    Registriert seit
    06.10.2009
    Beiträge
    42
    also der schalt plan sieht so aus, dass ich den adc port direkt mit gnd verbinde und di programmzeilen:
    header:
    Code:
    uint16_t adcwert(uint8_t kanal)
    {
    	uint16_t wert = 0; //Variable für Ergebnis deklarieren
    
    	ADCSRA = (1<<ADEN)|(1<<ADPS2)|(1<<ADPS1)|(1<<ADPS0);	//ADEN aktiviert überhaupt erst den internen ADC-Wandler, ADPS2 bis ADPS0 stellen den verwendeten Prescaler ein, denn die Wandlerfrequenz muss immer zwischen 50 und 200 kHz liegen! Der Prescaler muss bei 16MHz also zwischen 80 und 320 eingestellt werden, als einzige Möglichkeit bleibt hier 128 (=alle auf 1).   
    
    	ADMUX = kanal;
    	//ADMUX = (1<<REFS1)|(1<<REFS0); //Einstellen der Referenzspannung auf "extern", also REFS1 und REFS0 auf "0" - daher auskommentierte Zeile
    	
    	ADCSRA |= (1<<ADSC);	//nach Aktivierung des ADC wird ein "Dummy-Readout" empfohlen, man liest also einen Wert und verwirft diesen, um den ADC "warmlaufen zu lassen"      
        while(ADCSRA & (1<<ADSC)) {} //auf Abschluss der Konvertierung warten
    	wert = ADCW;	//ADCW muss einmal gelesen werden, sonst wird Ergebnis der nächsten Wandlung nicht übernommen.
     
    	/* Eigentliche Messung - Mittelwert aus 4 aufeinanderfolgenden Wandlungen */
    	wert = 0; 
    	for(uint8_t i=0; i<4; i++)
    	{
    		ADCSRA |= (1<<ADSC); 	//eine Wandlung "single conversion" starten
    		while(ADCSRA & (1<<ADSC)) {} 	//auf Abschluss der Konvertierung warten
    		wert = wert + ADCW;	 //Wandlungsergebnisse aufaddieren
        }
    	
    	ADCSRA &= ~(1<<ADEN);	//ADC deaktivieren
     
    	wert = wert/4;		//Durchschnittswert bilden
     
    	return wert;
    }
    und in der main funktion:
    Code:
            int adc=0;
            char l[10];
            adc=ReadChannel(0);
    	snprintf (l, (size_t)10, "%d", adc);
    	lcd_clrscr();
    	lcd_puts(l);
            waitms(200);
    lg tobi

    PS:bitte verzeiht mir meine programmierfehler falls vorhanden^^

  8. #8
    Erfahrener Benutzer Robotik Einstein
    Registriert seit
    08.01.2006
    Beiträge
    4.555
    Wenn Du den ADC auf GND legst, soll Dein LDR auch nix bringen.
    Versuche es einmal wie in der Zeichnung, der C ~ 100n kann die
    Schwankungen (etwas) glätten. Vreff sollte dabei auf VCC programmiert
    sein und der Interne Pull-up ausgeschaltet.

    Gruß Richard

  9. #9
    Erfahrener Benutzer Robotik Einstein
    Registriert seit
    08.01.2006
    Beiträge
    4.555
    Sorry, Zeichnung vergessen.
    Angehängte Dateien Angehängte Dateien
    • Dateityp: pdf adc.pdf (83,4 KB, 13x aufgerufen)

  10. #10
    Benutzer Stammmitglied
    Registriert seit
    06.10.2009
    Beiträge
    42
    hi
    danke für deine mühe aber leider geth immer noch garnix der wert liegt konstant bei ca 500 ,ich hab allerdings auch keinen kondensator gefunden :P(aber der ha je eh keine sooo große wirkung)


    lg tobi

Seite 1 von 2 12 LetzteLetzte

Berechtigungen

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

LiFePO4 Speicher Test