INFO: Dieses Forum nutzt Cookies...
Cookies sind für den Betrieb des Forums unverzichtbar. Mit der Nutzung des Forums erklärst Du dich damit einverstanden, dass wir Cookies verwenden.

Es wird in jedem Fall ein Cookie gesetzt um diesen Hinweis nicht mehr zu erhalten. Desweiteren setzen wir Google Adsense und Google Analytics ein.

Antwort schreiben 
 
Themabewertung:
  • 0 Bewertungen - 0 im Durchschnitt
  • 1
  • 2
  • 3
  • 4
  • 5
I2C - PCA9622 - LED Treiber - werde wahnsinnig
08.04.2014, 16:28 (Dieser Beitrag wurde zuletzt bearbeitet: 08.04.2014 16:41 von piecesv6.)
Beitrag #1
I2C - PCA9622 - LED Treiber - werde wahnsinnig
Hi, bin neu hier und brauche mal noob Unterstützung...

Ich habe eine passive LED Treppenbeleuchtung installiert, die momentan mit nem Ard-Leonardo ganz dumm über digitale Out-Pins die LED-Bänder schaltet (15 LED Bänder da 15 Treppenstufen).
Der Clou, nur die LEDS - also Treppen in dem Bereich wo man gerade lang geht leuchten (Zwei Ultraschall sensoren erfassen die Distanz, aufgeteilt in zwei Bereiche und übergeben Messwerte an funktionnen(einfache Kontrollstrukturen), das läuft auch alles schon gut.

Da die PWM Ausgänge an den Boards zu schwach und zu wenige sind, ich aber jede Stufe einzeln ansteuer- und dimmbar haben möchte, und das klackern der relaisnatürlich nervt würde ich gerne mit dem PCA9622dr realisieren, hab auch schon zwei hier liegen...(das ist ein IC - 16 Kanal LED TreiberIC - I2C BUS - 7bit Adressierung - der alles kann PWM dimmen usw.)

Habe mich durch die Datenblätter gekämpft und etliche Bücher über das Thema reingezogen...

http://www.nxp.com/documents/data_sheet/PCA9622.pdf

Und nun auch schon versucht die Register zu beschreiben, sodass die Leds zumindest mal angehen. Nix da, das Ding macht keinen Mucks.
Die Register habe ich alle mal per Hand in nen sketch eingegeben und mal versucht das Ding ans rennen zu bekommen, es gibt leider keine Bibliothek für das Ding.

Die einzelnen DatenBits für die Register und was Sie bewirken habe ich gestern schon mühsam gelesen und Werte notiert...

Hab das gerade mal zusammengeschrieben zum testen aber nüchte hehe -

Hab zum Test mal eine Schaltung aufgebaut siehe bild im Anhang.
Der I2C scanner zeigt die Adresse des Slave an 0x70... usw. das beweist das die verbindung steht.
Ich bin kein Programmierass kann etwas Java und will mit den Arduinos bissl was Zuhause machen, hab schon einige Prototypen die funzen aber mit dem I2C zu iwelchen ICs da stosse ich gerade auf meine Grenzen....
Wie gesagt es gibt keine lib und ich überlege gerade ob ich mir vier dopper H Brücken holen soll.

Bitte helft mir Sad)

const byte Mode1=0x00;
const byte Mode2=0x01;
//const int PWM[16] = {0x02, 0x03, 0x04, 0x05, 0x06, 0x07, 0x08, 0x09, 0x0a, 0x0b, 0x0c, 0x0d, 0x0e, 0x0f, 0x10, 0x11};
const byte PWM[16] = {2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17};
const byte GRPPWM=(0x12);// 12h 1 0 0 1 0 GRPPWM read/write group duty cycle control
const byte GRPFREQ=(0x13); //13h 1 0 0 1 1 GRPFREQ read/write group frequency
const byte LEDOUT0=(0x14); //014h 1 0 1 0 0 LEDOUT0 read/write LED output state 0
const byte LEDOUT1=(0x15); //115h 1 0 1 0 1 LEDOUT1 read/write LED output state 1
const byte LEDOUT2=(0x16);// 216h 1 0 1 1 0 LEDOUT2 read/write LED output state 2
const byte LEDOUT3=(0x17); //317h 1 0 1 1 1 LEDOUT3 read/write LED output state 3
const byte SUBADR1=(0x18); //118h 1 1 0 0 0 SUBADR1 read/write I2C-bus subaddress 1
const byte SUBADR2=(0x19); //219h 1 1 0 0 1 SUBADR2 read/write I2C-bus subaddress 2
const byte SUBADR33=(0x1a); //1Ah 1 1 0 1 0 SUBADR3 read/write I2C-bus subaddress 3
const byte ALLCALLADR=(0x1b); //1Bh 1 1 0 1 1 ALLCALLADR read/write LED All Call I2C-bus address
const byte slave = 0x70;

#include <Wire.h>

void setup(){
Wire.begin();
}
void loop()
{
Wire.beginTransmission(slave);//
//Wire.beginTransmission(0x72);
Wire.write(Mode1);
Wire.write(0x90);

Wire.write(Mode2);
Wire.write(0x05);

Wire.write(GRPPWM);
Wire.write(0xFF);

Wire.write(GRPFREQ); //??
Wire.write(0x00);

Wire.write(LEDOUT0);
Wire.write(0xFF);

Wire.write(LEDOUT1);
Wire.write(0xFF);

Wire.write(LEDOUT2);
Wire.write(0xFF);

Wire.write(LEDOUT3);
Wire.write(0xFF);
///
Wire.endTransmission();

for (int i=2; i<18;i++){

int PWMvalue;
PWMvalue = 254;//es ist dem Ding doch egal ob ich byte bit oder hex als zahlenformat übergebe oder?
int adresse = PWM[i];


Wire.beginTransmission(0x70);
Wire.write(adresse);

Wire.write(PWMvalue);

delay(20);
Wire.endTransmission();
}
delay(1000);
Wire.endTransmission();// stop transmitting
}


