Rolladen Steuerung mittels MCP23017 und Taster

Begonnen von IPPhoner2b, 09 November 2014, 15:27:10

Vorheriges Thema - Nächstes Thema

klausw

Du kannst die mit 5V versorgen.
Den Rest deines Posts lese ich morgen...komme von der Weihnachtsfeier und kann jetzt nix konstruktives mehr beitragen 8)
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

IPPhoner2b

Na dann nüchter  dich mal in Ruhe aus *g*

Gut, wenn die 5v funktionieren, werde ich das darauf geben. Dann laufen wirklich nur die MCPS über 3,3V.
Allerdings hatte ich gestern genauso oft "mcp Ok...."  in dem eventmonitor stehen, wie ich mit der alten Config hatte.

slonnet

Zitat von: klausw am 17 Dezember 2014, 01:07:46
Du kannst die mit 5V versorgen.
Den Rest deines Posts lese ich morgen...komme von der Weihnachtsfeier und kann jetzt nix konstruktives mehr beitragen 8)

Wenn du die Taster an den GPIOs meinst, dann NEIN!!!

Es dürfen nur 3,3V an die GPIO Pins angelegt werden!!!

klausw

Zitat von: slonnet am 17 Dezember 2014, 09:32:03
Wenn du die Taster an den GPIOs meinst, dann NEIN!!!

Es dürfen nur 3,3V an die GPIO Pins angelegt werden!!!
Das war auf die MCP bezogen.
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

klausw

Zitat von: IPPhoner2b am 16 Dezember 2014, 18:33:19
Also bzgl Stromversorgung, über den Pi werden die 3,3V für die zwei MCPs von Pin 1 bezogen. (Ne andere Quelle hätte ich jetzt so nicht dafür)
Alles andere läuft über ein extra eingespeistes 5 bzw. 12V Netzteil. War erst auf 12V, aber werde wohl auf 5V Wechseln, da hängen aber wohlgemerkt nur 2 ULN2803 und 16 LEDs dran, und da gehe ich von aus, dass ein 2A Netzteil das schaffen sollte. Wenn die Ausgänge aktiv sind, leuchten diese auch hell und konstant, also sie flackern nicht (war mit der Lichtorgel etwas falsch beschrieben).

Was eben auffällt, wenn ich als Beispiel am MCP 20 3 oder 4 Ausgänge setze, glimmen ein paar andere LEDs an diesem MCP, und an allen anderen MCPs, die "DEFINIERT" sind. Bei in der Software nicht definierten MCPs, glimmen auch keine LEDs ::) :o
Du sprichst also von glimmen, nicht flackern?
Ein nicht definierter MCP hat alle Ports auf Input gestellt. Glimmen bei den Definierten nur die Outputs?
Was mir in Deinem Schaltplan auffällt ist, das du die Masse von den 3,3V und den 5V nicht verbunden hast.
Das kann natürlich zu einem Masseversatz führen und dadurch den Ausgang vom ULN2803 leicht ansteuern.
Anders kann ich mir das glimmen nicht erklären, der MCP kann nur High oder Low ausgeben.
Das es beim Schalten eines Ausgangs kurz flackert kann natürlich sein. Eine Änderung im Stromverbrauch, hat auch Einfluss auf den Masseversatz.

Wie gesagt, du kannst die MCP's über 5V versorgen. Der I2C Bus läuft als Open Drain, was bedeutet, das der MCP die Busleitung nur aktiv auf Masse ziehen kann. Die positive Spannung wird über die Pullups auf dem Rasperry bestimmt (die gehen auf 3,3V). Du kannst also Problemlos mit 5V versorgte IC's und 3,3V Typen am I2C Bus betreiben.

Nebenbei bemerkt, hat der ULN interne Freilaufdioden, die externen kannst du dir vermutlich sparen.

Zitat von: IPPhoner2b am 16 Dezember 2014, 18:33:19

