INFO: Dieses Forum nutzt Cookies...
Cookies sind für den Betrieb des Forums unverzichtbar. Mit der Nutzung des Forums erklärst Du dich damit einverstanden, dass wir Cookies verwenden.

Es wird in jedem Fall ein Cookie gesetzt um diesen Hinweis nicht mehr zu erhalten. Desweiteren setzen wir Google Adsense und Google Analytics ein.

Antwort schreiben 
 
Themabewertung:
  • 0 Bewertungen - 0 im Durchschnitt
  • 1
  • 2
  • 3
  • 4
  • 5
Programmierung für Projektarbeit (Spektrometer)
30.08.2015, 12:28 (Dieser Beitrag wurde zuletzt bearbeitet: 30.08.2015 12:30 von ProVeN.)
Beitrag #1
Programmierung für Projektarbeit (Spektrometer)
Hallo liebe Arduino Community!

Ich arbeite derzeit mit zwei weiteren Kommilitonen an einem Projekt für die Uni. Dabei handelt es sich um ein Spektrometer nach dem Vorbild des AS513 AATiS-Spektrometer.

Der Experimentelle Aufbau steht und funktioniert soweit. Jetzt kommt der Part bei dem wir alle drei leider etwas "unqualifiziert" sind, die Programmierung.

Wir nutzen bei unserem Aufbau den SONY ILX554B, sowie einen Arduino MEGA 2560.

Ein Kommilitone hat sich bereits mit einigen Tutorials auseinander gesetzt und folgenen Code geschrieben. Das Ganze läuft zwar irgendwie und wir bekommen Werte, bzw. immer den selben Wert, aber leider können wir damit bisher nichts anfangen.

Code:
int vout = 94;
int clk = 96;
int rog = 97;
int pixel = 0;

void setup() {
  pinMode(vout,INPUT);
  pinMode(clk,OUTPUT);
  pinMode(rog,OUTPUT);
  Serial.begin(9600);
}

void loop() {
//read
    Serial.println("n\start readout\n");
    digitalWrite(clk,HIGH);
    digitalWrite(rog,HIGH);
    delayMicroseconds(3);
    digitalWrite(rog,LOW);
    delayMicroseconds(3);
    digitalWrite(rog,HIGH);
    delayMicroseconds(5);
        for(int i = 0; i < 2087; i++ )
      {
        digitalWrite(clk,LOW);
        delayMicroseconds(1);
        digitalWrite(clk,HIGH);
        pixel = analogRead(vout);
        Serial.println(pixel);
        delayMicroseconds(3);
}
}

Wir hatten ursprünglich geplant die Werte des CCD auszulesen und in einer Datei zu speichern. Um diese dann mit LabView oder einem anderen Programm auszuwerten. (dafür ist der Code noch unvollständig aber mehr haben wir bisher leider nicht)

Wir sind für jeden Hinweis oder Tip dankbar. Sollte es Fragen oder Unklarheiten zu unserem Projekt geben immer her damit.
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren
30.08.2015, 14:05
Beitrag #2
RE: Programmierung für Projektarbeit (Spektrometer)
Moin,
das erste was auffällt:
Code:
int vout = 94;
int clk = 96;
int rog = 97;
Das sind mit Sicherheit die Pins des Atmega. Ihr müsst die Pinnummern des Arduinoboards eintragen. Siehe hier: https://arduino-info.wikispaces.com/file...a2-900.jpg
Grüße Ricardo

Nüchtern betrachtet...ist besoffen besser Big Grin
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren
02.09.2015, 14:48
Beitrag #3
RE: Programmierung für Projektarbeit (Spektrometer)
Hey! Danke für die Antwort!
Wir haben die Pins angepasst.

Das ist unser aktueller Code.

Code:
int vout = 12;
int clk = 5;
int rog = 11;
int pixel = 0;

void setup() {
  pinMode(vout,INPUT);
  pinMode(clk,OUTPUT);
  pinMode(rog,OUTPUT);
  Serial.begin(9600);
}

void loop() {
//read
    Serial.println("n\start readout\n");
    digitalWrite(clk,HIGH);
    digitalWrite(rog,HIGH);
    delayMicroseconds(3);
    digitalWrite(rog,LOW);
    delayMicroseconds(3);
    digitalWrite(rog,HIGH);
    delayMicroseconds(5);
        for(int i = 0; i < 2087; i++ )
      {
        digitalWrite(clk,LOW);
        delayMicroseconds(1);
        digitalWrite(clk,HIGH);
        pixel = analogRead(vout);
        Serial.println(pixel);
        delayMicroseconds(3);
}
}

Hier unser Testaufbau für den Chip + Arduino.

[Bild: IZ4uReb.jpg]


