Compare commits

...

2 Commits

Author SHA1 Message Date
9b2e729683 Merge remote-tracking branch 'origin/combine-all' 2024-05-03 19:45:53 +02:00
c5521a08fa Add sources 2024-05-03 17:16:29 +02:00
6 changed files with 89 additions and 26 deletions

View File

@ -19,6 +19,10 @@ extern "C" {
#include <avr/eeprom.h> #include <avr/eeprom.h>
#include <stdbool.h> #include <stdbool.h>
// The code is inspired by "EEPROM handling" form avr-libc
// web link: https://www.nongnu.org/avr-libc/user-manual/group__avr__eeprom.html
// Struct for information on the controller. // Struct for information on the controller.
typedef struct { typedef struct {
uint16_t ms_fanspeed_sample_rate; uint16_t ms_fanspeed_sample_rate;

View File

@ -29,12 +29,13 @@ extern "C" {
* and inspiration form practice 6 for TCA0 setup * and inspiration form practice 6 for TCA0 setup
*/ */
// Fan history variables
extern volatile uint16_t fan1_history[512]; // Fan history variables
extern volatile uint16_t fan2_history[512]; extern volatile uint16_t fan1_history[512];
// Fan history index variable extern volatile uint16_t fan2_history[512];
extern volatile uint16_t fan1_history_index; // Fan history index variable
extern volatile uint16_t fan2_history_index; extern volatile uint16_t fan1_history_index;
extern volatile uint16_t fan2_history_index;
// INITALICE TIMER COUNTER // INITALICE TIMER COUNTER
void init_TCA0(); void init_TCA0();

View File

@ -23,7 +23,9 @@ extern "C" {
#define T_0 298.15 #define T_0 298.15
#define B 3950 #define B 3950
#define R_1 1000 #define R_1 1000
#define ledpin PIN3_bm
// Takes inn messured value
#define ALERT_PIN PIN3_bm #define ALERT_PIN PIN3_bm
// Takes inn messured value // Takes inn messured value

View File

@ -5,6 +5,9 @@ void init_alarm_gpio(){
PORTB.DIRSET = ALERT_PIN; PORTB.DIRSET = ALERT_PIN;
} }
// The code is inspired by "Arduino thermistor guide" by valtentina Vogelman, 1 november 2023
// https://www.build-electronic-circuits.com/arduino-thermistor/
float calculate_thermistor_temp(float thermistor_voltage){ float calculate_thermistor_temp(float thermistor_voltage){
float R_thermistor; float R_thermistor;
float V_1; float V_1;

View File

@ -0,0 +1,52 @@
#include "themistor-temp.h"
void init_led(){
PORTB.DIRSET = ledpin;
}
https://www.build-electronic-circuits.com/arduino-thermistor/
float calculate_thermistor_temp(float thermistor_voltage){
float R_thermistor;
float V_1;
float ln;
float T_thermistor;
float V_thermistor;
#define V_TOT 5
// Calculate Voltage over thermistor
V_thermistor = (V_TOT/1024)*thermistor_voltage;
// Voltage accross R_1
V_1 = V_TOT - V_thermistor;
// Calculate Thermistor resistanse
R_thermistor = (V_thermistor)/ (V_1 / R_1);
// Steinhart-Harts formula
ln = log(R_thermistor/R_T0);
T_thermistor = (1/ ((ln/B) + (1/T_0)));
// Temperatur in celcius
T_thermistor -= 273.15;
return T_thermistor;
}
// returns error message if the messured thermistor temp is higher than
// Choosen max_temp
bool voltage_threshold_bool(float thermistor_temp, uint8_t max_temp){
// Return true if temp is higher then max value
return (thermistor_temp >= max_temp);
}
//print if the maximum threshold is exceeded.
void alert_voltage_threshold_exceeded(bool voltage_threshold_bool){
if (voltage_threshold_bool){
printf("Error: maximum temperature exceeded");
PORTB.OUTSET = ledpin;
} else{
PORTB.OUTCLR = ledpin;
}
}

View File

@ -17,6 +17,7 @@ void ADC0_init(void) {
VREF.ADC0REF = VREF_REFSEL_VDD_gc; /* Internal reference */ VREF.ADC0REF = VREF_REFSEL_VDD_gc; /* Internal reference */
ADC0.CTRLA = ADC_ENABLE_bm /* ADC Enable: enabled */ ADC0.CTRLA = ADC_ENABLE_bm /* ADC Enable: enabled */
| ADC_RESSEL_10BIT_gc; /* 10-bit mode */ | ADC_RESSEL_10BIT_gc; /* 10-bit mode */
/* Select ADC channel */ /* Select ADC channel */
ADC0.MUXPOS = ADC_MUXPOS_AIN6_gc; ADC0.MUXPOS = ADC_MUXPOS_AIN6_gc;
} }