Посоветуйте схему частотомера

Обсуждаем цифровые устройства...
Ответить
Поставщик валерьянки для Кота
Сообщения: 2222
Зарегистрирован: Вт ноя 27, 2007 11:32:06
Откуда: Tashkent

Сообщение uk8amk »

Делал когда-то несложный частотомер на PIC16f84 кажется из журнала Радио. Хороша схема почти всем кроме точности опорного генератора. Ну на сколько обычного 4МГц кварца хватает.
Недавно достал термостатированные генераторы Isotemp на 13.000МГц(фактически импортный Гиацинт). Схемы что попадались расчитаны на определённую опорную частоту(не на 13). Хотелось бы следующее:
1) несложный частотомер на PIC/AVR/STM.
2) верхний диапазон частот единицы или десятки МГц.
3) отображение с точностью 0.1Гц.
4) возможность работы от опорного генератора 13МГц(6.5МГц).

Может видел кто подобное.

Спасибо.
Вложения
OCXO131.PNG
(71.48 КБ) 835 скачиваний
Реклама
Потрогал лапой паяльник
Аватара пользователя
Сообщения: 383
Зарегистрирован: Вс янв 31, 2016 18:04:39
Откуда: Montreal

Сообщение MagicianT »

Я только в п. 4 не вьеду, почему контролер должен работать на 13 МГц? Да хоть на внутреннем RC, хоть на внешнем 8/16/20/72 и т.д. Просто сравнивайте с эталоном и вопрос точности решен. А если взять GPS/Глонасс то 10^-9 обеспечена. Даже ардуино за 2$ +neo-6 ublox с этим справится. Входные усилители/согласователи сложное место, но схем полно в журнале радио и в радиоежегоднике.
Реклама
Поставщик валерьянки для Кота
Сообщения: 2222
Зарегистрирован: Вт ноя 27, 2007 11:32:06
Откуда: Tashkent

Сообщение uk8amk »

Сейчас так и происходит. Прогрелся генератор, через полчаса накрутил подстроечник у кварца частотомера и измеряешь. Но тут дело в том что стабильность 4МГц опорника почти никакая, плывёт от любого чиха. Про генератор на RC цепочке я вообще промолчу. Поэтому желательно измерять сразу по полноценному генератору.

Я могу конечно изобрести свой велосипед(частотомер), но если уже есть подходящее то зачем.
Поставщик валерьянки для Кота
Аватара пользователя
Сообщения: 2042
Зарегистрирован: Чт дек 27, 2012 20:46:09
Откуда: Болгария, г. Лом

Сообщение botchin »

uk8amk писал(а):несложный частотомер на PIC16f84
Значить въ свою проблему уже решили. Откръваете проект, находите где измеряется частота. Там есть такие замъсловатие константъ для определение времени измерения. Коригируете их и все.
Спойлер

Код: Выделить всё

#ifdef Fosc8
	movlw	.241		; Пауза 0,25 сек T2
	movwf	delay_1        
	movlw	.2			; Пауза 0,25 сек T1
	movwf	delay_2        

	bsf		STATUS, RP0	
	movlw	b'00100111'	; Предделитель 1:256, подтяжка
			;TMR0 от външен източник
	movwf	OPTION_REG
	nop
	bsf     TRISA,4			; Начало измерване
	bcf		STATUS, RP0

Pause2_8	
	btfss	INTCON, T0IF	; Проверка перепълване 
	goto	Paus_8			; не ->  паузу.
	incf	TimerH, F
	bcf		INTCON, T0IF
	goto	Nxt3_8
Paus_8
	nop
	goto	$+1		; Изравняване на продължителност

Nxt3_8
	movlw	.249		; 0.25 сек T0
	movwf	delay_0

Pause1_8
	nop
	decfsz	delay_0, F
    goto	Pause1_8

	decfsz	delay_1, F
	goto	Pause2_8
	
	decfsz	delay_2, F
	goto	Pause2_8
	nop

	movlw	.2
	movwf	delay_0
	decfsz	delay_0, F
	goto	$-1
	
	movlw   b'00000010'
	andwf   PORTA,w
	bsf		STATUS, RP0
	nop
	nop
