Узнать частоту приема сигнала

art_maestro
Offline
Зарегистрирован: 26.03.2013

Здравствуйте

Я получаю некие числа с аналогового порта, как мне узнать с какой частотой происходит прием сигнала. Например, если взять оссцилограф то можно узнать с какой частотой происходят некие колибания. Мне нужно узнать не что этого.

Life23
Offline
Зарегистрирован: 10.08.2013

в смысле вам нужен частотомер? Хотя конечно не понятно, как вы получаете "числа" с "аналогового порта..

art_maestro
Offline
Зарегистрирован: 26.03.2013
Да, нужно узнать частоту. Например есть синусоида, нужно узнать частоту колебаний.

#define ANALOGA_IN 0

void setup() 
{
  Serial.begin(38400); // указываем скорость работы с COM-портом
}

void loop() 
{
  int val;
  val = analogRead(ANALOGA_IN); // считываем данные 
  Serial.println( val);         // записываем данные в порт
}

 

NeiroN
NeiroN аватар
Offline
Зарегистрирован: 15.06.2013

нужно замерить интервал между двумя максимумами например так

Да, нужно узнать частоту. Например есть синусоида, нужно узнать частоту колебаний.

#define ANALOGA_IN 0

  int max[3]; //массив точек для определения изгиба кривой
  int i;
  long dt; //интервал
  float f;

void setup() 
{
  Serial.begin(38400); // указываем скорость работы с COM-портом
}

void loop() 
{
  int val;
  val = analogRead(ANALOGA_IN); // считываем данные 
  //Serial.println( val);         // записываем данные в порт
	if (i == 3) i = 0; //сброс итератора массива
	if (max[i] < val) max[i] = val; //если значение возрасло то присваеваем его элементу массива
	if (val < max[2] && max[0] < max[1] && max[1]< max[2]) {//если точки на возрастающей а значение меньше минимального значит мы на перепаде
		max[0] = 0;
		max[1] = 0;
		max[2] = 0;
		if (dt == 0){//это первый перепад
			dt = micros();
		}else{
			f = float(1000000/(micros() - dt)); //если второй то находим частоту
			Serial.println(f);
			dt = 0;
		}
	}
	i++;
}

 

art_maestro
Offline
Зарегистрирован: 26.03.2013

спасибо огромное, попробую

gal
Offline
Зарегистрирован: 08.06.2018
 
NeiroN
Здравствуйте
Загрузил программу, нo номера в сериал монитор что то случайные , вот для 10 кГц.
Для другой частоты они другие.
Как испрaвит ? 

0
467
140
19
3220
0
1277
3962
56
4053
576
788
1140
888
639
285
160
0
1771
3670
0
701
441
197
0
1861
3588
0

 

 

andriano
andriano аватар
Offline
Зарегистрирован: 20.06.2015

gal пишет:

 
NeiroN
Здравствуйте
Загрузил программу, нo номера в сериал монитор что то случайные , вот для 10 кГц.
 

А Вы какой Ардуинкой пользуетесь?

gal
Offline
Зарегистрирован: 08.06.2018

stm32f103