Go Down

Topic: Treppenlicht mit I2C (Read 5369 times) previous topic - next topic

Jago

@xpix: Wie gesagt, ungetestet... ...hab das Prog in Wordpad geschrieben.
Wenn du eine 4 adrige Leitung hast dann kannst du ja auch gleich mal 6m probieren. Würd mich nur mal so interessieren...
(aus kapazitätssicht ist die Verwendung der äußeren beiden Leiter garantiert auch sehr vorteilhaft)
Hab noch was gefunden, ist aber denk ich mal uninteressant für dich:
http://arduino.cc/forum/index.php/topic,68367.0.html

@Marcus: Na dann sind sich ja alle einig! Wunderbar! Weitermachen!  8)
Nothing is impossible ^^

koldomon

Hallo zusammen

zu I2C und der Kabellänge kann ich einen kleinen Erfahrungsbericht beisteuern. In meinem "Newbi Projekt: Lüftersteuerung" bin ich vor dem Problem gestanden, einen I2C Themperatursensor anzusteuern, der auch ein paar meter entfernt vom UNO liegt. Try & Error hat mir keine Probleme aufgezeigt. Aktuell laufen durch den Kabelkanal neben den 2,5m Leitungen für den i2C auch noch 12V leitungen für die Lüfter und Messleitungen für 2 analoge Themperatursensoren.Alles 0,25mm²Elektroniklitze. Der Sensor lässt sich seit über 3 Monaten problemlos auslesen. Da dürften deine 3m kein Problem darstellen, noch dazu, wo du fast keine Leistung in der Nähe hast.Ich werde beim nächsten I2C Projekt meine alten CAT5 Kabel verbauen, dann haben die noch einen guten Zweck erfüllt (sind CAT5 STP) und ich werde (hoffentlich) keine Probleme bekommen.

Ich gebe den anderen Beitragsschreibern aber vollkommen Recht im Bezug auf die festgeschriebenen Spezifikationen und die Einhaltung der Grenzwerte.

xpix

#17
May 05, 2012, 02:50 pm Last Edit: May 05, 2012, 02:56 pm by xpix Reason: 1

@xpix: Wie gesagt, ungetestet... ...hab das Prog in Wordpad geschrieben.


So, alles aufgebaut und was soll ich sagen, es funktionierte auf Anhieb. Hier mal ein Foto des Versuchsaufbau's und der Code für master und Slave. Auf dem Foto seht ihr den Arduino Nano sowie ein BlinkM Device sowie das I2C mit dem Drucksensor FSR 402. Das BlinkM hat in dem Aufbau erst einmal keine Funktion ... sobald man den Sensor betätigt bekommt man Werte bis 256 auf der Konsole.

Code: [Select]
//Für Arduino/Master:

#include <Wire.h>

void setup () {
 Serial.begin(9600);
 Wire.begin();
}

void loop (){

 byte Puffer;
 byte i = 0;
 byte Daten = 1;
 int Slave = 4;

 Wire.beginTransmission(Slave); //Sensordaten vom Slave anfordern
 Wire.write(Daten); //irgendein Wert den der Slave so versteht das er den Sensor auslesen soll
 Wire.endTransmission();
 
 delay(5); //dem Slave Zeit geben um die Anfrage zu bearbeiten
 
 Wire.requestFrom(Slave, 2); //High und Low Byte vom Slave anfordern
 
 while (Wire.available()){
   Puffer = Wire.read(); //Byte auslesen, High und Low Byte müssen noch zusammengefügt werden
   Serial.print("Receive: ");
   Serial.println(Puffer);
 }

 //zweiten Slave auslesen (in sub auslagern)
 //dritten Slave auslesen
 delay (100);
}


Code: [Select]
//Für Slave / ATiny:

#include <TinyWireS.h>

int Slave = 4; // Slave Adresse
int AnalogPin = 2; // Port wo der FSB angeschlossen ist

void setup () {
 TinyWireS.begin (Slave);
}

void loop(){
 if (TinyWireS.available()){  //"Warten" bis Slave von Master angesprochen wird und egal
   //welcher Wert gesendet wird, der Slave schickt den Sensorwert zurück
   byte Rec = TinyWireS.receive();
   int Wert = analogRead(AnalogPin);
   TinyWireS.send(byte(Wert & 0xFF)); //Lowbyte senden
   TinyWireS.send(byte(Wert >> 8)); //Highbyte senden
 }
}


Der Test mit den 3m sowie 6m kommt morgen dran, als Pullups konnte ich nur 5,2k einsetzen aber das sollte gehen.

