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

 
 
3 страниц V  < 1 2 3  
Reply to this topicStart new topic
> Комплексный вопрос: прием RC5 в сложных условиях
xemul
сообщение Sep 14 2011, 11:57
Сообщение #31



*****

Группа: Свой
Сообщений: 1 928
Регистрация: 11-07-06
Пользователь №: 18 731



Цитата(ARV @ Sep 13 2011, 14:52) *
датчиков таких - море, какой конкретно у меня - неизвестно, скачанный даташит ограничился только функциональной схемой и параметрами, рекомендаций по схеме включения не содержит. в сущности, ваше замечание по фильтру питания стоящее, попробую проверить.

Цитата(ARV @ Sep 13 2011, 16:29) *
1. Родную частоту датчика я "определил" по его маркировке : A38AD - я так понимаю, 38 - и есть частота в килогерцах. все датчики в своем наименовании так или иначе содержат эту частоту, раз в наименовании моего всего 2 цифры - это она и есть. экспериментально же что 36 килогерц, что 38 - разницы не замечаю (менял несущую в своем пульте)

Возьмите ДШ на Vishay TSOP312 - судя по фотке, у Вас что-то совместимое.
В ДШ обратите внимание на Фигу7 (пульсации по питанию д.б. < 100 мВ) и Фигу13 (если правильно понял, Вы светите пультом практически в торец приёмника, и он работает на отражении сигнала от плафона).
На Фиге5 приведена зависимость чувствительности приёмника от отклонения частоты модуляции. 36 кГц дадут 20-25 % снижения чувствительности у 38 кГц приёмника.
Go to the top of the page
 
+Quote Post
ARV
сообщение Sep 14 2011, 12:09
Сообщение #32


Профессионал
*****

Группа: Свой
Сообщений: 1 143
Регистрация: 30-09-08
Из: Новочеркасск
Пользователь №: 40 581



да, накачал я даташитов кучу... кое-где попадаются и рекомендации по фильтрации - кто ж мог знать. что всяк по-разному пишет доки?
по поводу снижения чувствительности: я прорабатывал алгоритм приема сигналов с почти ЛЮБЫХ пультов, и не заметил, чтобы из-за разной частоты несущей была заметная разница в чувствительности. возможно, у меня просто пространство помещений не позволяет отдалиться настолько, чтобы это снижение зафиксировать... возможно, все мои пульты (6 штук разных производителей) все имеют одинаковую частоту несущей sm.gif померить не удосужился... в любом случае, 25% - это вполне терпимо: руку протянул и компенсировал sm.gif


--------------------
Я бы взял частями... но мне надо сразу.
Go to the top of the page
 
+Quote Post
point5217
сообщение Sep 14 2011, 14:47
Сообщение #33


Участник
*

Группа: Участник
Сообщений: 57
Регистрация: 3-05-09
Из: Бишкек, Кыргызстан
Пользователь №: 48 590



Держите AVR
практически не завит от частоты (поправте только зоны отсекания под Ваш таймер +-30% от паспорного приема RC5)
CODE

.NOLIST
.include "TN2313DEF.inc"
.LIST
;DATE 26.07.07

;+-----------------------------------------------------------------------+
;¦ Выводы процессора ¦
;+-----------------------------------------------------------------------+
;PORT D
.equ IKIN = 2
.equ IKOUT = 4

;+-----------------------------------------------------------------------+
;¦ Флаги ¦
;+-----------------------------------------------------------------------+
;fl1
.equ FL_RX_ADR = 4 ;2 ;Флаг ПРИЕМА АДРЕСА

;+-----------------------------------------------------------------------+
;¦ ПАМЯТЬ ¦
;+-----------------------------------------------------------------------+
.equ BEGIN_SP = 0xDF ;Начало стека

;+-----------------------------------------------------------------------+
;¦ Переменнные ¦
;+-----------------------------------------------------------------------+
.def null = R1
.def reg_ = R2 ;Сохранение контекста для T0

.def ref0 = R8
.def ref1 = R9
.def command = R10
.def system = R11

.def temp = R16
.def fl1 = R18

.def cnt_t = R23
.def timerL = R24

;+----------------------------------------------------------------------+
;¦ Константы ¦
;+----------------------------------------------------------------------+
.equ SYST = 29 ;

.equ COM_ON = 18+8+8 ;
.equ COM_OFF = 17+8+8 ;

;+-----------------------------------------------------------------------+
;¦ НАЧАЛО КОДА ¦
;+-----------------------------------------------------------------------+
.CSEG
.ORG $00
RJMP BEGIN
; ***** Обслуживание прерывания по входу INT0 *****
RETI
; ***** Обслуживание прерывания по входу INT1 *****
RETI
; ***** Обслуживание прерывания по захвату T1 *****
RETI
; ***** Обслуживание прерывания по совпадению T1 A*****
RETI
; ***** Обслуживание прерывания по таймеру T1 *****
RETI
; ***** Обслуживание прерывания по таймеру T0 *****
RJMP SERV_T0 ; cnt for rc-5
; ***** Обслуживание прерывания по приёму символа *****
RETI
; ***** Обслуживание прерывания по опустошению регистра UART *****
RETI
; ***** Обслуживание прерывания по передаче символа *****
RETI
; ***** Обслуживание прерывания по аналоговому компаратору *****
RETI
;
;----------------------------------------------------------------------------
;+--------------------------------------------------------------------------+
;¦ Обслуживание прерывания по переполнению Т0 с перезаписью 64 мкс ¦
;+--------------------------------------------------------------------------+
SERV_T0: IN reg_,SREG