wie logge ich denn das Notify am einfachsten mit? Dann habt ihr auch gleich die gewünschten Daten  ::) 8)
Log3 $hash, 1, "$NAME $EVENT";
Du kannst auch andere von Dir genutzte Variablen mitloggen, oder einfach sowas wie "bin in an Stelle X". Schau mal, was du benötigst um nachzuvollziehen ob alles in der richtigen Reihenfolge und Anzahl kommt.
Die Daten sollen aber für dich sein, da ich hoffe, das der Fehler nicht in meinem Modul liegt ;)
Zitat von: IPPhoner2b am 16 Dezember 2014, 18:33:19

Das debounce habe ich drin, weil ich ja 4 mechanische Taster dran habe, und mir dort evtl ein flackern eben das Notify doppelt auslöst oder so.
Macht Sinn
Zitat von: IPPhoner2b am 16 Dezember 2014, 18:33:19
Also ich habe je Rollo 2 Eingänge (hochfahren und runterfahren) und 2 Ausgänge, hier jeweils einmal (F)ahren und (W)echseln, damit eben ein Ausgang für die Fahrbewegung ist, und der andere Ausgang schaltet ein Relais, womit dann die Richtung gewechselt wird, also für hoch bzw runter.
Auch sinnvoll, dann gehen die Motoren wenigstens nicht kaputt da "auf" und "ab" nicht im Fehlerfall beide Spannung bekommen.

Zitat von: IPPhoner2b am 16 Dezember 2014, 18:33:19

Was mir noch auffällt, das habe ich gestern auch ein paar mal beobachten können, ist, wenn man ALLE Ausgänge schaltet, egal ob übers WEB IF oder sonstwie, gehen alle LEDs aus, macht man einen Ausgang wieder aus, gehen alle bis auf diese wieder an.
Das klingt auch nach Masseversatz.
Zitat von: IPPhoner2b am 16 Dezember 2014, 18:33:19

Und Spassiger Weise habe ich jetzt das problem, dass er aus on-for-timer ein an-for-timer macht (eventMap), und keine LEDs mehr angehen, wenn ich diese über das Notify ansteuer.

Da ich jetzt alles, was mit den EventMaps zu tun hatte gelöscht hat, was mich eigentlich schon sehr extremst nervt, weil ich meinen Eltern jetzt erklären darf, dass ON OFF ist, und OFF ON, funktioniert das jetzt zwar soweit,
Hast du das letzte Update drauf? Das Problem sollte eigentlich behoben sein.
Am besten du baust Icons ins WebIf und nutzt eventmap nicht.
Zitat von: IPPhoner2b am 16 Dezember 2014, 18:33:19

allerdings habe ich eine Frage bzgl meiner angeschlossenen Taster, die ich ja jetzt direkt auf die GPIOs des Pis gebe. Mit welcher Spannung kann ich die Schalter beaufschlagen? Weil vorher am MCP wurden die Schalter auf Masse gelegt, und jetzt gehts andersrum, habe erstmal nur die 3,3V drauf, kann ich da denn mit 5V ausm Netzteil dran gehen, oder grillt es mir dann meine Inputs? Und die "Pud_Resistor" Funktion vom RPI_GPIO der funktioniert nicht mehr, oder? Weil ich da immer nur die Fehlermeldung bekomm, dass er ein Verzeichnis nicht finden kann.
nur 3,3V!!! Steht in der commandref aber auch drin
Ebenso steht drin, das für Pud_Resistor das gpio utility installiert sein muss.
Zitat von: IPPhoner2b am 16 Dezember 2014, 18:33:19
Mit dem Eventmap umändern, was ich hier gefunden habe, das klappt leider auch nicht so
http://forum.fhem.de/index.php/topic,28855.msg219460.html#msg219460
attr aklif eventMap /on:aus/off:an/on-for-timer:on-for-timer/off-for-timer:off-for-timer

aklif ist ein readings proxy?
du könntest die invertierung auch über das attribut setfn machen.
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

IPPhoner2b

Hach, ihr seid Gold wert, also der Tipp mit der Masse, die beiden Seiten zu verbinden, darauf bin ich beim besten Willen nicht gekommen, und was ist, zack sind die anderen LEDs auch brav aus, und es brennen auch alle Leds, wenn alle Ausgänge aktiviert werden.  ;D ::)

