Пт апр 17, 2020 16:43:28
Пт апр 17, 2020 18:06:07
Пт апр 17, 2020 22:40:37
Сб апр 18, 2020 06:21:16
Сб апр 18, 2020 07:36:02
Сб апр 18, 2020 07:48:28
Сб апр 18, 2020 08:35:59
enum {Start_Gkch, Stop_Gkch, Fr0, Fr1, Step, Set_fr, Out_ADC, V1,
V5, A0, A2, SpeedMax, SpeedMin, SetFzad, Izm_Fk, Get_Fzg,
A3, A4, SET_PAUZ, FKM, END_FUN};
Сб апр 18, 2020 08:42:30
Сб апр 18, 2020 09:45:33
Сб апр 18, 2020 10:41:48
Сб апр 18, 2020 11:20:37
uint8_t Flag_Prog[COUNT_MF]
Fun[Fr0]=fr0;
Fun[Fr1]=fr1;
Fun[Step]=step;
Fun[Start_Gkch]=start_gkch;
Fun[Stop_Gkch]=stop_gkch;
Fun[V5]=v5;
Fun[V1]=v1;
Fun[A0]=a0;
Fun[A2]=a2;
Fun[A3]=a3;
Fun[A4]=a4;
if(crc==data)
{
Flag_Prog[kod_command >> 3] |= (1 << (kod_command & 0x07));
}
while (1)
{
for(i=0, mf=0; mf < COUNT_MF; mf++)
{
if(Flag_Prog[mf] == 0){i+=8; continue;}
for(sdvig = 0x01; sdvig != 0 ;sdvig <<= 1,i++)
{
if(Flag_Prog[mf] & sdvig)
{
Flag_Prog[mf] &= ~sdvig;
Fun[i]();
}
}
}
if(f_izm !=0 )
{
f_izm = 0;
GkchExe ();
}
}
enum {Start_Gkch, Stop_Gkch, Fr0, Fr1, Step, Set_fr, Out_ADC, V1,
V5, A0, A2, SetFzad, Izm_Fk, Get_Fzg, A3, A4,
SET_PAUZ, FKM, V4, END_FUN};
static void v5(void)
{
ADMUX &= ~(1<<REFS1);
send_OK(V5);
}
static void v1(void)
{
ADMUX |= (1<<REFS1);
send_OK(V1);
}
Сб апр 18, 2020 11:36:45
Сб апр 18, 2020 13:22:22
Сб апр 18, 2020 13:37:21
float readInVoltage()
{
vin = 0;
vout = 0;
for (int i = 0; i < 12; i++)
{
vin = vin + ((float)analogRead(INP_VAL) / 4095 * 4.096);
vout = vout + ((float)analogRead(INP_OUT) / 4095 * 4.096);
}
//Коэфф. передачи. Если нужно в dB пишем vin = 20*log10((vin / 12)/(vout / 12))
vin = (vin / 12)/(vout / 12);
return vin;
}
Сб апр 18, 2020 13:50:01
for (int i = 0; i < 12; i++)
{
vin = vin + ((float)analogRead(INP_VAL) / 4095 * 4.096);
vout = vout + ((float)analogRead(INP_OUT) / 4095 * 4.096);
}
Сб апр 18, 2020 14:05:11
Сб апр 18, 2020 14:14:08
Сб апр 18, 2020 14:22:34
Вот нюансы:
1. Время измерения на одной частоте и суммарное при проходе всех частот увеличится в 2 раза.
2. При переключении входов АЦП (между vin и vout)необходимо делать задержку перед следующим измерение, еще увеличит время развертки.
Как вариант делать измерение vin 1 раз через 10, 20 измерений vout.
Естественно необходимо записывать vout в память, для 1000 частот необходимо 2000 байт.
Сб апр 18, 2020 14:59:23
Как вариант делать измерение vin 1 раз через 10, 20 измерений vout.
Естественно необходимо записывать vout в память, для 1000 частот необходимо 2000 байт.
Поясните последние мысли... Зачем?
Сб апр 18, 2020 19:24:37
Например 10 раз сняли АЧХ фильтра и 1 раз выход генератора. И так в цикле.
При этом мы не делаем одновременно 2 измерения vin и vout. Соответственно время сканирования не увеличивается в 2 раза.
3. ВАХ диодов детекторов нелинейная и показание АЦП не соответствуют истинной амплитуде. Как эту нелинейность учитывать в расчетах?