PWM Signal über Raspberry Pi ausgeben

Begonnen von klopo36, 01 Dezember 2016, 17:59:53

Vorheriges Thema - Nächstes Thema

klopo36

Guten Abend miteinander,
Ich bin ganz neu in der FHEM Welt und stoße bereits auf der erste Problem.
Mein Ziel ist es ein PWM Signal (Pulsweitenmodulation) über den GPIO des Raspberry Pi auszugeben.
Gesteuert werden soll das Signal über den Wert, der in den Dummy über den Schieberegler des Tablet UI geschrieben wird.
Das mit dem Schieberegler hat alles wunderbar geklappt und der Dummy übernimmt die Werte.

Jetzt weiß ich nur nicht, wie man diesen Wert des Dummys dazu benutzt das PWM Signal zu steuern.
Ich hab nur gefunden wie man es mit dem Arduino machen könnte
http://fhem.de/commandref.html#FRM_PWM
Ich kann leider weder hier im Forum noch bei Google etwas darüber finden.

Das ganze soll gemacht werden um einen Dimmerschalter von Eltako anzusteuern
http://www.eltako.com/fileadmin/downloads/de/_bedienung/LUD12_21100805-3_dtsch.pdf

Ich wäre wirklich für jede Hilfe dankbar.
Schönen Abend
klopo



klausw

hmm, du könntest über den Dummy ein notify auslösen, welches dann über einen Linux Systembefehl wiringpi anspricht.


gpio pwm <pin> <value>

Set the pin to a PWM value (0-1023 is supported)


Wiringpi ist beim aktuellen Standard Raspbian dabei.

Das ist allerdings eine Software PWM. Die ist ne nach Systemlast nur bedingt stabil. Ich würde testen, ob die Lampen flackern, bevor ich Energie in die Programmierung stecke.

Alternativ gibt es I2C PWM Bausteine, die von FHEM angesprochen werden können... siehe commandref
RasPi B v2 mit FHEM 18B20 über 1Wire, LED PWM Treiber über I2C, Luchtdruck-, Feuchtesensor und ein paar Schalter/LED\'s zum testen
Module: RPI_GPIO, RPII2C, I2C_EEPROM, I2C_MCP23008, I2C_MCP23017, I2C_MCP342x, I2C_PCA9532, I2C_PCF8574, I2C_SHT21, I2C_BME280

klopo36

#2
Genau, das mit dem WiringPi war meine erste Anlaufstelle.
Nur leider ist das Problem mit den SoftPWM's, dass sie nur in C angesprochen werden können, wenn ich mich jetzt nicht verguckt habe.
Da bin ich im Moment bei das zu realisieren und zu testen.
Wie du schon sagst, verlangen die SoftPWM's ein wenig an CPU Leistung. Laut dem Programmierer von WiringPi sind es ca 0,5% pro PWM Signal.
Aber das es IC's gibt für PWM und die auch noch mit FHEM kompatibel sind wusste ich garnicht, danke schon mal dafür :)
Dies wäre natürlich die schickere Lösung.
Leider finde ich nichts in der commandref darüber.
Hast du da nen kleinen Anhaltspunkt ?

EDIT: OK habs in der Commandref gefunden ( I2C_PCA9532 / I2C_PCA9685 )
          Dann werde ich es über diesen Weg mal probieren. Danke :)

klausw

Zitat von: klopo36 am 02 Dezember 2016, 12:06:35
Genau, das mit dem WiringPi war meine erste Anlaufstelle.
Nur leider ist das Problem mit den SoftPWM's, dass sie nur in C angesprochen werden können, wenn ich mich jetzt nicht verguckt habe.
du kannst Programme mit dem Befehl system unter Perl ausführen

my $pin = 18;
my $value = 1024;
$inh = system "gpio pwm $pin $value";

$inh ist glaube ich die stdout Ausgabe

Zitat von: klopo36 am 02 Dezember 2016, 12:06:35
EDIT: OK habs in der Commandref gefunden ( I2C_PCA9532 / I2C_PCA9685 )
          Dann werde ich es über diesen Weg mal probieren. Danke :)
