Forum: Mikrocontroller und Digitale Elektronik Netzbrummen mit ATMEGA/Arduino


von Tim  . (cpldcpu)


Angehängte Dateien:

Lesenswert?

Ich versuche gerade die allseits beliebte Anwendung von LEDs als 
Lichtsensor nachzuvollziehen [1]. Dazu habe ich eine LED an die Pins PC0 
und PC1 eines ATmega328p auf einem Arduino Duemilanove angeschlossen. 
Mein Programm lädt die LED in Sperreichtung auf und misst dann 
anschließen den Verlauf der Spannung über dem Eingang. Soweit 
funktioniert das auch ganz gut - man kann deutlich sehen dass die 
Spannung bei stärkerer Beleuchtung schneller abgebaut wird.

Allerdings ist mir eine systematische Streuung der Messwerte 
aufgefallen. Nachdem ich die Messdaten über die Zeit geplottet habe 
(Siehe Bilder, einmal mit und einmal ohne LED), ist auch relativ klar wo 
dieses her kommt: Das Signal am offenen Pin wird von einem starken 
Netzbrummen mit bis zu 500mV Vpp überlagert.

Das Board ist nur über ein USB-Kabel mit dem Computer verbunden. Der 
Betrieb über einen USB-Hub bringt nur geringe Verbesserungen. Das 
Ausschalten von Lampen und Moniteren und der Nähe hat nicht viel 
geholfen.

- Ist die ein bekanntes Problem mit dem Arduino (konnte nichts finden)?
- Lässt sich das durch Hardwaremaßnahmen abstellen?
- Gibt es Ideen, dieses Problem Softwaremäßig zu beseitigen? 
Mittelwertbildung über 20ms?

[1] http://www.merl.com/reports/docs/TR2003-35.pdf
1
    
2
3
    int i,k;
4
    int temp[64];
5
6
    DDRC = 0x01;      // LED anode to gnd, float cathode
7
    PORTC = _BV(PC1);    // Charge led cathode via pull up
8
    _delay_us(50);
9
    PORTC &=~(_BV(PC1));  // pull up off
10
11
    for (i=0; i<64; i++) {
12
        ADCSRA  |=_BV(ADSC); // Start conversion
13
        while (!(ADCSRA&_BV(ADIF)));  //~100 us
14
        ADCSRA  |=_BV(ADIF); // Clear ADIF
15
        
16
        _delay_us(200);
17
18
        temp[i]=ADC;
19
    }

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.