Willkommen Gast. Bitte einloggen oder registrieren.
März 28, 2024, 10:36:05
Übersicht Ungelesene Beiträge auflisten Hilfe Suche Spiele Mitgliederkarte Kalender Login Registrieren

Schnellsuche
+  MODDING-FAQ FORUM
|-+  Alles rund ums Modden
| |-+  Elektronik, Elektrik (Moderator: TzA)
| | |-+  [Arduino] Problem mit Adafruit TCS34725 Farbsensor
  « vorheriges nächstes »
0 Mitglieder und 1 Gast betrachten dieses Thema.
Seiten: [1] 2 nach unten Drucken
Autor Thema: [Arduino] Problem mit Adafruit TCS34725 Farbsensor  (Gelesen 38726 mal)
HighEnd
LED-Tauscher

*

Karma: +0/-0
Offline Offline
Geschlecht: Männlich
Beiträge: 49


Es ist selten zu früh und niemals zu spät!


Profil anzeigen
[Arduino] Problem mit Adafruit TCS34725 Farbsensor
« am: Oktober 16, 2015, 19:05:30 »

Hallo zusammen,

mein Bruder und ich wollten vor ner Woche ein wenig mit einem Farbsensor (Adafruit TCS34725 für Arduino) experimentieren, was leider nicht geklappt hat. Grund: Der Sensor meldet sich nicht.

