# [Arduino] Problem mit Adafruit TCS34725 Farbsensor - gelöst!



## HighEnd111 (10. Oktober 2015)

*[Arduino] Problem mit Adafruit TCS34725 Farbsensor - gelöst!*

Hallo zusammen,

mein Bruder und ich wollten heute 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/Adafruit_TCS34725/blob/master/examples/colorview/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 heute 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.

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  Vielen Dank schonmal!

LG, HighEnd111


----------



## HighEnd111 (15. Oktober 2015)

*AW: [Arduino] Problem mit Adafruit TCS34725 Farbsensor*

Kann jemand weiterhelfen? Sensor meldet sich auch nach Reset der Platine und anschließendem Neu-Upload des Programms nicht.


----------



## Ap0ll0XT (15. Oktober 2015)

*AW: [Arduino] Problem mit Adafruit TCS34725 Farbsensor*

Ich denke mal das Thema ist zu speziell. Hast du mal in einem Arduino- oder Elektronikboard gefragt?


----------



## HighEnd111 (15. Oktober 2015)

*AW: [Arduino] Problem mit Adafruit TCS34725 Farbsensor*

Noch nicht, werd ich aber tun  Danke erstmal


----------



## Zeiss (30. November 2015)

*AW: [Arduino] Problem mit Adafruit TCS34725 Farbsensor*

Hast Du die beiden obligatorischen PullUps am I²C-Bus dran händen?


----------



## HighEnd111 (30. November 2015)

*AW: [Arduino] Problem mit Adafruit TCS34725 Farbsensor*



Zeiss schrieb:


> Hast Du die beiden obligatorischen PullUps am I²C-Bus dran händen?



Jetzt muss ich passen, ich kenn mich noch nicht so gut mit Arduino aus. PullUps müssten doch Widerstände sein, oder? Zwischen Board und Sensor hab ich normale Drahtbrücken als I²C-Bus. Ob auf dem Sensor oder dem Board PullUps drauf sind, kann ich dir nacher sagen, bin momentan noch etwas beschäftigt.


----------



## Zeiss (30. November 2015)

*AW: [Arduino] Problem mit Adafruit TCS34725 Farbsensor*

das wäre aber sehr wichtig, ohne die funktioniert I²C nicht.

PullUps sind zwei Widerstände von SDA und SCL auf Vcc.


----------



## HighEnd111 (1. Dezember 2015)

*AW: [Arduino] Problem mit Adafruit TCS34725 Farbsensor*

Wie es aussieht, hat das Breakoutboard von Adafruit, auf dem sich der TCS34725-Chip befindet, bereits PullUps aufgelötet. Jedenfalls müsste es normalerweise mit normalen Drahtverbindungen funktionieren. Ich habs jedenfalls so aufgebaut wie der Mann hier:

https://www.youtube.com/watch?v=bfOvx5b7ats

Nur eben ohne Servo.


----------



## Zeiss (1. Dezember 2015)

*AW: [Arduino] Problem mit Adafruit TCS34725 Farbsensor*

Okay, scheint so.

Hast Du einen LogicAnalyzer oder Oszi? Dann kannast Du schauen, ob auf den beiden Leitungen irgendwas ankommt und ob der Sensor überhaupt getaktet und auch angesprochen wird.

Die I²C ID (die Adresse) ist richtig? Kontrolliert?


----------



## HighEnd111 (1. Dezember 2015)

*AW: [Arduino] Problem mit Adafruit TCS34725 Farbsensor*

Adresse stimmt, das hab ich mehrfach überprüft.

Oszi hab ich seit wenigen Tagen da, mir fehlen nur noch BNC-Koppler und eine Einweisung in das Gerät. Hab ich von meinem Bruder, bei sich auf der Arbeit war das noch ein altes, das übrig war. Sobald ich weiß wie man es bedient, überprüfe ich die Leitungen. Zudem kann ich mit dem Board meines Bruders (er hat jetzt das gleiche wie ich) testen, ob es evtl. an meinem Arduino liegt.


----------



## Zeiss (1. Dezember 2015)

*AW: [Arduino] Problem mit Adafruit TCS34725 Farbsensor*

Okay, dann berichte mal.


----------



## Zeiss (8. Dezember 2015)

*AW: [Arduino] Problem mit Adafruit TCS34725 Farbsensor*

Und gibt es was Neues?


----------



## 666mille (9. Dezember 2015)

*AW: [Arduino] Problem mit Adafruit TCS34725 Farbsensor*