Wir haben es jetzt Probeweise mal ohne den S/H mode getestet, selbes unbrauchbares Ergebnis. Evtl ein Fehler bei der Beschaltung oder liegt es einfach am Code?
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren
02.09.2015, 14:57 (Dieser Beitrag wurde zuletzt bearbeitet: 02.09.2015 14:58 von Scherheinz.)
Beitrag #4
RE: Programmierung für Projektarbeit (Spektrometer)
Ich sehe keine Außenbeschaltung an eurem IC. Schau dir mal im Datenblatt die Seite 10 an (Application Circuit), ein paar Bauteile brauchst du schon noch damit du Daten bekommst.

Gruß
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren
02.11.2015, 12:18
Beitrag #5
RE: Programmierung für Projektarbeit (Spektrometer)
Hallo!

Wir haben unseren Aufbau und Quellcode mittlerweile überarbeitet und sind soweit dass der Sensor zumindest schonmal auf unterschiedliche Lichtverhältnisse reagiert, allerdings wird nur der erste Pixel ausgelesen.

Mir ist bewusst das die Steuersignale für das Weiterschieben der
Pixelinformationen während des Auslesens fehlen. Dazu müssten die entsprechenden Steuerleitungen wie im Datenblatt angegeben getaktet werden. Erst dann werden nach und nach die Inhalte der einzelnen Pixel als Spannung am
Ausgang ausgegeben, sofern ich mich nicht irren sollte.

Allerdings bin ich derzeit leider etwas ratlos wie ich eben dies umsetzen kann.
Ich wäre für jeden Tipp oder Hinweis auf Tutorials etc. sehr dankbar.


Hier unser aktueller Code.

Code:
#define CLK_SPEED 222                           // Clock speed, 20uS to process CLK HIGH so don't use anything greater than 222 here
#define arraySize 2200                          // Number of samples to read
#define clk 5                                   // Clock pin
#define rog 11                                  // Read Out Gate pin
#define capture A1                              // Analogue capture pin

int sampleArray[(arraySize + 1)];               // Store every sample

void setup() {
  pinMode(clk,OUTPUT);                          // Clock
  pinMode(rog,OUTPUT);                          // Read Out Gate
  pinMode(capture,INPUT);                       // Analogue capture pin

  Serial.begin(115200);                         // Baudrate
  delay(1000);                                  // Delay time
}

void loop()
{
  Serial.println("\nStart readout\n");          // initializing readout
  digitalWrite(rog,HIGH);                       // ____________________
  digitalWrite(clk,HIGH);                       //
  delayMicroseconds(1000);                      //
  digitalWrite(clk,LOW);                        //
  delayMicroseconds(1);                         // setting rog and clk high/low with delay
  digitalWrite(clk,HIGH);                       // to setup clock timing regarding to datasheet
  delayMicroseconds(3);                         //
  digitalWrite(rog,LOW);                        //
  delayMicroseconds(5);                         //
  digitalWrite(rog,HIGH);                       //
  delayMicroseconds(3);                         // ___________________
  for(int i = 0; i < arraySize; i++ )           // readout
  {
    sampleArray[i] = analogRead(capture);       // Read pixel (It takes about 15uS to read & store analogue value)
    delayMicroseconds(1);                       // Delay time
  }
  for(int i = 0; i < arraySize; i++ )           // printout
  {
    Serial.println(sampleArray[i]);             // printout on serial port
  }
}
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren
Antwort schreiben 


Möglicherweise verwandte Themen...
Thema: Verfasser Antworten: Ansichten: Letzter Beitrag
  Slider Steuerung, Programmierung blueblack 21 620 16.10.2016 22:31
Letzter Beitrag: blueblack
  Frage zur Programmierung eines Ultraschallsensors jalu4601 10 349 21.09.2016 15:06
Letzter Beitrag: Bitklopfer
  Neuling PWM Programmierung Gerald_Z 6 2.500 21.02.2016 22:23
Letzter Beitrag: reiner_liebold
  Hilfe bei Programmierung ANFÄNGER Icemann_2 14 2.024 23.10.2015 15:51
Letzter Beitrag: Binatone
  Brauche hilfe bei Nachkommastelle Programmierung GaLeMa00 4 663 21.10.2015 15:55
Letzter Beitrag: GaLeMa00
  Temperatursensor Programmierung Anton11 6 1.556 29.05.2015 09:55
Letzter Beitrag: fraju
  Programmierung des MPU6050 nur mit Wire.h ? HaWe 2 652 06.05.2015 15:31
Letzter Beitrag: HaWe
  Benötige hilfe bei der programmierung des "Arduino Xadow" avoid 0 599 05.04.2015 22:21
Letzter Beitrag: avoid
  I2C - Burst Programmierung NRWler04 2 804 19.12.2014 17:57
Letzter Beitrag: NRWler04
  Programmierung, Problem mit if-Bedingungen Cray-1 3 1.053 16.12.2014 02:25
Letzter Beitrag: Corvus

Gehe zu:


Benutzer, die gerade dieses Thema anschauen: 1 Gast/Gäste