Changeset 23 for trunk/firmware_v2/SES/src/chip_temperature.c
- Timestamp:
- Aug 21, 2025, 3:14:57 PM (6 days ago)
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
trunk/firmware_v2/SES/src/chip_temperature.c
r17 r23 24 24 // --- LOKALE VARIABLEN - bitte hier dokumentieren ------------------------------ 25 25 uint32_t calTemperatureSensor30Value; // Kalibrierungswert für den Temperatursensor auf dem STM32G0 (Werksmäßig im SCB Bereich gespeichert wird beim Programmstart ausgelesen) 26 uint32_t calTemperatureSensor130Value; // Kalibrierungswert für den Temperatursensor auf dem STM32G0 (Werksmäßig im SCB Bereich gespeichert wird beim Programmstart ausgelesen) 27 uint32_t calTemperatureSensorDiff; // Differenz calTemperatureSensor130Value und calTemperatureSensor30Value wird für die Kalibrierung des internen Temperatursensors bentigt 28 // Daten Temperaturanzeige µProzessor 26 // Daten Temperaturanzeige µProzessor 29 27 30 28 // --- LOKALE FUNKTIONS PROTOTYPEN ---------------------------------------------- 31 29 32 30 void calc_temp_compensation(void); 33 int16_t y(int16_t x1, int16_t y1, int16_t x2, int16_t y2, int16_t x); 31 34 32 35 33 // --- LOKALE FUNKTIONEN - bitte hier dokumentieren ----------------------------- … … 52 50 calibrationData30 = * pCalibrationData; 53 51 54 55 52 //Berechnung Spannung in mV bei CAL Punk 30°C 56 53 //Kalbibrierung wurde mit 12 Bit und 3000mV Vref durchgeführt 57 54 calibrationData30 = calibrationData30 / 4096; 58 55 calTemperatureSensor30Value = calibrationData30 * 3000 ; // jetzt haben wir die Kalibrierungsspannung in mVolt bei 30°C; 59 60 //pCalibrationData = (uint16_t *)TEMPSENSOR_CAL2_ADDR;61 //calibrationData130 = * pCalibrationData;62 calibrationData130 = calibrationData30 + 343;63 64 //Berechnung Spannung in mV bei CAL Punk 130°C65 //Kalbibrierung wurde mit 12 Bit und 3000mV Vref durchgeführt66 calibrationData130 = calibrationData130 / 4096;67 calTemperatureSensor130Value = calibrationData130 * 3000; // jetzt haben wir die Kalibrierungsspannung in mV bei 130°C;68 69 // Spannungsdifferenz bei 100 Kelvin Temperatureunterschied70 calTemperatureSensorDiff = (calTemperatureSensor130Value - calTemperatureSensor30Value);71 56 } 72 57 73 voidCHIP_TEMPERATURE_Exec(uint32_t chiptemperature)58 int CHIP_TEMPERATURE_Exec(uint32_t chiptemperature) 74 59 { 75 int32_t voltage;60 int32_t temp; 76 61 //Aktuelle Spannung am Temp Sensor 77 voltage= (3300 * (uint32_t)chiptemperature) / 65536;62 temp = (3300 * (uint32_t)chiptemperature) / 65536; 78 63 79 64 80 voltage = voltage- (calTemperatureSensor30Value);65 temp = temp - (calTemperatureSensor30Value); 81 66 82 voltage = voltage/ 2.530; //2,53mV/°C83 voltage = voltage+ 25; //30000 da Erste Kalibrierpunkt bei 25°C --> 2584 67 temp = temp / 2.530; //2,53mV/°C 68 temp = temp + 25; //30000 da Erste Kalibrierpunkt bei 25°C --> 25 69 return temp; 85 70 //Durch 10 teilen, damit es in 16 Bit signed modbus register passt 86 87 88 89 71 } 90 72
Note: See TracChangeset
for help on using the changeset viewer.