;500 000 cycles
	bcf     TRISA,4			;край на измерването
	bcf		STATUS, RP0
#else	;Fosc16
	movlw	0x68		; Пауза 0,25 сек T2
	movwf	delay_1        
	movlw	0x05			; Пауза 0,25 сек T1
	movwf	delay_2        

	bsf		STATUS, RP0	
	movlw	b'00100111'	; Предделитель 1:256, подтяжка
			;TMR0 от външен източник
	movwf	OPTION_REG
	nop
	bsf     TRISA,4			; Начало измерване
	bcf		STATUS, RP0

Pause2_16	
	btfss	INTCON, T0IF	; Проверка перепълване 
	goto	Paus_16		; не ->  пауза.
	incf	TimerH, F
	bcf		INTCON, T0IF
	goto	Nxt3_16
Paus_16
	nop
	goto	$+1		; Изравняване на продължителност

Nxt3_16
	movlw	0xdb		; 0.25 сек T0
	movwf	delay_0

Pause1_16
	nop
	decfsz	delay_0, F
    goto	Pause1_16

	decfsz	delay_1, F
	goto	Pause2_16
	
	decfsz	delay_2, F
	goto	Pause2_16
	nop
	nop

	movlw	.191
	movwf	delay_0
	decfsz	delay_0, F
	goto	$-1
	
	movlw   b'00000010'
	andwf   PORTA,w
	bsf		STATUS, RP0
	nop
	nop
;1 000 000 cycles
	bcf     TRISA,4			;край на измерването
	bcf		STATUS, RP0
#endif
Как пример привел часть кода своего частотомера. Можеть работать с две частотъ опорного генератора 8 и 16 MHz.
Вам для работъ с точностью .1 HZ (время измерения 10с) при частоте опорного 13 500 000Hz понадобится задержка 33 750 000 машиннъх цикла.

Да и сомневаюсь я, ето нужно? 0,1Hz?
Лом - ето город в Болгарии, а не инструмент юстировки електроники.
Реклама
Эиком - электронные компоненты и радиодетали
akl
Друг Кота
Сообщения: 4468
Зарегистрирован: Пт мар 07, 2008 06:54:43
Откуда: Ижевск

Сообщение akl »

Удалил.
Последний раз редактировалось akl Сб фев 27, 2016 14:17:53, всего редактировалось 1 раз.
Реклама
Поставщик валерьянки для Кота
Сообщения: 2222
Зарегистрирован: Вт ноя 27, 2007 11:32:06
Откуда: Tashkent

Сообщение uk8amk »

Схема что собирал здесь:
http://sxem.org/2-vse-stati/24-izmereni ... -pic16f84a

Действительно в коде есть паузы-задержки. Попробую разобраться что к чему.
Реклама
Опытный кот
Аватара пользователя
Сообщения: 754
Зарегистрирован: Пт апр 15, 2011 21:11:22
Откуда: Россия

Сообщение BigallS »

Вот статья частотомера с термостатированием http://rx-30.narod.ru/frec_counter/freq_count.html почитайте.
Поставщик валерьянки для Кота
Аватара пользователя
Сообщения: 2042
Зарегистрирован: Чт дек 27, 2012 20:46:09
Откуда: Болгария, г. Лом

Сообщение botchin »

uk8amk писал(а):Попробую разобраться что к чему.
Досадная работа, В файле новъе константъ для 10с и частота кварца 13,5MHz - только для 10с
необходимо подгонить время задержки для других времен измерения и задержку для LCD дисплея. Там вообще не смотрел

Кстати, вам скорее всего необходимо перейти к 16F628A или 16F84A-20

PS: Забъл. В .asm есть новъе рядъ. Есть метка ";test start"

Код: Выделить всё

