Seiten: [1] 2
|
 |
|
Autor
|
Thema: [Arduino] Problem mit Adafruit TCS34725 Farbsensor (Gelesen 42222 mal)
|
HighEnd
LED-Tauscher

Karma: +0/-0
Offline
Geschlecht: 
Beiträge: 49
Es ist selten zu früh und niemals zu spät!
|
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 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 ||
|
|
|
|
|
|
|
|
|
|
HighEnd
LED-Tauscher

Karma: +0/-0
Offline
Geschlecht: 
Beiträge: 49
Es ist selten zu früh und niemals zu spät!
|
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 
#Edit: Hier die Bilder vom Aufbau. Technische Daten stehen drunter 
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, 17: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 ||
|
|
|
|
|
|
HighEnd
LED-Tauscher

Karma: +0/-0
Offline
Geschlecht: 
Beiträge: 49
Es ist selten zu früh und niemals zu spät!
|
Das komplette Programm sieht so aus:
#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
|
|
« Letzte Änderung: Oktober 31, 2015, 08: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 ||
|
|
|
|
|
Seiten: [1] 2
|
|
|
|
|