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

Last change on this file since 12 was 6, checked in by f.jahn, 8 months ago
File size: 2.8 KB
RevLine 
[6]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.