add mppt test code
This commit is contained in:
parent
3ff093656e
commit
3682c12d5e
26
tests/mpptTest/README.md
Normal file
26
tests/mpptTest/README.md
Normal file
@ -0,0 +1,26 @@
|
|||||||
|
# MPPT test
|
||||||
|
|
||||||
|
De MPPT test wordt grootendeels handmatig uitgevoerdt. Er wordt een arduino gebruikt om de initalisatie te starten.
|
||||||
|
|
||||||
|
## setup
|
||||||
|
|
||||||
|
### CC3220S
|
||||||
|
|
||||||
|
In debugmode met de orginaile code.
|
||||||
|
|
||||||
|
#### breakboints
|
||||||
|
|
||||||
|
* mppt.c: mppt_start(): last usleep
|
||||||
|
|
||||||
|
### Arduino
|
||||||
|
|
||||||
|
De arduino wordt gebuikt voor het simuleeren van de volgende signaalen:
|
||||||
|
|
||||||
|
* start initialisatie
|
||||||
|
* start
|
||||||
|
* SPI (direct naar de CC3220S ipv met I2C via de MSP)
|
||||||
|
|
||||||
|
### dingen die gemeten worden
|
||||||
|
|
||||||
|
* vermogen uit de motor
|
||||||
|
* PWM signaal
|
||||||
139
tests/mpptTest/mpptTest.ino
Normal file
139
tests/mpptTest/mpptTest.ino
Normal file
@ -0,0 +1,139 @@
|
|||||||
|
#include <Wire.h>
|
||||||
|
#include <SPI.h>
|
||||||
|
#include <stdint.h>
|
||||||
|
|
||||||
|
#define I2C Wire
|
||||||
|
|
||||||
|
#define startInit_PIN 9
|
||||||
|
#define startSys_PIN 8
|
||||||
|
#define ready_PIN 7
|
||||||
|
#define noodstop_PIN 6
|
||||||
|
|
||||||
|
#define CSK_PIN 13
|
||||||
|
#define MISO_PIN 12
|
||||||
|
#define MOSI_PIN 11
|
||||||
|
#define CSMSP_PIN 10
|
||||||
|
|
||||||
|
typedef enum {
|
||||||
|
SPIPARM_maxVermogen,
|
||||||
|
SPIPARM_maxSnelheid,
|
||||||
|
SPIPARM_maxTemperatuur,
|
||||||
|
SPIPARM_setpoint,
|
||||||
|
SPIPARM_vermogen,
|
||||||
|
SPIPARM_snelheid,
|
||||||
|
SPIPARM_temperatuur,
|
||||||
|
SPIPARM_count
|
||||||
|
} SPI_Register_t;
|
||||||
|
uint8_t SPI_RxBuffer[4];
|
||||||
|
uint8_t * SPI_TxBuffer;
|
||||||
|
uint8_t SPI_Params[SPIPARM_count][2];
|
||||||
|
uint8_t pos;
|
||||||
|
|
||||||
|
void setSetpoint(uint8_t v){
|
||||||
|
SPI_Params[SPIPARM_setpoint][0] = v;
|
||||||
|
}
|
||||||
|
void setMaxVermogen(uint8_t v){
|
||||||
|
SPI_Params[SPIPARM_maxVermogen][0] = v;
|
||||||
|
}
|
||||||
|
void setMaxTemperatuur(uint8_t v){
|
||||||
|
SPI_Params[SPIPARM_maxTemperatuur][0] = v;
|
||||||
|
}
|
||||||
|
void setMaxSnelheid(uint16_t v){
|
||||||
|
SPI_Params[SPIPARM_maxSnelheid][0] = v & 0x0FF;
|
||||||
|
SPI_Params[SPIPARM_maxSnelheid][1] = v > 8;
|
||||||
|
}
|
||||||
|
|
||||||
|
void setup(){
|
||||||
|
Serial.begin(115200);
|
||||||
|
Serial.println("The Fantastic Five - Belasting regelaar - MPPT Test");
|
||||||
|
Serial.println("Init Arduino");
|
||||||
|
|
||||||
|
// init GPIO
|
||||||
|
pinMode(noodstop_PIN, INPUT);
|
||||||
|
digitalWrite(startInit_PIN, LOW);
|
||||||
|
pinMode(startInit_PIN, OUTPUT);
|
||||||
|
digitalWrite(startSys_PIN, LOW);
|
||||||
|
pinMode(startSys_PIN, OUTPUT);
|
||||||
|
|
||||||
|
// init I2C
|
||||||
|
I2C.begin();
|
||||||
|
|
||||||
|
// init SPI
|
||||||
|
pinMode(MISO_PIN, OUTPUT);
|
||||||
|
SPCR |= _BV(SPE); // set SPI in slave mode
|
||||||
|
SPI.attachInterrupt();
|
||||||
|
|
||||||
|
Serial.println("Init CC3220S");
|
||||||
|
|
||||||
|
// set all SPI params to 0
|
||||||
|
memset(&SPI_Params[0][0], 0x00, sizeof(SPI_Params));
|
||||||
|
|
||||||
|
// set max limits
|
||||||
|
setMaxVermogen(250); // deci watts; 0 to 250
|
||||||
|
setMaxTemperatuur(120); // deg c; 60 to 120
|
||||||
|
setMaxSnelheid(60000); // RPM; 0 to 60000
|
||||||
|
|
||||||
|
// set inital setpoint
|
||||||
|
setSetpoint(50); // deci watt; 0 to 250
|
||||||
|
|
||||||
|
// trigger the initalisation
|
||||||
|
digitalWrite(startInit_PIN, HIGH);
|
||||||
|
|
||||||
|
// sync paramaters until the CC3220S is ready
|
||||||
|
uint16_t timer = millis();
|
||||||
|
while(!digitalRead(ready_PIN)){
|
||||||
|
spiRun();
|
||||||
|
}
|
||||||
|
|
||||||
|
Serial.println("Start CC3220S");
|
||||||
|
|
||||||
|
// start the system
|
||||||
|
digitalWrite(startSys_PIN, 1);
|
||||||
|
}
|
||||||
|
|
||||||
|
ISR(SPI_STC_vect){
|
||||||
|
SPI_RxBuffer[pos] = SPDR;
|
||||||
|
if(pos == 0)
|
||||||
|
SPDR = *(SPI_TxBuffer);
|
||||||
|
else
|
||||||
|
SPDR = *(SPI_TxBuffer + 1);
|
||||||
|
pos--;
|
||||||
|
}
|
||||||
|
|
||||||
|
void spiRun(){
|
||||||
|
while(pos == 3)
|
||||||
|
continue;
|
||||||
|
|
||||||
|
SPI_TxBuffer = &SPI_Params[SPI_RxBuffer[3]][0];
|
||||||
|
|
||||||
|
while(!digitalRead(CSMSP_PIN))
|
||||||
|
continue;
|
||||||
|
|
||||||
|
pos = 3;
|
||||||
|
}
|
||||||
|
|
||||||
|
void loop(){
|
||||||
|
spiRun();
|
||||||
|
|
||||||
|
switch(SPI_RxBuffer[3]){
|
||||||
|
case SPIPARM_vermogen:
|
||||||
|
Serial.print("vermogen: ");
|
||||||
|
Serial.print(SPI_RxBuffer[1], DEC);
|
||||||
|
Serial.println(" deci watt");
|
||||||
|
if(SPI_RxBuffer[1] > 3 == SPI_Params[SPIPARM_setpoint][0] > 3){
|
||||||
|
Serial.println("reached setpoint :)");
|
||||||
|
setSetpoint((SPI_Params[SPIPARM_setpoint][0] == 50) ? 100 : 50);
|
||||||
|
}
|
||||||
|
break;
|
||||||
|
case SPIPARM_snelheid:
|
||||||
|
Serial.print("snelheid: ");
|
||||||
|
Serial.print(SPI_RxBuffer[1] + SPI_RxBuffer[0]*0x100, DEC);
|
||||||
|
Serial.println(" RPM");
|
||||||
|
break;
|
||||||
|
case SPIPARM_temperatuur:
|
||||||
|
Serial.print("temperatuur: ");
|
||||||
|
Serial.print(SPI_RxBuffer[1], DEC);
|
||||||
|
Serial.println(" dec c");
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
}
|
||||||
26
tests/mpptTest/pinout.md
Normal file
26
tests/mpptTest/pinout.md
Normal file
@ -0,0 +1,26 @@
|
|||||||
|
# pinout Arduino
|
||||||
|
|
||||||
|
## GPIO
|
||||||
|
|
||||||
|
| lable | pin |
|
||||||
|
|------------|----:|
|
||||||
|
| start init | 9 |
|
||||||
|
| start sys | 8 |
|
||||||
|
| ready | 7 |
|
||||||
|
| noodstop | 6 |
|
||||||
|
|
||||||
|
## I2C
|
||||||
|
|
||||||
|
| lable | pin |
|
||||||
|
|-------|----:|
|
||||||
|
| SDA | A4 |
|
||||||
|
| SCL | A5 |
|
||||||
|
|
||||||
|
## SPI
|
||||||
|
|
||||||
|
| lable | pin |
|
||||||
|
|--------|----:|
|
||||||
|
| CSK | 13 |
|
||||||
|
| MISO | 12 |
|
||||||
|
| MOSI | 11 |
|
||||||
|
| CS MSP | 10 |
|
||||||
Loading…
x
Reference in New Issue
Block a user