hardware:channels:meters:power:kd_302
Unterschiede
Hier werden die Unterschiede zwischen zwei Versionen angezeigt.
| Beide Seiten der vorigen RevisionVorhergehende ÜberarbeitungNächste Überarbeitung | Vorhergehende Überarbeitung | ||
| hardware:channels:meters:power:kd_302 [2011/09/12 03:35] – [controller: EM78P468N (LCD Type)] stv0g | hardware:channels:meters:power:kd_302 [2018/03/25 11:06] (aktuell) – alte Version wiederhergestellt (2014/02/26 20:23) jau | ||
|---|---|---|---|
| Zeile 1: | Zeile 1: | ||
| ====== Energiekostenmessgerät KD 302 ====== | ====== Energiekostenmessgerät KD 302 ====== | ||
| + | |||
| + | <note info> | ||
| + | das KD302 ist inzwischen nichtmehr lieferbar. der grundaufbau ist jedoch bei vielen aehnlichen geraeten der gleiche, die auch auf chips von cirrus logic basieren. | ||
| + | </ | ||
| ===== Features ===== | ===== Features ===== | ||
| - | * preisgünstig (z.B. bei [[http:// | + | * preisgünstig (z.B. bei [[http:// |
| * hohe Messgenauigkeit | * hohe Messgenauigkeit | ||
| * Reverse-Engineering freundlich | * Reverse-Engineering freundlich | ||
| - | * bekannt aus dem Test in [[http:// | + | * bekannt aus dem Test in [[http:// |
| - | * [[http:// | + | |
| ===== Motivation ===== | ===== Motivation ===== | ||
| Zeile 15: | Zeile 18: | ||
| Bei einem Eigenbau solch eines Gerätes währe idr. schon alleine das Gehäse (oder ein Mess-IC, so man eins verwendet) teurer, als das ganze KD302! | Bei einem Eigenbau solch eines Gerätes währe idr. schon alleine das Gehäse (oder ein Mess-IC, so man eins verwendet) teurer, als das ganze KD302! | ||
| - | Der verwendete CS5460A beinhaltet A/D Konverter für Strom/ | + | Der verwendete CS5460A beinhaltet A/D Konverter für Strom/ |
| - | diese Daten lassen sich auslesen, so dass man die Strom/ | + | |
| + | Diese Daten lassen sich auslesen, so dass man die Strom/ | ||
| ===== Umbau ===== | ===== Umbau ===== | ||
| Zeile 75: | Zeile 79: | ||
| * inkl. Schutz gegen Auslesen des Programmcodes (wer Lust hat kann ausprobieren ob er benutzt wird ;)) | * inkl. Schutz gegen Auslesen des Programmcodes (wer Lust hat kann ausprobieren ob er benutzt wird ;)) | ||
| - | ==== EEPROM: 24c02 ==== | + | ==== EEPROM ==== |
| {{: | {{: | ||
| {{: | {{: | ||
| - | * Standard I< | + | * 24c02: |
| * [[http:// | * [[http:// | ||
| * hier dürften die Kalibrationsdaten für den CS5460A abgelegt sein | * hier dürften die Kalibrationsdaten für den CS5460A abgelegt sein | ||
| Zeile 170: | Zeile 174: | ||
| </ | </ | ||
| - | ==== "CS5460A : Single-Phase, | + | ==== Messcontroller ==== |
| - | * http:// | + | * CS5460A : Single-Phase, |
| - | * http:// | + | * Datenblatt: |
| - | * anbindung ueber < | + | * Anbindung über serielles |
| - | * kalibrierung per software | + | * kalibrierung per Software |
| - | {{: | + | {{: |
| - | {{: | + | {{: |
| - | === messungen | + | === Messungen |
| - | <note warning>bei messungen | + | <note warning>Bei Messungen |
| - | < | + | < |
| - | messungen | + | |
| - | soweit: | + | Im Betrieb ca. einmal pro Sekunde ein Signal auf INT, und (daraufhin? |
| - | im betrieb ca einmal pro sekunde ein signal | + | {{: |
| - | (vermutlich signalisiert der CS5460A die verfuegbarkeit neuer daten, die der controller dann abholt.) | + | {{: |
| + | {{: | ||
| - | |{{:kd302_spi-clock.jpg?512|messung SCLK signal... (nachahmung dieses aufbaus nicht empfohlen!}}|{{:kd320_sdo_safe.jpg? | + | Folgende schöne Ansicht ergibt sich im [[http:// |
| - | |bild: messung SCLK signal... (nachahmung dieses aufbaus nicht empfohlen!)|bild: | + | |
| - | < | + | {{ : |
| - | {{: | + | ^Controller -> CS5460A^CS5460A -> Controller^Beschreibung^ |
| + | | 0x5E / 0b01011110 | - | Write Register 15 (SREG) (Datenblatt 4.1.7) | | ||
| + | | 0x80 / 0b10000000 ,0x00,0x00 | - | oberstes Bit im SREG = DRDY, Flag für Daten verfügbar, wird durch Schreiben einer 1 gelöscht.\\ So dass das Interruptsignal zurück gesetzt wird (siehe Kanal 4, Datenblatt 3.4 , 5.11) | | ||
| + | | 0x16 / 0b00010110 | - | Read Register 11 (RMS current) | | ||
| + | | - | 0x00, | ||
| + | | 0x18 / 0b00011000 | - | Read Register 12 (RMV voltage) | ||
| + | | - | 0x01, | ||
| + | | 0x14 / 0b00010100 | - | Read Register 10 (E (energy))| | ||
| + | | - | 0xFF, | ||
| + | < | ||
| - | folgende schoene ansicht ergibt sich im [[http:// | + | Irgendwann |
| - | + | ||
| - | {{: | + | |
| - | + | ||
| - | bei der auswertung ergeben sich hier folgende fehler: miso/mosi vertauscht, bit-reihenfolge rueckwaerts, | + | |
| - | + | ||
| - | fixed: | + | |
| - | + | ||
| - | {{: | + | |
| - | + | ||
| - | | controller -> CS5460A | CS5460A -> controller | was | | + | |
| - | | 0x5E / 0b01011110 | + | |
| - | | 0x80 / 0b10000000 , | + | |
| - | | 0x16 / 0b00010110 | - | read register 11 (RMS current) | | + | |
| - | | - | 0x00, | + | |
| - | | 0x18 / 0b00011000 | - | read register 12 (RMV voltage) | + | |
| - | | - | 0x01, | + | |
| - | | 0x14 / 0b00010100 | - | read register 10 (E (energy))| | + | |
| - | | - | 0xFF, | + | |
| - | + | ||
| - | irgendwann | + | |
| < | < | ||
| $ serialclient -r 115200 / | $ serialclient -r 115200 / | ||
| Zeile 268: | Zeile 260: | ||
| [0x00(0x14)0xFF(0xFF)0xFF(0xFF)0xFF(0xFF)] | [0x00(0x14)0xFF(0xFF)0xFF(0xFF)0xFF(0xFF)] | ||
| </ | </ | ||
| - | (das sind die gleichen anfragen wie oben) | ||
| - | und dann nach einem reset des controllers, endlich die gesuchte | + | Das sind die gleichen anfragen wie oben. Und dann nach einem Reset des Controllers, endlich die gesuchte |
| < | < | ||
| [0x00(0x46)0x00(0x15)0x00(0x8C)0x00(0x71)0x00(0x42)0x00(0xFF)0x00(0xB5)0x00(0x62)] | [0x00(0x46)0x00(0x15)0x00(0x8C)0x00(0x71)0x00(0x42)0x00(0xFF)0x00(0xB5)0x00(0x62)] | ||
| Zeile 281: | Zeile 273: | ||
| (...) | (...) | ||
| </ | </ | ||
| - | nach datenblatt: | + | |
| + | Nach Datenblatt: | ||
| < | < | ||
| [ | [ | ||
| Zeile 334: | Zeile 328: | ||
| 0xE8 0b11101000 start conversions! continuous mode | 0xE8 0b11101000 start conversions! continuous mode | ||
| </ | </ | ||
| - | |||
| - | |||
| ==== Impulsausgang ==== | ==== Impulsausgang ==== | ||
| - | EOUT/EDIR ist ein impulsausgang | + | EOUT/EDIR ist ein Impulsausgang |
| - | sofern er vom controller | + | |
| + | Zitat Datenblatt: | ||
| > 3.1 Pulse-Rate Output | > 3.1 Pulse-Rate Output | ||
| > As an alternative to reading the real energy through the serial port, the EOUT and EDIR pins provide a simple interface with which signed energy can be accumulated. Each EOUT pulse represents a predetermined quantity of energy. The quantity of energy represented in one pulse can be varied by adjusting the value in the Pulse-Rate Register. | > As an alternative to reading the real energy through the serial port, the EOUT and EDIR pins provide a simple interface with which signed energy can be accumulated. Each EOUT pulse represents a predetermined quantity of energy. The quantity of energy represented in one pulse can be varied by adjusting the value in the Pulse-Rate Register. | ||
| - | nachdem | + | Nachdem |
| - | + | ||
| - | das " | + | |
| - | + | ||
| - | (update: an der oben analysierten initialisierungssequenz ist abzulesen: das pulse-rate register wird nicht beschrieben, | + | |
| - | die impulsrate liegt ueber 1 impuls pro **wattsekunde**, | + | Das " |
| - | {{:hardware:channels: | + | (**Update:** an der oben analysierten Initialisierungssequenz ist abzulesen: das pulse-rate register wird nicht beschrieben. Dazu wird netterweise noch die Pulsweite auf extra lang eingesstellt, |
| - | somit ist der Impulsausgang ohne aenderungen an der programmierung definitv nicht nutzbar. | + | Die Impulsrate liegt über 1 Impuls pro **Wattsekunde**, |
| - | andererseits bedeutet dies auch, dass er vom vorhandenen controller wohl nicht benutzt wird (obwohl er angeschlossen ist!), und somit fuer eigene zwecke umprogrammiert werden kann, soweit moeglich. | + | {{: |
| - | __moeglicherweise__ ist es moeglich ueber aenderungen der daten im eeprom den wert im pulse-rate register zu aendern. | + | {{: |
| - | (update: die eeprom daten sehen nicht danach aus, als ob man irgendwo einen wert fuer das pulse-rate register eintragen koennte.) | + | {{:hardware: |
| + | {{: | ||
| - | ansonsten | + | Somit ist der Impulsausgang ohne Änderungen an der Programmierung definitv nicht nutzbar. Andererseits bedeutet dies auch, dass er vom vorhandenen Controller wohl nicht benutzt |
| + | __Möglicherweise__ ist es möglich über Änderungen der Daten im EEPROM | ||
| + | (**Update: | ||
| - | alternativ koennte | + | Ansonsten wird man um den Einbau eines eigenen Controllers nicht herum kommen. Alternativ könnte man den Standalone-Betrieb |
| ==== Netzteil ==== | ==== Netzteil ==== | ||
| - | * nicht galvanisch getrenntes | + | * nicht galvanisch getrenntes |
| - | todo: ausmessen, | + | < |
| ==== Anschlüsse ==== | ==== Anschlüsse ==== | ||
hardware/channels/meters/power/kd_302.1315791342.txt.gz · Zuletzt geändert: von stv0g