genau... ich hatte die Bezeichnungen nicht im Kopf
RasPi B v2 mit FHEM 18B20 über 1Wire, LED PWM Treiber über I2C, Luchtdruck-, Feuchtesensor und ein paar Schalter/LED\'s zum testen
Module: RPI_GPIO, RPII2C, I2C_EEPROM, I2C_MCP23008, I2C_MCP23017, I2C_MCP342x, I2C_PCA9532, I2C_PCF8574, I2C_SHT21, I2C_BME280

klopo36

So das Modul PCA 9685 ist angeschlossen und wird auch erkannt.
Nur leider passiert nichts, wenn ich am Regler den Wert verändere.
Er setzt den Port auf den gewünschten Wert, nur leider ändert sich nichts am Ausgang.
Probeweise hängen drei LED's an den Ausgängen.
Hier im Forum habe ich gelesen, dass der OE Port noch angeschlossen werden muss.
Ich habe ihn mal auf Masse gezogen,was aber nichts gebracht hat.
Habe leider keine Widerstände da, um ihn mal auf Plus legen zu können.

Hier mal ein Screenshot:
http://www.fotos-hochladen.net/view/unbenannt8w23rza9n6.jpg

Vielleicht hat ja Jemand ne Lösung :)

klopo36

Was man dazu noch sagen sollte ist, dass mir FHEM, jedes mal, wenn ich SET drücke eine 1 auf dem Start Bildschirm anzeigt.
Leider finde ich nichts darüber, was das zu bedeuten hat.

Frosch

Hallo klopo,

ich beschäftige mich auch mit der PWM steuereung von Geräten über FHEM. Dazu habe ich auch einen Thread eröffnet.
https://forum.fhem.de/index.php/topic,61039.0.html
Da geht es zwar um einen Lüfter, aber mein Problem ist das gleiche wie deins. Wie steuere ich Geräte per PWM und binde das ganze dann in FHEM ein?
Da das RPI einen Hardwareseitigen PWM Pin hat würde ich sagen sollte man diesen auch nutzen. Vor allem um die Hardware zu entlasten.
Du kannst dich ja in meinem Thread erstmal auf unseren aktuellen Stand bringen.
igami hat es über Software-pwm schon geschafft eine led zu dimmen.

Gruß Mathias

klopo36

Mit einem Hardware PWM komme ich leider nicht aus. Deswegen komme ich nicht drum rum den PCA9685 erfolgreich einzubinden.
Aber danke für die Info.
Nochmal zu meinem Problem....Habe grade mal in die Logfile geschaut, dort wird angezeigt:

Can't open /dev/ttyAMA0: Permission denied

Habe grad schon mehrere Lösungsvorschläge, die mir Google ausgespuckt hat probiert, nur leider ohne Erfolg.
Ich bleibe am Ball  und halte euch auf dem Laufenden ;D

klausw

Zitat von: klopo36 am 06 Dezember 2016, 18:26:27
Can't open /dev/ttyAMA0: Permission denied
Das ist die serielle Schnittstelle vom Pi. Die hat nix mit I2C zu tun.
Auf deinem Bild (poste das nächste mal bitte ein "list PWM" ;) ) scheint alles zu funktionieren.
Evtl sind die LEDs falsch angeschlossen.
Die Ports sind, wenn ich mich recht entsinne standardmäßig auf open-drain eingestellt.
Dazu müssten die LEDs zwischen 3,3V und dem jeweiligen Port angeschlossen sein.
Über Attribute kannst du dieses Verhalten einstellen (modereg2 oder so... schau mal in die commandref). Unter anderem sollte auch push-pull möglich sein.
RasPi B v2 mit FHEM 18B20 über 1Wire, LED PWM Treiber über I2C, Luchtdruck-, Feuchtesensor und ein paar Schalter/LED\'s zum testen
Module: RPI_GPIO, RPII2C, I2C_EEPROM, I2C_MCP23008, I2C_MCP23017, I2C_MCP342x, I2C_PCA9532, I2C_PCF8574, I2C_SHT21, I2C_BME280

klopo36

klaus...danke für deine Antwort.
Siehe da es funktioniert. Man muss nur die Diode mit V+ anstatt mit GND verbinden und Anode und Kathode dementsprechend tauschen und schon geht es.
Später habe ich noch bemerkt das man auch mit modereg2 : OUTDRV die Funktion umkehren kann. So das es mit die Kathode wieder mit GND verbinden kann und die Anode mit PWM.
Also quasi alles das worauf du mich aufmerksam gemacht hast.
Danke dafür!
Schönen Abend noch