
|
INFO - FAQ - CC2-Forum - CCPro-Forum |
|
||
|
Hallo Jens! Ja, ich würde mich sehr über deine Lüfterschaltung freuen. Ich habe nähmlich praktisch null Erfahrung mit PWM Signalen. Naja ich denke einen 2.Bus zu machen wird mir zu kompliziert für den anfang. Nur folgende dinge habe ich nicht verstanden: >i2c_write(17) ' PSC0 Subadresse + auto-increment Ist "17" Quasi die Identifikationsadresse des PCA9531? >i2c_write(14) ' Register setzen - PSC0 = LED0 / PSC1 = LED1 "14" Ist mir ein Rätsel... :-) Werden hier die PWM Register erst geladen? Grundsätzlich ACK = 255 bedeutet ok, und mehr oder weniger einen Fehler? Ist das Grundsätzlich bei allen I²C devices so, oder nur bei, PCA9531? So, das waren genug Fragen... Ich danke für die schnelle Antwort!! Liebe Grüße Peter > Hallo Peter! > > > Der müsste eigentlich ähnlich den 9531 sein oder? > > Jo, der ist so ähnlich und wird mehr oder weniger auch genau so angesteuert. Allerdings hat der PCA9531 auch nur an zwei PWM Register und kann daher auch nur zwei PWM Ausgänge ansteuern. Die anderen sechs Ausgänge kannst Du entwerder auf die PWM Register legen oder eben nur EIN und AUS schalten. Dass ist in meinen Augen reine Verschwendung, daher auch der PCA9530. > > > Weil der 9530 ja nur einen Adresspin hat. Also kann man nur 2 im Bus haben. > > Jo, Du kannst nur zwei Bausteine an einem Bus betreiben. Aber es hindert Dich keiner daran einen "Neuen" I2C-Bus auf zu bauen. Ansonsten bleibt ja noch der PCA9531. > > > Macht der eine schöne Analogspannung oder PWM? > > Die beiden Bausteine machen nur PWM. Wenn Du möchtest kannst Du aber auch noch den dazugehörigen Schaltplan von meiner Lüftersteuerung haben (dass jetzige Projekt mit PCA9530), da kommt zum Schluss eine "schöne Analogspannung" heraus. > > Im angehängten Demo werden beide Register vom PCA9530 mit der maximalen PWM Frequenz betrieben, dass heißt die PWM Frequenz liegt bei 160Hz. An der RS232 wird ein Terminalprogramm benötigt, damit lassen sich dann neue PWM Werte einstellen. Viel Spaß beim testen... > > LG Jens > > ' --------------------------------------------------------------------------- > ' --- PCA9530 Demo - für OCBASIC -------------------------------------------- > ' --------------------------------------------------------------------------- > > ' Hardware: > ' Serielle Schnittstelle an Port[1] (mit Terminal Programm) > ' I2C-Bus SCL an Port[5] (fals nicht anders festgelegt) > ' I2C_Bus SDA an Port[6] (fals nicht anders festgelegt) > > ' --- Betriebssystem konfigurieren ------------------------------------------ > include "om.def" ' Betriebssystem Daten der Open-Micro laden > 'include "omid.def" ' Betriebssystem Daten der Open-Midi laden > > ' --- definition der Variablen ---------------------------------------------- > define adresse byte ' I2C-Bus Adresse > define ACK byte ' I2C-Bus "ACK" vom Slave > define PWM1 byte ' PWM 1 an LED 0 > define PWM2 byte ' PWM 2 an LED 1 > > ' --- Voreinstellung und Initialisierung ------------------------------------ > End2Host=ON ' Bei Programmende in den HOST-Modus wechseln > i2c_init ' Initialisirung I2C-Bus > ' --------------------------------------------------------------------------- > > > ' --------------------------------------------------------------------------- > ' --- Hauptprogramm --------------------------------------------------------- > ' --------------------------------------------------------------------------- > adresse = 192 ' Adresse PCA9530 (A0 = Low) > PWM1 = 128 ' PWM 1 - Wert einstellen > PWM2 = 128 ' PWM 2 - Wert einstellen > print ' Leerzeile > print "Programmstart..." ' Text Ausgabe > > #anfang > > i2c_start ' I2C-Bus starten > ACK = i2c_write(adresse) ' Adresse senden, ACK empfangen > if ACK <> 255 then ' Wenn "ACK" vom Slave nicht empfangen, dann Fehlerausgabe > print ' Leerzeile > print "PCA9530 antwortet nicht - Fehler - Prg. Ende..." ' Text Ausgabe > end ' Programmabbruch > end if > i2c_write(17) ' PSC0 Subadresse + auto-increment > i2c_write(0) ' PSC0 maximum Frequenz (160Hz) > i2c_write(PWM1) ' PSC0 PWM 1 Rate übergeben > i2c_write(0) ' PSC1 maximum Frequenz (160Hz) > i2c_write(PWM2) ' PSC1 PWM 2 Rate übergeben > i2c_write(14) ' Register setzen - PSC0 = LED0 / PSC1 = LED1 > i2c_stop ' I2C-Bus stoppen > > print ' Leerzeile > print "PWM1 Daten = "; PWM1 ' Text Ausbabe > print "neue Eingabe: "; ' Text Ausgabe > input PWM1 ' Neue Eingabe PWM1 > print "PWM2 Daten = "; PWM2 ' Text Ausbabe > print "neue Eingabe: "; ' Text Ausgabe > input PWM2 ' Neue Eingabe PWM2 > > goto anfang ' zurück zum Programmanfang > end ' Programmende > ' --------------------------------------------------------------------------- > > > ' --------------------------------------------------------------------------- > ' Die I2C-Routinen einbinden > ' --------------------------------------------------------------------------- > > INCLUDE "om_i2c.pro" > > ' --------------------------------------------------------------------------- > ' Die Firmware-Routinen einbinden > ' --------------------------------------------------------------------------- > > INCLUDE "om_fw.pro" Meine Homepage: http://www.lanzenberg.at |
| Antwort schreiben |