;test start -Valerij
	bcf	Opt,0
	bsf Opt,1		;время измерения 10 сек
;установи в Stimulus RB0-0,RB1,RB2,RB3 - 1
	goto	measure 

;end tesst start -Valerij
Ето для удобство работъ, потом убери его.
Вложения
soft.rar
(43.68 КБ) 184 скачивания
Лом - ето город в Болгарии, а не инструмент юстировки електроники.
Поставщик валерьянки для Кота
Аватара пользователя
Сообщения: 2042
Зарегистрирован: Чт дек 27, 2012 20:46:09
Откуда: Болгария, г. Лом

Сообщение botchin »

А некто сможет мне ответить почему задержку делал для 13,5MHz а ТС говорил про 13?

Понимаю, что интерес к теме ушел в 0, но въкладъваю .asm с временами измерения 0,1, 1 и 10с. и кварц 13MHz

ТС осталось сделать задержку для LCD.

Удачи!!!
Вложения
frec1_00_d.asm
(23.58 КБ) 467 скачиваний
Лом - ето город в Болгарии, а не инструмент юстировки електроники.
Поставщик валерьянки для Кота
Сообщения: 2222
Зарегистрирован: Вт ноя 27, 2007 11:32:06
Откуда: Tashkent

Сообщение uk8amk »

Интерес не пропал.
Звонил знакомому, он посмотрел ASM исходник от статьи, сказал что написать с нуля намного проще.
В принципе есть свободная плата f0 discovery, можно на ней по быстрому сделать.
Поставщик валерьянки для Кота
Аватара пользователя
Сообщения: 2042
Зарегистрирован: Чт дек 27, 2012 20:46:09
Откуда: Болгария, г. Лом

Сообщение botchin »

Я для вас уже сделал:
Время измеренив 0,1, 1, 10s. при частоте кварца 13 MHz
Ето надо убрать - в начало программъ - на 105 ряд

Код: Выделить всё

;test start -Valerij
;	bcf	Opt,0
;	bsf Opt,1		;время измерения 10 сек
;	bcf	Opt,1
;	bcf Opt,0 	;время измерения 1 сек
	bcf	Opt,1
	bsf Opt,0 	;время измерения .1 сек
;установи в Stimulus RB0-0,RB1,RB2,RB3 - 1
	goto	measure 
А вот ето надо под новъй кварц расписать. Ето функции для работъ с дисплеем - на 743 ряд

Код: Выделить всё

Enbl	bsf	PortA,E		;1 на вывод E ЖКИ
	nop			;Пауза
	bcf	PortA,E		;0 на вывод E ЖКИ
	movlw	.25		;Пауза
	movwf	Temp
Paus2   
	decfsz  Temp,f
	goto    Paus2
	return
;=========
;Средняя задержка.
;=========
Pausem			
	movlw	.255
	movwf	Temp
Pausm2   
	nop
	nop
	nop
	nop
	decfsz  Temp,f
	goto    Pausm2
	return
;=========
;Большая задержка.
;=========
Pausbig	
	movlw   .255		
        movwf   Count        
Pause15	
	btfsc	PortB,Off
	goto	Stop
	movlw   .255
        movwf   Temp
Pause14	
	decfsz  Temp,1
        goto    Pause14
	decfsz  Count,1
        goto    Pause15
	return
С маленким усилием можно перейти на 16F628A.

И да простить меня автор, что так грубо вмешался в его кода.
Лом - ето город в Болгарии, а не инструмент юстировки електроники.
Поставщик валерьянки для Кота
Сообщения: 2222
Зарегистрирован: Вт ноя 27, 2007 11:32:06
Откуда: Tashkent

Сообщение uk8amk »

Что-то в программе поломалось, вообще нет вывода на дисплей. Даже на заниженной частоте.
Пока смотрю в симуляторе Proteus. Оригинальная прошивка из статьи компилируется и работает безупречно.
Поставщик валерьянки для Кота
Аватара пользователя
Сообщения: 2042
Зарегистрирован: Чт дек 27, 2012 20:46:09
Откуда: Болгария, г. Лом