INC timerL

out SREG,reg_
reti
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
;############################################;
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
;инициализация
BEGIN: LDI temp,low (BEGIN_SP)
OUT SPL,temp
CLR null

; РЕГИСТР МАСКИ ПРЕРЫВАНИЯ ОТ ТАЙМЕРА/СЧЕТЧИКА
LDI temp,0b00000010
; ¦¦¦¦¦¦+- TOIE0 разрешение прерывания по переполнению T0
; ¦¦¦¦+--- TICIE1 разрешение прерывания по входу захвата
; ¦+------ OCIE1A разрешение прерывания по совпадению T1
; +------- TOIE1 разрешение прерывания по переполнению T1
OUT TIMSK,temp

; РЕГИСТР УПРАВЛЕНИЯ ТАЙМЕРОМ/СЧЕТЧИКОМ 0
LDI temp,0b00000010
; ¦¦¦¦¦¦¦+ CS00 выбор тактовой частоты T0
; ¦¦¦¦¦¦+- CS01
; ¦¦¦¦¦+-- CS02
; ¦¦¦¦+--- CTC0 очистить при совпадении
; ¦¦¦+---- COM00 режим выхода сравнения
; ¦¦+----- COM01
; ¦+------ PWM0 разрешение ШИМ
OUT TCCR0,temp

; РЕГИСТР A УПРАВЛЕНИЯ ТАЙМЕРОМ/СЧЕТЧИКОМ 1
OUT TCCR1A,null

; РЕГИСТР B УПРАВЛЕНИЯ ТАЙМЕРОМ/СЧЕТЧИКОМ 1
OUT TCCR1B,null

; РЕГИСТР СОВПАДЕНИЯ ТАЙМЕРА/СЧЕТЧИКА 1

; РЕГИСТР УПРАВЛЕНИЯ СТОРОЖЕВЫМ ТАЙМЕРОМ
in temp,WDTCSR
ori temp,(1<<WDCE) | (1<<WDE)
out WDTCSR,temp
; -- Got four cycles to set the new values from here -;
;Set new prescaler(time-out) value = 64K cycles (~0.5 s)
ldi temp,(1<<WDE) | (1<<WDP2) | (1<<WDP0)
out WDTCSR,temp
; -- Finished setting new values, used 2 cycles -;

sbi ACSR,ACD ;Analog comparator off

LDI temp,0b00010000
OUT ddrD,temp
ldi temp,0b00000100
OUT PORTD,temp

CLR fl1 ;сбросим все флаги

SEI
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
; основная программа
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
BEGN: WDR
sbis PIND,IKIN ;пропуск если нет бита (1)
rcall START_RC5

RJMP BEGN
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
fault: ret
;;;;;;;;;;;;;;;;;;;;;
;прижел старт
START_RC5: OUT TCNT0,null
clr timerL ;Measure length of start bit

start2: cpi timerL,10*2 ;если прошло 1.04 мсек (5)
brge fault ;пропуск если больше

sbis PIND,IKIN ;пропуск если бит установлен
rjmp start2
;;;;;;;;;;;;;;;;;;;;;;
;Positive edge of 1st start bit
mov ref0,timerL ;занесли в ref0 время нуля
inc ref0

OUT TCNT0,null
clr timerL

mov ref1,ref0 ;в ref1 время 1
inc ref1
inc ref0

ldi cnt_T,7 ;теперь мы ловим 7 бит адреса
SBR fl1,FL_RX_ADR ;2 Флаг ПРИЕМА АДРЕСА
rjmp bit_is_a_1 ;распознование единицы
;;;;;;;;;;;;;;;;;;;;
;;ждем что 1 продлиться не менее ref1
sample: sbic PIND,IKIN
rjmp bit_is_a_1 ;Jump if line high

;РАСПОЗНАВАНИЕ НУЛЯ
bit_is_a_0: clc ;Store a '0'
rol temp ;сдвиг влево через С=0

;ноль должен продержаться 2.75 мс ; Synchronize timing
bit_is_a_0a: cp timerL,ref1 ;If no edge within 3/4 bit time
brge fault ; exit

sbis PIND,IKIN ;Wait for rising edge
rjmp bit_is_a_0a

OUT TCNT0,null
clr timerL

bit_is_a_0b: cp timerL,ref0 ;(5)If no edge within 3/4 bit time
breq nextbit ; если равно
rjmp bit_is_a_0b ;in the middle of the bit

;РАСПОЗНАВАНИЕ ЕДЕНИЦЫ
bit_is_a_1: sec ;Store a '1'
rol temp ; протолкнули единицу
;Synchronize timing
bit_is_a_1a: cp timerL,ref1 ;If no edge within 3/4 bit time
brge fault ; exit

