Система поиска и стабилизации резонансной частоты
- Войдите на сайт для отправки комментариев
Всем привет. Если уже есть где то подобная тема на форуме, ткните пальцем. Авто предлагает схему генератора прямоугольных импульсов на ард.2560 на сколько я понял. Автоматическая система сканирования частотного диапазона от 1 до 15кГц с фиксацией на резонансной частоте, там где напряжение по амплитуде привышает ток. И код имеется, как бы этого проэкта, но чето не копмилируется для проверки в протеусе. Вот видео проекта, кому интересно. https://www.youtube.com/watch?v=T-RgYB0-KQo https://www.youtube.com/watch?v=J593-dbg6x8&t=26s https://www.youtube.com/watch?v=mcrKzG7HioM https://www.youtube.com/watch?v=PVMJj66GvWI&t=170s https://www.youtube.com/watch?v=ZGxcDtJ36AY&t=561s https://www.youtube.com/watch?v=Oysg8RPgW88
#include
LiquidCrystal lcd(2, 3, 4, 5, 6, 7);
int hz = 500;
int freq = 0;
int volt = 0;
int vmax = 0;
int intval = 0;
void setup()
{
lcd.begin(16, 2);
lcd.print("VIC Scan Circuit");
lcd.setCursor(0,1);
lcd.print("ver. 0.1.0alpha");
delay(5000);
//Serial.begin(9600);
pinMode(9, OUTPUT); //pin that tones will be sent from
pinMode(A0, INPUT); //voltage reading pin
pinMode(8, INPUT); //button pin
}
void loop()
{
vmax = 0; //comment if you want to keep the best frequency of all scans
intval = 0; //comment if you want to see the frequency found intervals added from all scans
lcd.clear();
lcd.print(" Scanning... ");
lcd.setCursor(11,1);
lcd.print("Hz");
for (hz=1000; hz<=15000; hz=hz+10) //start from 1khz to 15khz to oscillate the circuit
{
tone(9,hz); //will send a tone at first
delay(1); //wait for a millisecond
volt = analogRead(A0); //then read the voltage
if (vmax < volt) //if there is a resonant point, voltage should have the highest value on this frequency
{
vmax = volt;
freq = hz; //remember that frequency
intval = intval++; //times found a nice frequency interval during search
lcd.setCursor(0,1);
lcd.print(intval);
}
lcd.setCursor(5,1);
lcd.print(hz);
}
for (hz=15000; hz>=1000; hz=hz-10) //do a descent scan
{
tone(9,hz);
volt = analogRead(A0);
delay(1);
if (vmax < volt)
{
vmax = volt;
freq = hz;
intval = intval++ ;
lcd.setCursor(0,1);
lcd.print(intval);
}
if (hz < 10000)
{
lcd.setCursor(9,1);
lcd.print(" ");
}
lcd.setCursor(5,1);
lcd.print(hz);
}
tone(9,freq); //output the frequency found with higher voltage reading
lcd.clear();
lcd.print("Resonance found");
lcd.setCursor(4, 1);
lcd.print("@");
lcd.setCursor(6, 1);
lcd.print(freq);
lcd.setCursor(12, 1);
lcd.print("Hz");
delay(3500);
lcd.clear();
lcd.print("Vres = v");
lcd.setCursor(7,0);
lcd.print(volt);
lcd.setCursor(0,1);
lcd.print("Fres = Hz");
lcd.setCursor(7,1);
lcd.print(freq);
//Serial.println(vmax);
//Serial.println(freq);
// delay(15000) //wait for 15 seconds for the next scan. This can be set to whatever you like
while (digitalRead(8) == LOW) //or wait for button to be pressed to start the new scan
{
volt = analogRead(A0);
lcd.setCursor(7,0);
lcd.print(" ");
lcd.setCursor(7,0);
lcd.print(volt);
delay(100);
}
}
Судя по скетчу - говнокод какого-то чайника.
Есть хороший, обкатанный прибор для измерения частотных характеристик, называется NWT-7 . Полоса от 0 до 70МГц, можно тестировать кварцы, катушки, фильтры, снимать АЧХ усилителей. Софт удобный, рисует графики, итд. Описание. Его можно собрать самому, все детали доступны. Так-же продают наборы для сборки. Гугло-яндекс расскажет подробности про схему софт итп. Хорошая, добротная вещь, сам бы сделал себе, но не нужен .. )