Сообщение botchin »

Ето надо убрать - в начало программъ - на 105 ряд, в обязятелном порядке

Код: Выделить всё

;test start -Valerij
;   bcf   Opt,0
;   bsf Opt,1      ;время измерения 10 сек
;   bcf   Opt,1
;   bcf Opt,0    ;время измерения 1 сек
   bcf   Opt,1
   bsf Opt,0    ;время измерения .1 сек
;установи в Stimulus RB0-0,RB1,RB2,RB3 - 1
   goto   measure 
Если не убрать его то на дисплее ничего не получится,

Для правилной работъ индикатора необходимо задержки привести в соответствие с документацию на индикатора.
Изображение
Ето кусок из документации. Изображение кликабелное
Я дал трех процедур каторъе надо подгонит.
Enbl - вход Enable индикатора
Pausem - маленкая задержка - около 40uS
Pausbig - Большая задержка =1.6mS

С протеусом не работаю

PS: Убрал, подкоректировал, проверил.
Вложения
frec1_00_d.asm
(23.68 КБ) 459 скачиваний
Лом - ето город в Болгарии, а не инструмент юстировки електроники.
Поставщик валерьянки для Кота
Сообщения: 2222
Зарегистрирован: Вт ноя 27, 2007 11:32:06
Откуда: Tashkent

Сообщение uk8amk »

Вроде заработало.
Спасибо.
Вложения
fmeter.PNG
(22 КБ) 533 скачивания
Поставщик валерьянки для Кота
Аватара пользователя
Сообщения: 2042
Зарегистрирован: Чт дек 27, 2012 20:46:09
Откуда: Болгария, г. Лом

Сообщение botchin »

Рад, если успел помочь.

Удачи. Подожду день -другой и уберу проекта с компа.
Лом - ето город в Болгарии, а не инструмент юстировки електроники.
Поставщик валерьянки для Кота
Сообщения: 2222
Зарегистрирован: Вт ноя 27, 2007 11:32:06
Откуда: Tashkent

Сообщение uk8amk »

В протеусе работало, а в железе pic16f84a-20ip никак не запустился.

Нашёл проект простого частотомера от радиолюбителя RA4NAL, там как раз через меню можно установить частоту опорного генератора.
http://ra4nal.qrz.ru/chlcd16.shtml
Сделал по быстрому на макетке чтоб посмотреть.
Изображение
Разница между двумя некалиброванными прогретыми генераторами меньше 1Гц, очень неплохо.

В целом нашёл что искал, тему можно считать закрытой.
Всем спасибо.
Мудрый кот
Сообщения: 1713
Зарегистрирован: Вт янв 05, 2016 10:14:25
Откуда: поселок Мелеуз

Сообщение Novice user »

хочу попробовать собрать 2 частотомера из поста от uk8amk со ссылкой на http://sxem.org/2-vse-stati/24-izmereni ... -pic16f84a ,оба на PIC16F84A
Один просто частотомер,второй с свч-делителем на 64 либо 256
Жки один на оба частотомера,можно ли как-то коммутировать подключение жки к микроконтроллерам?есть ли решение?
-------------------------------------------------------------------------------------------------------------------------------------------------
просто несколько лет лежат эти pic16f84a без дела,хоть где-то пригодятся :))
Поставщик валерьянки для Кота
Сообщения: 2222
Зарегистрирован: Вт ноя 27, 2007 11:32:06
Откуда: Tashkent

Сообщение uk8amk »

Если вы обратили внимание, то для делителя там множитель 1000.
Для делителя 2^N показания придётся пересчитывать вручную.

Экранчик коммутируется либо перетыканием между устройствами, либо тумблером на MCLR контроллеров. Но на мой взгляд это не совсем разумно. Лучше изготовить один частотомер с нужными функциями. А лишним ПИКам применение ещё найдётся.
Ответить

Вернуться в «Цифровая техника»