add mppt agaritme
This commit is contained in:
		
							parent
							
								
									57c874dfef
								
							
						
					
					
						commit
						8f25d91738
					
				| @ -2,13 +2,12 @@ | |||||||
| 
 | 
 | ||||||
| ## vrij - 22 jan | ## vrij - 22 jan | ||||||
| 
 | 
 | ||||||
| [ ] deze planning maken | [x] deze planning maken | ||||||
| [ ] mppt algaritme programeren | [ ] mppt algaritme programeren | ||||||
| [ ] code controleeren | [ ] code controleeren | ||||||
| 
 | 
 | ||||||
| ## weekend - 23-24 jan | ## weekend - 23-24 jan | ||||||
| 
 | 
 | ||||||
| [ ] msp software maken |  | ||||||
| [ ] ADC aanluiten | [ ] ADC aanluiten | ||||||
| 
 | 
 | ||||||
| [ ] test voor mppt | [ ] test voor mppt | ||||||
|  | |||||||
							
								
								
									
										78
									
								
								src/MPPT.c
									
									
									
									
									
								
							
							
						
						
									
										78
									
								
								src/MPPT.c
									
									
									
									
									
								
							| @ -63,15 +63,77 @@ void mppt_setPWM(double d){ | |||||||
| void mppt_start(){ | void mppt_start(){ | ||||||
|   PWM_start(mppt_pwm); |   PWM_start(mppt_pwm); | ||||||
| 
 | 
 | ||||||
|   //TODO: implement the mppt algaritme
 |   //TODO: addjust stap size so that big stap is a bit less than 5 wattand small stap is less than .5 watt
 | ||||||
|   double duty = 0, step = 0.01; |   double duty = 0, bigStap = 0.05, smallStap = 0.002; | ||||||
|   while(1){ //(Status == WORKING){
 |   enum mppt_state { | ||||||
|  |     bigStaps, | ||||||
|  |     smallStaps | ||||||
|  |   } state; | ||||||
|  |   int16_t vermogenDiff, lastVermogen; | ||||||
|  |   while(1){ | ||||||
|     mppt_setPWM(duty); |     mppt_setPWM(duty); | ||||||
|     duty += step; |     if(state == bigStaps){ | ||||||
|     if(duty > 1 || duty < 0){ |       while(1){ | ||||||
|       step = -step; |         // set stap
 | ||||||
|       duty += step; |         if(mppt_vermogen - *(mppt_setpointP) > 0){ | ||||||
|  |           duty += bigStap; | ||||||
|  |         }else{ | ||||||
|  |           duty -= bigStap; | ||||||
|  |         } | ||||||
|  |         mppt_setPWM(duty); | ||||||
|  | 
 | ||||||
|  |         // wait for change to happen
 | ||||||
|  |         //TODO: finetune delay
 | ||||||
|  |         usleep(10E3); | ||||||
|  | 
 | ||||||
|  |         // mesure power
 | ||||||
|  |         mppt_meetVermogen(); | ||||||
|  | 
 | ||||||
|  |         // check the dirrerance width the setpoint
 | ||||||
|  |         vermogenDiff = mppt_vermogen - *(mppt_setpointP); | ||||||
|  |         if(vermogenDiff < 0) // get absolute value
 | ||||||
|  |           vermogenDiff  = -vermogenDiff; | ||||||
|  | 
 | ||||||
|  |         if(vermogenDiff < 50 || mppt_vermogen < lastVermogen){ | ||||||
|  |           state = smallStaps; | ||||||
|  |           break; | ||||||
|  |         } | ||||||
|  |       } | ||||||
|  |     }else{ | ||||||
|  |       while(1){ | ||||||
|  |         // set stap
 | ||||||
|  |         if(mppt_vermogen - *(mppt_setpointP) > 0){ | ||||||
|  |           duty += smallStap; | ||||||
|  |         }else{ | ||||||
|  |           duty -= smallStap; | ||||||
|  |         } | ||||||
|  |         mppt_setPWM(duty); | ||||||
|  | 
 | ||||||
|  |         // wait for change to happen
 | ||||||
|  |         //TODO: finetune delay
 | ||||||
|  |         usleep(10E3); | ||||||
|  | 
 | ||||||
|  |         // mesure power
 | ||||||
|  |         mppt_meetVermogen(); | ||||||
|  | 
 | ||||||
|  |         // check the dirrerance width the setpoint
 | ||||||
|  |         vermogenDiff = mppt_vermogen - *(mppt_setpointP); | ||||||
|  |         if(vermogenDiff < 0) // get absolute value
 | ||||||
|  |           vermogenDiff  = -vermogenDiff; | ||||||
|  | 
 | ||||||
|  |         if(vermogenDiff > 5){ | ||||||
|  |           state = bigStaps; | ||||||
|  |           break; | ||||||
|  |         } | ||||||
|  | 
 | ||||||
|  |         usleep(100E3); | ||||||
|  |         mppt_meetVermogen(); | ||||||
|  |       } | ||||||
|     } |     } | ||||||
|     usleep(100); |  | ||||||
|   } |   } | ||||||
| } | } | ||||||
|  | 
 | ||||||
|  | void mppt_deinit(){ | ||||||
|  |   mppt_setPWM(0); | ||||||
|  |   PWM_stop(mppt_pwm); | ||||||
|  | } | ||||||
|  | |||||||
| @ -5,6 +5,7 @@ | |||||||
| 
 | 
 | ||||||
| void mppt_init(); | void mppt_init(); | ||||||
| void mppt_start(); | void mppt_start(); | ||||||
|  | void mppt_deinit(); | ||||||
| void mppt_setSetpointOverride(uint8_t vermogen); | void mppt_setSetpointOverride(uint8_t vermogen); | ||||||
| void mppt_setSetpoint(uint8_t vermogen); | void mppt_setSetpoint(uint8_t vermogen); | ||||||
| 
 | 
 | ||||||
|  | |||||||
| @ -55,6 +55,7 @@ void stopSys(){ | |||||||
|   pthread_exit(treads.noodstop); |   pthread_exit(treads.noodstop); | ||||||
|   pthread_exit(treads.mppt); |   pthread_exit(treads.mppt); | ||||||
| 
 | 
 | ||||||
|  |   treads.mppt = createSimplePTread(1, &mppt_deinit); | ||||||
|   treads.noodstop = createSimplePTread(3, &noodstop_deinit); |   treads.noodstop = createSimplePTread(3, &noodstop_deinit); | ||||||
| } | } | ||||||
| 
 | 
 | ||||||
|  | |||||||
| @ -51,7 +51,7 @@ uint8_t noodstop_getTempratuur(){ | |||||||
| } | } | ||||||
| 
 | 
 | ||||||
| uint8_t noodstop_readTemp(uint8_t ch){ | uint8_t noodstop_readTemp(uint8_t ch){ | ||||||
|   uint16_t v = ADC_read(&SPI_ADC); |   uint16_t v = ADC_read(ch); | ||||||
| 
 | 
 | ||||||
|   //TODO: add real fomula
 |   //TODO: add real fomula
 | ||||||
| 
 | 
 | ||||||
|  | |||||||
		Loading…
	
	
			
			x
			
			
		
	
		Reference in New Issue
	
	Block a user