|
AVR + Micrel, Радио канал |
|
|
|
Jun 16 2006, 17:33
|
Участник

Группа: Участник
Сообщений: 57
Регистрация: 30-08-05
Пользователь №: 8 094

|
Приветсвую! нужно было организовать передачу данных(пока односторонюю) всего на 10 метров решил было помучаться с чипконами даже приобрел пару сс2500 но припаять возможности не было решил отложить на время и приобрел micrf022bm и micrf102bm делал все по даташиту обвязка стандартная 6 МГц резонаторы ( 390 МГц ) на приемнике дросселя на антенне 10 и 47 (43 не нашел) нГн согласно таблице для данной частоты Кондер к антенне на приемнике не паял А передатчик полностью по даташиту со всеми номиналами изготовлен разве что резонатор другой частоты Изготовил тестовый стендик на авр одна микруха отправляла 1 на 0.5 сек а потом 0 на 0.5 сек и по кругу другая принимала сигнал с приемника и по идее должна была зажигать светодиод на 0.5 сек и тушить его. ну ессесно ничего не работало  я в радио-передачах полный чайник и делал все тупо и на прямую без каких либо расчетов. Кто с ними возился расскажите пожалуйста все нюансы... и ошибки мои... да кстати с анти-статикой вышел казус(заземление теоретически было на руке провод и на паялке) но потом стукнуло меня после окончания пайки что я забыл проверить а нормальное ли заземление было т.к на батарее была царапина без краски и я к туда примотал провод оказалось что заземления нет т.к провод хреново прижимался так вот мог ли я статикой убить их? или они вплотную друг к другу должны что-либо передавать? собсно стэндик:
--------------------
|
|
|
|
|
Jun 16 2006, 20:21
|
Участник

Группа: Участник
Сообщений: 57
Регистрация: 30-08-05
Пользователь №: 8 094

|
никаких протоколов пока не использую Просто посылаю набор 0 и 1 со скважностью 5 мксек а микруха на приемнике просто слушает эфир нога установленна в 1 и если будет 0 то должен загорется светодиод светодиод не загорается осцилографа нет поэтому все осложняется
--------------------
|
|
|
|
|
Jun 17 2006, 04:46
|
Участник

Группа: Участник
Сообщений: 57
Регистрация: 30-08-05
Пользователь №: 8 094

