реклама на сайте
подробности

 
 
> LC-метр. Измерить малые частоты.
Didro
сообщение May 1 2009, 15:22
Сообщение #1


Частый гость
**

Группа: Участник
Сообщений: 94
Регистрация: 9-04-07
Пользователь №: 26 893



Добрый день,
Собрал LC-метр по схеме с сайта - http://www.antennex.com/Sshack/aade/specs.htm

При проверке осциллографом с генератора выходят прямоугольные импульсы нужной частоты и амплитуды, внешние электромагнитные воздействия на форму и частоту импульсов никак не влияют. Для дополнительной защиты сделал экранирование контура.

В качестве МК выбрал ATmega16 на частоте 8 Мгц. Подключаю схему к 16 битному счетчику (также к пину подключено 10 кОм-ое сопротивление, которое "подтягивает" пин на землю), в течении 0,4 секунды таймер включен и считает импульсы,при переполнении счетчика происходит прибавление FFFFh к регистру организованному на 3х восьмибитных регистрах,по окончанию 0,4 секунды содержимое в регистрах TCNT1H и TCNT1L прибавляется к сумме 24х битного составного регистра, затем программа через COM-порт передает три байта данных (количество импульсов за 0,4 сек).

Проблема в том, что когда измеряется исходная частота в 750 КГц, так же при малых подсоединяемых емкостях (следовательно и малого уменьшения частоты) данные приходят верные и достаточно стабильные по значению, но когда подсоединяется относительно большая емкость в 100 нФ происходит сильное снижение частоты до 60 Кгц (проверено на осциллографе) и данные приходящие из счетчика становятся неверные их значение колеблется от 0 до 255, когда нормальным было бы значение в 20000.
Может быть проблема с частотой импульсов приходящих на пин таймера? то есть частоты ниже некоторой планки не могут быть правильно
подсчитаны таймером.

Cхема:

Прикрепленное изображение


Стоит исключить предположение, что COM на МК настроен неверно или программа на компьютере настроена неправильно, т.к. все неоднократно проверялось путем пересылки нескольких байт, как с МК->ПК, так и наоборот.

Кусок исходного кода управления таймером:

Код
CMD_FREQ:
;очищаем регистр-накопитель
clr r1
clr r2
clr r3
;делаем замер частоты
ldi r17,(1<<CS10)|(1<<CS11)|(1<<CS12)
out TCCR1B,r17
clr r17
;ждем 0,4 секунды
rcall WAIT
;выключаем счет
out TCCR1B,r17
;считываем данные счетчика
in r21,TCNT1H
in r20,TCNT1L
;прибавляем к накопителю 'хвосты'
add r1,r20
adc r2,r21
adc r3,r17
;очистка
out TCNT1H,r17
out TCNT1L,r17
;отсылаем первый байт селектор
ldi r17,NORBYTE
out UDR,r17
rcall WAIT_USART
;отсылаем три информационных байта
out UDR,r3
rcall WAIT_USART
out UDR,r2
rcall WAIT_USART
out UDR,r1
rcall WAIT_USART
;обработчик прерывания переполнения TIMER1
AddVal:  
;прибавляем значение переполнения
add r1,r23;в r23 и r24 заранее записано значение FFFFh
adc r2,r24
adc r3,r17; r17=0
reti

Программа для работы с МК по COM - Terminal v 1.9b

Сообщение отредактировал Didro - May 1 2009, 15:24
Go to the top of the page
 
+Quote Post
 
Start new topic
Ответов
John851
сообщение May 2 2009, 16:07
Сообщение #2


Участник
*

Группа: Участник
Сообщений: 50
Регистрация: 2-05-09
Пользователь №: 48 549



сам себе же и отвечу... почему то при увеличении задержки с 0,4 сек до 1 сек данные стали приходить верные. Интересно почему?
Go to the top of the page
 
+Quote Post
rx3apf
сообщение May 2 2009, 21:41
Сообщение #3


Гуру
******

Группа: Участник
Сообщений: 3 834
Регистрация: 14-06-06
Из: Moscow, Russia
Пользователь №: 18 047



Цитата(John851 @ May 2 2009, 20:07) *
сам себе же и отвечу... почему то при увеличении задержки с 0,4 сек до 1 сек данные стали приходить верные. Интересно почему?

