Discussion:
[ethersex-devel] RFM12_ASK Modul für W0369DGP Codierchip
p***@t-online.de
2013-10-02 21:42:59 UTC
Permalink
Hallo Ethersex-Gemeinde!


Ich bin neu im Umfeld der AVR Microcontroller, aber Ìberaus begeistert von den Möglichkeiten nachdem ich Ethersex kennengelernt habe.


Hintergrund meiner Frage:


Ich habe ein Pollin AVR Net-IO als Bausatz. Mit diesem Ethersex bestÌcktem Bausatz + zusÀtzlich RFM12 Modul, habe ich vor sÀmtliche Funkaktoren (auf 433,92 MHz) in unserem Heim zu steuern.

Die Funksteckdosen mit dem HX2262 Codierchip liefen auf Anhieb mit Ethersex und dem RFM12_ASK_2272 Modul. Jetzt ist es so, dass ich noch mehrere weitere Leuchten habe, die ebenfalls Ìber Funk gesteuert werden können. Diese Leuchten arbeiten ebenfalls mit 433,92MHz jedoch haben diese nicht den 2262 Codierchip, sondern einen Codierchip mit der Bezeichnung W0369DGP. Im Internet habe ich das Datenblatt zu dem Chip gefunden und daraus geht hervor, dass dieser Chip genauso codiert und die selben DatenFrames schickt wie der 2262. Nutze ich allerdings das 2272 RFM12_ASK Modul lÀsst sich die Leuchte nicht schalten. Ein weiterer genauer Blick in das Datenblatt des Chips zeigt den einzigen Unterschied auf, es ist die Oszillator Frequenz des Codierchips. Der 2262 arbeitet mit 10kHz der W0369DGP arbeitet mit 15kHz.


Nun zu meiner Frage:

Das 2272 RFM12_ASK Modul in Ethersex hat vermutlich eine feste Zeitkostante fÃŒr eine gesendete “1” bzw. gesendete “0” (wie lange in µs) bzw. die Frequenz von 10kHz des 2262 Codierchips ist vermutlich fest im Code imlementiert. Kann ich diese Zeitkonstante irgendwie anpassen, damit diese 15kHz ZykluslÀnge des W0369DGP Codierchips entspricht?


Danke und Gruß,

Pewel
e***@users.sourceforge.net
2013-10-05 15:06:28 UTC
Permalink
Hallo Pawel,

> Diese Leuchten arbeiten ebenfalls mit 433,92MHz jedoch haben diese nicht
> den 2262 Codierchip, sondern einen Codierchip mit der Bezeichnung W0369DGP.
> Im Internet habe ich das Datenblatt zu dem Chip gefunden und daraus geht
> hervor, dass dieser Chip genauso codiert und die selben DatenFrames schickt
> wie der 2262.

Woher kann man das Datenblatt herunterladen? Link?

> Nutze ich allerdings das 2272 RFM12_ASK Modul lässt sich die Leuchte nicht
> schalten. Ein weiterer genauer Blick in das Datenblatt des Chips zeigt den
> einzigen Unterschied auf, es ist die Oszillator Frequenz des Codierchips.
> Der 2262 arbeitet mit 10kHz der W0369DGP arbeitet mit 15kHz.
> Das 2272 RFM12_ASK Modul in Ethersex hat vermutlich eine feste Zeitkostante
> für eine gesendete “1” bzw. gesendete “0” (wie lange in µs) bzw. die
> Frequenz von 10kHz des 2262 Codierchips ist vermutlich fest im Code
> imlementiert. Kann ich diese Zeitkonstante irgendwie anpassen, damit diese
> 15kHz Zykluslänge des W0369DGP Codierchips entspricht?


Schau Dir bitte die Datei
hardware/radio/rfm12/rfm12_ask.c
an. Das Array ask_2272_pulse_duty_factor ist für die Zeitkonstanten
und rfm12_ask_2272_1527_send fürs Senden zuständig. Auch gibt es
da ein ask_1527_pulse_duty_factor für 1527er Chips. Eventuell reicht
es ja, ein weiteres Array pulse_duty_factor für den W0369DGP hinzuzufügen
und das ECMD-Interface zu erweitern.

Leg Dir einen Fork an, mach die Änderungen in einem Branch und stell bitte
einen Pull-Request wenn es läuft.
p***@t-online.de
2013-10-07 18:00:42 UTC
Permalink
Hi Erik,

vielen Dank fÃŒr den Support!


Nach deinen ErlÀuterungen ist mir nun so einiges klarer geworden. Es hilft mir als Beginner jedenfalls den Code “etwas” besser zu verstehen. 😊