Wir haben die Library von GitHub heruntergeladen und installiert, und wollten dann einfach mal mit dem Example "Color View" (https://github.com/adafruit/Ad..../colorview.ino) aus ebendieser Library herumspielen. Nachdem das Script übertragen wurde kam im Serial Monitor die Meldung "Color View Test!", aber weder die Meldung "Found Sensor", noch die Meldung "No TCS34725 found... check your connections". Es scheinte so, als ob der Sensor kein Signal über den I²C-Bus schickt.

Also haben wir gemessen, ob an SDA und SCL Spannung anliegt. Jeweils konstante 2,2V waren vorhanden. Die LED am Breakout-Board funktioniert, es scheint am Sensor, dem I²C-Bus oder dem Programm zu liegen.

Sobald im Programm die Funktion "if (tcs.begin()) {..." aufgerufen wird, geht's nicht mehr weiter. Bei anderen IF-Anweisungen wie z.B. "if (Pin 2, HIGH) {..." hat der Serial Monitor auch die Meldung "Sensor Found" ausgespuckt. Der Rest vom Programm läuft allerdings weiterhin nicht (logisch, Pin 2 hat ja nix mehr mit dem Sensor zu tun)

Wir haben den Sensor an die Analog-Pins 4 (SDA) und 5 (SCL) unserer Arduino Diecimila (AtMega328P) angeschlossen und mit +5V (Vin) und GND die Spannungsversorgung hergestellt. Rein theoretisch also alles so, wie es richtig ist.

Dennoch haben wir nach stundenlanger Fehlersuche kein Ergebnis erzielt, so wie das Programm vom Scripter kommt, funktioniert es nur bis zur "Color View Test"-Meldung. Der Sensor ist vor einer Woche, am gleichen Tag wie unser Versuch, ihn zum Laufen zu bringen, erst mit der Post angekommen, einen Defekt dessen halte ich für gering wahrscheinlich, es sei denn der Sensor hat von der Fertigung schon einen Schuss weg.

Der Sensor meldet sich übrigens auch nach Reset der Platine und anschließendem Neu-Upload des Programms nicht.

Die Diecimila wird mit USB mit Spannung versorgt und ist auch darauf eingestellt.

Könnte es sein, dass die Library-Scripte nicht 100%ig korrekt sind, oder dass der I²C-Bus auf unserem Board defekt ist? Was wären weitere mögliche Fehler und deren Lösung?

Ich würde mich über Lösungsvorschläge etc. sehr freuen Smiley  Vielen Dank schonmal!

LG, HighEnd
Gespeichert

Never touch my running system!

Hardware:|| bequiet! PP L8 500W | Intel Core i5-3330 @3.70 GHz (@selfmade H2O) | 12 GB DDR3-1333 RAM | Asus P8Z77M Pro | SanDisk 128GB SSD | Transcend 64GB SSD | WD Scorpio Blue 320GB | Gigabyte GTX 780 OC WF3 Rev.2 3GB @ H2O|| WaKü: || AC DC-LT + Aufsatz | AC Bay-AGB | Black Ice GT Stealth 240 @ 2 x NB BSP PL2R| 2x AC NexXxoS ST 30 FC 120 @ NB MF M12-1 | selfmade CPU-Copper-Block | EKWB FC780 GTX WF3 ||
Davemoon
Stichsägenquäler

*

Karma: +0/-0
Offline Offline
Geschlecht: Männlich
Beiträge: 66



Profil anzeigen
Re: [Arduino] Problem mit Adafruit TCS34725 Farbsensor
« Antwort #1 am: Oktober 18, 2015, 23:33:03 »

Das is immer so ne Sache mit der Ferndiagnose..
Wenn die LED schonmal leuchtet, sollte die Stromversorgung stimmen.
Wie siehts denn mit der I²C Adresse der Breakout im Programm aus? Is die denn richtig definiert?
Gespeichert

Wie lange eine Minute ist, hängt davon ab auf welcher Seite der Toilettentür man sich befindet
HighEnd
LED-Tauscher

*

Karma: +0/-0
Offline Offline
Geschlecht: Männlich
Beiträge: 49


Es ist selten zu früh und niemals zu spät!


Profil anzeigen
Re: [Arduino] Problem mit Adafruit TCS34725 Farbsensor
« Antwort #2 am: Oktober 19, 2015, 15:24:59 »

Du meinst sicher diesen Teil des Codes:

Code:
/**************************************************************************/
/*!
    @brief  Reads an 8 bit value over I2C
*/
/**************************************************************************/
uint8_t Adafruit_TCS34725::read8(uint8_t reg)
{
  Wire.beginTransmission(TCS34725_ADDRESS);
  #if ARDUINO >= 100
  Wire.write(TCS34725_COMMAND_BIT | reg);
  #else
  Wire.send(TCS34725_COMMAND_BIT | reg);
  #endif
  Wire.endTransmission();

  Wire.requestFrom(TCS34725_ADDRESS, 1);
  #if ARDUINO >= 100
  return Wire.read();
  #else
  return Wire.receive();
  #endif
}

/**************************************************************************/
/*!
    @brief  Reads a 16 bit values over I2C
*/
/**************************************************************************/
uint16_t Adafruit_TCS34725::read16(uint8_t reg)
{
  uint16_t x; uint16_t t;

  Wire.beginTransmission(TCS34725_ADDRESS);
  #if ARDUINO >= 100
  Wire.write(TCS34725_COMMAND_BIT | reg);
  #else
  Wire.send(TCS34725_COMMAND_BIT | reg);
  #endif
  Wire.endTransmission();

  Wire.requestFrom(TCS34725_ADDRESS, 2);
  #if ARDUINO >= 100
  t = Wire.read();
  x = Wire.read();
  #else
  t = Wire.receive();
  x = Wire.receive();
  #endif
  x <<= 8;
  x |= t;
  return x;
}

Um ehrlich zu sein, jetzt fällt mir auf dass dort "1" und "2" drin steht, statt "4" und "5", was bei meiner Platine die I²C-Bus-Adresse wäre (AnalogIn 4 und 5) ... aber wie kann ich jetzt diese CPP-Datei korrigieren? Die ist ja bei der Library des Sensors mit dabei...

Falls du dir evtl. einen kurzen Überblick über diese Lib verschaffen willst, die komplette gibt's hier: https://github.com/adafruit/Adafruit_TCS34725
« Letzte Änderung: Oktober 19, 2015, 16:47:33 von HighEnd » Gespeichert

Never touch my running system!

Hardware:|| bequiet! PP L8 500W | Intel Core i5-3330 @3.70 GHz (@selfmade H2O) | 12 GB DDR3-1333 RAM | Asus P8Z77M Pro | SanDisk 128GB SSD | Transcend 64GB SSD | WD Scorpio Blue 320GB | Gigabyte GTX 780 OC WF3 Rev.2 3GB @ H2O|| WaKü: || AC DC-LT + Aufsatz | AC Bay-AGB | Black Ice GT Stealth 240 @ 2 x NB BSP PL2R| 2x AC NexXxoS ST 30 FC 120 @ NB MF M12-1 | selfmade CPU-Copper-Block | EKWB FC780 GTX WF3 ||
Davemoon
Stichsägenquäler

*

Karma: +0/-0
Offline Offline
Geschlecht: Männlich
Beiträge: 66



Profil anzeigen
Re: [Arduino] Problem mit Adafruit TCS34725 Farbsensor
« Antwort #3 am: Oktober 19, 2015, 17:29:51 »

Das, was du meinst, is die Deklaration der Pins .. ich meinte die Adresse des Sensors.. laut der Produktseite von Adafruit 0x29, aber die müsste ja im Programm auch irgendwo auch bestimmt werden
Gespeichert

Wie lange eine Minute ist, hängt davon ab auf welcher Seite der Toilettentür man sich befindet
HighEnd
LED-Tauscher

*

Karma: +0/-0
Offline Offline
Geschlecht: Männlich
Beiträge: 49


Es ist selten zu früh und niemals zu spät!


Profil anzeigen
Re: [Arduino] Problem mit Adafruit TCS34725 Farbsensor
« Antwort #4 am: Oktober 19, 2015, 17:54:30 »

dann vermutlich hier die 0x66:

Code:
void Adafruit_TCS34725::clearInterrupt(void) {
  Wire.beginTransmission(TCS34725_ADDRESS);
  #if ARDUINO >= 100
  Wire.write(0x66);
  #else
  Wire.send(0x66);
  #endif
  Wire.endTransmission();
}
Gespeichert

Never touch my running system!

Hardware:|| bequiet! PP L8 500W | Intel Core i5-3330 @3.70 GHz (@selfmade H2O) | 12 GB DDR3-1333 RAM | Asus P8Z77M Pro | SanDisk 128GB SSD | Transcend 64GB SSD | WD Scorpio Blue 320GB | Gigabyte GTX 780 OC WF3 Rev.2 3GB @ H2O|| WaKü: || AC DC-LT + Aufsatz | AC Bay-AGB | Black Ice GT Stealth 240 @ 2 x NB BSP PL2R| 2x AC NexXxoS ST 30 FC 120 @ NB MF M12-1 | selfmade CPU-Copper-Block | EKWB FC780 GTX WF3 ||
Davemoon
Stichsägenquäler

*

Karma: +0/-0
Offline Offline
Geschlecht: Männlich
Beiträge: 66



Profil anzeigen
Re: [Arduino] Problem mit Adafruit TCS34725 Farbsensor
« Antwort #5 am: Oktober 19, 2015, 17:56:24 »

ich glaub, die solltest du auf 0x29 ändern
Gespeichert

Wie lange eine Minute ist, hängt davon ab auf welcher Seite der Toilettentür man sich befindet
HighEnd
LED-Tauscher

*

Karma: +0/-0
Offline Offline
Geschlecht: Männlich
Beiträge: 49


Es ist selten zu früh und niemals zu spät!


Profil anzeigen
Re: [Arduino] Problem mit Adafruit TCS34725 Farbsensor
« Antwort #6 am: Oktober 19, 2015, 18:05:40 »

Hab ich, tut immernoch nicht. In der .h-Datei wird diese Adresse auch als 0x29 deklariert. Alles komisch, mein Bruder und ich sind grad dabei die Wire.cpp durchzuchecken.
Gespeichert

Never touch my running system!

Hardware:|| bequiet! PP L8 500W | Intel Core i5-3330 @3.70 GHz (@selfmade H2O) | 12 GB DDR3-1333 RAM | Asus P8Z77M Pro | SanDisk 128GB SSD | Transcend 64GB SSD | WD Scorpio Blue 320GB | Gigabyte GTX 780 OC WF3 Rev.2 3GB @ H2O|| WaKü: || AC DC-LT + Aufsatz | AC Bay-AGB | Black Ice GT Stealth 240 @ 2 x NB BSP PL2R| 2x AC NexXxoS ST 30 FC 120 @ NB MF M12-1 | selfmade CPU-Copper-Block | EKWB FC780 GTX WF3 ||
Davemoon
Stichsägenquäler

*

Karma: +0/-0
Offline Offline
Geschlecht: Männlich
Beiträge: 66



Profil anzeigen
Re: [Arduino] Problem mit Adafruit TCS34725 Farbsensor
« Antwort #7 am: Oktober 20, 2015, 04:52:38 »

die 0x66 muss so bleiben Cheesy kA, wie ich drauf komme, dass das geändert werden muss.

Letzlich kanns nur daran liegen, dass der Sensor über  I²C an eurem Ardunio falsch angeschlossen is. Was isses denn für ein Arduino? Wie habt ihr das alles im Moment verkabelt? (ggfs Fotos!?)
Gespeichert

Wie lange eine Minute ist, hängt davon ab auf welcher Seite der Toilettentür man sich befindet
HighEnd
LED-Tauscher

*

Karma: +0/-0
Offline Offline
Geschlecht: Männlich
Beiträge: 49


Es ist selten zu früh und niemals zu spät!


Profil anzeigen
Re: [Arduino] Problem mit Adafruit TCS34725 Farbsensor
« Antwort #8 am: Oktober 20, 2015, 14:19:53 »

Ist eine erweiterte Diecimila, umgebaut vom Franzis-Verlag, mit dem AtMega328P. I²C-Bus ist laut beiliegendem Handbuch und laut Internet bei A4 und A5, dort haben wir den Sensor auch angeschlossen.

Fotos vom Aufbau und den technischen Daten folgen in Kürze Wink

#Edit: Hier die Bilder vom Aufbau. Technische Daten stehen drunter Wink

http://www.directupload.net/fi...46ikura_jpg.htm
http://www.directupload.net/fi...qv4yhek_jpg.htm
http://www.directupload.net/fi...364mzjx_jpg.htm   

Prozessor: AtMega328 (TQFP32-08)
Taktfrequenz: 16 MHz
max. Strombelastbarkeit: pro Pin 40 mA
max. Gesamtbelastbarkeit: 200 mA
Stromaufnahme der LEDs*: 3 mA pro LED
Typische Stromaufnahme ohne Last: 30 mA   
Spannungsversorgung: USB oder Netzteilbuchse (7,5-14V, optimal: 9-12V)

Speicher: SRAM 2KB; Flash 32kB, mi. 10.000 Schreibzyklen, Page-Größe 128 Bytes/64 2-Byte-Worte; EEPROM: 1KB, min. 100.000 Schreibzyklen, Page-Größe 4 Bytes

SDA geht auf Pin A4 und SCL auf Pin A5, wie es auch im Handbuch der Arduino-Platine dargestellt wird.
« Letzte Änderung: Oktober 20, 2015, 15:31:46 von HighEnd » Gespeichert

Never touch my running system!

Hardware:|| bequiet! PP L8 500W | Intel Core i5-3330 @3.70 GHz (@selfmade H2O) | 12 GB DDR3-1333 RAM | Asus P8Z77M Pro | SanDisk 128GB SSD | Transcend 64GB SSD | WD Scorpio Blue 320GB | Gigabyte GTX 780 OC WF3 Rev.2 3GB @ H2O|| WaKü: || AC DC-LT + Aufsatz | AC Bay-AGB | Black Ice GT Stealth 240 @ 2 x NB BSP PL2R| 2x AC NexXxoS ST 30 FC 120 @ NB MF M12-1 | selfmade CPU-Copper-Block | EKWB FC780 GTX WF3 ||
Davemoon
Stichsägenquäler

*

Karma: +0/-0
Offline Offline
Geschlecht: Männlich
Beiträge: 66



Profil anzeigen
Re: [Arduino] Problem mit Adafruit TCS34725 Farbsensor
« Antwort #9 am: Oktober 21, 2015, 12:41:53 »

komisch ... ich seh keine Bilder Sad
Gespeichert

Wie lange eine Minute ist, hängt davon ab auf welcher Seite der Toilettentür man sich befindet
HighEnd
LED-Tauscher

*

Karma: +0/-0
Offline Offline
Geschlecht: Männlich
Beiträge: 49


Es ist selten zu früh und niemals zu spät!


Profil anzeigen
Re: [Arduino] Problem mit Adafruit TCS34725 Farbsensor
« Antwort #10 am: Oktober 28, 2015, 16:06:59 »

Hm, merkwürdig. Ich schau mal, ob ich sie nochmal hochgeladen bekomm... für hier drin sind sie zu groß.

Auf den Bildern ist eigentlich auch nur das zu erkennen, was ich schon geschrieben hab:

5V Arduino -> Vin Sensor
GND Arduino -> GND (& LED) Sensor
AnalogIn 4 Arduino -> SDA Sensor
AnalogIn 5 Arduino -> SCL Sensor
Gespeichert

Never touch my running system!

Hardware:|| bequiet! PP L8 500W | Intel Core i5-3330 @3.70 GHz (@selfmade H2O) | 12 GB DDR3-1333 RAM | Asus P8Z77M Pro | SanDisk 128GB SSD | Transcend 64GB SSD | WD Scorpio Blue 320GB | Gigabyte GTX 780 OC WF3 Rev.2 3GB @ H2O|| WaKü: || AC DC-LT + Aufsatz | AC Bay-AGB | Black Ice GT Stealth 240 @ 2 x NB BSP PL2R| 2x AC NexXxoS ST 30 FC 120 @ NB MF M12-1 | selfmade CPU-Copper-Block | EKWB FC780 GTX WF3 ||
Davemoon
Stichsägenquäler

*

Karma: +0/-0
Offline Offline
Geschlecht: Männlich
Beiträge: 66



Profil anzeigen
Re: [Arduino] Problem mit Adafruit TCS34725 Farbsensor
« Antwort #11 am: Oktober 28, 2015, 23:44:42 »

hm ... sieht soweit erstmal richtig aus .. dann kanns ja nur am Programm selber liegen
Gespeichert

Wie lange eine Minute ist, hängt davon ab auf welcher Seite der Toilettentür man sich befindet
HighEnd
LED-Tauscher

*

Karma: +0/-0
Offline Offline
Geschlecht: Männlich
Beiträge: 49


Es ist selten zu früh und niemals zu spät!


Profil anzeigen
Re: [Arduino] Problem mit Adafruit TCS34725 Farbsensor
« Antwort #12 am: Oktober 31, 2015, 07:12:27 »

Das komplette Programm sieht so aus:

Code:
#include <Wire.h>
#include "Adafruit_TCS34725.h"

// Pick analog outputs, for the UNO these three work well
// use ~560  ohm resistor between Red & Blue, ~1K for green (its brighter)
#define redpin 3
#define greenpin 5
#define bluepin 6
// for a common anode LED, connect the common pin to +5V
// for common cathode, connect the common to ground

// set to false if using a common cathode LED
#define commonAnode true

// our RGB -> eye-recognized gamma color
byte gammatable[256];


Adafruit_TCS34725 tcs = Adafruit_TCS34725(TCS34725_INTEGRATIONTIME_50MS, TCS34725_GAIN_4X);

void setup() {
  Serial.begin(9600);
  Serial.println("Color View Test!");

  if (tcs.begin()) {
    Serial.println("Found sensor");
  } else {
    Serial.println("No TCS34725 found ... check your connections");
    while (1); // halt!
  }
 
  // use these three pins to drive an LED
  pinMode(redpin, OUTPUT);
  pinMode(greenpin, OUTPUT);
  pinMode(bluepin, OUTPUT);
 
  // thanks PhilB for this gamma table!
  // it helps convert RGB colors to what humans see
  for (int i=0; i<256; i++) {
    float x = i;
    x /= 255;
    x = pow(x, 2.5);
    x *= 255;
     
    if (commonAnode) {
      gammatable[i] = 255 - x;
    } else {
      gammatable[i] = x;     
    }
    //Serial.println(gammatable[i]);
  }
}


void loop() {
  uint16_t clear, red, green, blue;

  tcs.setInterrupt(false);      // turn on LED

  delay(60);  // takes 50ms to read
 
  tcs.getRawData(&red, &green, &blue, &clear);

  tcs.setInterrupt(true);  // turn off LED
 
  Serial.print("C:\t"); Serial.print(clear);
  Serial.print("\tR:\t"); Serial.print(red);
  Serial.print("\tG:\t"); Serial.print(green);
  Serial.print("\tB:\t"); Serial.print(blue);

  // Figure out some basic hex code for visualization
  uint32_t sum = clear;
  float r, g, b;
  r = red; r /= sum;
  g = green; g /= sum;
  b = blue; b /= sum;
  r *= 256; g *= 256; b *= 256;
  Serial.print("\t");
  Serial.print((int)r, HEX); Serial.print((int)g, HEX); Serial.print((int)b, HEX);
  Serial.println();

  //Serial.print((int)r ); Serial.print(" "); Serial.print((int)g);Serial.print(" ");  Serial.println((int)b );

  analogWrite(redpin, gammatable[(int)r]);
  analogWrite(greenpin, gammatable[(int)g]);
  analogWrite(bluepin, gammatable[(int)b]);
}

Bilderupload funzt irgendwie nicht Sad
« Letzte Änderung: Oktober 31, 2015, 07:20:29 von HighEnd » Gespeichert

Never touch my running system!

Hardware:|| bequiet! PP L8 500W | Intel Core i5-3330 @3.70 GHz (@selfmade H2O) | 12 GB DDR3-1333 RAM | Asus P8Z77M Pro | SanDisk 128GB SSD | Transcend 64GB SSD | WD Scorpio Blue 320GB | Gigabyte GTX 780 OC WF3 Rev.2 3GB @ H2O|| WaKü: || AC DC-LT + Aufsatz | AC Bay-AGB | Black Ice GT Stealth 240 @ 2 x NB BSP PL2R| 2x AC NexXxoS ST 30 FC 120 @ NB MF M12-1 | selfmade CPU-Copper-Block | EKWB FC780 GTX WF3 ||
Davemoon
Stichsägenquäler

*

Karma: +0/-0
Offline Offline
Geschlecht: Männlich
Beiträge: 66



Profil anzeigen
Re: [Arduino] Problem mit Adafruit TCS34725 Farbsensor
« Antwort #13 am: November 2, 2015, 23:51:23 »

soo .... ich hab mich mal reingelesen ...  für mich is das auch nich all zu einfach, weil ich mir das alles auch irgendwie selbst beibringe Cheesy

hast du in der ccp noch irgendwas geändert? weiter oben hast du erwähnt, dass da "1" und "2" steht, statt "4" und "5" ..   das muss so bleiben, wie es is, weil es der Wire.requestFrom befehl ist. Der arbeitet mit bestimmten Parametern, die an der Stelle eben 1 oder 2 sein müssen Cheesy
Du nutzt auch sicherlich den serial Monitor den die Arduino IDE bietet? Damit kann man ja sehen, was der Arduino macht (oder nich macht).
Gespeichert

Wie lange eine Minute ist, hängt davon ab auf welcher Seite der Toilettentür man sich befindet
HighEnd
LED-Tauscher

*

Karma: +0/-0
Offline Offline
Geschlecht: Männlich
Beiträge: 49


Es ist selten zu früh und niemals zu spät!


Profil anzeigen
Re: [Arduino] Problem mit Adafruit TCS34725 Farbsensor
« Antwort #14 am: November 4, 2015, 18:55:50 »

Ich hab bereits alles wieder in den Originalzustand versetzt. Ja, ich nutze den Serial Monitor von der Arduino IDE. Baud 9600, wie im Programm auch.

Die Meldung "Color View Test!" kommt, danach passiert gar nichts mehr Sad Kann man irgendwie einstellen, dass dort der aktuelle Schritt vom Programm angezeigt wird?
Gespeichert

Never touch my running system!

Hardware:|| bequiet! PP L8 500W | Intel Core i5-3330 @3.70 GHz (@selfmade H2O) | 12 GB DDR3-1333 RAM | Asus P8Z77M Pro | SanDisk 128GB SSD | Transcend 64GB SSD | WD Scorpio Blue 320GB | Gigabyte GTX 780 OC WF3 Rev.2 3GB @ H2O|| WaKü: || AC DC-LT + Aufsatz | AC Bay-AGB | Black Ice GT Stealth 240 @ 2 x NB BSP PL2R| 2x AC NexXxoS ST 30 FC 120 @ NB MF M12-1 | selfmade CPU-Copper-Block | EKWB FC780 GTX WF3 ||
Seiten: [1] 2 nach oben Drucken 
« vorheriges nächstes »
Gehe zu:  

Einloggen mit Benutzername, Passwort und Sitzungslänge      

Powered by MySQL Powered by PHP
eXTReMe Tracker
Seite erstellt in 0.133 Sekunden mit 20 Zugriffen.
© 2001-2022 MODDING-FAQ FORUM | SMF
Alle Rechte vorbehalten.
Prüfe XHTML 1.0! Prüfe CSS!