Angehängte Datei(en) Thumbnail(s)
   
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren
08.04.2014, 19:02
Beitrag #2
RE: I2C - PCA9622 - LED Treiber - werde wahnsinnig
Hallo piecesv6,

durch
Code:
void setup(){
Wire.begin();
}
void loop()
{
Wire.beginTransmission(slave);
hast du zwar den Bus / Arduino zum Master erklärt, den PCA aber noch lange nicht zum Slave. Ergo weiß der Arduino überhaupt noch nicht mit wem er "reden" soll, "Wire.beginTransmission(slave);" wird zwar vom Compiler akzeptiert, bleibt aber ohne Wirkung. Besser wäre:
Code:
void setup(){
Wire.begin(slave);
}
void loop()
{
Wire.beginTransmission(slave);

Grüße Ricardo

Nüchtern betrachtet...ist besoffen besser Big Grin
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren
08.04.2014, 19:55 (Dieser Beitrag wurde zuletzt bearbeitet: 08.04.2014 20:26 von piecesv6.)
Beitrag #3
RE: I2C - PCA9622 - LED Treiber - werde wahnsinnig
(08.04.2014 19:02)rkuehle schrieb:  Hallo piecesv6,

durch
Code:
void setup(){
Wire.begin();
}
void loop()
{
Wire.beginTransmission(slave);
hast du zwar den Bus / Arduino zum Master erklärt, den PCA aber noch lange nicht zum Slave. Ergo weiß der Arduino überhaupt noch nicht mit wem er "reden" soll, "Wire.beginTransmission(slave);" wird zwar vom Compiler akzeptiert, bleibt aber ohne Wirkung. Besser wäre:
Code:
void setup(){
Wire.begin(slave);
}
void loop()
{
Wire.beginTransmission(slave);

Grüße Ricardo
////////////////////////////////////////////////*************************

Hiho Ricardo,
und danke für die rasche Antwort, echt blöd habe mir das auch einfacher vorgestellt mit dem Registersalat...hmm es stand im Buch:

void setup()
{
// teilnehmen am I2C-Bus""""""""""""!!!!!!!!!!!!!!!
// keine Adresse, da Master!!!!!!!!!!!!!
Wire.begin(); --> Also damit soll der Leonardo zum Master gemacht werden
}

So stands im Buch... Dachte ich sage im Setup dem Master das er keine Adresse brauch weil er die Moderation übernimmt. Und mit der variablen "slave" habe ich die hex Adresse 0x70 initialisiert eben die vom PCA.... naja habs probiert wie du meintest keine Änderung
Trotzdem vielen Dank für jede Anregung dankbar ich bin hehe

aso so will das ding die pakete haben, habe mit visual c mal die libs vom pca 9685 versucht abzuändern aber da gibt es zu viele unterschied. Unterschiedliche Register und der kann 12 bit pwm also 4096 anstatt 8bit 255 wie der pca usw... nervt

also so will er sie haben hmm

hmm das ist die Beschreibung von dem Ding mit I2C Addresse:

Problem ist - mit dem I2C Scanner finde ich das PCA 9622 mit 070h aber anscheinend mache ich mit dem Mode1 und Mode 2 was falsch (siehe Datenblatt - Autoinkrement etc da muss mann sich wie bei allen Register jedes Bit anschauen dachte daher alle mal mit PWM Wert 255 starten nur zum testen aber das verfluchte Ding macht garnix, habe eben sogar das zweite PCA gelötet und notdürftig angeschlossen, dachte das erste sei im Eimer aber gleicher Mist


Angehängte Datei(en) Thumbnail(s)
       
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren
08.04.2014, 21:13
Beitrag #4
RE: I2C - PCA9622 - LED Treiber - werde wahnsinnig
kann mir denn keiner helfen?Confused

Integrated Circuit Spezis - please stand up

...
Der alte Mann will die Treppe zum leuchten bringen ohne Relais.... Smile
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren
13.04.2014, 19:50
Beitrag #5
Rainbow RE: I2C - PCA9622 - LED Treiber - werde wahnsinnig
Hat sich erledigt ich habe mir einen adafruit 16 Kanal 12bit PWM Modul zugelegt. Damit läufts.
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren
Antwort schreiben 


Möglicherweise verwandte Themen...
Thema: Verfasser Antworten: Ansichten: Letzter Beitrag
  Treiber Problem Baumschüler 9 1.137 22.10.2015 18:36
Letzter Beitrag: Baumschüler
  Treiber für Arduino bergfrei 2 734 21.09.2015 17:44
Letzter Beitrag: bergfrei
  Yosemite 10.10.1 Treiber / Arduino nicht erkannt Marc2014 3 1.970 04.06.2015 19:59
Letzter Beitrag: Gabriele
  7 Segment Anzeige mit Treiber / Programmierung! mullman1 7 2.483 29.06.2014 18:57
Letzter Beitrag: Bitklopfer

Gehe zu:


Benutzer, die gerade dieses Thema anschauen: 1 Gast/Gäste