Das Datenblatt ist zwar chinesisch, jedoch steht der wichtige Teil in den Tabellen bzw. wird durch die Grafiken klar​.​ ​D​a​s​ ​B​i​s​c​h​e​n​ ​T​e​x​t​ ​Ì​b​e​r​s​e​t​z​t​ ​g​o​o​g​l​e​ ​d​a​n​n​ ​e​n​t​s​p​r​e​c​h​e​n​d​.​


Es scheint jedoch so, dass das Timing hier gar nicht mein Problem ist. Wenn ich davon ausgehe, dass das Array bei dem ask_2272_pulse_duty_factor das VerhÀltnis zwischen “on” und “off” wiederspiegelt, welches wir bei angenommenen 10kHz Oszillatorfrequenz des Decodierchips hÀtten, dass mÃŒsste ich, um das VerhÀltnis bei 15kHz nicht mit 1,5 multiplizieren, sondern mit 0,66 multiplizieren bzw. durch 1,5 dividieren. Das ergibt dann nÀherungsweise das Array, welches ich bei dem ask_1527_pulse_duty_factor habe. Dass es mit der Oszillatorfrequenz nicht so genau genommen wird, zeigt auch der Test an einer 2272 Funksteckdose mit dem rfm12 1527 command. Diese laasen sich auch damit schalten, obwohl dort ein anderer Duty factor hinterlegt ist. Auch der Gegentest funktioniert: Ich kann mit der Fernbedienung fÃŒr die Leuchte (mit W0369DGP chip mit 15kHz) die Funksteckdose (mit 2262 chip mit 10kHz) schalten, was wiederum der Beweis ist, dass beide Chips (W0369DGP und 2272) gleich kodieren.

Bloß aus irgendeinem Grund lÀsst sich die Leuchte nicht mit dem rfm12 schalten???


Danke und Gruß,

Pewel






Von: ***@users.sourceforge.net
Gesendet: ‎Montag‎, ‎7‎. ‎Oktober‎ ‎2013 ‎07‎:‎58
An: ***@t-online.de



Hallo Pewel,

> Das Datenblatt zu dem W0369DGP Codierchip habe ich angehÀngt.

oops, das ist ja in Mandarin.

> Ich wÃŒrde schon ein weiteres Array anlegen, fÃŒr den W0369DGP
> Chip, jedoch weiß ich nicht mit welchem Inhalt ich dieses
> fÃŒllen sollte.

rfm12_ask_2272_1527_send konvteriert zunÀchst die zu sendenden
Information bitweise mit Hilfe des ask_2272_pulse_duty_factor.

Bit == 0 => 7 on, 11 off
Bit == 1 => 13 on, 5 off

Siehe
http://old.ethersex.de/index.php/HowToRFM12_ASK#Codierung

Wie man sieht, enthÀlt ask_2272_pulse_duty_factor nicht
exakt die doppelten Werte wie in obigem Artikel beschrieben.
Die Werte wurden durch Probieren ermittelt, da die Laufzeiten
des Programms in der Berechnung zu berÃŒcksichtigen sind.

> Ich habe keine Ahnung in welchem Zusammenhang diese Zahlen
> mit der Oszillator Frequenz von 10kHz stehen und welche
> Zahlen man dort reinschreiben mÃŒsste um eine Oszillatorf-
> requenz von 15kHz fÃŒr den W0369DGP abzubilden.

ASK bedeutet, dass der TrÀger ein- und ausgeschaltet aber nicht
moduliert wird. Durch das VerhÀltnis von Ein und Aus werden die
Bits kodiert.

Ich wÃŒrde an Deiner Stelle im ersten Schritt den Code fÃŒr
den 2272 nutzen und nur das Array ask_2272_pulse_duty_factor
solange modifizieren, bis es funktioniert und erst dann den
Code separieren. Erster Anhaltspunkt: Werte * 1,5
p***@t-online.de
2013-10-11 17:54:00 UTC
Permalink
Hi,

nach viel rumprobieren hab ich’s geschafft. Das Problem war wie bereits gedacht nicht das Timing, sondern die Codierung des W0369DGP Chips. Da hÀtte ein Paar Chinesisch Kenntnisse wohl doch nicht geschadet beim Studieren des Datenblattes. 😊

Anders als bei dem 2272 Chip, wo alle 12 Codierbits den Zustand 00 (fÌr 0-Bit), 11 (fÌr 1-Bit) und 01 (fÌr float-Bit) haben können, sind bei dem W0369DGP Chip nur die ersten 8 Adress-Bits tristate. Alle anderen können nur den Zustand 00 oder 11 haben. Ansonsten ist die Codierung identisch. Damit im Hinterkopf kann man also die Deckenleuchten mit dem W0369DGP Chip auch mit dem 2272_ask Modul und dem richtigen Codewort schalten.