Wegen dem "pud_resistor", ich habe die WiringPi Datenbank genauso installiert, wie es in der Command Ref steht, das war mir bewusst, dass es installiert sein muss, leider klappt es nicht. Aber den Eingang scheint er ja dennoch korrekt zu erfassen, benötige ich den Pullup dann eigenltich?

Wie Gxxl ist das denn, mit dem SetFN hast du es so schön angesprochen, und da ich es nur nicht verstehe, hatte ich es damals so übernommen,(siehe ganz unten das define) und wenn ich das jetzt einfach umänder, dann stehen wenigstens schonmal die richtigen Bezeichnungen drin.
alte Version:
attr aklif setFn {($CMD eq "on")?"PortA0 off":"PortA0 on"}

neue Version:
attr aklif setFn {($CMD eq "on")?"PortA0 on":"PortA0 off"}


Hier noch das Define des "AKLIF"
###############################################################################
##  MCP-Chip 20
##  (A)usgang (K)üchenrollo (li)nks (F)ahren         ###(A K LI F)###  PORT A0
##
###############################################################################
define aklif readingsProxy mcp_20:PortA0
attr aklif alias 20 A0 Rollo Küche links Fahren
#attr aklif devStateIcon aus:off an:on
#attr aklif eventMap /on:aus/off:an/on-for-timer:on-for-timer/off-for-timer:off-for-timer
attr aklif group OutputPorts
attr aklif setFn {($CMD eq "on")?"PortA0 off":"PortA0 on"}
attr aklif setList off on
attr aklif valueFn {($VALUE eq "on")?"off":"on"}
#attr aklif eventMap on:aus off:an

klausw

Zitat von: IPPhoner2b am 17 Dezember 2014, 12:32:11
Wegen dem "pud_resistor", ich habe die WiringPi Datenbank genauso installiert, wie es in der Command Ref steht, das war mir bewusst, dass es installiert sein muss, leider klappt es nicht. Aber den Eingang scheint er ja dennoch korrekt zu erfassen, benötige ich den Pullup dann eigenltich?
Poste bitte die Fehlermeldung.

Den Pullup benötigst du nicht. Du kannst auch extern einen Widerstand ranhängen (z.B. 10k gegen 3,3V und dann den Taster gegen Masse anschließen ... ist zwar wieder invertierte Logik, aber was solls).
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

IPPhoner2b

Hi Klaus,
also habe jetzt mal die ganzen Strippen wieder von den GPIOs an den MCP gehängt, wieder die Config zurückgespielt, und die Lichtorgel geht sofort wieder los, dass die Teile unterschiedlich fahren. Mit dem Logfile komme ich nicht klar, schaffe es nichtmal richtig zu definieren, er schreibt mir da noch nix rein.

Jedenfalls wenn ich die einzelnen GPIOs am RPI benutze läuft alles wie es soll, die einzelnen Ausgänge werden schön brav nacheinander geschaltet.
Irgendwie verschluckt sich das Register dabei, weil auslesen scheint richtig zu funktionieren, im WebIF, und im Eventmonitor werden mir die Eingänge richtig dargestellt.

Wenn ich beispielsweise die 4 Schalter die ich habe in einem zeitlichen Abstand von ca. 0,5sek für die "Runterfahr" Bewegung betätige,
Fängt der erste Ausgang richtig an, wird dann aber durch den 2 Eingang unterbrochen, und wechselt danach den Ausgang usw. Ich habe einfach mal 2 kurze wenn auch unscharfe Videos gemacht.

Erstes Video, wo der zeitliche Abstand >1sek ist, und damit alles super läuft
Zweites Video, zeitlicher Abstand <1sek gleiche Reihenfolge der Schalter

IPPhoner2b

Habs übersehen, die Fehlermeldung für den internen Pullup lautet:
sklih: file /usr/local/bin/gpio doesnt exist

klausw

Zitat von: IPPhoner2b am 17 Dezember 2014, 16:05:55
Habs übersehen, die Fehlermeldung für den internen Pullup lautet:
sklih: file /usr/local/bin/gpio doesnt exist
das heisst aber, das gpio utility von wiringpi ist nicht installiert

Also entweder du hast es doch nicht installiert, oder es ist in einem anderen Ordner.
Versuche es bitte zu finden.
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

IPPhoner2b