Hi, 
das Breakoutboard von Adafruit hat keine richtigen Pullup´s für den I2C. 10k Ohm sind zu groß. Das kann zu Problemen führen.
Die Leitunskapazität (abhängig z.B. von der länge des Bus) und der Pullabwiderstand begrenzen die Datenrate auf dem Bus. Hast Du etwas längere Leitungen brauchst Du zwingend einen kleineren Pullupwiderstand. 
Ich würde noch zusätzlich Pullup´s drauf machen. Aber Vorsicht die leigen dann parallel mir dem auf dem Board. Nimm noch 4,7k Widerstände dazu....dann hast Du einen Bus-Pullup von 3,2k. Berichte dann noch mal.....


----------



## Zeiss (9. Dezember 2015)

*AW: [Arduino] Problem mit Adafruit TCS34725 Farbsensor*

Auch mit 10k sollte es funktionieren. Die I²C Spec lässt alls zwischen 1k und 100k zu, je nach Spannungsversorgung.

Bei 5v sind die Werte zwischen 4k3 und 10k üblich.

EDIT: In der Schaltung des Arduino Diecimila Boards sehe ich keine PullUps drin, der Port C ist 1:1 an den J2 rausgeführt...


----------



## 666mille (9. Dezember 2015)

*AW: [Arduino] Problem mit Adafruit TCS34725 Farbsensor*

Jein...
Eigentlich hängt alles von der Leitungslänge des Bus und der Frequenz ab.
So wie ich das sehe steht im Code nur Wire.begin() und kein danach folgendes Wire.setClock(). Damit arbeitet der I2C mit 100khz. Mit 5V Betriebsspannung sollten die Pull-Ups mindestens einen Wert von 1,533k ( Rmin = ((Vcc-0,4V) / 3mA) ) haben. Rmax hängt jetzt nur noch von der Leitungskapazität ab. Welcher sich wie folgt brechnet: Rmax= 1000ns / Cbus. Im ungünstigsten Fall (400pF) müßte dann Rmax einen Wert von 2,5k haben. Bei nur 50pF wären es 20k.
Also wenn die Leitung sehr kurz ist könnten 10k OK sein.

Edit: Auf dem Breakoutboard sind die 10k


----------



## HighEnd111 (9. Dezember 2015)

*AW: [Arduino] Problem mit Adafruit TCS34725 Farbsensor*

Moin,

mein Bruder war am Montag nochmal hier und wir habens mal mit seiner Platine getestet, ging auch nicht. Wir haben dann ebenfalls 10k Pull-Ups von Vin auf SDA und SCL gelegt, ging immernoch nicht. Jetzt wissen wir wenigstens, dass die Pull-Ups schon auf dem Breakoutboard drauf sind (danke an 666mille ). Hatten wir zwar auch schon nachgeschaut, aber auf Anschlussplänen waren die immer extra gezeichnet.

Heute hat der Messgeräte-Shop die BNC-Koppler versandt, am Samstag überprüfen wir mit dem Oszi den Bus.


----------



## Zeiss (9. Dezember 2015)

*AW: [Arduino] Problem mit Adafruit TCS34725 Farbsensor*

@666mile: Wo hast Du da die PullUps gesehen??


----------



## 666mille (9. Dezember 2015)

*AW: [Arduino] Problem mit Adafruit TCS34725 Farbsensor*

@Zeiss: hier habe ich das her...oder habe ich das falsche erwischt?
https://learn.adafruit.com/adafruit-color-sensors/downloads


----------



## HighEnd111 (9. Dezember 2015)

*AW: [Arduino] Problem mit Adafruit TCS34725 Farbsensor*



666mille schrieb:


> @Zeiss: hier habe ich das her...oder habe ich das falsche erwischt?
> https://learn.adafruit.com/adafruit-color-sensors/downloads



Nope, der Sensor ist exakt der richtige


----------



## Zeiss (9. Dezember 2015)

*AW: [Arduino] Problem mit Adafruit TCS34725 Farbsensor*

Ach, auf diesem Sensor-Board. Ich sprach vom Arduino-Board.


----------



## 666mille (9. Dezember 2015)

*AW: [Arduino] Problem mit Adafruit TCS34725 Farbsensor*

@HighEnd: Wie lang ist denn die Leitung vom Arduino zum Sensorboard?


----------



## Zeiss (9. Dezember 2015)

*AW: [Arduino] Problem mit Adafruit TCS34725 Farbsensor*