Vielen Dank fÃŒr die Antworten und das mitlesen.


Gruß,

Pewel







Von: ***@t-online.de
Gesendet: ‎Montag‎, ‎7‎. ‎Oktober‎ ‎2013 ‎20‎:‎00
An: ***@users.sourceforge.net
Cc: ethersex-***@list.zerties.org




Hi Erik,

vielen Dank fÃŒr den Support!




Nach deinen ErlÀuterungen ist mir nun so einiges klarer geworden. Es hilft mir als Beginner jedenfalls den Code “etwas” besser zu verstehen. 😊




Das Datenblatt ist zwar chinesisch, jedoch steht der wichtige Teil in den Tabellen bzw. wird durch die Grafiken klar​.​ ​D​a​s​ ​B​i​s​c​h​e​n​ ​T​e​x​t​ ​Ì​b​e​r​s​e​t​z​t​ ​g​o​o​g​l​e​ ​d​a​n​n​ ​e​n​t​s​p​r​e​c​h​e​n​d​.​




Es scheint jedoch so, dass das Timing hier gar nicht mein Problem ist. Wenn ich davon ausgehe, dass das Array bei dem ask_2272_pulse_duty_factor das VerhÀltnis zwischen “on” und “off” wiederspiegelt, welches wir bei angenommenen 10kHz Oszillatorfrequenz des Decodierchips hÀtten, dass mÃŒsste ich, um das VerhÀltnis bei 15kHz nicht mit 1,5 multiplizieren, sondern mit 0,66 multiplizieren bzw. durch 1,5 dividieren. Das ergibt dann nÀherungsweise das Array, welches ich bei dem ask_1527_pulse_duty_factor habe. Dass es mit der Oszillatorfrequenz nicht so genau genommen wird, zeigt auch der Test an einer 2272 Funksteckdose mit dem rfm12 1527 command. Diese laasen sich auch damit schalten, obwohl dort ein anderer Duty factor hinterlegt ist. Auch der Gegentest funktioniert: Ich kann mit der Fernbedienung fÃŒr die Leuchte (mit W0369DGP chip mit 15kHz) die Funksteckdose (mit 2262 chip mit 10kHz) schalten, was wiederum der Beweis ist, dass beide Chips (W0369DGP und 2272) gleich kodieren.

Bloß aus irgendeinem Grund lÀsst sich die Leuchte nicht mit dem rfm12 schalten???




Danke und Gruß,

Pewel







Von: ***@users.sourceforge.net
Gesendet: ‎Montag‎, ‎7‎. ‎Oktober‎ ‎2013 ‎07‎:‎58
An: ***@t-online.de



Hallo Pewel,

> Das Datenblatt zu dem W0369DGP Codierchip habe ich angehÀngt.

oops, das ist ja in Mandarin.

> Ich wÃŒrde schon ein weiteres Array anlegen, fÃŒr den W0369DGP
> Chip, jedoch weiß ich nicht mit welchem Inhalt ich dieses
> fÃŒllen sollte.

rfm12_ask_2272_1527_send konvteriert zunÀchst die zu sendenden
Information bitweise mit Hilfe des ask_2272_pulse_duty_factor.

Bit == 0 => 7 on, 11 off
Bit == 1 => 13 on, 5 off

Siehe
http://old.ethersex.de/index.php/HowToRFM12_ASK#Codierung

Wie man sieht, enthÀlt ask_2272_pulse_duty_factor nicht
exakt die doppelten Werte wie in obigem Artikel beschrieben.
Die Werte wurden durch Probieren ermittelt, da die Laufzeiten
des Programms in der Berechnung zu berÃŒcksichtigen sind.

> Ich habe keine Ahnung in welchem Zusammenhang diese Zahlen
> mit der Oszillator Frequenz von 10kHz stehen und welche
> Zahlen man dort reinschreiben mÃŒsste um eine Oszillatorf-
> requenz von 15kHz fÃŒr den W0369DGP abzubilden.

ASK bedeutet, dass der TrÀger ein- und ausgeschaltet aber nicht
moduliert wird. Durch das VerhÀltnis von Ein und Aus werden die
Bits kodiert.

Ich wÃŒrde an Deiner Stelle im ersten Schritt den Code fÃŒr
den 2272 nutzen und nur das Array ask_2272_pulse_duty_factor
solange modifizieren, bis es funktioniert und erst dann den
Code separieren. Erster Anhaltspunkt: Werte * 1,5
Loading...