|
Звуковуха есть делать лень надеялся что и без него обойдусь Вообще ничего в коде сложного нет, по моим идеям сигнал на приемнике хоть какой-то должен быть... Код: Кодевижн: Передатчик: Код /***************************************************** This program was produced by the CodeWizardAVR V1.24.6 Standard Automatic Program Generator © Copyright 1998-2005 Pavel Haiduc, HP InfoTech s.r.l. http://www.hpinfotech.com e-mail:office@hpinfotech.com
Project : Version : Date : 16.06.2006 Author : leo Company : nkrp Comments:
Chip type : ATmega16L Program type : Application Clock frequency : 4,000000 MHz Memory model : Small External SRAM size : 0 Data Stack size : 256 *****************************************************/
#include <mega16.h> #include <delay.h>
#define BUTTON PIND.6 #define LED1 PORTB.7 #define SIGNAL PORTB.0
// Declare your global variables here
int but;
void main(void) { // Declare your local variables here
// Input/Output Ports initialization // Port A initialization // Func7=In Func6=In Func5=In Func4=In Func3=In Func2=In Func1=In Func0=In // State7=T State6=T State5=T State4=T State3=T State2=T State1=T State0=T PORTA=0x00; DDRA=0x00;
// Port B initialization // Func7=Out Func6=In Func5=In Func4=In Func3=In Func2=In Func1=In Func0=Out // State7=0 State6=T State5=T State4=T State3=T State2=T State1=T State0=0 PORTB=0x00; DDRB=0x81;
// Port C initialization // Func7=In Func6=In Func5=In Func4=In Func3=In Func2=In Func1=In Func0=In // State7=T State6=T State5=T State4=T State3=T State2=T State1=T State0=T PORTC=0x00; DDRC=0x00;
// Port D initialization // Func7=In Func6=In Func5=In Func4=In Func3=In Func2=In Func1=In Func0=In // State7=T State6=P State5=T State4=T State3=T State2=T State1=T State0=T PORTD=0x40; DDRD=0x00;
// Timer/Counter 0 initialization // Clock source: System Clock // Clock value: Timer 0 Stopped // Mode: Normal top=FFh // OC0 output: Disconnected TCCR0=0x00; TCNT0=0x00; OCR0=0x00;
// Timer/Counter 1 initialization // Clock source: System Clock // Clock value: Timer 1 Stopped // Mode: Normal top=FFFFh // OC1A output: Discon. // OC1B output: Discon. // Noise Canceler: Off // Input Capture on Falling Edge // Timer 1 Overflow Interrupt: Off // Input Capture Interrupt: Off // Compare A Match Interrupt: Off // Compare B Match Interrupt: Off TCCR1A=0x00; TCCR1B=0x00; TCNT1H=0x00; TCNT1L=0x00; ICR1H=0x00; ICR1L=0x00; OCR1AH=0x00; OCR1AL=0x00; OCR1BH=0x00; OCR1BL=0x00;
// Timer/Counter 2 initialization // Clock source: System Clock // Clock value: Timer 2 Stopped // Mode: Normal top=FFh // OC2 output: Disconnected ASSR=0x00; TCCR2=0x00; TCNT2=0x00; OCR2=0x00;
// External Interrupt(s) initialization // INT0: Off // INT1: Off // INT2: Off MCUCR=0x00; MCUCSR=0x00;
// Timer(s)/Counter(s) Interrupt(s) initialization TIMSK=0x00;
// Analog Comparator initialization // Analog Comparator: Off // Analog Comparator Input Capture by Timer/Counter 1: Off ACSR=0x80; SFIOR=0x00;
but=0;
while (1) { // Place your code here delay_ms(200); if(!BUTTON) but++; if(but>2) { LED1=1; for(but=3;but<1000;but++) { SIGNAL=1; delay_us(500); // Тут перепробовал разные значения SIGNAL=0; } LED1=0; but=0; SIGNAL=0; } }; } Приемник: Код /***************************************************** This program was produced by the CodeWizardAVR V1.24.6 Standard Automatic Program Generator © Copyright 1998-2005 Pavel Haiduc, HP InfoTech s.r.l. http://www.hpinfotech.com e-mail:office@hpinfotech.com
Project : Version : Date : 16.06.2006 Author : leo Company : nkrp Comments:
Chip type : AT90S2313 Clock frequency : 4,000000 MHz Memory model : Tiny External SRAM size : 0 Data Stack size : 32 *****************************************************/
#include <90s2313.h> #include <delay.h> #define SIGNAL PINB.7 #define LED1 PORTB.2 #define LED2 PORTB.4 // Declare your global variables here
void main(void) { // Declare your local variables here
// Input/Output Ports initialization // Port B initialization // Func7=In Func6=In Func5=In Func4=Out Func3=In Func2=Out Func1=In Func0=In // State7=P State6=T State5=T State4=1 State3=T State2=1 State1=T State0=T PORTB=0x94; DDRB=0x14;
// Port D initialization // Func6=In Func5=In Func4=In Func3=In Func2=In Func1=In Func0=In // State6=T State5=T State4=T State3=T State2=T State1=T State0=T PORTD=0x00; DDRD=0x00;
// Timer/Counter 0 initialization // Clock source: System Clock // Clock value: Timer 0 Stopped TCCR0=0x00; TCNT0=0x00;
// Timer/Counter 1 initialization // Clock source: System Clock // Clock value: Timer 1 Stopped // Mode: Normal top=FFFFh // OC1 output: Discon. // Noise Canceler: Off // Input Capture on Falling Edge // Timer 1 Overflow Interrupt: Off // Input Capture Interrupt: Off // Compare Match Interrupt: Off TCCR1A=0x00; TCCR1B=0x00; TCNT1H=0x00; TCNT1L=0x00; OCR1H=0x00; OCR1L=0x00;
// External Interrupt(s) initialization // INT0: Off // INT1: Off GIMSK=0x00; MCUCR=0x00;
// Timer(s)/Counter(s) Interrupt(s) initialization TIMSK=0x00;
// Analog Comparator initialization // Analog Comparator: Off // Analog Comparator Input Capture by Timer/Counter 1: Off ACSR=0x80;
LED1=0; while (1) { // Place your code here if(!SIGNAL) { LED1=1; LED2=0; } }; }
Сообщение отредактировал jekler - Jun 17 2006, 04:49
--------------------
|
|
|
|
|
Jun 17 2006, 06:45
|

Знающий
   
Группа: Свой
Сообщений: 902
Регистрация: 2-01-06
Из: Краснодар
Пользователь №: 12 768

|
и че,этот код работает?имхо сомнительно для приемника я-бы добавил else {LED1=0;LED2=1;} кстати,зачем 2 портами дергать? И передающий какой-то кривой-гораздо проще настроить таймер на нужную длительность и в прерыва- нии от него менять значеник посылаемого бита. Кстати,если в DS рекомендуется использовать NRZ,тогда это вообще не пройдет. И без спектроанализатора при проверке передающего модуля вам тяжело прийдется.
--------------------
"Hello, word!" - 17 errors 56 warnings
|
|
|
|
|
Jun 17 2006, 11:02
|
Участник

Группа: Участник
Сообщений: 57
Регистрация: 30-08-05
Пользователь №: 8 094

|
Спасибо за советы  попробую еще програмно похимичить... мож всеж обойдусь без осцилографа
--------------------
|
|
|
|
|
Jun 18 2006, 03:25
|

Профессионал
    
Группа: Свой
Сообщений: 1 065
Регистрация: 8-10-05
Из: Kiev, UA
Пользователь №: 9 380

|
Цитата Может быть, что сигнал передатчика не попадает в полосу пропускания приемника Если при прямом проводном соединении работает, то скорее всего модуляция/демодуляция проходят. На мой взгляд тут одна из следующих проблем: 1.Несогласование антенн. 2.Несогласование уровней приемника и передатчика с уровнями АВР. 3.Ошибка в софте. Тут надо включать передатчик и смотреть наличие и качество сигнала на выходе приемника.По результатам плясать далее. Цитата NRZ там непонятно как реализовать - обычная амплитудная манипуляция. А где же NRZ делать как не на АМ? 2 jekler попробуйте для начала, хотя бы сделать меандр не 1Гц, а где-то на уровне килогерца, и подключить светодиод прямо на выход приемника.
--------------------
Вони шукають те, чого нема, Щоб довести, що його не існує.
|
|
|
|
|
Jun 19 2006, 11:28
|

старший лаборант
     
Группа: Свой
Сообщений: 2 702
Регистрация: 30-09-05
Из: ЮЗЖД
Пользователь №: 9 097

|
Цитата(beer_warrior @ Jun 18 2006, 06:25)  Если при прямом проводном соединении работает, то скорее всего модуляция/демодуляция проходят. На мой взгляд тут одна из следующих проблем: 1.Несогласование антенн. 2.Несогласование уровней приемника и передатчика с уровнями АВР. Прямое проводное соединение было без радиомодулей. Но их же можно проверить даже без всякого софта, если подключиться к приемнику осциллографом и пощелкать кнопкой на входе "ASK" MICRF102 (или меандр подать, что удобнее). Насчет несогласования антенн - казалось бы, не все так фатально при столь мизерных мощности и расстоянии  , но петлевая антенна является индуктивностью контура ГУН. Если этот контур настроен слишком далеко от номинальной частоты (индуктивность антенны существенно отличается от расчетной), ФАПЧ не справится. Потому я и упоминал о частотомере. Приемник вогнать в захват можно будет после настройки передатчика. В даташите на передатчик обнаружилась непонятка. В одном месте - "PC Input Range" от 150 до 350 мВ, в другом - делитель пополам с 5 В. Может, выставить все же милливольт 200? (Жаль, микрелов под руками нет - поставил бы эксперимент на досуге).
Сообщение отредактировал Harbinger - Jun 19 2006, 11:37
--------------------
Китайская комплектация - европейское качество! ;)
|
|
|
|
|
Jun 19 2006, 12:09
|
Местный
  
Группа: Свой
Сообщений: 205
Регистрация: 21-12-04
Из: Киев
Пользователь №: 1 593

|
Цитата(jekler @ Jun 16 2006, 20:33)  ... 6 МГц резонаторы ( 390 МГц ) .. А передатчик ... разве что резонатор другой частоты ..... ?????????????????????????????????????????? .......... Если для приемника один резонатор, а для передатчика "другой частоты" Без всяких контроллеров - подавайте на передатчик напряжение питания и смотрите что приемник делает? Если как то заметно, что принимает - можно дергаться дальше. А если приемник, при работающем передатчике, "не дышит" - при чем тут АВРы и коды
--------------------
На "нет" и "нах" :)
|
|
|
|
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0
|
|
|