Benutzer-Werkzeuge

Webseiten-Werkzeuge


hardware:channels:meters:power:kd_302

Unterschiede

Hier werden die Unterschiede zwischen zwei Versionen angezeigt.

Link zu dieser Vergleichsansicht

Beide Seiten der vorigen RevisionVorhergehende Überarbeitung
Nächste Überarbeitung
Vorhergehende Überarbeitung
Letzte ÜberarbeitungBeide Seiten der Revision
hardware:channels:meters:power:kd_302 [2011/09/12 03:20] – [Anschluesse] stv0ghardware:channels:meters:power:kd_302 [2018/03/25 11:02] 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.
 +</note>
 ===== Features ===== ===== Features =====
-  * preisgünstig (z.B. bei [[http://www.reichelt.de/?;ARTICLE=88135|Reichelt]]+  * preisgünstig (z.B. bei [[http://www.reichelt.de/?;ARTICLE=88135|Reichelt]] für ca. 10 €)
   * hohe Messgenauigkeit   * hohe Messgenauigkeit
   * Reverse-Engineering freundlich   * Reverse-Engineering freundlich
-  * bekannt aus dem Test in [[http://www.heise.de/artikel-archiv/ct/2008/24/226_kiosk|c't 2008/24]] (der c't Artikel ist bei Reichelt kostenlos zu haben!) +  * bekannt aus dem Test in [[http://www.heise.de/artikel-archiv/ct/2008/24/226_kiosk|c't 2008/24]] [[http://www.heise.de/ct/artikel/Pulsmesser-291796.html|leseprobe]] (der c't Artikel ist bei Reichelt [[http://www.reichelt.de/?ACTION=7;INDEX=0;FILENAME=D100%252FCT2408226231.pdf|kostenlos zu haben]]!)
-  * [[http://www.heise.de/newsticker/meldung/8-Euro-Stromkosten-Messgeraet-mit-Messfehler-214515.html|Artikel von Heise]]+
  
 ===== 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/Spannung mit 4k Samples/Sek (bei 4.096Mhz Taktung, mit einer schnelleren Taktung des CS5460A liesse sich das ggfs. noch erhöhen.) (4k Samples/Sek entspricht 80 Samples/Vollwelle, man vergleiche die ärmlichen 16 des [[http://www.ladyada.net/make/tweetawatt/parser.html|tweet-a-watt]]).  +Der verwendete CS5460A beinhaltet A/D Konverter für Strom/Spannung mit 4k Samples/Sek. Bei 4.096Mhz Taktung, mit einer schnelleren Taktung des CS5460A ließe sich das ggfs. noch erhöhen. 4k Samples/Sek entsprechen 80 Samples/Vollwelle. Man vergleiche die ärmlichen 16 des [[http://www.ladyada.net/make/tweetawatt/parser.html|tweet-a-watt]]). 
-diese Daten lassen sich auslesen, so dass man die Strom/Spannungs-kurven angeschlossener Geräte ermitteln kann.+ 
 +Diese Daten lassen sich auslesen, so dass man die Strom/Spannungs-kurven angeschlossener Geräte ermitteln kann.
  
 ===== Umbau ===== ===== Umbau =====
Zeile 47: Zeile 51:
 Die "Präzisions"-Stift/Buchsenleisten sind... präzise, zuverlässig... und stapelbar, um einen grösseren Abstand der Platinen zu erreichen. Die "Präzisions"-Stift/Buchsenleisten sind... präzise, zuverlässig... und stapelbar, um einen grösseren Abstand der Platinen zu erreichen.
  
-{{:hardware:channels:meters:power:kd320:kd302_hacked_comp.jpg?300 }} +{{:hardware:channels:meters:power:kd320:kd302_hacked_comp.jpg?300}} 
-{{ :hardware:channels:meters:power:kd320:kd302_hacked_sold.jpg?300 }} +{{:hardware:channels:meters:power:kd320:kd302_hacked_sold.jpg?300}} 
-{{ :hardware:channels:meters:power:kd320:kd302_custom_connector.png?300}}+{{:hardware:channels:meters:power:kd320:kd302_custom_connector.png?300}}
  
 Und eine Tochterplatine mit eigenem Controller gebaut, die auf den neuen Anschluss, sowie J1 aufgesteckt wird (auf dem Bild ist der SPI-bus noch nicht verdrahtet, das Loch war für den Elko auf der Platine gedacht, aber bei entsprechendem Abstand passt es auch ohne): Und eine Tochterplatine mit eigenem Controller gebaut, die auf den neuen Anschluss, sowie J1 aufgesteckt wird (auf dem Bild ist der SPI-bus noch nicht verdrahtet, das Loch war für den Elko auf der Platine gedacht, aber bei entsprechendem Abstand passt es auch ohne):
  
-{{:hardware:channels:meters:power:kd320:kd302_addonproto_comp.jpg?450 }} +{{:hardware:channels:meters:power:kd320:kd302_addonproto_comp.jpg?450}} 
-{{ :hardware:channels:meters:power:kd320:kd302_addonproto_sold.jpg?450}}+{{:hardware:channels:meters:power:kd320:kd302_addonproto_sold.jpg?450}}
  
 === Schnittstelle === === Schnittstelle ===
Zeile 61: Zeile 65:
 für den Anfang habe ich ein galvanisch getrenntes UART-Interface gebaut. Das ist ein eigenes Unterprojekt und werde ich an anderer Stelle zu dokumentieren. Die aktuelle Variante funktioniert nur mit maximal 9600 Baud. für den Anfang habe ich ein galvanisch getrenntes UART-Interface gebaut. Das ist ein eigenes Unterprojekt und werde ich an anderer Stelle zu dokumentieren. Die aktuelle Variante funktioniert nur mit maximal 9600 Baud.
  
-{{:hardware:channels:meters:power:kd320:kd302_opto_uart.jpg?450 }} +{{:hardware:channels:meters:power:kd320:kd302_opto_uart.jpg?450}} 
-{{ :hardware:channels:meters:power:kd320:kd302_opto_uart_phase.jpg?450}}+{{:hardware:channels:meters:power:kd320:kd302_opto_uart_phase.jpg?450}}
  
 Man beachte die Glimmlampe im Phasenpruefer - die Schnittstelle auf KD302-Seite liegt auf Netzpotential! das USB-Kabel ist an einen PC angeschlossen. Man beachte die Glimmlampe im Phasenpruefer - die Schnittstelle auf KD302-Seite liegt auf Netzpotential! das USB-Kabel ist an einen PC angeschlossen.
Zeile 69: Zeile 73:
 ===== hardware / reverse engineering ===== ===== hardware / reverse engineering =====
  
-==== controller: EM78P468N ("LCD Type"==== +==== LCD Controller ==== 
-  * http://www.emc.com.tw/eng/st_8bit.asp +  * EM78P468N ("LCD Type"
-  * http://www.saiyimcu.com/products/upfile/2007611212810.pdf  http://www.datasheetcatalog.org/datasheets2/15/1527527_1.pdf +  * Datenblätter & Infos: [[http://www.emc.com.tw/eng/st_8bit.asp|1]], [[http://www.saiyimcu.com/products/upfile/2007611212810.pdf|2]], [[http://www.datasheetcatalog.org/datasheets2/15/1527527_1.pdf|3]] 
-  * OTP (one time programmable) ROMinkl. schutz gegen auslesen des programmcodes (wer lust hat kann ausprobieren ob der benutzt wird)+  * OTP (One Time Programmable) ROM 
 +    * inkl. Schutz gegen Auslesen des Programmcodes (wer Lust hat kann ausprobieren ob er benutzt wird ;))
  
-==== eeprom: 24c02 ==== +==== EEPROM ==== 
-{{:hardware:channels:meters:power:kd320:kd302_eeprom.jpg}}{{:hardware:channels:meters:power:kd320:eeprom_pinout.png}} +{{:hardware:channels:meters:power:kd320:kd302_eeprom.jpg?450}} 
-  * standard i2c eeprom (2kbit) +{{:hardware:channels:meters:power:kd320:eeprom_pinout.png?450}}
-  * http://www.dzsc.com/uploadfile/company/51028/2007122112831434.pdf +
-  * hier duerften die kalibrationsdaten fuer den CS5460A abgelegt sein. +
-  * speichert das geraet irgendwelche daten ueber einen wegfall der stromversorgung hinweg? dann hier. +
-  * ist mit dem controller verbunden, nicht mit dem CS5460A +
-  * i2c-bus an J1 abgreifbar.+
  
-nach auftrennen von SDA/SCL zwischen controller und eeprom zeigt das geraet konstant 0W an.+  * 24c02: Standard I<sub>2</sub>C EEPROM (2kbit) 
 +  * [[http://www.dzsc.com/uploadfile/company/51028/2007122112831434.pdf|Datenblatt]] 
 +  * hier dürften die Kalibrationsdaten für den CS5460A abgelegt sein 
 +  * speichert das gerät irgendwelche Daten über einen Wegfall der Stromversorgung hinweg? 
 +  * ist mit dem Controller verbunden, nicht mit dem CS5460A 
 +  * I<sub>2</sub>C-Bus an J1 abgreifbar.
  
-<html><del>habe gerade keine fertige hardware zum auslesen zur hand.</del></html> +Nach Auftrennen von SDA/SCL zwischen Controller und EEPROM zeigt das Gerät konstant 0W an.
  
-|{{:hardware:channels:meters:power:kd320:kd302_eeprom_buspirate.jpg?512|}}|{{:hardware:channels:meters:power:kd320:kd302_eeprom_buspirate_2.jpg?512|}}| +Zugriff auf das EEPROM per [[http://dangerousprototypes.com/docs/Bus_Pirate|BusPirate]], hier in einem Gerät in dem ich SDA/SCL vom Controller getrennt habe
-|zugriff auf das eeprom per [[http://dangerousprototypes.com/docs/Bus_Pirate|buspirate]], hier in einem geraet in dem ich SDA/SCL vom controller getrennt habe|geht auch ohne die leitungen zu trennen (natuerlich ist i2c multimaster-faehig, wenn korrekt implementiert, ausserdem greift der controller im betrieb wohl eh nicht auf das eeprom zu)|+Es geht auch ohne die Leitungen zu aufzutrennen (natürlich ist I<sub>2</sub>multimaster-fähig, wenn korrekt implementiert, außerdem greift der Controller im Betrieb wohl eh nicht auf das EEPROM zu).
  
-(das alignment der daten sieht etwas nach einem off-by-one in der addresse aus...? <html><del>vielleicht bediene ich den busspirate falsch, oder der hat einen bug.</del></html> liegt wohl eher daran das 3-byte werte gespeichert werden, und an chinesischen programmierern)+{{:hardware:channels:meters:power:kd320:kd302_eeprom_buspirate.jpg?450}} 
 +{{:hardware:channels:meters:power:kd320:kd302_eeprom_buspirate_2.jpg?450}}
  
 +<note tip>Das Alignment der Daten sieht etwas nach einem off-by-one in der Addresse aus?! Liegt wohl daran, dass 3-Byte Werte gespeichert werden und an chinesischen Programmierern...</note>
  
 <code> <code>
Zeile 105: Zeile 112:
 READ: READ:
 </code> </code>
-inhalt aus dem 2geraet:+ 
 +Inhalt aus dem 1Gerät: 
 +(ich hatte beim herumspielen versehentlich die ersten drei byte ueberschrieben, scheinen aber eh immer 0x54 0xFF 0xFF zu sein )
 <code> <code>
-0x54 0xFF 0xFF 0xFF 0xFF 0xFF 0xFF 0xFF 0xFF 0xFF 0xFF 0xFF 0xFF 0xFF 0xFF 0xFF+0x?? 0x?? 0x?? 0xFF 0xFF 0xFF 0xFF 0xFF 0xFF 0xFF 0xFF 0xFF 0xFF 0xFF 0xFF 0xFF
 0xFF 0xFF 0xFF 0xFF 0xFF 0xFF 0xFF 0xFF 0xFF 0xFF 0xFF 0xFF 0xFF 0xFF 0xFF 0x00 0xFF 0xFF 0xFF 0xFF 0xFF 0xFF 0xFF 0xFF 0xFF 0xFF 0xFF 0xFF 0xFF 0xFF 0xFF 0x00
-0x24 0x24 0xFF 0xFF 0xFF 0xFF 0xFF 0xFF 0xFF 0xFF 0xFF 0xFF 0xFF 0xFF 0xFF 0x16 +0x24 0x24 0xFF 0xFF 0xFF 0xFF 0xFF 0xFF 0xFF 0xFF 0xFF 0xFF 0xFF 0xFF 0xFF 0x15 
-0x5B 0xB1 0xFF 0xC0 0xF4 0xFF 0xFF 0xFF 0xFF 0xFF 0xFF 0xFF 0xFF 0xFF 0xFF 0x00 +0x8C 0x71 0xFF 0xB5 0x62 0xFF 0xFF 0xFF 0xFF 0xFF 0xFF 0xFF 0xFF 0xFF 0xFF 0x00 
-0x3F 0x60 0x00 0x01 0x2F 0xFF 0xFF 0xFF 0xFF 0xFF 0xFF 0xFF 0xFF 0xFF 0xFF 0x3E +0x44 0xCA 0x00 0x01 0x4A 0xFF 0xFF 0xFF 0xFF 0xFF 0xFF 0xFF 0xFF 0xFF 0xFF 0x3D 
-0x87 0xFF 0x40 0xD9 0x86 0xFF 0xFF 0xFF 0xFF 0xFF 0xFF 0xFF 0xFF 0xFF 0xFF 0xFF+0x82 0xEF 0x3D 0x10 0x00 0xFF 0xFF 0xFF 0xFF 0xFF 0xFF 0xFF 0xFF 0xFF 0xFF 0xFF
 0xFF 0xFF 0xFF 0xFF 0xFF 0xFF 0xFF 0xFF 0xFF 0xFF 0xFF 0xFF 0xFF 0xFF 0xFF 0xFF 0xFF 0xFF 0xFF 0xFF 0xFF 0xFF 0xFF 0xFF 0xFF 0xFF 0xFF 0xFF 0xFF 0xFF 0xFF 0xFF
 0xFF 0xFF 0xFF 0xFF 0xFF 0xFF 0xFF 0xFF 0xFF 0xFF 0xFF 0xFF 0xFF 0xFF 0xFF 0xFF 0xFF 0xFF 0xFF 0xFF 0xFF 0xFF 0xFF 0xFF 0xFF 0xFF 0xFF 0xFF 0xFF 0xFF 0xFF 0xFF
Zeile 124: Zeile 133:
 0xFF 0xFF 0xFF 0xFF 0xFF 0xFF 0xFF 0xFF 0xFF 0xFF 0xFF 0xFF 0xFF 0xFF 0xFF 0x00 0xFF 0xFF 0xFF 0xFF 0xFF 0xFF 0xFF 0xFF 0xFF 0xFF 0xFF 0xFF 0xFF 0xFF 0xFF 0x00
 </code> </code>
-das dritte:+ 
 +Inhalt aus dem 2. Gerät:
 <code> <code>
 0x54 0xFF 0xFF 0xFF 0xFF 0xFF 0xFF 0xFF 0xFF 0xFF 0xFF 0xFF 0xFF 0xFF 0xFF 0xFF 0x54 0xFF 0xFF 0xFF 0xFF 0xFF 0xFF 0xFF 0xFF 0xFF 0xFF 0xFF 0xFF 0xFF 0xFF 0xFF
 0xFF 0xFF 0xFF 0xFF 0xFF 0xFF 0xFF 0xFF 0xFF 0xFF 0xFF 0xFF 0xFF 0xFF 0xFF 0x00 0xFF 0xFF 0xFF 0xFF 0xFF 0xFF 0xFF 0xFF 0xFF 0xFF 0xFF 0xFF 0xFF 0xFF 0xFF 0x00
 0x24 0x24 0xFF 0xFF 0xFF 0xFF 0xFF 0xFF 0xFF 0xFF 0xFF 0xFF 0xFF 0xFF 0xFF 0x16 0x24 0x24 0xFF 0xFF 0xFF 0xFF 0xFF 0xFF 0xFF 0xFF 0xFF 0xFF 0xFF 0xFF 0xFF 0x16
-0x78 0x9C 0xFF 0xCC 0xE0 0xFF 0xFF 0xFF 0xFF 0xFF 0xFF 0xFF 0xFF 0xFF 0xFF 0x00 +0x5B 0xB1 0xFF 0xC0 0xF4 0xFF 0xFF 0xFF 0xFF 0xFF 0xFF 0xFF 0xFF 0xFF 0xFF 0x00 
-0x7F 0xA4 0x00 0x01 0x3D 0xFF 0xFF 0xFF 0xFF 0xFF 0xFF 0xFF 0xFF 0xFF 0xFF 0x3E +0x3F 0x60 0x00 0x01 0x2F 0xFF 0xFF 0xFF 0xFF 0xFF 0xFF 0xFF 0xFF 0xFF 0xFF 0x3E 
-0x77 0xFF 0x3E 0x94 0x80 0xFF 0xFF 0xFF 0xFF 0xFF 0xFF 0xFF 0xFF 0xFF 0xFF 0xFF+0x87 0xFF 0x40 0xD9 0x86 0xFF 0xFF 0xFF 0xFF 0xFF 0xFF 0xFF 0xFF 0xFF 0xFF 0xFF
 0xFF 0xFF 0xFF 0xFF 0xFF 0xFF 0xFF 0xFF 0xFF 0xFF 0xFF 0xFF 0xFF 0xFF 0xFF 0xFF 0xFF 0xFF 0xFF 0xFF 0xFF 0xFF 0xFF 0xFF 0xFF 0xFF 0xFF 0xFF 0xFF 0xFF 0xFF 0xFF
 0xFF 0xFF 0xFF 0xFF 0xFF 0xFF 0xFF 0xFF 0xFF 0xFF 0xFF 0xFF 0xFF 0xFF 0xFF 0xFF 0xFF 0xFF 0xFF 0xFF 0xFF 0xFF 0xFF 0xFF 0xFF 0xFF 0xFF 0xFF 0xFF 0xFF 0xFF 0xFF
Zeile 143: Zeile 153:
 0xFF 0xFF 0xFF 0xFF 0xFF 0xFF 0xFF 0xFF 0xFF 0xFF 0xFF 0xFF 0xFF 0xFF 0xFF 0x00 0xFF 0xFF 0xFF 0xFF 0xFF 0xFF 0xFF 0xFF 0xFF 0xFF 0xFF 0xFF 0xFF 0xFF 0xFF 0x00
 </code> </code>
-inhalt aus dem 1geraet: + 
-(ich hatte beim herumspielen versehentlich die ersten drei byte ueberschrieben, scheinen aber eh immer 0x54 0xFF 0xFF zu sein )+Inhalt aus dem 3Gerät:
 <code> <code>
-0x?? 0x?? 0x?? 0xFF 0xFF 0xFF 0xFF 0xFF 0xFF 0xFF 0xFF 0xFF 0xFF 0xFF 0xFF 0xFF+0x54 0xFF 0xFF 0xFF 0xFF 0xFF 0xFF 0xFF 0xFF 0xFF 0xFF 0xFF 0xFF 0xFF 0xFF 0xFF
 0xFF 0xFF 0xFF 0xFF 0xFF 0xFF 0xFF 0xFF 0xFF 0xFF 0xFF 0xFF 0xFF 0xFF 0xFF 0x00 0xFF 0xFF 0xFF 0xFF 0xFF 0xFF 0xFF 0xFF 0xFF 0xFF 0xFF 0xFF 0xFF 0xFF 0xFF 0x00
-0x24 0x24 0xFF 0xFF 0xFF 0xFF 0xFF 0xFF 0xFF 0xFF 0xFF 0xFF 0xFF 0xFF 0xFF 0x15 +0x24 0x24 0xFF 0xFF 0xFF 0xFF 0xFF 0xFF 0xFF 0xFF 0xFF 0xFF 0xFF 0xFF 0xFF 0x16 
-0x8C 0x71 0xFF 0xB5 0x62 0xFF 0xFF 0xFF 0xFF 0xFF 0xFF 0xFF 0xFF 0xFF 0xFF 0x00 +0x78 0x9C 0xFF 0xCC 0xE0 0xFF 0xFF 0xFF 0xFF 0xFF 0xFF 0xFF 0xFF 0xFF 0xFF 0x00 
-0x44 0xCA 0x00 0x01 0x4A 0xFF 0xFF 0xFF 0xFF 0xFF 0xFF 0xFF 0xFF 0xFF 0xFF 0x3D +0x7F 0xA4 0x00 0x01 0x3D 0xFF 0xFF 0xFF 0xFF 0xFF 0xFF 0xFF 0xFF 0xFF 0xFF 0x3E 
-0x82 0xEF 0x3D 0x10 0x00 0xFF 0xFF 0xFF 0xFF 0xFF 0xFF 0xFF 0xFF 0xFF 0xFF 0xFF+0x77 0xFF 0x3E 0x94 0x80 0xFF 0xFF 0xFF 0xFF 0xFF 0xFF 0xFF 0xFF 0xFF 0xFF 0xFF
 0xFF 0xFF 0xFF 0xFF 0xFF 0xFF 0xFF 0xFF 0xFF 0xFF 0xFF 0xFF 0xFF 0xFF 0xFF 0xFF 0xFF 0xFF 0xFF 0xFF 0xFF 0xFF 0xFF 0xFF 0xFF 0xFF 0xFF 0xFF 0xFF 0xFF 0xFF 0xFF
 0xFF 0xFF 0xFF 0xFF 0xFF 0xFF 0xFF 0xFF 0xFF 0xFF 0xFF 0xFF 0xFF 0xFF 0xFF 0xFF 0xFF 0xFF 0xFF 0xFF 0xFF 0xFF 0xFF 0xFF 0xFF 0xFF 0xFF 0xFF 0xFF 0xFF 0xFF 0xFF
Zeile 164: Zeile 174:
 </code> </code>
  
-==== "CS5460A : Single-Phase, Bi-Directional Power/Energy IC" ==== +==== Messcontroller ==== 
-  * http://www.cirrus.com/en/products/cs5460a.html  +  * CS5460A : Single-Phase, Bi-Directional Power/Energy IChttp://www.cirrus.com/en/products/cs5460a.html 
-  * http://www.cirrus.com/en/pubs/proDatasheet/CS5460A_F5.pdf +  * Datenblatt: http://www.cirrus.com/en/pubs/proDatasheet/CS5460A_F5.pdf 
-  * anbindung ueber <html><del>i2c bus</del></html> serielles interface (lt. datenblatt spi kompatibel) +  * Anbindung über serielles Interface (lt. Datenblatt SPI kompatibel) 
-  * kalibrierung per software+  * kalibrierung per Software
  
-{{:cs5460a.png}} +{{:cs5460a.png?600}} 
-{{:kd302_signals.jpg?400}}+{{:kd302_signals.jpg?300}}
  
-=== messungen === +=== Messungen === 
-<note warning>bei messungen im betrieb ist vorsicht geboten, mangels galvanischer trennung liegt quasi alles im geraet auf netzpotential!</note> +<note warning>Bei Messungen im Betrieb ist Vorsicht geboten, mangels galvanischer Trennung liegt quasi alles im Gerät auf Netzpotential!</note> 
-<note>es empfiehlt sich einfach die 220V anschluesse frei zu lassenund stattdessen eine externe 5V versorgung anzuschliessen (zB einfach an die aeusseren pins von J1), dann laeuft das geraet, auch wenn es natuerlich keine sinnvollen messwerte mehr produziert. +<note>Es empfiehlt sich einfach die 220V Anschlüsse frei zu lassen und stattdessen eine externe 5V Versorgung anzuschliessen (z.B. einfach an die äußeren Pins von J1).\\ Dann läuft das Gerät, auch wenn es natürlich keine sinnvollen Messwerte mehr produziert. Messungen im Netzbetrieb sollte man dann darauf reduzieren können zu prüfen ob das Verhalten im Netzbetrieb übereinstimmt.</note>
-messungen im netzbetrieb  sollte man dann darauf reduzieren koennen zu pruefen ob das verhalten im netzbetrieb uebereinstimmt.</note>+
  
-soweit:+Im Betrieb ca. einmal pro Sekunde ein Signal auf INT, und (daraufhin?) eine kurze Kommunikation auf dem seriellen Interface (vermutlich signalisiert der CS5460A die Verfügbarkeit neuer Daten, die der Controller dann abholt).
  
-im betrieb ca einmal pro sekunde ein signal auf INT, und (daraufhin?) eine kurze kommunikation auf dem seriellen interface. +{{:kd302_spi-clock.jpg?300|Messung SCLK signal... (Nachahmung dieses Aufbaus nicht empfohlen!}} 
-(vermutlich signalisiert der CS5460A die verfuegbarkeit neuer daten, die der controller dann abholt.)+{{:kd320_sdo_safe.jpg?300|Messung SDO signal... (sichere Methode!)}} 
 +{{:hardware:channels:meters:power:kd320:kd302_spi_buspirate.jpg?300}}
  
-|{{:kd302_spi-clock.jpg?512|messung SCLK signal... (nachahmung dieses aufbaus nicht empfohlen!}}|{{:kd320_sdo_safe.jpg?512|messung SDO signal... (sichere methode!)}}| +Folgende schöne Ansicht ergibt sich im [[http://dangerousprototypes.com/docs/Logic_analyzer_mode|Logic Analyzer Modus]], getriggert auf das INT Signal auf Kanal 4:
-|bild: messung SCLK signal... (nachahmung dieses aufbaus nicht empfohlen!)|bild: messung SDO signal... (sichere methode!)|+
  
-<html><del>als naechstes muss dann ein spi-sniffer her...</del></html>+{{ :hardware:channels:meters:power:kd320:kd302_spi_cycle_v2.png?900 }}
  
-{{:hardware:channels:meters:power:kd320:kd302_spi_buspirate.jpg?512|}}+^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,0x04,0x74 | 24-bit signed-int Wert (Datenblatt 4.6) | 
 +| 0x18 / 0b00011000 | - | Read Register 12 (RMV voltage) 
 +| - | 0x01,0x0C,0x94 | 24-bit signed-int Wert (Datenblatt 4.6) | 
 +| 0x14 / 0b00010100 | - | Read Register 10 (E (energy))| 
 +| - | 0xFF,0xFF,0xFE | 24-bit signed-int Wert (Datenblatt 4.6) | 
 +<note>Werte nicht sinnvoll da keine Netzspannung angeschlossen!</note>
  
-folgende schoene ansicht ergibt sich im [[http://dangerousprototypes.com/docs/Logic_analyzer_mode|logic analyzer modus]], getriggert auf das INT signal auf kanal 4: +Irgendwann lief dann auch mal der [[http://dangerousprototypes.com/docs/SPI#SPI_Bus_sniffer|SPI Sniffer Mode]]...
- +
-{{:hardware:channels:meters:power:kd320:kd302_spi_cycle.png?400|}} +
- +
-bei der auswertung ergeben sich hier folgende fehler: miso/mosi vertauscht, bit-reihenfolge rueckwaerts, ausserdem timingangaben falsch weil eine hohe vom buspirate nicht unterstuetzte samplerate eingestellt war. +
- +
-fixed: +
- +
-{{:hardware:channels:meters:power:kd320:kd302_spi_cycle_v2.png|}} +
- +
-| controller -> CS5460A | CS5460A -> controller | was | +
-| 0x5E / 0b01011110          -                | write register 15 (status-reg) (datenblatt 4.1.7) | +
-| 0x80 / 0b10000000 ,0x00,0x00    |      -                | oberstes bit im status register = DRDY, flag fuer daten verfuegbar, wird durch schreiben einer 1 geloescht, damit wird das interruptsignal zurueckgesetzt (siehe kanal 4) (datenblatt 3.4 , 5.11) | +
-| 0x16 / 0b00010110 |    -    | read register 11 (RMS current) | +
-|    - | 0x00,0x04,0x74 | 24-bit signed-int wert (datenblatt 4.6) (wert nicht sinnvoll da keine netzspannung angeschlossen!) | +
-| 0x18 / 0b00011000 | - | read register 12 (RMV voltage) +
-|    - | 0x01,0x0C,0x94 | 24-bit signed-int wert (datenblatt 4.6)(wert nicht sinnvoll da keine netzspannung angeschlossen!) | +
-| 0x14 / 0b00010100 | - | read register 10 (E (energy))| +
-|    - | 0xFF,0xFF,0xFE | 24-bit signed-int wert (datenblatt 4.6)(wert nicht sinnvoll da keine netzspannung angeschlossen!) | +
- +
-irgendwann lief dann auch mal der [[http://dangerousprototypes.com/docs/SPI#SPI_Bus_sniffer|spi sniffer mode]]...+
 <code> <code>
 $ serialclient -r 115200 /dev/ttyUSB0 $ serialclient -r 115200 /dev/ttyUSB0
Zeile 262: Zeile 260:
 [0x00(0x14)0xFF(0xFF)0xFF(0xFF)0xFF(0xFF)] [0x00(0x14)0xFF(0xFF)0xFF(0xFF)0xFF(0xFF)]
 </code> </code>
-(das sind die gleichen anfragen wie oben) 
  
-und dann nach einem reset des controllers, endlich die gesuchte initialisierungssequenz (hier aus meinem geraet nr. 1, der dazugehoerige eeprom inhalt siehe obe):+Das sind die gleichen anfragen wie oben. Und dann nach einem Reset des Controllers, endlich die gesuchte Initialisierungssequenz (Hier aus meinem Gerät Nr. 1, dazugehöriger EEPROM Inhalt siehe oben): 
 <code> <code>
 [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 275: Zeile 273:
 (...) (...)
 </code> </code>
-nach datenblatt:+ 
 +Nach Datenblatt: 
 <code> <code>
 [ [
Zeile 328: Zeile 328:
 0xE8 0b11101000 start conversions! continuous mode 0xE8 0b11101000 start conversions! continuous mode
 </code> </code>
- 
- 
 ==== Impulsausgang ==== ==== Impulsausgang ====
-EOUT/EDIR ist ein impulsausgang ("S0-Ausgang"), im einfachsten fall <html><del>kann</del></html> koennte man den benutzen, +EOUT/EDIR ist ein Impulsausgang ("S0-Ausgang"). Im einfachsten Fall <del>kann</del> könnte man ihn benutzen, sofern er vom Controller sinnvoll initialisiert <del>wird</del> werden würde:
-sofern er vom controller sinnvoll konfiguriert <html><del>wird</del></html> wuerde:+
  
 +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 ich bei ersten messungen keine impulse auf EOUT gesehen hatte, nahm ich an meine last war zu klein, und versuchte es mit mehreren kW last, was auch nichts brachte. dann stellte ich fest, das meine last _zu_gross_ war... +Nachdem ich bei ersten Messungen keine Impulse auf EOUT gesehen hatte, nahm ich an, dass meine Last zu klein war, und versuchte es mit mehreren kW Last. Leider ohne ErfolgErst dann stellte ich fest, das meine Last **zu groß** war!
- +
-das "pulse-rate register" wird vom controller definitiv nicht sinnvoll programmiert, vermutlich steht es auf null o.ae.. +
- +
-(update: an der oben analysierten initialisierungssequenz ist abzulesen: das pulse-rate register wird nicht beschrieben, und dazu wird netterweise noch die pulsweite auf extra lang eingesstellt, was das problem noch begunstigt...)+
  
-die impulsrate liegt ueber 1 impuls pro **wattsekunde**, schon ab ca 2 Watt laufen die impulse aufgrund der impulslaenge ineinander, und es entsteht ein dauerpegel!+Das "pulse-rate register" wird vom Controller definitiv nicht sinnvoll programmiert. Vermutlich steht es auf Null o.ä.
  
-{{:hardware:channels:meters:power:kd320:kd320_eout_0w0.jpg?384}}{{:hardware:channels:meters:power:kd320:kd320_eout_0w5.jpg?384}}{{:hardware:channels:meters:power:kd320:kd320_eout_1w3.jpg?384}}{{:hardware:channels:meters:power:kd320:kd320_eout_1w8.jpg?384}}+(**Update:** an der oben analysierten Initialisierungssequenz ist abzulesendas pulse-rate register wird nicht beschriebenDazu wird netterweise noch die Pulsweite auf extra lang eingesstellt, was das Problem noch begünstigt.)
  
-somit ist der Impulsausgang ohne aenderungen an der programmierung definitv nicht nutzbar.+Die Impulsrate liegt über 1 Impuls pro **Wattsekunde**, schon ab ca 2 Watt laufen die Impulse aufgrund der Impulslaenge ineinander, und es entsteht ein Dauerpegel!
  
-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+{{:hardware:channels:meters:power:kd320:kd320_eout_0w0.jpg?450}} 
-__moeglicherweise__ ist es moeglich ueber aenderungen der daten im eeprom den wert im pulse-rate register zu aendern.+{{:hardware:channels:meters:power:kd320:kd320_eout_0w5.jpg?450}}
  
-(updatedie eeprom daten sehen nicht danach aus, als ob man irgendwo einen wert fuer das pulse-rate register eintragen koennte.)+{{:hardware:channels:meters:power:kd320:kd320_eout_1w3.jpg?450}} 
 +{{:hardware:channels:meters:power:kd320:kd320_eout_1w8.jpg?450}}
  
-ansonsten wird man um den einbau eines eigenen controllers nicht herumkommen.+Somit ist der Impulsausgang ohne Änderungen an der Programmierung definitv nicht nutzbar. Andererseits bedeutet dies auch, dass er vom vorhandenen Controller wohl nicht benutzt wird (obwohl er angeschlossen ist!). 
 +__Möglicherweise__ ist es möglich über Änderungen der Daten im EEPROM den Wert im pulse-rate register zu ändern.
  
 +(**Update:** die EEPROM Daten sehen nicht danach aus, als ob man irgendwo einen Wert für das pulse-rate register eintragen könnte.)
  
-alternativ koennte man den standalone-betrieb des CS5460A nutzen, bei dem er seine konfiguration aus einem eeprom liest: controller (und display) hinauswerfen, das eeprom umprogrammieren und direkt mit dem CS5460A verbinden.+Ansonsten wird man um den Einbau eines eigenen Controllers nicht herum kommen. Alternativ könnte man den Standalone-Betrieb des CS5460A nutzen, bei dem er seine Konfiguration aus einem EEPROM liest: Controller (und Display) hinauswerfen, das EEPROM umprogrammieren und direkt mit dem CS5460A verbinden.
  
 ==== Netzteil ==== ==== Netzteil ====
-  * nicht galvanisch getrenntes netzteil+  * nicht galvanisch getrenntes Netzteil
  
-todo: ausmessen, verfuegbaren strom fuer moegliche einbauten ermitteln!+<note>TODO: ausmessen, verfügbaren Strom für mögliche Einbauten ermitteln!</note>
  
 ==== Anschlüsse ==== ==== Anschlüsse ====
Zeile 382: Zeile 379:
  
 ==== Bilder der Platine ==== ==== Bilder der Platine ====
-{{:kd302_comp.jpg?450 }} +{{:kd302_comp.jpg?450}} 
-{{ :kd302_sold_2.jpg?450}}+{{:kd302_sold_2.jpg?450}}
  
 +{{indexmenu_n>2}}
hardware/channels/meters/power/kd_302.txt · Zuletzt geändert: 2018/03/25 11:06 von jau