Подходящий образец для АЦП PIC после преобразования из аналогового напряжения.
Если я читаю аналоговый сигнал от моего датчика давления на 500 мсек. Мой инструктор сказал мне, что вы должны сделать так, чтобы прерывание АЦП Timr0 удваивало то, что вы читаете с аналогового осциллографа (500 мсек.), т.е. 2fc. Мой код ниже. Должен ли я настроить мой таймер 0 на 20 Гц или меньше или больше?
enter code here
char temp[5];
unsigned int adc_value;
char uart_rd;
int i;
unsigned int d[10]={0};
int average = 0;
int counter =0;
void interrupt(){
if (INTCON.T0IF) {
INTCON.T0IF = 0 ;// clear T0IF (Timer interrupt flag).
}
TMR0 = 178;
}
void main() {
temp[0]='1';
temp[1]='2';
temp[2]='3';
temp[3]='4';
temp[4]=' ';
OSCCON= 0x77; //8MHz
ANSEL = 0b00000100; //ANS2
CMCON0 = 0X07; //
TRISA = 0b00001100;
UART1_Init(9600);
TMR0 = 178 ;
//CMCON0 = 0X04; // turn off compartor.
OPTION_REG = 0x87; //
INTCON =0xA0;
while(1){
average= ADC_Read(2);
temp[0] = average/1000+48;
temp[1] = (average/100)%10+48;
temp[2] = (average/10)%10+48;
temp[3] = average%10+48;
for (i=0;i<5; i++)
{
UART1_Write(temp[i]);
}
}
}
1 ответ
Когда сэмплирование преформ по сигналу вы захватываете не всю информацию, а только ее части с заданным периодом дискретизации.
Теорема отсчетов Найквиста-Шеннона утверждает, что если вы можете получить реальную выборку при некоторой частоте выше указанной, вы можете получить всю информацию о конечной ширине полосы сигнала. Эта частота в два раза превышает максимальную частоту этой полосы пропускания.
Если вы не соблюдаете эту частоту, вы будете страдать от эффекта, называемого псевдонимом.
Вы можете узнать больше о здесь: https://en.wikipedia.org/wiki/Aliasing