Ich kann mir nicht vorstellen, dass es an der Kabellänge liegen soll. Ich glaube eher, dass I²C nicht sauber initialisiert wird oder der Sensor nicht antwortet. Aber ohne LA oder Oszi ist es nur raten.


----------



## HighEnd111 (9. Dezember 2015)

*AW: [Arduino] Problem mit Adafruit TCS34725 Farbsensor*

Die Leitungen sind um die 15 cm lang, also nicht wirklich viel.


----------



## Zeiss (9. Dezember 2015)

*AW: [Arduino] Problem mit Adafruit TCS34725 Farbsensor*

15cm sind gar nichts.


----------



## 666mille (10. Dezember 2015)

*AW: [Arduino] Problem mit Adafruit TCS34725 Farbsensor*

Ja eigentlich sollte die Leitungslänge nicht das Problem sein....wenn Du allerdings Rev2 von dem Board hast muss man die Kapazizät des Mosfet Levelshifter mit addieren und dann kann das schon wieder etwas anders aussehen. Die Widerstände kosten ja nichts.
An sonsten ist es wie Zeiss schon gesagt hat echt schwierig etwas ohne Oszi rauszufinden.


----------



## Zeiss (10. Dezember 2015)

*AW: [Arduino] Problem mit Adafruit TCS34725 Farbsensor*

Wenn ich LevelShifter mit FETs sehe, könnte ich schon kotzen, echt. Die richtigen LevelShifter kosten doch nichts.


----------



## HighEnd111 (10. Dezember 2015)

*AW: [Arduino] Problem mit Adafruit TCS34725 Farbsensor*

Um ehrlich zu sein wurde noch nirgends beschrieben, um welche Rev. es sich bei meinem Sensor handelt. Ist auf jeden Fall der auf dem Schaltplan. Wie gesagt, am Samstag prüfen wir alles mal mit dem Oszi.


----------



## HighEnd111 (12. Dezember 2015)

*AW: [Arduino] Problem mit Adafruit TCS34725 Farbsensor - gelöst!*

Problem gelöst: Die Platine hat nen Jumper um die 20 Onboard-LEDs zu (de-/) aktivieren. Durch die LEDs am I²C wurde zu viel Spannung vom Bus abgegriffen und dadurch hat der komplette Bus nicht richtig arbeiten können. Einfach die Brücke abziehen und schon hat das Ganze funktioniert. Dass man wegen einer Jumperbrücke insgesamt 4 Tage verschwenden kann... 

War auf jeden Fall cool, den SCL auf dem Oszi zu sehen, mal was anderes als eine normale Sinuskurve


----------



## Zeiss (12. Dezember 2015)

*AW: [Arduino] Problem mit Adafruit TCS34725 Farbsensor - gelöst!*

Ist halt ein Rechteck


----------



## HighEnd111 (12. Dezember 2015)

*AW: [Arduino] Problem mit Adafruit TCS34725 Farbsensor - gelöst!*

Jop. Und für ein uraltes Oszi gings echt mit dem Einfangen der Frequenz. Handelt sich übrigens um ein PM 3050 von Philips


----------



## Zeiss (12. Dezember 2015)

*AW: [Arduino] Problem mit Adafruit TCS34725 Farbsensor - gelöst!*

Himmel, wo hast Du sowas Prehistorisches ausgegraben?


----------



## HighEnd111 (12. Dezember 2015)

*AW: [Arduino] Problem mit Adafruit TCS34725 Farbsensor - gelöst!*

Ich hab meine Quellen


----------



## Zeiss (12. Dezember 2015)

*AW: [Arduino] Problem mit Adafruit TCS34725 Farbsensor - gelöst!*

Ich habe mir vor kurzem dieses hier geschenkt: klick mich


----------



## HighEnd111 (13. Dezember 2015)

*AW: [Arduino] Problem mit Adafruit TCS34725 Farbsensor - gelöst!*

Hübsch, 4-kanaliges Speicheroszi  Damit kann man schöne Dinge anstellen. Ist mir aber zu teuer, das Philips hat mich nix gekostet


----------



## 666mille (14. Dezember 2015)

*AW: [Arduino] Problem mit Adafruit TCS34725 Farbsensor - gelöst!*

Hehe...toller Fehler....das sind die Fehler, wo man am längsten dran sucht


----------



## HighEnd111 (14. Dezember 2015)

*AW: [Arduino] Problem mit Adafruit TCS34725 Farbsensor - gelöst!*

Ich habs zu meinem Bruder am Samstag auch gesagt: Bestimmt was ganz mickriges einfaches, zu einfach für uns


----------

