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

 
 
> Комплексный вопрос: прием RC5 в сложных условиях
ARV
сообщение Sep 12 2011, 17:29
Сообщение #1


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

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



я попал в тупик. пытаюсь сделать ДУ для своей RGB-лампы на мощном RGB-светодиоде. Пульт самодельный, все самодельное короче. И вот какая проблема: при малой яркости лампы ДУ работает уверенно на 5 метров и более, но стоит поднять яркость - дальность резко падает, доходя до буквально "впритыка".

я грешу на "засветку" светодиодом ИК-приемника, ведь они в непосредственной близости друг от друга, хотя прямое излучение на приемник не попадает. В общем, тупик sad.gif

может будут какие-то советы, идеи - как побороть проблему?

для справки вот ссылки
пульт: http://www.simple-devices.ru/prj/9-electr/...-remote-control
лампа: http://www.simple-devices.ru/prj/9-electr/...imple-mood-lamp



--------------------
Я бы взял частями... но мне надо сразу.
Go to the top of the page
 
+Quote Post
 
Start new topic
Ответов
ARV
сообщение Sep 14 2011, 12:09
Сообщение #2


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

Группа: Свой
Сообщений: 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
Сообщение #3


Участник
*

Группа: Участник
Сообщений: 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
ARV
сообщение Sep 14 2011, 15:02
Сообщение #4


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

Группа: Свой
Сообщений: 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

Сообщений в этой теме
- ARV   Комплексный вопрос: прием RC5 в сложных условиях   Sep 12 2011, 17:29
- - kovigor   Цитата(ARV @ Sep 12 2011, 20:29) может бу...   Sep 12 2011, 17:35
|- - ARV   Цитата(kovigor @ Sep 12 2011, 21:35) Стек...   Sep 12 2011, 18:10
|- - kovigor   Цитата(ARV @ Sep 12 2011, 21:10) вы же ви...   Sep 12 2011, 18:18
|- - ARV   Цитата(kovigor @ Sep 12 2011, 22:18) В те...   Sep 12 2011, 18:32
|- - kovigor   Цитата(ARV @ Sep 12 2011, 21:32) странно:...   Sep 12 2011, 18:42
- - Aprel   В питании датчика не хватает резистора в стандартн...   Sep 12 2011, 22:16
- - ARV   гм... по поводу питания - плата двусторонняя, одна...   Sep 13 2011, 04:30
- - ILYAUL   Очень интересно. Вы же яркость поднимаете пультом ...   Sep 13 2011, 05:35
|- - ARV   Цитата(ILYAUL @ Sep 13 2011, 09:35) Очень...   Sep 13 2011, 05:39
|- - kolobok0   Цитата(ARV @ Sep 13 2011, 09:39) .. и пер...   Sep 13 2011, 07:34
- - ILYAUL   Так проведите эксперимент. Откл. светодиоды - осци...   Sep 13 2011, 05:50
- - Aprel   Если не хотите читать даташит на датчик, посмотрит...   Sep 13 2011, 09:13
- - Клим   В пульт - драйвер нормальный. Даже три ноги тиньк...   Sep 13 2011, 09:22
- - Aprel   Драйвер - это если с резисторами сильно греется. А...   Sep 13 2011, 10:06
- - muravei   Попробовать ввести "минуту молчания", по...   Sep 13 2011, 10:06
- - Aprel   Думаю, будет сильно заметно. А минутой молчания по...   Sep 13 2011, 10:12
- - ARV   Цитата(ILYAUL @ Sep 13 2011, 09:50) Так п...   Sep 13 2011, 10:52
- - Aprel   Родную частоту датчика можно вычислить эксперемент...   Sep 13 2011, 12:12
|- - ARV   Цитата(Aprel @ Sep 13 2011, 16:12) Родную...   Sep 13 2011, 12:29
- - Aprel   Ну да, ёмкость маленькая. Там ещё есть Qg, тоже до...   Sep 13 2011, 12:51
- - Aprel   Всё-таки я бы сначала сделал что проще (если ШИМ 1...   Sep 13 2011, 14:53
- - Клим   Ну а все таки, пробовали ли вы поставить драйвер в...   Sep 14 2011, 04:42
|- - ARV   Цитата(Клим @ Sep 14 2011, 08:42) Ну а вс...   Sep 14 2011, 06:55
- - ReAl   Интересно -- сбивает попадание перепадов освещенно...   Sep 14 2011, 06:36
- - Aprel   Вот и замечательно. Теперь можно увеличить резис...   Sep 14 2011, 08:32
- - ARV   судя по всему, сбивали гармоники именно по питанию...   Sep 14 2011, 09:43
- - Aprel   Но ведь есть желание улучшить? У вас по тонкой дор...   Sep 14 2011, 10:07
|- - ARV   Цитата(Aprel @ Sep 14 2011, 14:07) Но вед...   Sep 14 2011, 10:37
- - Aprel   Цитата(ARV @ Sep 14 2011, 13:37) плата с ...   Sep 14 2011, 11:40
- - xemul   Цитата(ARV @ Sep 13 2011, 14:52) датчиков...   Sep 14 2011, 11:57
- - Aprel   "практически не зависит от частоты" Что...   Sep 14 2011, 14:59
- - Клим   Судя по картинке на первой странице, у вас общий п...   Sep 15 2011, 18:23
- - ARV   Цитата(Клим @ Sep 15 2011, 22:23) Судя по...   Sep 16 2011, 04:18


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

 


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


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