Wie soll ich dass denn finden *g* GUT ::) ;D

Habe die Textzeilen aus der CommandRef einfach kopiert und eingefügt.

Muss ich denn dafür in einem speziellen Verzeichnis sein? Da das da nicht bestand, war mir das nicht bewusst

klausw

Zitat von: IPPhoner2b am 17 Dezember 2014, 17:05:30
Wie soll ich dass denn finden *g* GUT ::) ;D
find -name gpio

das gpio utility von wiringpi wurde bisher immer unter /usr/local/bin/gpio installiert
vielleicht hat sich da was geändert
gab es bei der installation eine fehlermeldung?
den pad könntest du anpassen, aber dazu musst du natürlich wissen, wo diese datei ist
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

IPPhoner2b

So, habe den Fehler gefunden, also es war nur runtergeladen, und dadurch das in der Command Ref
cd wiringPi ./build
stand, wurde die Datei nicht wirklich compiliert, habe das jetzt nochmal angestoßen.

Mache grade einen Neustart, und dann werde ich es nochmal versuchen

...

Asche auf mein Haupt, oder besser nicht, die grauen Haare kommen so langsam von ganz alleine *g* Oder von FHEM  ::) 8) :o

Pud_Resistor funktioniert jetzt *VIELEN DANK*

Kannst du dir denn was mit den Videos erklären, wie das zustande kommen kann? Irgendwie verschluckt sich das Teil ja. Aber ganz so schlimm ist es eigentlich auch nicht mehr, habe nach dem jetzigen Stand 17 GPIOs frei, und es dürften eigentlich max nur 16 werden. Also würde mir das ausreichen. Aber Schade ist es trotzdem.

klausw

Zitat von: IPPhoner2b am 17 Dezember 2014, 17:23:52
So, habe den Fehler gefunden, also es war nur runtergeladen, und dadurch das in der Command Ref
cd wiringPi ./build
stand, wurde die Datei nicht wirklich compiliert, habe das jetzt nochmal angestoßen.

Mache grade einen Neustart, und dann werde ich es nochmal versuchen
ich stehe gerade auf dem Schlauch. Was ist daran falsch? habe ich nen pfad vergessen?

Zitat von: IPPhoner2b am 17 Dezember 2014, 17:23:52
Kannst du dir denn was mit den Videos erklären, wie das zustande kommen kann? Irgendwie verschluckt sich das Teil ja. Aber ganz so schlimm ist es eigentlich auch nicht mehr, habe nach dem jetzigen Stand 17 GPIOs frei, und es dürften eigentlich max nur 16 werden. Also würde mir das ausreichen. Aber Schade ist es trotzdem.
leider nein, sehr seltsam
Ich wüsste gern, was sich da verhaspelt.
Ich habe den Wust an timern in Verdacht. Bin aber nicht sicher.
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

IPPhoner2b

#74
Das mit den Timern kann gut hinkommen, sind ja JE ROLLO 4 Stück, habe diese aber alle anders benannt, dass es wenigstens von der Seite aus keine Probleme geben sollte.
Was mich halt nur verwundert, wenn ich diese knappe sekunden abwarte, dass sozusagen die 2. Led des jeweiligen Rollos angeht (also die Fahrbewegung) dann läuft alles glatt, also müsste er ja beim Timer Kontrollieren/Löschen durcheinander kommen.

ABER:
Wenn ich das ganze über die GPIO PIns ansteuer, kann ich schalten wie ein Irrer, und die Teile laufen in aller Seelenruhe, wie es gewollt ist.

:EDIT:
Nach was anderes, ihr sagt ja, dass ich den 3,3V Ausgang nur mit 50mA belasten darf. Kann ich denn meine Schalter mit 5V beaufschlagen, und am Ende in die Leitung einfach einen Widerstand schalten? So ein 1k Widerstand sollte doch eigentlich auch funktionieren, oder?

Dann kann ich meine Schalter nämlich direkt über das 5V Netzteil speisen. Da ich nur grade nicht weiß, was für ein Strom dafür über den Schalter fließen würde, sind die 1k Ohm auch mehr geraten als alles andere, aber so sollte jedenfalls nichts durchbrennen.