source: trunk/firmware/Src/fast_current.c @ 6

Last change on this file since 6 was 6, checked in by f.jahn, 3 months ago
File size: 2.8 KB
Line 
1/******************************************************************************
2*
3* @file    fast_current.c
4* @author  ECS, Falko Jahn
5* @version V1.0.0
6* @date    2022-01-16
7* @brief       
8*
9******************************************************************************/
10
11//      --- INCLUDES -----------------------------------------------------------------
12#include "fast_current.h"
13#include "main.h"
14#include "sysdata.h"
15
16//      --- EXTERNE VARIABLEN --------------------------------------------------------
17
18//      --- LOKALE DEFINES - bitte hier dokumentieren --------------------------------
19//#define FAST_CURRENT_FILTER  2
20
21
22  // Formel zur Berechnen der Eingangsspannung
23  // Da ein Spannungteiler mit Offset genutzt wird muss die gemessene Spannung korrigiert werden
24  // R14 bis R19 sind die Wiederstände auf der Platine die Formel findet sich unter folgendem Link:
25  // https://www.mikrocontroller.net/articles/Spannungsteiler#Spannungsteiler_mit_Offset.2C_passiv
26  // Widerstände auf der Platine sind um den Faktor 1000 größer
27#define I_SENSE_GAIN    40.0
28
29
30  #if (DEVICETYPE == 500)
31    #define SHUNT_RESISTOR      0.000125       
32  #elif (DEVICETYPE == 250)
33    #define SHUNT_RESISTOR      0.000250       
34  #elif (DEVICETYPE == 125)
35    #define SHUNT_RESISTOR      0.000500       
36  #else
37  #error No valid device type
38  #endif
39               
40
41
42
43
44//      --- LOKALE TYPE DEFS - bitte hier dokumentieren-------------------------------
45
46//      --- DEFINITIONEN GLOBALER VARIABLEN - Bitte in Header dokumentieren ----------
47
48//      --- LOKALE VARIABLEN - bitte hier dokumentieren ------------------------------
49
50//      --- LOKALE FUNKTIONS PROTOTYPEN ----------------------------------------------
51
52//      --- LOKALE FUNKTIONEN - bitte hier dokumentieren -----------------------------
53
54//      --- GLOBALE FUNKTIONEN - bitte in Header dokumentieren------------------------
55
56
57void FAST_CURRENT_Exec(uint32_t newvalP, uint32_t newvalM )
58{
59  static int measCounter;
60  static unsigned long avgsumP = 0;
61  uint32_t avgvalP;
62
63  if (measCounter < INT32_MAX) measCounter++;
64
65
66  // Filterlängen in 2er-Potenzen --> Compiler optimiert
67 // avgsumP -= avgsumP / FAST_CURRENT_FILTER;
68 // avgsumP += newvalP;
69//  avgvalP = avgsumP / FAST_CURRENT_FILTER;
70
71//  static unsigned long avgsumM = 0;
72//  uint32_t avgvalM;
73  // Filterlängen in 2er-Potenzen --> Compiler optimiert
74//  avgsumM -= avgsumM / FAST_CURRENT_FILTER;
75//  avgsumM += newvalM;
76//  avgvalM = avgsumM / FAST_CURRENT_FILTER;
77
78
79  //Berechne Differenzspannung am ADC Eingnag
80  double diff;
81  diff = (int32_t) newvalP - (int32_t) newvalM; 
82  diff = (diff * sys_data.s.values.realVdd)  / 655350.0;
83
84  //Umrechung auf Strom
85  sys_data.s.values.fast_current = (diff / I_SENSE_GAIN) /  SHUNT_RESISTOR;
86
87 
88}
89
90/*************************** End of file ****************************/
Note: See TracBrowser for help on using the repository browser.