again some bug fixes
This commit is contained in:
		
							parent
							
								
									ff4df01430
								
							
						
					
					
						commit
						4307102b72
					
				
							
								
								
									
										53
									
								
								src/MPPT.c
									
									
									
									
									
								
							
							
						
						
									
										53
									
								
								src/MPPT.c
									
									
									
									
									
								
							| @ -1,12 +1,23 @@ | |||||||
|  | #include <stdint.h> | ||||||
| #include <ti/drivers/PWM.h> | #include <ti/drivers/PWM.h> | ||||||
| 
 | 
 | ||||||
| #include "global.h" | #include "global.h" | ||||||
| #include "MPPT.h" | #include "MPPT.h" | ||||||
| 
 | 
 | ||||||
| #define US_TO_COUNT(n) n*1000 | #define PWM_MIN 0.001 | ||||||
|  | #define PWM_MAX 0.9 | ||||||
| 
 | 
 | ||||||
| void mppt_vermogenOverride(uint8_t vermogen){ | uint8_t mppt_setpoint, mppt_setpointOverrite; | ||||||
|   return; | uint8_t *mppt_setpointP; | ||||||
|  | 
 | ||||||
|  | PWM_Handle mppt_pwm; | ||||||
|  | 
 | ||||||
|  | void mppt_setSetpointOverride(uint8_t vermogen){ | ||||||
|  |   mppt_setpointOverrite = vermogen; | ||||||
|  |   mppt_setpointP = &mppt_setpointOverrite; | ||||||
|  | } | ||||||
|  | void mppt_setSetpoint(uint8_t vermogen){ | ||||||
|  |   mppt_setpoint = vermogen; | ||||||
| } | } | ||||||
| 
 | 
 | ||||||
