Forum: Mikrocontroller und Digitale Elektronik zweite Photodiode anschließen und auslesen


von Hasiman (Gast)


Angehängte Dateien:

Lesenswert?

Hallo,

ich will meiner Schaltung eine zweite Photodiode hinzfügen, die ich wie 
die erste Photodiode auslese.
Wie ist das am besten zu realisieren?
1
/* ltc2440 <------------------------> Arduino
2
 * 11: CS to digital pin 10 (SS pin)
3
 *  7: SDI to digital pin 11 (MOSI pin) 
4
 * 12: SDO to digital pin 12 (MISO pin) 
5
 * 13: SCK to digital pin 13 (SCK pin)  
6
 * 15: BUSY to digital pin 4  
7
 * 14: f0 - ground  
8
 * 10: EXT - ground
9
 *  1: GND - ground 
10
 *  2: VCC - 5V supply  
11
 */
12
  
13
14
int i=0;
15
int LED;
16
#include <SPI.h>  // include the SPI library
17
18
// set I/O pins used in addition to clock, data in, data out
19
const byte slaveSelectPin = 10;  // digital pin 10 for /CS
20
#define DATAREADY 4
21
22
23
void setup() {
24
  // put your setup code here, to run once:
25
26
   
27
    pinMode (DATAREADY, INPUT);         // Pin 4
28
    pinMode (slaveSelectPin, OUTPUT);   // SS Pin 10
29
    digitalWrite(slaveSelectPin,HIGH);  // chip select is active low
30
31
    SPI.begin(); // initialize SPI, covering MOSI,MISO,SCK signals
32
    SPI.setBitOrder(MSBFIRST);  // data is clocked in MSB first
33
    SPI.setDataMode(SPI_MODE0);  // SCLK idle low (CPOL=0), MOSI read on rising edge (CPHI=0)
34
    SPI.setClockDivider(SPI_CLOCK_DIV2);  // system clock = 16 MHz, chip max = 1 MHz
35
36
37
38
39
pinMode(5,OUTPUT);    //IR LED
40
pinMode(7,OUTPUT);    //Red LED
41
Serial.begin(250000);
42
43
}
44
45
46
47
48
//====================================
49
//Main LOOP
50
//====================================
51
void loop() {
52
  // put your main code here, to run repeatedly:
53
double volts;
54
unsigned long in;         // incoming serial 32-bit word
55
unsigned long sum = 0; 
56
57
int s=0;
58
 
59
  if (s==0)                                           
60
    {
61
    
62
      
63
    PORTD |= _BV(LED);
64
    delay(5);
65
    digitalWrite(slaveSelectPin,LOW);
66
    digitalWrite(slaveSelectPin,HIGH);
67
    if(digitalRead(DATAREADY)==LOW)                                           
68
   {
69
     in = SpiRead();
70
        in &= 0B00011111111111111111111111111111;//0x1FFFFFFF; // force high three bits to zero
71
        in = in>>5;   // move lowest 5 bits LSB
72
        sum = in;     
73
        volts = sum *(0.03680586815)
74
        Serial.println(volts);       
75
        PORTD &= ~_BV(LED);
76
        
77
    if(i==1){
78
      i=0;
79
    
80
    } else { 
81
      i=1;
82
    }
83
   }
84
    s=1;
85
        
86
    }
87
 
88
 
89
 if (s==1){          
90
        
91
    if(i==1){
92
     LED=5;    //ir
93
     
94
    
95
     } else {  
96
     
97
    LED=7;   //red
98
    
99
     s=0;
100
    }
101
 }
102
 }
103
 
104
    
105
// =================================================================
106
// SpiRead() -- read out 4 bytes from LTC2440 chip via SPI interface
107
// =================================================================
108
109
unsigned long SpiRead(void) {
110
111
 unsigned long result = 0;
112
 unsigned long b;
113
 
114
115
  digitalWrite(slaveSelectPin,LOW);   // take the SS pin low to select the chip
116
  
117
  b = SPI.transfer(0x28);   // B3
118
  result = b<<8;
119
  b = SPI.transfer(0);   // B2
120
  result |= b;
121
  result = result<<8;
122
  b = SPI.transfer(0);   // B1
123
  result |= b;
124
  result = result<<8;
125
  b = SPI.transfer(0);   // B0
126
  result |= b;
127
 
128
  // take the SS pin high to de-select the chip:
129
  digitalWrite(slaveSelectPin,HIGH);
130
 
131
  return(result);//}
132
}

Das ist zurzeit mein Code für den Arduino UNO.


Alles klappt super so, will aber noch ne 2te Photodiode anschließen und 
weiß leider nicht, wie ich das machen soll :(

von Er Kler Ber (Gast)


Lesenswert?

Hasiman schrieb:
> Alles klappt super so, will aber noch ne 2te Photodiode anschließen und
> weiß leider nicht, wie ich das machen soll :(

Ja du weisst auch gar nicht wie diese Schaltung funktioniert,
sonst könntest du sie erweitern.

Du brauchst die Schaltung um U1, U2 nochmal.

von Hasiman (Gast)


Lesenswert?

Meine Überlegung war, dass ich ein weiteren ltc2440 parallel dazu 
schalte, nur dass ich an den Eingang vom 2ten ADC meine 2te Photodiode 
anschließe...

von Falk B. (falk)


Lesenswert?

@Hasiman (Gast)

>Das ist zurzeit mein Code für den Arduino UNO.

Der wahrscheinlich nicht von dir geschrieben wurde.

>Alles klappt super so, will aber noch ne 2te Photodiode anschließen und
>weiß leider nicht, wie ich das machen soll :(

Weil du weder die Schaltung (Hardware) noch die Software verstanden 
hast?

Die Schaltung sieht recht akademisch aus. Der LTC1050 ist ein Nobel- 
Präzisions-OPV. Dessen Ausgang geht auf LTC2440, einen 24 Bit 
Sigma-Delta ADC. Der hat aber nur einen (differentiellen) Eingang, der 
hier aber als single ended genutzt wird.

Also musst du wohl den OPV als auch den ADC doppelt aufbauen und an 
deinen Arduino anschließen.

von Hasiman (Gast)


Lesenswert?

Ich kenne meine Bauteile danke.
Und ja, der Code ist modifiziert und ist nicht von 0 aus von mir 
entstanden.

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.