Wie kann man eigentlich die Geschwindigkeit des Busses einstellen unter Wire?


xpix

Quote

Der Test mit den 3m sowie 6m kommt morgen dran, als Pullups konnte ich nur 5,2k einsetzen aber das sollte gehen.


Leider haben mich die Renovierung meines Hauses doch ein wenig mehr in Anspruch genommen, nun laut UPS kommen die ersten PCB's heute und dann werd ich den 6m Test etwas verschieben müssen. Aber es ist alles auf dem Weg ;)

Jago

Na das freut mich doch das alles funktioniert hat!
Schöner Aufbau, mir gefällt vorallem der Gummi  :D
Wie man die Geschwindigkeit einstellt weis ich nicht. Vorgesehen ist in der Bibliothek nichts, soweit ich weis. Also müsste man mal ins Datenblatt schauen und das entsprechende Prescalerregister manipulieren (oder die Bibliothek umschreiben). Weis allerdings nicht wo das noch mit drin hängt. Könnt mir vorstellen das man da irgendeinen Timer mit beeinflusst und dann PWM, Millis oder micros "nicht mehr richtig" funktioniert.
5,2k sollte funktionieren, besser ist aber weniger (Stichwort umladen der Leitungskapazität). Ich bin garnicht sicher wo die Grenze war, glaube ein Kiloohm oder so.
Was meinst du mit PCB´s?
Das Problem mit dem Zeitmangel kenn ich, steck grad im Umzugsstreß....
MfG Jago
Nothing is impossible ^^

xpix


Was meinst du mit PCB´s?


Nun, ich habe als erstes ein BlinkM Clone in Fritzing entworfen. Die habe ich dann als Gerberfiles an einen Leiterplattenhersteller: https://www.haka-lp.de geschickt und gestern bekommen. Aber wie das Leben so spielt, zwei Fehler waren in dem Entwurf. Ich hatte 2 Massen und der Reset Pin des Tinys war auf masse ;) Aber nach brutalem umbiegen des Pin's lies sich das Teil ansprechen ;) Mein größtes Problem, die Bohrungen der RGB LED waren einfach zu klein und ich muss mir jetzt was ausdenken um die gelieferten Leiterplatten doch noch nutzen zu können.

Hier mal mein geänderter Entwurf mit extra Buchsenleiste für die LED ...

xpix

Hallo,

so am Wochenende habe ich endlich zeit gehabt mich weiter um mein Projekt zu kümmern ;) Die 13 Devices sind jetzt alle zusammen gelötet. Die falsche Routenführung hatte ich mit einem kleinen kabel gelößt. Der resetpin auf masse wurde durch brutales entfernen des pins an dem IC Sockel deaktiviert.

Um das I2C Problem etwas zu umgehen, habe ich mich entschlossen bei Reichelt ein 10 poliges Flachbandkabel nebst 2x5 Pfostensteckern zu kaufen. Die Signalleitungen haben dadurch immer eine Masseleitung zwischen sich und werden damit stabiler arbeiten.

Hier also ein paar Fotos von den kleinen Dinger ;)

xpix

Ich weiss jetzt nicht ob jemand hier mitliest, aber ich mach einfach mal weiter.

Letzte Woche sind platinen aus Amerika und Deutschland angekommen. Die Amis waren fast genauso schnell, und lieferten mir die doppelte Anzahl an PCB's ;) Um mal eine weitere Treppe mit mehr Power versorgen zu können, habe ich mal diese Version herstellen lassen:

http://protofusion.org/wordpress/2011/06/tinyrgb-an-i2c-led-driver/

Vorteil, ich kann Power RGB LED's oder auch RGB LED Streifen mit bis zu 40V/1.2A versorgen, dank der verbauten Darlington Transistoren. Die eagle Files habe ich so abgeändert, das statt SMD Widerstände normale genutzt werden können.

Hier der erste Testaufbau, ich habe eine 3W Power RGB China LED drangeschaltet, die maximal 1A zieht ;) Gut, 13 Stufen a 1A ... na ja, man kann ja mal träumen. Mir ging es in erster Linie darum, auch RGB LED Streifen steuern zu können.

Später mehr über die andere Platine für den Analog Sensor.


xpix

#23
Jun 04, 2012, 01:54 pm Last Edit: Oct 05, 2012, 03:11 pm by xpix Reason: 1
wen die Story interessiert, ich mach hier weiter:

http://xpixer.blogspot.de/

Stairlight 1.0 ;)
http://xpixer.blogspot.de/2012/10/stairlight-10.html

Go Up