"- Где у меня ошибка ? - в ДНК !" © Ну, что-то где-то в коде, естественно - таймеру-то все равно, что считать... Однако хочу обратить внимание - эта схема генератора весьма чувствительна к добротности (и к линейности, кстати - это важно !) дросселя, при использовании низкодобротных дросселей (типа всякой компаундированной мелочи) размах переменного напряжения на контуре падает, компаратор начинает звенеть на фронтах. В особо тяжелых случаях эффект где-то с сотни nF и начинает проявляться. ТШ на входе чуть улучшает картину, так что при простом переносе на AVR может быть ухудшение. Ну и конкретно эта программная реализация имеет массу недостатков - например, не учитывает собственную емкость катушек, что уже при десятках mHy. На www.cqham.ru уже который год обсуждается более "продвинутый" вариант - рекомендую ознакомиться. Есть свои тонкости...
Go to the top of the page
 
+Quote Post
John851
сообщение May 3 2009, 13:11
Сообщение #4


Участник
*

Группа: Участник
Сообщений: 50
Регистрация: 2-05-09
Пользователь №: 48 549



Цитата(rx3apf @ May 3 2009, 00:41) *
"- Где у меня ошибка ? - в ДНК !"

попрошу повежливее, я еще только учусь и задаю вопросы здесь чтоб получить корректный ответ, а не надсмешки "профессоров" типа вас.

Цитата(rx3apf @ May 3 2009, 00:41) *
Однако хочу обратить внимание - эта схема генератора весьма чувствительна к добротности (и к линейности, кстати - это важно !) дросселя

Мне известо что это очень важно, поэтому еще раз напишу, что уже написал выше - от генератора исходят ровные прямоугольные импульсы без шумов даже при очень большом растяжении по времени, т.к. использую достаточно добротную катушку (намотана на станке, определенным типом намотки, провод - ПЛШО многожильный). Так же я дополнительно сделал экранирование элементов схемы как сверху, так и снизу платы. На выходе стоит буфер из двух последовательно соединенных 4х входных элементов И-НЕ. Так что к генератору претензий нет (пожалуйста читайте все сообщения темы, чтоб мне по несколько раз одно и то же не печатать).

Цитата(rx3apf @ May 3 2009, 00:41) *
так что при простом переносе на AVR может быть ухудшение. Ну и конкретно эта программная реализация имеет массу недостатков - например, не учитывает собственную емкость катушек

Вы неправы. Прибор получился достаточно точный даже без учета паразитной емкости и индуктивности. Да, я использую переносы и состаной трехбайтный регистр, но другого выхода просто нет. Если взглянуть на схемотехнику счетчика AVR и PIC можно найти много различий. Для этого случая актуально различие, состоящее в том, что в AVR на имульсы приходящие на пин таймера нельзя поставить делитель частоты (только на импульсы от внутреннего генератора), а пиковском МК есть возможность поставить делитель на импульсы с пина. Этим я думаю все объясняется.

Самое главное - мой вопрос остался без ответа. Почему при малой задержке на измерение кол-ва импульсов невозможно работать с относительно низкими частотами (типа 60 КГц). А при задержке в 1 сек все насчитывается просто отлично на любой частоте.
Go to the top of the page
 
+Quote Post

Сообщений в этой теме
- Didro   LC-метр. Измерить малые частоты.   May 1 2009, 15:22
- - domowoj   А как же у людей работает, публикаций много вот н...   May 2 2009, 11:03
- - John851   вопрос не в том какже у людей работает, а где ошиб...   May 2 2009, 14:42
- - domowoj   Если не получается измерять частоту с достаточной ...   May 3 2009, 13:40
- - John851   да это тоже выход, но проблема в другом: Если вкл...   May 4 2009, 17:17
- - xemul   Судя по reti, с таймером Вы боретесь в прерывании ...   May 4 2009, 20:13
- - John851   ЦитатаСудя по reti, с таймером Вы боретесь в преры...   May 5 2009, 09:41
|- - xemul   Цитата(John851 @ May 5 2009, 13:41) немно...   May 5 2009, 11:58
- - John851   ЦитатаВ смысле "Вся наша жизнь - ...". Н...   May 5 2009, 15:45
- - xemul   Мил человек, уж, вестимо, не Вам учить меня велик...   May 5 2009, 17:32
- - John851   Знаки препинания надоело расставлять, а черными за...   May 5 2009, 18:39


Reply to this topicStart new topic
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0

 


RSS Текстовая версия Сейчас: 22nd July 2025 - 16:25
Рейтинг@Mail.ru


Страница сгенерированна за 0.03367 секунд с 7
ELECTRONIX ©2004-2016