Hallo, ich bin dabei mir ein kleines Mediencenter mit einem Raspberry aufzubauen (Kodi und Squeezeboxserver). Das ganze baue ich mir gerade in einen alten DVD-Player ein. Um mir auch einen Status anzeigen lassen zu können habe ich anstatt des Displays 3 RGB-Leds (aus einem alten Led-Strip ausgelötet) eingesetzt. Diese möchte ich mit dem "Adafruit 16-Channel 12-bit PWM/Servo Driver - I2C interface - PCA9685" (siehe http://www.adafruit.com/products/815 ) ansteuern. Die Leds haben eine gemeinsame Anode. Da ich keine technischen Daten hatte habe ich durch probieren die Widerstände so gewählt das ich einen Strom von ca. 10mA pro Led habe. Die können zwar wesentlich mehr...aber im Wohnzimmer brauche ich das nicht so hell. Die Leds werden mit 5V versorgt. Der PCA aber nur mit 3,3V. Nun habe ich den Denkfehler gemacht, das ich ja nur mit dem PCA gegen Masse schalten muss um die Leds zu betreiben. Aber ich vermute durch den Potentialunterschied 3,3V - 5V glimmen die LED´s bei voll angesteuertem PCA. Einen Schaltplan habe ich angehängt. Jetzt bin ich am überlegen, wie ich am einfachsten diesen Fehler ausbügeln kann. Ich denke wenn ich einen Transistor (ich habe jetzt öfter vom BUZ11 gelesen) dazwischen schalte wäre das Problem schon erledigt. Da mir der Platz dafür fehlt...und ich ungern durch den ganzen Player 20 Kabel zu einer anderen Platine laufen lassen möchte...suche ich nach alternativen. 1.) Ist es derzeit schon kritisch für den PCA das die Leds glimmen, wenn ich den voll angesteuert habe? Es müsste ja eine etwas höhere Spannung von den Leds kommen... 2.) Ich könnte die Leds mit den 3.3V vom Raspberry versorgen. Das glimmen ist dann auch fast weg. Klitzekleine Punkte sind dann noch zu sehen. Hat aber den Nachteil, das die 3.3V des Raspberrys schon zu stark belastet sind, wenn ich alle Leds gleichzeitig ansteuere. (Ich hatte mal was von 55mA gelesen) 3.) Noch höhere Vorwiderstände. Aber da bin ich wieder bei punkt 1. Ich brauche wirklich nur sehr "dunkle" Leds. Das glimmen würde von der Helligkeit schon fast reichen... 4.) Den PCA mit 5V betreiben. Hab ich mich nicht getraut, da ich nicht sicher bin was dann auf den SDA/SCL Leitungen passiert. Ich glaube der Raspberry darf da nur 3,3V Welche Tipps könnt ihr mir da sonst noch geben damit ich möglichst einfach aus dem Fehler wieder rauskomme? Danke! Gruß Bismosa
Sascha Smolny schrieb: > Der PCA aber nur mit 3,3V. Und warum versorgst du den nicht mit 5V? Das wäre doch am einfachsten.
Wolfgang schrieb: > Und warum versorgst du den nicht mit 5V? Das wäre doch am einfachsten. Bekomme ich dann nicht Probleme mit dem I2C Bus und dem Raspberry?
Das ist das gute an I2C (open Collector). Hänge die Pullups von SDA uns SCK auf 3,3V und beide sehen nur 3,3V.
Datenblatt lesen, da steht: -5V tolerant -Ausgänge können invertiert werden -Ausgänge können als open-drain geschaltet werden
Du kannst den PCA9685 direkt mit 5V betreiben. Der Raspberry Pi hat auf dem I2C Bus (arbeitet mit 3.3V) bereits PullUp Widerstände zugeschaltet. Laut Datenblatt (Seite 38, HIGH-level input voltage) erkennt der PCA9685 einen High Level ab 3.5 V (0.7 * 5V). Ich vermute, die Kommunikation gelingt trotzdem. Ich benutze für RGB LED Lichtanzeigen nur noch die WS2812B. Diese LEDs haben eine tolle Farbwiedergabe und können auch direkt am Raspberry Pi verwendet werden. Evtl. benötigt man da aber einen zusätzlichen Level Converter.
Sascha Smolny schrieb: > Bekomme ich dann nicht Probleme mit dem I2C Bus und dem Raspberry? Wenn deine Umgebung nicht arg gestört ist, funktioniert das wie schon gesagt. Und ansonst gibt es simple bidirektionale Pegelkonverter für den I2C mit nur einem FET (NXP AN10441 Fig.1). http://www.nxp.com/documents/application_note/AN10441.pdf http://www.ebay.com/sch/i.html?_nkw=I2C+Logic+Level+Converter
Hallo! Vielen Dank für die vielen Antworten! Nach so vielen gleichlautenden Meinungen werde ich dann versuchen den PCA mit 5V zu betreiben. Ich habe nicht exakt das Board was es von Adafruit gibt...sondern eins von deek-robot.com. (Bilder: http://www.play-zone.ch/de/dk-16-channel-12-bit-pwm-servo-driver-i2c-interface-pca9685.html ) Hier habe ich keinen Schaltplan finden können. Daher habe ich noch nicht herausgefunden, ob es überhaupt Pull-Up-Widerstände auf dem I²C Bus gibt. Da werde ich in der Mittagspause mal ein wenig Messen müssen. Bisher war mir noch nicht bewusst, dass ein I²C-Bus so funktioniert. Damit hatte ich mich noch nicht beschäftigt. Das ich den PCA mit 5V betreiben kann hatte ich schon im Datenblatt (was ich zumindest versucht habe zu lesen und zu verstehen...) gesehen. Ich hoffe nur, das ich nicht noch irgendetwas grille. Wäre bei diesem Projekt nicht das erste Bauteil ;) Gruß Bismosa
Sascha Smolny schrieb: > Hier habe ich keinen Schaltplan finden können. Daher habe ich noch nicht > herausgefunden, ob es überhaupt Pull-Up-Widerstände auf dem I²C Bus > gibt. Die gibt es, sonst wäre es kein I2C-Bus.
Wolfgang schrieb: > Die gibt es, sonst wäre es kein I2C-Bus. Ja...ich hab sie auch (leider) gefunden. Ich habe die mal auf dem Bild eingekreist. Die beiden linken Pins. Ich glaube kaum das ich es schaffe hier die SMD-Widerstände zu verschieben damit die beiden in der Luft hängen. Aber ein Versuch wäre es wert. Wenn ich das dann richtig verstanden habe müssten doch die Pull-Up aus dem Raspberry reichen? Gruß Bismosa
Sascha Smolny schrieb: > Ja...ich hab sie auch (leider) gefunden. Jetzt wird es Zeit, mal einen Plan zu zeichnen. Welche Pull-Ups ziehen wo hin und welche Spannungen sind fest miteinander vorbunden. Die Werte der diversen Pull-Ups auf den Boards sollte man bei der Gelegenheit auch gleich zusammentragen.
Hallo, ja...hätte ich vorher einen Plan gezeichnet...wäre mir das Problem mit den 5V vermutlich schon aufgefallen. So. Nun habe ich die Widerstände (Pull-Ups) am MCP entfernt. Das Ergebnis ist aber mehr als schlecht. 1.) Es scheint sehr stark gestört zu werden...nicht immer wird der MCP gefunden...und wenn ich in der nähe der Platine bin fängt auch alles an zu flackern. Ein Wackelkontakt konnte ich aber nicht finden. 2.) Wenn er denn mal erfolgreich initialisiert wird und ich die LEDs alle ausschalte ist immer noch ein glimmen der LEDs sichtbar (alle). Nicht mehr ganz so stark...aber immer noch störend. 3.) Ein MCP23017 der ebenfalls am I2C Bus hängt (nur Eingänge mit Tastern) hat jetzt plötzlich die Adresse 0x27 und nicht mehr 0x20. Dort sind übringens keine Pull-Ups eingesetzt. Also hat mir das jetzt alles gar nichts gebracht. Ich werde also um einen Level-Converter nicht herumkommen. Aber warum glimmen die LEDs dann immer noch? Jetzt muss ich erst einmal versuchen die SMD-Widerstände zurück zu bringen. Das ist echt schwierig! Gruß Bismosa
Bist du dir sicher, dass du die richtigen Widerstände entfernt hast? Probier nochmals alles mit 3.3V. Zu deinem Problem mit dem Glimmen: Bei deiner Beschaltung müssten beim PCM an den Ausgängen genau 5V (od. 3.3V) anliegen, damit die LEDs ausgeschaltet bleiben. Laut Datenblatt des PCM (Seite 37, VOH) wird dieser Level aber nicht erreicht. Ein kleiner Reststrom fliesst also immer durch die LED, der das Glimmen verursacht. Du benötigst RGB LEDs mit Common Cathode.
Hallo, ja..ich bin mir sicher, das es die richtigen waren. Jetzt hatte ich versucht den Urzustand wiederherzustellen. Das ist aber leider missglückt. SMD-Löten ist echt schwierig...vor allem das ganze brückenfrei zu schaffen (bzw. hinterher die Brücken zu entfernen). Nun hat sich auch noch ein Pin von der Platine gelöst...und der Rest ist auch nicht ok. Der Widerstand hat wohl mittlerweile auch durch den Lötkolben einen Schaden genommen. Einer von 4 hat nur noch 5k statt 10k. Ich muss die Tage nochmal schauen, ob ich es hinbekommen kann die Widerstände durch andere zu ersetzen. Dafür muss ich aber auch noch prüfen, was ich vielleicht noch an den Leiterbahnen beschädigt habe...sonst muss ich wohl wieder 5 Wochen auf eine Lieferung aus China warten :( Aber noch einmal zu meinem Hauptproblem. Lt. Datenblatt ist ein Spannungsabfall von 0,5V vorhanden. Ich habe jedoch die LED mit einem Widerstand am Ausgangspin. Demnach müsste doch die über die LED anliegende Spannung geringer sein als diese 0,5V ? Sonst muss ich den Widerstand doch noch erhöhen? Gruß Bismosa
Der Raspi kann auf der 3V3 Seite nicht die LEDs und den PCA treiben. Schließe den PCA an 5V an und spendiere ihm auch noch Abblockkondensatoren. Du solltest Dir mal den Schaltplan vom Raspi und dem PCA anschauen. Die LEDs werden an VDD angeschlossen. Du kannst maximal 400mA in Summe treiben. Deine Stromversorgung kann die 400mA zusätzlich liefern?
Pete K. schrieb: > Deine Stromversorgung kann die 400mA zusätzlich liefern? Öhm...na klar. Ich habe noch ca. 3A zur freien Verwendung ;) Aber warum 400mA. Ich habe 3RGB LEDs...also 9 LEDs mit jeweils ca. 10mA = 90mA. Mehr (derzeit) nicht. Die LEDs sind direkt an VDD (5V) (nicht an der GPIO-Leiste vom Raspberry) und der PCA war ursprünglich an den 3,3V vom Raspberry. Jetzt hatte ich den PCA ja mal testweise auch auf 5V (und dabei habe ich die Pullups vom I2C Bus entfernt) Ich werde jetzt erst einmal mein PCA-Board wieder in Ordnung bringen müssen. Ich habe jetzt alles durchgemessen und müsste normale Widerstände unterbringen können (dafür brauche ich die verhunzten Lötpins vom SMD-Widerstand nicht mehr). Ich teste dann noch mal mit 3,3V (wenn ich nur eine RGB-LED anschließe sollte der Raspberry genügend Strom liefern können) Das wird aber heute wohl nichts mehr. Ich höre jetzt erst mal gefrustet auf. Morgen habe ich leider noch einen Termin...also spätestens Dienstag abend sollte ich dann weitere Ergebnisse liefern können ;) Gruß Bismosa
> Aber noch einmal zu meinem Hauptproblem. Lt. Datenblatt ist ein > Spannungsabfall von 0,5V vorhanden. Ich habe jedoch die LED mit einem > Widerstand am Ausgangspin. Demnach müsste doch die über die LED > anliegende Spannung geringer sein als diese 0,5V ? Sonst muss ich den > Widerstand doch noch erhöhen? Ein höherer Widerstand bringt dir vermutlich nichts. Es wird immer ein kleiner Strom fliessen. Du könntest aber mit Hilfe von OPAMPs invertierende Spannungsfolger bauen. Somit würden die Ausgänge am PCA invertiert: 0V = LED komplett aus, 4.5V = LED komplett an (mit entspr. Widerstand) und nicht wie bis anhin: 0V = LED komplett an, 4.5V LED beinahe aus
Hallo, ich habe es nun gestern noch geschafft mein PCA-Board zu reparieren. Ich habe jetzt statt der SMD-Widerstände 10k Widerstände direkt an die Anschlüsse vom I²C Bus gegen VCC gehängt. Dadurch habe ich jetzt wieder den Urzustand. VCC vom PDA an 3,3V, die LEDs weiterhin mit 5V versorgt. Wenn ich jetzt entgegen einiger Beschreibungen im Internet nicht die Werte im Programm invertiere (also volle Ansteuerung = LED aus) sondern mich an das Datenblatt halte (siehe Seite 29 Fig.15) und INVRT aktiviere gehen die LEDs vollständig aus. Was jetzt intern anders im PCA ist...keine Ahnung. Ich bin aber glücklich das es trotz des Spannungsunterschieds klappt. Auch den Fehler am MCP23017 (der ebenfalls am I²C Bus sitzt und plötzlich falsch Adressiert war) konnte ich finden. Ich hatte die Adress-Pins völlig vergessen an VSS anzuschließen...grmpf. Eigentlich funktioniert dadurch jetzt alles. Leider nur eiggentlich. Wenn ich mit meinen Goldfingern in die Nähe der Anschlüsse auf dem PCA-Board komme fangen alle LEDs an zu flackern. Also ist irgendwas sehr empfindlich. An den Kabeln kann ich wackeln...da passiert nichts. Wenn ich aber den Kunststoff vom Stecker des PCA komme (ohne auch nur den Kontakt zu berühren) flackert es schon los ??? Normalerweise kommt man da später nicht dran. Aber manchmal kommt es dann schon beim Starten des Raspberrys dazu, das gar nichts mehr auf dem I²C Bus funktioniert. Die beiden PullUps sind getestet...und funktionieren. Ich weiß auch nicht, ob ich beim I²C Bus den Fehler suchen muss? Mehr bin ich da gestern leider nicht zum testen gekommen. Da werde ich heute noch mal weiter suchen...aber vielleicht könnt ihr mir einen Tip geben, wo ich anfangen kann zu suchen? Ich hatte gestern auch noch gleich Pegelwandler für den I²C Bus bestellt. Die "teuren" aus DE, damit ich sie auch spätestens morgen auf meinem Tisch habe...da hatte ich noch nicht damit gerechnet, das ich durch invertieren das Problem schon beseitige. Dafür das ich gestern nur wenig Zeit zwischen Arbeit und Termin hatte konnte ich ja schon einiges Erreichen :) Gruß Bismosa
Also der Raspberry hat schon interne Pullups (siehe Schaltplan), da braucht es keine mehr. Hast Du auch Abblockkondensatoren verwendet? Wie sieht Deine Schaltung jetzt aus?
> Wenn ich mit meinen Goldfingern in die Nähe der Anschlüsse auf dem > PCA-Board komme fangen alle LEDs an zu flackern. Schau dir das Schaltschema auf Seite 37 des Datenblatts an. Sind deine Pins entsprechend verbunden?
Hallo, Pete K. schrieb: > Hast Du auch Abblockkondensatoren verwendet? Nein...ich habe leider gerade keine zur Hand. So gut ist meine Bastelwerkstatt noch nicht ausgestattet. Ich habe nur ein paar Elkos liegen. Ich hoffe die Tage mal zu Conrad zu kommen. Ich denke ein 100nF ist hier ok? Mick schrieb: > Schau dir das Schaltschema auf Seite 37 des Datenblatts an. Sind deine > Pins entsprechend verbunden? Bis auf den OE zumindest ähnlich. Der OE liegt offen. Die LEDs sind wie auf Seite 29 Fig.15 angeschlossen. Heute ist auch mein Logic-Level-Converter gekommen. Ich habe es leider noch nicht geschafft diesen einzubauen. Ich hoffe das ich morgen schaffe und mal mit 5V testen kann. Heute habe ich festgestellt, das es drauf ankommt in welchem Gebäudeteil ich mich befinde. Im Wohnzimmer/Büro wird der I²C Bus erkannt und alles geht (außer ich gehe mit mein Finger näher als 1mm an die Pins und mit der anderen Hand nicht am Gehäuse). Sobald ich die Kiste in der Werkstatt einschalte funktioniert der ganze Bus nicht mehr. Könnte schon bald etwas mit dem fehlenden Abblockkondensator zu tun haben. Die Störeinflüsse sind in der Werkstatt recht hoch. Vielen Dank für die ganzen Tipps und die Hilfe! Gruß Bismosa
> Bis auf den OE zumindest ähnlich. Der OE liegt offen.
Das ist die Ursache für das Flackern. OE muss auf GND liegen! Siehe
Seite 2.
Hallo, Mick schrieb: > OE muss auf GND liegen! Aha...das habe ich so nicht aus dem Datenblatt verstanden. Ich habe es nur als externen negierten Eingang gesehen und mich um ehrlich zu sein nicht weiter drum gekümmert. Lt. einer Anleitung von Adafruit muss hier auch nichts angeschlossen werden: https://learn.adafruit.com/adafruit-16-channel-servo-driver-with-raspberry-pi/hooking-it-up Aber vermutlich ist auf dem Board von adafruit schon eine Verbindung zu GND. Auf meinem definitiv nicht. Muss ich den mit einem Pulldown (welche größe) gegen GND hängen? Aber eigentlich logisch das daher der Fehler kommt...vielen Dank für den Hinweis. Das erklärt auch, warum trotz der "Störung" der I²C Bus weiterhin funktioniert. Ich muss wirklich an meinem Englischen arbeiten...und versuchen die Datenblätter besser zu verstehen. Eigentlich bringt mich der Eingang schon wieder auf neue Ideen. Ich habe parallel auch geschaut ob es möglich ist eine Ausgabe auf dem I²C Bus zu machen nach dem Herunterfahren (nachdem das Filesystem als Readonly gemountet wurde). Oftmals wird eine LED als Anzeige an TxD angeschlossen...die hört nahezu am Ende des Herunterfahrens auf zu leuchten. Das gleich kann man mit einem GPIO realisieren. Sobald der Raspberry aus ist...einfach die LEDs ausschalten...nur dann mit einem Pullup... Den Fehler warum das in der Werkstatt nicht funktionierte habe ich jetzt auch endlich gefunden. Meine Scripte starte ich über die rc.local. Hier ist aber von Max2Play eine Zeile drin, die auf das Netzwerk wartet...was ich in meiner Werkstatt aber nicht habe. Somit wurden meine Scripte ohne Netzwerk gar nicht erst gestartet...grmpf. Langsam kommt doch Licht ins Dunkle! Vielen Dank! Gruß Bismosa
> Muss ich den mit einem Pulldown (welche größe) gegen GND hängen?
Falls du diesen Pin nochmals zusätzlich mit dem Raspberry ansteuern
willst, brauchst du einen Widerstand (übwlicherweise 1-10k). Ansonsten
kannst du den Pin direkt auf GND hängen.
Datenblätter zu verstehen ist am Anfang schwierig :-) Nur den Mut nicht
verlieren ;-)
Hallo! Mick schrieb: > Nur den Mut nicht > verlieren ;-) Neeee...aufgeben gibt es bei mir nicht! Ich habe den Pin jetzt endlich auf GND gelegt. Nun funkttioniert alles wie gewünscht. Probleme habe ich keine mehr festgestellt. Vielen Dank nochmal an alle die hier so fleissig geholfen haben! Ich durfte wieder sehr viel lernen und die Probleme sind alle behoben! DANKE! Gruß Bismosa
Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.