| void mppt_init(){ | void mppt_init(){ | ||||||
| @ -14,12 +25,40 @@ void mppt_init(){ | |||||||
| 
 | 
 | ||||||
|   PWM_Params params; |   PWM_Params params; | ||||||
|   PWM_Params_init(¶ms); |   PWM_Params_init(¶ms); | ||||||
|   params.dutyUnits = PWM_PERIOD_COUNTS; |   params.dutyUnits = PWM_DUTY_FRACTION; | ||||||
|   params.dutyValue = US_TO_COUNT(10); |   params.dutyValue = 0; | ||||||
|   params.periodUnits = PWM_PERIOD_US; |   params.periodUnits = PWM_PERIOD_US; | ||||||
|   params.periodValue = 0; |   params.periodValue = 0; | ||||||
|   PWM_Handle pwm = PWM_open(CONFIG_PWM_0, ¶ms); |   mppt_pwm = PWM_open(CONFIG_PWM_0, ¶ms); | ||||||
|   if (pwm == NULL) { |   if (mppt_pwm == NULL) { | ||||||
|     while (1); |     while (1); | ||||||
|   } |   } | ||||||
|  | 
 | ||||||
|  |   mppt_setpointP = &mppt_setpoint; | ||||||
|  | } | ||||||
|  | 
 | ||||||
|  | 
 | ||||||
|  | void mppt_setPWM(double d){ | ||||||
|  |   if(d < PWM_MIN){ | ||||||
|  |     PWM_setDuty(mppt_pwm, 0); | ||||||
|  |     return; | ||||||
|  |   } | ||||||
|  |   if(d > PWM_MAX){ | ||||||
|  |     d = 0.9; | ||||||
|  |   } | ||||||
|  |   PWM_setDuty(mppt_pwm, (uint32_t) ((double) PWM_DUTY_FRACTION_MAX * d)); | ||||||
|  | } | ||||||
|  | 
 | ||||||
|  | void mppt_start(){ | ||||||
|  |   PWM_start(mppt_pwm); | ||||||
|  | 
 | ||||||
|  |   double duty = 0, step = 0.01; | ||||||
|  |   while(Status == WORKING){ | ||||||
|  |     mppt_setPWM(duty); | ||||||
|  |     duty += step; | ||||||
|  |     if(duty > 1){ | ||||||
|  |       step = -step; | ||||||
|  |       duty += step; | ||||||
|  |     } | ||||||
|  |   } | ||||||
| } | } | ||||||
| @ -4,6 +4,8 @@ | |||||||
| #include <stdint.h> | #include <stdint.h> | ||||||
| 
 | 
 | ||||||
| void mppt_init(); | void mppt_init(); | ||||||
| void mppt_vermogenOverride(uint8_t vermogen); | void mppt_start(); | ||||||
|  | void mppt_setSetpointOverride(uint8_t vermogen); | ||||||
|  | void mppt_setSetpoint(uint8_t vermogen); | ||||||
| 
 | 
 | ||||||
| #endif | #endif | ||||||
| @ -70,20 +70,16 @@ void comm_spi(){ | |||||||
|   	// read the data out the recive buffer
 |   	// read the data out the recive buffer
 | ||||||
|     switch (ReciveBuffer[0]){ |     switch (ReciveBuffer[0]){ | ||||||
|       case SPIPARM_maxVermogen: |       case SPIPARM_maxVermogen: | ||||||
|         uint8_t maxVermogen = ReciveBuffer[2]; |         noodstop_setMaxVermogen(ReciveBuffer[2]); | ||||||
|         noodstop_setMaxVermogen(maxVermogen); |  | ||||||
|         break; |         break; | ||||||
|       case SPIPARM_maxSnelheid: |       case SPIPARM_maxSnelheid: | ||||||
|         uint16_t maxSnelheid = ReciveBuffer[2] + ReciveBuffer[3]*0x100; // convert littelendien
 |         noodstop_setMaxSnelheid(ReciveBuffer[2] + ReciveBuffer[3]*0x100); | ||||||
|         noodstop_setMaxSnelheid(maxSnelheid); |  | ||||||
|         break; |         break; | ||||||
|       case SPIPARM_maxTempratuur: |       case SPIPARM_maxTempratuur: | ||||||
|         uint8_t maxTemptratuur = &ReciveBuffer[2]; |         noodstop_setMaxTemptratuur(ReciveBuffer[2]); | ||||||
|         noodstop_setMaxTemptratuur(maxTemptratuur); |  | ||||||
|         break; |         break; | ||||||
|       case SPIPARM_setpoint: |       case SPIPARM_setpoint: | ||||||
|         uint8_t setpoint = &ReciveBuffer[2]; |         mppt_setSsetpoint(ReciveBuffer[2]); | ||||||
|         mppt_setpoint(setpoint); |  | ||||||
|         break; |         break; | ||||||
|     } |     } | ||||||
| 
 | 
 | ||||||
| @ -93,4 +89,5 @@ void comm_spi(){ | |||||||
|       TransmitBuffer[0] = 0; |       TransmitBuffer[0] = 0; | ||||||
| 
 | 
 | ||||||
|     usleep(5000); |     usleep(5000); | ||||||
|  |   } | ||||||
| } | } | ||||||
|  | |||||||
| @ -36,7 +36,7 @@ void noodstop_snelhied(uint16_t snelhied){ | |||||||
|   // controleer snelheid
 |   // controleer snelheid
 | ||||||
|   if(snelhied > nood_maxwaardes.maxSnelheid){ |   if(snelhied > nood_maxwaardes.maxSnelheid){ | ||||||
|     // PANIC!!
 |     // PANIC!!
 | ||||||
|     mppt_vermogenOverride(nood_maxwaardes.maxVermogen); |     mppt_setSetpointOverride(nood_maxwaardes.maxVermogen); | ||||||
|      |      | ||||||
|     // Wacht 0.5 seconde
 |     // Wacht 0.5 seconde
 | ||||||
|     usleep(500E3); |     usleep(500E3); | ||||||
|  | |||||||
		Loading…
	
	
			
			x
			
			
		
	
		Reference in New Issue
	
	Block a user