- fchao-Sinus-Wechselrichter AliExpress         
Seite 4 von 5 ErsteErste ... 2345 LetzteLetzte
Ergebnis 31 bis 40 von 46

Thema: Frage zu Fotodioden

  1. #31
    Erfahrener Benutzer Begeisterter Techniker Avatar von PCMan
    Registriert seit
    05.08.2006
    Ort
    Munich
    Beiträge
    311
    Anzeige

    Powerstation Test
    naja wie gesagt, das ist ja keine "normale LED"...

  2. #32
    Erfahrener Benutzer Begeisterter Techniker Avatar von PCMan
    Registriert seit
    05.08.2006
    Ort
    Munich
    Beiträge
    311
    Hi,
    also ich habe jetzt folgendes Durchgeführt:


    OPA2350:
    Angelegte Spannung +5V
    +: auf GND
    -: Fotodiode BPX63. Mit 470kOhm mit Ausgang verbunden.
    Out: Geht in den ADC5 des ATMega 8

    Mega8:
    VRef mit 100n auf Masse.

    Source (z.T. geklaut von mikrocontroller.net :
    Code:
    #include <stdlib.h>
    #include <avr/io.h>
    #include <avr/iom8.h>
    #include <util/delay.h>
    #include "lcd.h"
    
    uint16_t ReadADC()
    {
      uint8_t i;
      uint16_t result;
     
      ADCSRA = (1<<ADEN) | (1<<ADPS1) | (1<<ADPS0);    // Frequenzvorteiler 
                                   // setzen auf 8 (1) und ADC aktivieren (1)
     
      ADMUX = 0b0101;                      // Kanal waehlen
    
      ADMUX |= (1<<REFS1) | (1<<REFS0); // interne Referenzspannung nutzen 
     
      /* nach Aktivieren des ADC wird ein "Dummy-Readout" empfohlen, man liest
         also einen Wert und verwirft diesen, um den ADC "warmlaufen zu lassen" */
     
      ADCSRA |= (1<<ADSC);              // eine ADC-Wandlung 
      while ( ADCSRA & (1<<ADSC) ) {
         ;     // auf Abschluss der Konvertierung warten 
      }
    
      result = ADCW;  // ADCW muss einmal gelesen werden,
                      // sonst wird Ergebnis der nächsten Wandlung
                      // nicht übernommen.
     
      /* Eigentliche Messung - Mittelwert aus 4 aufeinanderfolgenden Wandlungen */
      result = 0; 
      for( i=0; i<4; i++ )
      {
        ADCSRA |= (1<<ADSC);            // eine Wandlung "single conversion"
        while ( ADCSRA & (1<<ADSC) ) {
          ;   // auf Abschluss der Konvertierung warten
        }
        result += ADCW;		    // Wandlungsergebnisse aufaddieren
      }
      ADCSRA &= ~(1<<ADEN);             // ADC deaktivieren (2)
     
      result /= 4;                     // Summe durch vier teilen = arithm. Mittelwert
     
      return result;
    }
    
    int main(void)
    {
    	uint16_t ADVal;
    	
    	char* str;
    
    	lcd_init(LCD_DISP_ON);
    	lcd_clrscr();
      
            lcd_puts("bitte warten...");
    
    
    	for (;;){
     	
    	ADVal = ((ReadADC()*5)/1023);
    	sprintf(str, "Wert: %d", ADVal);
    
            lcd_clrscr();	
    
    	lcd_puts(str);
    
    	_delay_ms(500);
    	}
    return 0;
    }
    Die Werte liegen zwischen 0 (bei Abdeckung) und 5 (wenn ich mit einem roten Laserpointer draufgehe). Das gefällt mir natürlich auf Anhieb noch nicht. Wie kann ich genauere Werte bekommen? (im Prinzip brauche ich float-Werte. Doch wie errechnet man die?)
    Viele Grüße,
    Simon

  3. #33
    Erfahrener Benutzer Begeisterter Techniker Avatar von PCMan
    Registriert seit
    05.08.2006
    Ort
    Munich
    Beiträge
    311
    Okay, bin etwas weitergekommen. Ausgabe erfolgt jetzt mit Float-Werten.
    Mir ist aufgefallen, dass die Werte jetzt bei 0..4,995 liegen und sehr schwanken. Ich habe einen 68nF Kondensator parallel zum Widerstand geschaltet und jetzt schwanken die Werte nicht mehr so sehr...
    Die LED betreibe ich an 5V mit 68Ohm Vorwiederstand (58 errechnet). Natürlich bringt das mit der Photodiode einen Vollausschlag in meinen ADC. Ich versuche dann jetzt empirisch einen Vorwiderstand für die Photodiode zu ermitteln

  4. #34
    Erfahrener Benutzer Begeisterter Techniker Avatar von PCMan
    Registriert seit
    05.08.2006
    Ort
    Munich
    Beiträge
    311
    Gut, mit Vorwiderständen 68k+12k = 80k liege ich im Wertebereich von 0..4,85V. Müsste so ziemlich das genaueste sein

  5. #35
    Super-Moderator Lebende Robotik Legende Avatar von Manf
    Registriert seit
    30.01.2004
    Ort
    München
    Alter
    71
    Beiträge
    13.098
    Dann puste mal Rauch hinein, oder gesünder, wenn Du zwei Polarisatoren hast dann kannst Du ja auch eine Kennlinie über dem Drehwinkel aufnehmen.
    Manfred

  6. #36
    Erfahrener Benutzer Begeisterter Techniker Avatar von PCMan
    Registriert seit
    05.08.2006
    Ort
    Munich
    Beiträge
    311
    hehe funktioniert jetzt ganz gut. Habe die Werte auch in's verhältnis gesetzt, sieht jetzt ganz schön aus
    Danke für deine Hilfe Manf Geht ja richtig zackig, wenn man weiß wo man drauf schauen muss

  7. #37
    Super-Moderator Lebende Robotik Legende Avatar von Manf
    Registriert seit
    30.01.2004
    Ort
    München
    Alter
    71
    Beiträge
    13.098
    Freut mich, gib doch mal ein paar Werte an.
    Meinst Du dass Du auch das mit den Polarisatoren schaffst?
    Manfred

  8. #38
    Erfahrener Benutzer Begeisterter Techniker Avatar von PCMan
    Registriert seit
    05.08.2006
    Ort
    Munich
    Beiträge
    311
    Hi Manf,
    ja bis jetzt ist aber alles noch so Beta-Status. Ich habe gerade das Problem, dass ich in die erste Zeile Schreiben will "Abs.:"
    In die zweite soll dann der Wert rein, aber das funktioniert nicht, weil jedesmal wenn ich versuche auf die 2. Zeile zuzugrifen fällt das Display aus.
    Ich kann mir das im Moment absolut nicht erklären

  9. #39
    Erfahrener Benutzer Begeisterter Techniker Avatar von PCMan
    Registriert seit
    05.08.2006
    Ort
    Munich
    Beiträge
    311
    Mein Beispiel-Code sieht jetzt mal so aus:
    Code:
    	char Abs[8];
    	float Blank;
    	lcd_init(LCD_DISP_ON);
    	lcd_clrscr();
    	lcd_puts("bitte warten...\n");
    	lcd_puts("bitte warten2..");
     
    	for (;;){}
    Wenn ich das for (; {} auskommentiere, dann flackert zwar das Display wie blöd, aber es wird alles angezeigt. Sobald das for drin ist, ist die 2. Zeile schwarz oder das Display geht ganz aus. Was soll das denn?

  10. #40
    Erfahrener Benutzer Begeisterter Techniker Avatar von PCMan
    Registriert seit
    05.08.2006
    Ort
    Munich
    Beiträge
    311
    Hi,
    so habe heute mal mein eigenes Testboard geätzt (die Lochrasterplatten gingen mir auf die Nerven wegen so hoher Störanfälligkeit) und mein Display angeschlossen. Funktioniert einwandfrei. Werde dann morgen den Rest anschließen und ein paar Messungen durchführen. Da ich kein Rauch habe und selbst auch nicht rauche muss es wohl reichen, wenn ich Werte angebe, die durch das Hineinschieben von einem Blatt Papier in den Strahlengang entstanden sind, oder ähnliches.

    @Manf: kannst die Private Nachricht ignorieren. Was meintest du da eigetlich mit diesen Polarisatoren und Kennlinien? Was ist das?

Seite 4 von 5 ErsteErste ... 2345 LetzteLetzte

Berechtigungen

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

12V Akku bauen