mirror of
https://github.com/ttrftech/NanoVNA.git
synced 2025-12-06 03:31:59 +01:00
add preliminaly calibration
This commit is contained in:
parent
01057921f6
commit
9dda579abe
45
ili9431.c
45
ili9431.c
|
|
@ -647,7 +647,8 @@ void sweep_tail()
|
||||||
void
|
void
|
||||||
cartesian_scale(float re, float im, int *xp, int *yp)
|
cartesian_scale(float re, float im, int *xp, int *yp)
|
||||||
{
|
{
|
||||||
float scale = 4e-3;
|
//float scale = 4e-3;
|
||||||
|
float scale = 4e-4;
|
||||||
int x = WIDTH / 2 - re * scale;
|
int x = WIDTH / 2 - re * scale;
|
||||||
int y = HEIGHT / 2 + im * scale;
|
int y = HEIGHT / 2 + im * scale;
|
||||||
if (x < 0) x = 0;
|
if (x < 0) x = 0;
|
||||||
|
|
@ -786,21 +787,55 @@ force_set_markmap(void)
|
||||||
void plot_into_index(float measured[101][2][2])
|
void plot_into_index(float measured[101][2][2])
|
||||||
{
|
{
|
||||||
int i, t;
|
int i, t;
|
||||||
|
float coeff[2];
|
||||||
for (i = 0; i < 101; i++) {
|
for (i = 0; i < 101; i++) {
|
||||||
int x = i * (WIDTH-1) / (101-1);
|
int x = i * (WIDTH-1) / (101-1);
|
||||||
for (t = 0; t < TRACES_MAX; t++) {
|
for (t = 0; t < TRACES_MAX; t++) {
|
||||||
int n = t % 2;
|
int n = t % 2;
|
||||||
if (!trace[t].enabled)
|
if (!trace[t].enabled)
|
||||||
continue;
|
continue;
|
||||||
|
|
||||||
|
coeff[0] = measured[i][n][0];
|
||||||
|
coeff[1] = measured[i][n][1];
|
||||||
|
if (cal_status & CALSTAT_APPLY) {
|
||||||
|
if (n == 0) {
|
||||||
|
float sq = cal_data[i][CAL_OPEN][0] * cal_data[i][CAL_OPEN][0]
|
||||||
|
+ cal_data[i][CAL_OPEN][1] * cal_data[i][CAL_OPEN][1];
|
||||||
|
sq /= 1e5;
|
||||||
|
float m0 = measured[i][n][0];
|
||||||
|
float m1 = measured[i][n][1];
|
||||||
|
if (cal_status & CALSTAT_LOAD) {
|
||||||
|
m0 -= cal_data[i][CAL_LOAD][0];
|
||||||
|
m1 -= cal_data[i][CAL_LOAD][1];
|
||||||
|
}
|
||||||
|
coeff[0] = (m0 * cal_data[i][CAL_OPEN][0]
|
||||||
|
+ m1 * cal_data[i][CAL_OPEN][1]) / sq;
|
||||||
|
coeff[1] = (m1 * cal_data[i][CAL_OPEN][0]
|
||||||
|
- m0 * cal_data[i][CAL_OPEN][1]) / sq;
|
||||||
|
} else {
|
||||||
|
float sq = cal_data[i][CAL_THRU][0] * cal_data[i][CAL_THRU][0]
|
||||||
|
+ cal_data[i][CAL_THRU][1] * cal_data[i][CAL_THRU][1];
|
||||||
|
sq /= 1e5;
|
||||||
|
float m0 = measured[i][n][0];
|
||||||
|
float m1 = measured[i][n][1];
|
||||||
|
if (cal_status & CALSTAT_ISOLN) {
|
||||||
|
m0 -= cal_data[i][CAL_ISOLN][0];
|
||||||
|
m1 -= cal_data[i][CAL_ISOLN][1];
|
||||||
|
}
|
||||||
|
coeff[0] = (m0 * cal_data[i][CAL_THRU][0]
|
||||||
|
+ m1 * cal_data[i][CAL_THRU][1]) / sq;
|
||||||
|
coeff[1] = (m1 * cal_data[i][CAL_THRU][0]
|
||||||
|
- m0 * cal_data[i][CAL_THRU][1]) / sq;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
if (trace[t].polar) {
|
if (trace[t].polar) {
|
||||||
int x1, y1;
|
int x1, y1;
|
||||||
cartesian_scale(measured[i][n][1], measured[i][n][0], &x1, &y1);
|
cartesian_scale(coeff[1], coeff[0], &x1, &y1);
|
||||||
trace_index[t][i] = INDEX(x1, y1, i);
|
trace_index[t][i] = INDEX(x1, y1, i);
|
||||||
//mark_map(x1>>5, y1>>5);
|
|
||||||
} else {
|
} else {
|
||||||
int y1 = logmag(measured[i][n]) * 29;
|
int y1 = logmag(coeff) * 29;
|
||||||
trace_index[t][i] = INDEX(x, y1, i);
|
trace_index[t][i] = INDEX(x, y1, i);
|
||||||
//mark_map(x>>5, y1>>5);
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
||||||
57
main.c
57
main.c
|
|
@ -216,14 +216,8 @@ int16_t dsp_disabled = FALSE;
|
||||||
float measured[101][2][2];
|
float measured[101][2][2];
|
||||||
uint32_t frequencies[101];
|
uint32_t frequencies[101];
|
||||||
|
|
||||||
float caldata[101][5][2];
|
|
||||||
uint16_t cal_status;
|
uint16_t cal_status;
|
||||||
|
float cal_data[101][5][2];
|
||||||
#define CAL_LOAD 0
|
|
||||||
#define CAL_OPEN 1
|
|
||||||
#define CAL_SHORT 2
|
|
||||||
#define CAL_THRU 3
|
|
||||||
#define CAL_ISOLN 4
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
@ -468,13 +462,50 @@ static void cmd_cal(BaseSequentialStream *chp, int argc, char *argv[])
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
char *cmd = argv[1];
|
char *cmd = argv[0];
|
||||||
int s;
|
int s, d, i;
|
||||||
if (strcmp(cmd, "load")) {
|
if (strcmp(cmd, "load") == 0) {
|
||||||
cal_status |= CAL_LOAD;
|
cal_status |= CALSTAT_LOAD;
|
||||||
memcpy(caldata[CAL_LOAD], measured[0], sizeof measured[0]);
|
s = 0;
|
||||||
}
|
d = CAL_LOAD;
|
||||||
|
} else if (strcmp(cmd, "open") == 0) {
|
||||||
|
cal_status |= CALSTAT_OPEN;
|
||||||
|
s = 0;
|
||||||
|
d = CAL_OPEN;
|
||||||
|
} else if (strcmp(cmd, "short") == 0) {
|
||||||
|
cal_status |= CALSTAT_SHORT;
|
||||||
|
s = 0;
|
||||||
|
d = CAL_SHORT;
|
||||||
|
} else if (strcmp(cmd, "thru") == 0) {
|
||||||
|
cal_status |= CALSTAT_THRU;
|
||||||
|
s = 1;
|
||||||
|
d = CAL_THRU;
|
||||||
|
} else if (strcmp(cmd, "isoln") == 0) {
|
||||||
|
cal_status |= CALSTAT_ISOLN;
|
||||||
|
s = 1;
|
||||||
|
d = CAL_ISOLN;
|
||||||
|
} else if (strcmp(cmd, "done") == 0) {
|
||||||
|
cal_status |= CALSTAT_APPLY;
|
||||||
|
return;
|
||||||
|
} else if (strcmp(cmd, "reset") == 0) {
|
||||||
|
cal_status = 0;
|
||||||
|
return;
|
||||||
|
} else if (strcmp(cmd, "data") == 0) {
|
||||||
|
chprintf(chp, "%d %d\r\n", cal_data[0][CAL_LOAD][0], cal_data[0][CAL_LOAD][1]);
|
||||||
|
chprintf(chp, "%d %d\r\n", cal_data[0][CAL_OPEN][0], cal_data[0][CAL_OPEN][1]);
|
||||||
|
chprintf(chp, "%d %d\r\n", cal_data[0][CAL_SHORT][0], cal_data[0][CAL_SHORT][1]);
|
||||||
|
chprintf(chp, "%d %d\r\n", cal_data[0][CAL_THRU][0], cal_data[0][CAL_THRU][1]);
|
||||||
|
chprintf(chp, "%d %d\r\n", cal_data[0][CAL_ISOLN][0], cal_data[0][CAL_ISOLN][1]);
|
||||||
|
return;
|
||||||
|
} else {
|
||||||
|
chprintf(chp, "usage: cal {load|open|short|thru|isoln|done}\r\n");
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
for (i = 0; i < 101; i++) {
|
||||||
|
cal_data[i][d][0] = measured[i][s][0];
|
||||||
|
cal_data[i][d][1] = measured[i][s][1];
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
|
||||||
17
nanovna.h
17
nanovna.h
|
|
@ -51,6 +51,23 @@ void sweep_tail(void);
|
||||||
void redraw(void);
|
void redraw(void);
|
||||||
void polar_plot(float measured[101][4]);
|
void polar_plot(float measured[101][4]);
|
||||||
|
|
||||||
|
extern uint16_t cal_status;
|
||||||
|
extern float cal_data[101][5][2];
|
||||||
|
|
||||||
|
#define CAL_LOAD 0
|
||||||
|
#define CAL_OPEN 1
|
||||||
|
#define CAL_SHORT 2
|
||||||
|
#define CAL_THRU 3
|
||||||
|
#define CAL_ISOLN 4
|
||||||
|
|
||||||
|
#define CALSTAT_LOAD (1<<0)
|
||||||
|
#define CALSTAT_OPEN (1<<1)
|
||||||
|
#define CALSTAT_SHORT (1<<2)
|
||||||
|
#define CALSTAT_THRU (1<<3)
|
||||||
|
#define CALSTAT_ISOLN (1<<4)
|
||||||
|
#define CALSTAT_APPLY (1<<5)
|
||||||
|
|
||||||
|
|
||||||
void plot_into_index(float measured[101][2][2]);
|
void plot_into_index(float measured[101][2][2]);
|
||||||
void draw_cell_all(void);
|
void draw_cell_all(void);
|
||||||
|
|
||||||
|
|
|
||||||
Loading…
Reference in a new issue