This commit is contained in:
Mats van Reenen
2021-01-27 15:54:05 +01:00
parent c5fd01c8f2
commit 24e3b1e44a
7 changed files with 54 additions and 43 deletions

View File

@@ -4,6 +4,7 @@
#include "debug.h"
#include "global.h"
#include "MPPT.h"
#include "noodstop.h"
#include "spi.h"
#define PWM_MIN 0.001
@@ -30,11 +31,10 @@ void mppt_meetVermogen(){
uint16_t curent = ADC_read(ADC_CH3);
//TODO: add real formula for spanning and curent
mppt_vermogen = (spanning * curent) / 100;
noodstop_vermogen(mppt_vermogen);
}
void mppt_init(){
PWM_init();
PWM_Params params;
PWM_Params_init(&params);
params.dutyUnits = PWM_DUTY_FRACTION;

View File

@@ -99,9 +99,9 @@ void * mainTask(void *arg){
break;
case OVERHEAD:
case OVERLOAD:
case OVERSPEED:
case EXT_NOODSTOP:
stopSys();
case OVERSPEED: // don't stop on overload first wait for speed to go down
return;
}
lastState = Status;

View File

@@ -35,14 +35,25 @@ void noodstop_snelhied(uint16_t snelhied){
// controleer snelheid
if(snelhied > nood_maxwaardes.maxSnelheid){
// PANIC!!
mppt_setSetpointOverride(nood_maxwaardes.maxVermogen);
mppt_setSetpointOverride(nood_maxwaardes.maxVermogen); // zet vemogen max om de de snelheid te beperken
noodstop_activeerNoodstop(); // geef noodstop aan andere units
Status = OVERSPEED;
// Wacht 0.5 seconde
usleep(500E3);
// activeer noostop
Status = OVERSPEED;
noodstop_activeerNoodstop();
// zet het systeem uit
mppt_setSetpointOverride(0);
}
}
void noodstop_vermogen(uint8_t vermogen){
// controleer vermogen
if(snelhied > nood_maxwaardes.maxVermogen){
// PANIC!!
mppt_setSetpointOverride(0); // zet vemogen max om de de snelheid te beperken
noodstop_activeerNoodstop(); // geef noodstop aan andere units
Status = OVERLOAD;
}
}
@@ -101,14 +112,11 @@ void noodstop_init(){
memset(&nood_maxwaardes, 0xff, sizeof(nood_maxwaardes)); // set all max value to invalid ones
// controleer max waardes
while(1){
if(
nood_maxwaardes.maxSnelheid <= 60000
&& nood_maxwaardes.maxTempratuur >= 60 && nood_maxwaardes.maxTempratuur <= 120
&& nood_maxwaardes.maxVermogen <= 250
){
break; // stop the loop, values are valid
}
while(
nood_maxwaardes.maxSnelheid > 60000
|| nood_maxwaardes.maxTempratuur < 60 || nood_maxwaardes.maxTempratuur > 120
|| nood_maxwaardes.maxVermogen > 250)
{
usleep(100E3);
}

View File

@@ -3,15 +3,16 @@
#include <stdint.h>
void noodstop_setMaxVermogen(uint8_t value);
void noodstop_setMaxSnelheid(uint16_t value);
void noodstop_setMaxTemptratuur(uint8_t value);
void noodstop_snelhied(uint16_t snelhied);
void noodstop_init();
void noodstop_start();
uint8_t noodstop_getTempratuur();
void noodstop_activeerNoodstop();
void noodstop_setMaxVermogen(uint8_t value); // set max vermogen
void noodstop_setMaxSnelheid(uint16_t value); // set max snelheid
void noodstop_setMaxTemptratuur(uint8_t value); // set max tempratuur
void noodstop_snelhied(uint16_t snelhied); // geef snelhied door
void noodstop_vermogen(uint8_t vermogen); // geef vermogen door
void noodstop_init(); // initaliseer noodstop
void noodstop_start(); // start de noodstop logica
uint8_t noodstop_getTempratuur(); // verkrijg temptartuur
void noodstop_activeerNoodstop(); // zet de noodstop pin laag
#endif