sbic PIND,IKIN ;Wait for falling edge
rjmp bit_is_a_1a ;in the middle of the bit

OUT TCNT0,null
clr timerL

bit_is_a_1b: cp timerL,ref0 ;(5)If no edge within 3/4 bit time
breq nextbit ; если равно
rjmp bit_is_a_1b ;in the middle of the bit
;;;;;;;;;;;;;;;;;;;
nextbit: OUT TCNT0,null
clr timerL

dec cnt_T ;декремент количество принятых бит
brne sample ; get next bit

sbrs fl1,2 ;FL_RX_ADR Флаг ПРИЕМА АДРЕСА
rjmp L001

mov system,temp ;Place system bits in "system"
ldi cnt_T,6 ;теперь мы ловим 6 бит данных
clr temp

CBR fl1,FL_RX_ADR ;2 Флаг ПРИЕМА АДРЕСА
rjmp sample
;;;;;;;;;;;;;;;;;;;
l001: mov command,temp ;Place system bits in "system"
SBRS system,6 ; второй бит старта 1 то OK
RET ; иначе вываливаемся
; наложили маски
MOV temp,system
ANDI temp,0b00011111
cpi temp,SYST
BREQ SYS_OK

RET
;;;;;;;;;;;;;;;;;
SYS_OK: MOV temp,command
ANDI temp,0b00111111

DL9: CPI temp,COM_ON
BRNE DL10
; НОРМА
CBI PORTD,IKOUT
RET
;;;;;;;;;;;;;;;;;;;;;;
DL10: CPI temp,COM_OFF
BRNE END_IRKIN
; НЕ НОРМА
SBI PORTD,IKOUT
;;;;;;;;;;;;;;;;;;;;;;
END_IRKIN: RET
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
.DB "©MAGIC 07.2007"
;EESAVE = 0
;CKSEL0 = 0
;CKSEL1 = 0
;BODLEVEL1 = 0
;LOCK1 = 0
;LOCK2 = 0


Сообщение отредактировал IgorKossak - Sep 14 2011, 17:18
Причина редактирования: Оформлять код научитесь правильно
Go to the top of the page
 
+Quote Post
Aprel
сообщение Sep 14 2011, 14:59
Сообщение #34





Группа: Участник
Сообщений: 12
Регистрация: 1-12-07
Пользователь №: 32 873



"практически не зависит от частоты"

Что вы имеете ввиду?
Там другая была проблема, и вроде уже решена.
Go to the top of the page
 
+Quote Post
ARV
сообщение Sep 14 2011, 15:02
Сообщение #35


Профессионал
*****

Группа: Свой
Сообщений: 1 143
Регистрация: 30-09-08
Из: Новочеркасск
Пользователь №: 40 581



Цитата(point5217 @ Sep 14 2011, 18:47) *
Держите AVR
практически не завит от частоты (поправте только зоны отсекания под Ваш таймер +-30% от паспорного приема RC5)
ну, во-первых, если вы обратились ко мне, то мой ник ARV, а вовсе не AVR. а по поводу кода - спасибо, конечно, но у меня на Си написано в 5 раз меньше и понятнее, да и работает тоже независимо ни от чего... просто у тиньки один 8-битный таймер, которому досталось делать все: и ШИМ программно генерировать, и задержки для приема RC5-кодов делать... прием RC5 для меня давно решенная задача, причем как минимум тремя принципиально разными способами sm.gif - на все случаи жизни.


--------------------
Я бы взял частями... но мне надо сразу.
Go to the top of the page
 
+Quote Post
Клим
сообщение Sep 15 2011, 18:23
Сообщение #36


Местный
***

Группа: Свой
Сообщений: 230
Регистрация: 7-04-08
Из: Украина, Запорожье
Пользователь №: 36 541



Судя по картинке на первой странице, у вас общий провод светодиодов идет как раз рядом с датчиком. Сейчас все также ??? Датчики крайне капризные, я например, наблюдал, как датчик начинает молотить импульсы, если к обратной стороне палец поднести. А тут тонкий провод с достаточно большим током и на резонансной частоте.
Go to the top of the page
 
+Quote Post
ARV
сообщение Sep 16 2011, 04:18
Сообщение #37


Профессионал
*****

Группа: Свой
Сообщений: 1 143
Регистрация: 30-09-08
Из: Новочеркасск
Пользователь №: 40 581



Цитата(Клим @ Sep 15 2011, 22:23) *
Судя по картинке на первой странице, у вас общий провод светодиодов идет как раз рядом с датчиком. Сейчас все также ??? Датчики крайне капризные, я например, наблюдал, как датчик начинает молотить импульсы, если к обратной стороне палец поднести. А тут тонкий провод с достаточно большим током и на резонансной частоте.
прочтите всю тему, пожалуйста: проблема решена, тока по тонким проводкам не течет, все нормально уже sm.gif


--------------------
Я бы взял частями... но мне надо сразу.
Go to the top of the page
 
+Quote Post

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

 


RSS Текстовая версия Сейчас: 8th July 2025 - 01:00
Рейтинг@Mail.ru


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