Powermeter

Aus LaborWiki
Wechseln zu: Navigation, Suche
           
Powermeter

Release status: stable [box doku]

Powermeter.JPG
Description {{{description}}}
Author(s)  Pl4nkton, siro
Last Version  1.00
Platform  AVR (ATXmega192a3)
License  Source: GPL
Download  c Code, trac



IMGP1609.JPG

Echtzeit Leistungsmessung der Labor Stromversorgung (und an 32A Außenleitung der Drehstromladekiste). Ein Xmega übernimmt die analoge Spannungsmessung und berechnet die Wirkleistung, den RMS-Strom, die RMS-Spannung und die Scheinleistung für jede Phase.

Details[Bearbeiten | Quelltext bearbeiten]

Es werden 2 ADCs verwendet, die ihre Daten per DMA direkt in den sram schreiben. Ein Timer legt die Abtastrate fest. Diese beträgt momentan 128 Samples pro Periode der Netzspannung. (Limitierung des DMA, Max 255 möglich). Die berechneten Werte werden über CAN an den Laborserver geschickt. Es gibt eine RGB Status Led, welche den Zustand des Powermeter anzeigt. Die Schaltung beinhaltet eine galvanische Trennung zum CAN, da der Xmega direkt mit dem Stromnetz verbunden ist. Wie alle CAN-Geräte kann das Powermeter über diesen eine neue Firmware aufgespielt bekommen, so das es fest installiert werden kann.

Umsetzung[Bearbeiten | Quelltext bearbeiten]

Bauteile[Bearbeiten | Quelltext bearbeiten]

  • 3 Stromwandler für 50A (L1, L2, L3) [1]
  • ATXMEGA 192A3-AU
  • 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

Xmega-ADC[Bearbeiten | Quelltext bearbeiten]

  • 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

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

Energiebedarf[Bearbeiten | Quelltext bearbeiten]

3,3V muss > 1W sein

  • Xmega max 18mA + 6 mA ADCs + x
  • mcp 2515 5mA
  • iso 1050 2mA

5V

  • iso 1050 73 mA

Spannungen[Bearbeiten | Quelltext bearbeiten]

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[Bearbeiten | Quelltext bearbeiten]

Pin Funktion
2 - 5 CAN
10 L1
11 L2
12 L3
13 N
18 - 21 StromWandler Labor
22 - 25 StromWandler Tankstelle

ATXMega 192A3[Bearbeiten | Quelltext bearbeiten]

Verwendete Peripherie[Bearbeiten | Quelltext bearbeiten]

  • 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[Bearbeiten | Quelltext bearbeiten]

PDI

  • 56 - PDI_DATA
  • 57 - RESET / PDI_CLK


PA / ADC1 - Spannung

Pin Funktion
PA0 Nullpunkt
PA1 Nullpunkt
PA2 L3 Spannungsteiler
PA3 L2 Spannungsteiler
PA4 L1 Spannungsteiler


PB / ADC2 - Strom

Pin Funktion
PB0 Nullpunkt
PB1 Nullpunkt
PB2 x Stromwandler
PB3 L2 Stromwandler
PB4 x Stromwandler
PB5 L1 Stromwandler
PB6 L3 Stromwandler
PB7 x Stromwandler

CAN - MCP2515

Pin Funktion
PD1 INT
PD2 CLK
PD4 cs
PD5 mosi
PD6 miso
PD7 sck

RGB-LED common Anode

Pin Funktion
PC0 BLUE
PC1 GREEN
PC2 RED

LED - Status[Bearbeiten | Quelltext bearbeiten]

  • 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 - Fehler

Software[Bearbeiten | Quelltext bearbeiten]

main()
{
 //configure powemeter_driver using Eventsystem:
 //Timer1 -> ADCA & ADCB -> DMA -> SRAM -> DMAInterrupt -> Timer1 -> ...
 //DMAInterrupt setzt Bit ADC_data_ready um Hauptprogramm zu signalisieren, das genug Daten im SRAM liegen
 //RAW-Werte im Hauptprogramm berechnet, danach die Seite im SRAM wieder freigegeben für weitere Messwerte
 //einmal pro Sekunde werden die RAW Werte über CAN geschickt
 while(1){
 check_can_handler
 if(ADC_data_ready){calculate RAW power}
 check for error
 }
}

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.

Lapcontrol[Bearbeiten | Quelltext bearbeiten]

Die Daten des Powermeter können über lapcontrol powermeter ausgegeben werden. Bis jetzt wird aber nur der Gesamtverbrauch ausgegeben, nicht getrennt nach Phase.

lapcontrol -s kvm powermeter

CAN[Bearbeiten | Quelltext bearbeiten]

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

TODO[Bearbeiten | Quelltext bearbeiten]

  • Layout gnd gnd_iso mit x2 / widerstand und Überspannungsschutz nach Spannungsteiler
  • Kalibirierung
  • (optional) sqrt asm routine ?? -> geht auch so

Gemessene Messwerte[Bearbeiten | Quelltext bearbeiten]

Spannungsteiler[Bearbeiten | Quelltext bearbeiten]

  • P1: 100/0,4650
  • P2: 100/0,4647
  • P3: 100/0,4647

Strom-Shunt[Bearbeiten | Quelltext bearbeiten]

  • P1: 32,9 Ohm
  • P2: 32,9 Ohm
  • P3: 32,9 Ohm

Stromkasten Vortragsraum Farbe der Phasen Labor[Bearbeiten | Quelltext bearbeiten]

Strom:

  • L1: grün (Pin 3 8P8)
  • L2: braun (Pin 1 8P8)
  • L3: blau (Pin 5 8P8)

Spannung:

  • L1: 7
  • L2: 8
  • L3: 9

Nächste Version[Bearbeiten | Quelltext bearbeiten]

  • ADE7858
  • Rogowski spulen zur Strommessung
  • Display
    • EA DOGL128S-6 könnte passen [2]
    • oled 128*64 3.3V core / 12V led [3]
    • [4] color oled


Hilfreiche Links[Bearbeiten | Quelltext bearbeiten]

Ähnliche Projekte:

Verwandtes Projekt von dem man lernen kann:

Brauchbarer Schaltplan zur Strommessung über Shunt: (Seite 5)

Mathe:

Xmega zeug:


weblabctrl