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

HighEnd111

Software-Overclocker(in)
[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 :daumen: Vielen Dank schonmal!

LG, HighEnd111
 
Zuletzt bearbeitet:
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. :huh:
 
AW: [Arduino] Problem mit Adafruit TCS34725 Farbsensor

Ich denke mal das Thema ist zu speziell. Hast du mal in einem Arduino- oder Elektronikboard gefragt?
 
AW: [Arduino] Problem mit Adafruit TCS34725 Farbsensor

Hast Du die beiden obligatorischen PullUps am I²C-Bus dran händen?
 
AW: [Arduino] Problem mit Adafruit TCS34725 Farbsensor

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.
 
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.
 
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.
 
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?
 
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.
 
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.....
 
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...
 
Zuletzt bearbeitet:
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
 
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 :daumen:). 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.
 
AW: [Arduino] Problem mit Adafruit TCS34725 Farbsensor

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