Arduino пинпоинтер
- Войдите на сайт для отправки комментариев
Вс, 02/07/2017 - 12:51
Здравствуйте. Нужна помощь, так как сам уже не знаю что делать..
Пытаюсь повторить проект с этого форума: http://forklg.ru/viewtopic.php?f=98&t=1100&sid=0385f06032473b94511336fd3ea96de6
Первоначально делал все на макетной плате. Все работало отлично, но при малейшем движении все начинало глючить. Решил сделать платку для экспериментов с катушкой и номиналами компонентов. Когда все спаял, то появился глюк. Значение баланса, равномерно и с одинаковой периодичностью уменьшается. Причем стабильно как секундомер..
Плату проверил раз 200.. Код не менял.
Может я просто чего то не замечаю?
Буду благодарен за любую помощь или совет!
Печатная плата (вид сверху):


Нестабильна частота генератора или проблемы с частотомером ?
http://forklg.ru/viewtopic.php?f=98&t=1100&start=15#p4096
2. Нестабильная частота. В первой версии которую собрал на бредборде была проблема с частотой - после включения показывала что то около 22 кГц. поднося металл частота менялась в пределах всего 20- 50 Гц. Но проблема в том что после включения частота начинала плавать сама по себе. за минуту повышалась на 100 - 200 Гц, что конечно сильно усложняло определение наличия металла. Предположительно это было связано с ТКЕ конденсаторов в колебательном контуре. По расчетам это вполне могло происходить, так как обычные конденсаторы заметно меняют емкость от температуры, а в колебательном контуре даже мизерное изменение емкости кондера сильно влияет на частоту. Изучил вопрос, нашел что есть такие конденсаторы с ТКЕ классом COG, емкость которых не меняется с изменением температуры. Заказал COG конденсаторы на 0.01 мкФ и воткнул их в колебательный контур. Кондер на 0.047 тоже заменил на 0.01, просто потому что не нашел COG конденсатора на 0.047. По схеме, как я понял наминал этого конденсатора не сильно критичен. А вот плоский график COG конденсаторов сильно повлиял на работу схемы - частота теперь никуда не едет. Так что рекомендую сразу брать cog кондеры для колебательного контура.
Изначально так и было, но я потом поменял кондесаторы и все работало стабильно. На протяжении 5-10 минут частота вообще не менялась. А глюки начались, когда я все те же компоненты перенес на печатную плату..
Увы, нет возможности проверить сейчас что именно не исправно..
Увы, нет возможности проверить сейчас что именно не исправно..
Здравствуйте. Скажите удалось ли это устройство довести до ума?? А то у меня с ним похожая сетуация ))
Я так понял у него иззо ТКЕ кондеров постоянно плывет частота контура. И програмно настроен он очень грубо ступенчето порогами по 30Гц. Но некак немогу разобратся как тут регулировать эти пороги..
Скеч
int pushButton = 10; int buttonState = 0; int frequency = 0; int balance = 18340; /* ArduinoFreqMetr v 1.0 */ #include <FreqMeasure.h> const int SoundPin = 7; // Пин подключения пьезоизлучателя – 9 дискретный void setup() { pinMode(pushButton, INPUT_PULLUP); // pinMode(pushButton, INPUT); pinMode(8, INPUT); pinMode(2, OUTPUT); //red pinMode(3, OUTPUT); // blue pinMode(4, OUTPUT); // green pinMode(7, OUTPUT); // buzer Serial.begin(9600); FreqMeasure.begin(); } double sum = 0; int count = 0; void loop() { if (FreqMeasure.available()) { // average several reading together sum = sum + FreqMeasure.read(); count = count + 1; if (count > 30) { frequency = FreqMeasure.countToFrequency(sum / count); Serial.println(frequency); sum = 0; count = 0; } } //------------button----------------- buttonState = digitalRead(pushButton); if (buttonState == HIGH) { balance = frequency; }; //----------indication---------------- if (frequency == balance) { digitalWrite(4, HIGH); //noTone(7); // Выключаем звук } else { digitalWrite(4, LOW); }; if (frequency > balance) { digitalWrite(2, HIGH); tone(SoundPin, 700); } else { digitalWrite(2, LOW); noTone(7); // Выключаем звук }; if (frequency < balance) { digitalWrite(3, HIGH); tone(SoundPin, 100); } else { digitalWrite(3, LOW); noTone(7); // Выключаем звук }; }