Powermeter: Unterschied zwischen den Versionen
Aus LaborWiki
Siro (Diskussion | Beiträge) K (code status) |
Siro (Diskussion | Beiträge) K (can geändert) |
||
Zeile 1: | Zeile 1: | ||
{{ProjektInfoBox | {{ProjektInfoBox | ||
|name = Powermeter | |name = Powermeter | ||
|status = | |status = stable | ||
|image = Powermeter.JPG | |image = Powermeter.JPG | ||
|description = | |description = | ||
|author = [[Benutzer:Pl4nkton|Pl4nkton]], [[Benutzer:siro|siro]] | |author = [[Benutzer:Pl4nkton|Pl4nkton]], [[Benutzer:siro|siro]] | ||
|username = | |username = | ||
|version = | |version = 1.00 | ||
|update = 08.09.11 | |update = 08.09.11 | ||
|platform = AVR (ATXmega192a3) | |platform = AVR (ATXmega192a3) | ||
Zeile 19: | Zeile 18: | ||
== Status == | == Status == | ||
* Layout gnd gnd_iso mit x2 / widerstand und Überspannungsschutz nach Spannungsteiler | * Layout gnd gnd_iso mit x2 / widerstand und Überspannungsschutz nach Spannungsteiler | ||
* Kalibirierung | * Kalibirierung | ||
* (optional) sqrt asm routine ?? -> geht auch so | |||
* (optional) sqrt asm routine ?? | |||
== Planung == | == Planung == | ||
Zeile 39: | Zeile 36: | ||
* Überspannungsschutz | * Überspannungsschutz | ||
=== ADC | === ADC === | ||
* differential ADC signed mode, negativer Pin auf Vref (1,65V) | * differential ADC signed mode, negativer Pin auf Vref (1,65V) | ||
* alle Spannungen am ADC Eingang müssen zwischen GND - Vcc (0 - 3,3V) liegen ! | * alle Spannungen am ADC Eingang müssen zwischen GND - Vcc (0 - 3,3V) liegen ! | ||
Zeile 85: | Zeile 82: | ||
* 3,3V 1W vom DC/DC aus 5V | * 3,3V 1W vom DC/DC aus 5V | ||
* 12V OLED ? | * 12V OLED ? | ||
== Gehäuse Pinbelegung == | == Gehäuse Pinbelegung == | ||
Pin | Pin | ||
Zeile 172: | Zeile 170: | ||
Powermeter CAN Adresse: 0x05 | Powermeter CAN Adresse: 0x05 | ||
Port: 0x06 | Port: 0x06 | ||
TODO: was soll in Packet1 ? | |||
{| {{prettytable}} | |||
| '''Paket''' | |||
| '''Länge''' | |||
| '''data[0]''' | |||
| '''data[1-7]''' | |||
| '''Kennzeichner''' | |||
| '''Beispiel''' | |||
|- | |||
| 1 | |||
| 4 | |||
| 0x00 | |||
| (uint8_t)periods per Second, (uint16_t) ADC samples per second | |||
| Status Paket | |||
| 0x00 0x32 0x0136 | |||
|- | |||
| 2 | |||
| 5 | |||
| 0x01 | |||
| (uint32_t)WirkleistungC1 | |||
| Phase 1 Wirkleistung | |||
| 0x01 0x0001fdes | |||
|- | |||
| 3 | |||
| 5 | |||
| 0x02 | |||
| (uint32_t)WirkleistungC2 | |||
| Phase 2 Wirkleistung | |||
| 0x02 0x0001fdes | |||
|- | |||
| 4 | |||
| 5 | |||
| 0x03 | |||
| (uint32_t)WirkleistungC3 | |||
| Phase 3 Wirkleistung | |||
| 0x03 0x0001fdes | |||
|- | |||
| 5 | |||
| 5 | |||
| 0x04 | |||
| (uint32_t)ScheinleistungC1 | |||
| Phase 1 Scheinleistung | |||
| 0x04 0x0001fea5 | |||
|- | |||
| 6 | |||
| 5 | |||
| 0x05 | |||
| (uint32_t)ScheinleistungC2 | |||
| Phase 2 Scheinleistung | |||
| 0x05 0x0001fea5 | |||
|- | |||
| 7 | |||
| 5 | |||
| 0x06 | |||
| (uint32_t)ScheinleistungC3 | |||
| Phase 3 Scheinleistung | |||
| 0x06 0x0001fea5 | |||
|- | |||
| 8 | |||
| 5 | |||
| 0x07 | |||
| (uint32_t)SpannungC1 | |||
| Phase 1 Effektivspannung | |||
| 0x07 0x00000552 | |||
|- | |||
| 9 | |||
| 5 | |||
| 0x08 | |||
| (uint32_t)SpannungC2 | |||
| Phase 2 Effektivspannung | |||
| 0x08 0x00000551 | |||
|- | |||
| 10 | |||
| 5 | |||
| 0x09 | |||
| (uint32_t)SpannungC3 | |||
| Phase 3 Effektivspannung | |||
| 0x09 0x00000553 | |||
|- | |||
| 11 | |||
| 5 | |||
| 0x0a | |||
| (uint32_t)StromC1 | |||
| Phase 1 Effektivstrom | |||
| 0x0a 0x0000af43 | |||
|- | |||
| 12 | |||
| 5 | |||
| 0x0b | |||
| (uint32_t)StromC2 | |||
| Phase 2 Effektivstrom | |||
| 0x0b 0x00007c43 | |||
|- | |||
| 13 | |||
| 5 | |||
| 0x0c | |||
| (uint32_t)StromC3 | |||
| Phase 3 Effektivstrom | |||
| 0x0c 0x0000d035 | |||
|- | |||
|} | |||
== Messwerte == | == Gemessene Messwerte == | ||
=== Spannungsteiler === | === Spannungsteiler === | ||
* P1: 100/0,4650 | * P1: 100/0,4650 | ||
Zeile 234: | Zeile 294: | ||
* L2: 8 | * L2: 8 | ||
* L3: 9 | * L3: 9 | ||
== | |||
== Hilfreiche Links == | |||
'''Ähnliche Projekte:''' | '''Ähnliche Projekte:''' | ||
*[[http://www.stromflo.de/dokuwiki/doku.php?id=xmega-c-tutorial XMEGA-C-Tutorial]] | *[[http://www.stromflo.de/dokuwiki/doku.php?id=xmega-c-tutorial XMEGA-C-Tutorial]] |
Version vom 7. Oktober 2011, 08:59 Uhr
Powermeter Release status: stable [box doku] | |
---|---|
Description | |
Author(s) | Pl4nkton, siro |
Last Version | 1.00 |
Platform | AVR (ATXmega192a3) |
License | Source: GPL |
Download | c Code, trac |
Echtzeit Leistungsmessung der Labor Stromversorgung und an 32A Außenleitung der Drehstromladekiste.
Status
- Layout gnd gnd_iso mit x2 / widerstand und Überspannungsschutz nach Spannungsteiler
- Kalibirierung
- (optional) sqrt asm routine ?? -> geht auch so
Planung
Bauteile:
- 3 Stromwandler für 50A (L1, L2, L3) [1]
- ATXMEGA 192A3-AU - 2 * 2M samples + dma
- Gehäuse HUT 4-C
- CAN
- MCP2515
- TI ISO1050
- SIM1-0505 SIL4 (5V DC/ 5V DC galvanische Trennung) ist ungeregelt also Linearregler nach schalten
- ZR431L (ADJUSTABLE PRECISION SHUNT REGULATOR) SOT23 1.24V
- Überspannungsschutz
ADC
- differential ADC signed mode, negativer Pin auf Vref (1,65V)
- alle Spannungen am ADC Eingang müssen zwischen GND - Vcc (0 - 3,3V) liegen !
- Messwerte sind +/- 11bit 0x031F == 3,3V, 0x0000 == 1,65V, 0xFCE0 == 0V
v2
- ADE7858
- Rogowski spulen zur Strommessung
- Display
Layout
- Messbereich: 35A max
- Um = SQRT(2)*35A/1000* 33 Ohm = +-1.63 V
- Messbereich: 250 V Max (Außenleiter-Nullleiter)
- U = SQRT(2)*250V=354V
- Spannungsteiler 215:1
- mit R1=470k und R2=2k2 Spannungsteiler von 214.63:1
- Um=SQRT(2)*250V*2200/472200=+-1,647V
- Spannungsreferenz Vref = 3.3V/2 = 1.65V
- Vout=(1+R1/R2)*1.24V
- R1/R2 = 1.65V/1.24V -1 = 0,330645161
- mit R1 = 33k und R2 = 100k
- Vout=(0,33+1)*1.24V=1,6492V
- TODO: Spannungsoffset
Energiebedarf
3,3V muss > 1W sein
- Xmega max 18mA + 6 mA ADCs + x
- mcp 2515 5mA
- iso 1050 2mA
5V
- iso 1050 73 mA
Spannungen
Nicht isoliert vom Bus
- 12-24V Canbus power
- 5V vom DC/DC aus 12-24V
Isoliert vom Bus
- 3,3V 1W vom DC/DC aus 5V
- 12V OLED ?
Gehäuse Pinbelegung
Pin
- 2 - 5 CAN
- 10 L1
- 11 L2
- 12 L3
- 13 N
- 18 - 21 StromWandler Labor
- 22 - 25 StromWandler Tankstelle
ATXMega 192A3
Verwendete Peripherie
- Taktgenerator (32Mhz Interner PLL)
- Timer0 (16Mhz Takt an PD2)
- RTC
- Interrupt
- Events (startet den ADC, startet DMA Block transfers)
- ADC1, ADC2 (Messung der Spannungen)
- DMA0, DMA1 (Transfer der Messergebnisse in den SRAM)
- USARTC1 (Debugging)
- Timer1 (generiert Events, welche die ADCs starten)
- GPIO (LEDs,...)
Pinbelegung
PDI
- 56 - PDI_DATA
- 57 - RESET / PDI_CLK
PA / ADC1 - Spannung
- PA0 - Nullpunkt
- PA1 - Nullpunkt
- PA2 - L3 Spannungsteiler
- PA3 - L2 Spannungsteiler
- PA4 - L1 Spannungsteiler
PB / ADC2 - Strom
- PB0 - Nullpunkt
- PB1 - Nullpunkt
- PB2 - x Stromwandler
- PB3 - L2 Stromwandler
- PB4 - x Stromwandler
- PB5 - L1 Stromwandler
- PB6 - L3 Stromwandler
- PB7 - x Stromwandler
CAN - MCP2515
- PD1 - INT
- PD2 - CLK
- PD4 - cs
- PD5 - mosi
- PD6 - miso
- PD7 - sck
RGB-LED common Anode
- PC0 - BLUE
- PC1 - GREEN
- PC2 - RED
LED - Status
- LED aus - Powermeter aus, Energieversorgung überprüfen
- LED grün - Powermeter ist an, misst keine Daten
- LED blau - Powermeter misst Daten
- LED cyan - Powermeter berechnet Leistungsaufnahme
- LED rot blinkend - Fehler (Bufferoverflow ?)
Software
- configure powemeter_driver using Eventsystem
- ... -> Timer1 -> ADCA & ADCB -> DMA -> SRAM -> DMAInterrupt -> Timer1 -> ...
- main()
- check can_handler
- wait for ADC_data_ready
- calculate RAW power
- error led blink
Die Softare liefert RAW-Werte:
Die Spannung muss mit 0,1732177734375 = (1,65*215)/2048 multipliziert werden, um die Spannung in V zu berechnen. Der Strom muss mit 0,0147964015151515 = 1000/(33*2048) multipliziert werden, um den Strom in A zu berechnen. Die Leistung mit dementsprechend mit 0,0025629997253418 = (1,65*215*1000)/(33*2048*2048) multipliziert werden, um die Leistung in VA zu bekommen.
CAN
Die Daten werden einmal pro Sekunde über den Can-Bus geschickt. Powermeter CAN Adresse: 0x05 Port: 0x06 TODO: was soll in Packet1 ?
Paket | Länge | data[0] | data[1-7] | Kennzeichner | Beispiel |
1 | 4 | 0x00 | (uint8_t)periods per Second, (uint16_t) ADC samples per second | Status Paket | 0x00 0x32 0x0136 |
2 | 5 | 0x01 | (uint32_t)WirkleistungC1 | Phase 1 Wirkleistung | 0x01 0x0001fdes |
3 | 5 | 0x02 | (uint32_t)WirkleistungC2 | Phase 2 Wirkleistung | 0x02 0x0001fdes |
4 | 5 | 0x03 | (uint32_t)WirkleistungC3 | Phase 3 Wirkleistung | 0x03 0x0001fdes |
5 | 5 | 0x04 | (uint32_t)ScheinleistungC1 | Phase 1 Scheinleistung | 0x04 0x0001fea5 |
6 | 5 | 0x05 | (uint32_t)ScheinleistungC2 | Phase 2 Scheinleistung | 0x05 0x0001fea5 |
7 | 5 | 0x06 | (uint32_t)ScheinleistungC3 | Phase 3 Scheinleistung | 0x06 0x0001fea5 |
8 | 5 | 0x07 | (uint32_t)SpannungC1 | Phase 1 Effektivspannung | 0x07 0x00000552 |
9 | 5 | 0x08 | (uint32_t)SpannungC2 | Phase 2 Effektivspannung | 0x08 0x00000551 |
10 | 5 | 0x09 | (uint32_t)SpannungC3 | Phase 3 Effektivspannung | 0x09 0x00000553 |
11 | 5 | 0x0a | (uint32_t)StromC1 | Phase 1 Effektivstrom | 0x0a 0x0000af43 |
12 | 5 | 0x0b | (uint32_t)StromC2 | Phase 2 Effektivstrom | 0x0b 0x00007c43 |
13 | 5 | 0x0c | (uint32_t)StromC3 | Phase 3 Effektivstrom | 0x0c 0x0000d035 |
Gemessene Messwerte
Spannungsteiler
- P1: 100/0,4650
- P2: 100/0,4647
- P3: 100/0,4647
Strom-Shunt
- P1: 32,9 Ohm
- P2: 32,9 Ohm
- P3: 32,9 Ohm
Stromkasten Vortragsraum Farbe der Phasen Labor
Strom:
- L1: grün (Pin 3 8P8)
- L2: braun (Pin 1 8P8)
- L3: blau (Pin 5 8P8)
Spannung:
- L1: 7
- L2: 8
- L3: 9
Hilfreiche Links
Ähnliche Projekte:
Verwandtes Projekt von dem man lernen kann:
Brauchbarer Schaltplan zur Strommessung über Shunt: (Seite 5)
Mathe:
- http://de.wikipedia.org/wiki/Wirkleistung#Drehstromnetz
- http://de.wikipedia.org/wiki/Blindleistung#Drehstromnetz
- http://www.zabex.de/frames/wirkleistung.html
- http://openenergymonitor.org/emon/node/59
Xmega zeug:
- http://www.avrfreaks.net/index.php?name=PNphpBB2&file=viewtopic&p=650685&sid=71172b31999915f30ac06da374c7a479#650685
- http://www.fourwalledcubicle.com/LUFA.php
- http://fourwalledcubicle.com/blog/archives/486
- http://de.farnell.com/atmel/at90usb162-16au/avr-usb-mcu-16k-flash-smd-tqfp32/dp/1455073
- http://www.elektronik-projekt.de/thread.php?threadid=6215