Уважаемые посетители! Форум CQHAM.RU существует исключительно за счет показа рекламы. Мы будем благодарны, если Вы не будете блокировать рекламу на нашем Форуме. Просим внести cqham.ru в список исключений для Вашего блокировщика рекламы.
Страница 43 из 46 ПерваяПервая ... 3340414243444546 ПоследняяПоследняя
Показано с 421 по 430 из 460

Тема: DDC/DUC трансивер на базе OSA103 Mini

  1. #421
    аа, понял, спс
    Но насколько я помню возможности формирования сигнала TX у HDSDR уступают ZEUS, и это еще мягко сказано )
    конечно, можно прикрутить внешний стек обработок
    73! Сергей


  2. #422

    Регистрация
    03.01.2017
    Адрес
    Белгород
    Сообщений
    1,483
    Записей в дневнике
    1
    NikB,
    Здравствуйте .
    Какой band декодер вы применяете в этой конструкции что на видео?
    Диапазоны по частоте в режиме tx определяются?

  3. #423
    Добрый день!
    Бэндкодер реализован на adrduino + внешний цап управляемый по SPI.
    Вот код:

    Скрытый текст

    #define F_CPU 16000000UL

    #include <avr/io.h>
    #include <stdint.h>
    #include <avr/interrupt.h>
    #include "SPI.h"

    int LD = 8;
    int CS = 10;

    int A = 2;
    int B = 3;
    int C = 4;
    //int v_port = 9;

    word outputValue = 0; // a word is a 16-bit number
    byte data = 0; // and a byte is an 8-bit number

    void setup() {

    pinMode(A, OUTPUT);
    pinMode(B, OUTPUT);
    pinMode(C, OUTPUT);
    //pinMode(v_port, OUTPUT);

    digitalWrite(A, HIGH);
    digitalWrite(B, HIGH);
    digitalWrite(C, HIGH);

    pinMode(CS, OUTPUT);
    pinMode(LD, OUTPUT);
    SPI.begin(); // wake up the SPI bus.
    SPI.setDataMode(SPI_MODE3);
    SPI.setBitOrder(MSBFIRST);
    }

    //Decoder
    void switch_bpf(uint8_t n)
    {
    if (n < 7)
    {
    if (n == 0)
    {
    digitalWrite(A, LOW);
    digitalWrite(B, LOW);
    digitalWrite(C, LOW);
    }
    if (n == 1)
    {
    digitalWrite(A, HIGH);
    digitalWrite(B, LOW);
    digitalWrite(C, LOW);
    }
    if (n == 2)
    {
    digitalWrite(A, LOW);
    digitalWrite(B, HIGH);
    digitalWrite(C, LOW);
    }
    if (n == 3)
    {
    digitalWrite(A, HIGH);
    digitalWrite(B, HIGH);
    digitalWrite(C, LOW);
    }
    if (n == 4)
    {
    digitalWrite(A, LOW);
    digitalWrite(B, LOW);
    digitalWrite(C, HIGH);
    }
    if (n == 5)
    {
    digitalWrite(A, HIGH);
    digitalWrite(B, LOW);
    digitalWrite(C, HIGH);
    }
    if (n == 6)
    {
    digitalWrite(A, LOW);
    digitalWrite(B, HIGH);
    digitalWrite(C, HIGH);
    }
    }
    }
    //Decoder_end

    //Freq
    const uint32_t freqs[] = { // верхние границы диапазонов
    450000 // 0..450
    , 800000 //450..800
    , 1900000 // 800 .. 1.9
    , 5000000 // 1.9 .. 5
    , 12000000 // 5 .. 12
    , 22000000 // 12 .. 22
    , 33000000 // 22 .. 33
    , 0xFFFFFFFFUL // если выше - включаем bypass
    };
    //Freq_END

    //DAC_V_out
    const uint32_t dac_out[] = { // верхние границы диапазонов
    1900 //0
    , 1880 //1
    , 1875 //2
    , 1870 //3
    , 1855 //4
    , 1850 //5
    , 1845 //6
    , 1830 //7
    , 1825 //8
    , 1820 //9
    , 1810 //10
    , 1795 //11
    , 1790 //12
    , 1785 //13
    , 1775 //14
    , 1760 //15
    , 1755 //16
    , 1750 //17
    , 1745 //18
    , 1725 //19
    , 1720 //20
    , 1710 //21
    , 1700 //22
    , 1680 //23
    , 1660 //24
    , 1610 //25
    , 1600 //26
    , 1840 //27
    };
    //DAC_END


    inline void uart_init(void)
    {
    UBRR0 = 0; // 1Mbps
    UCSR0C = (1 << UCSZ01) | (1 << UCSZ00); // 8 бит данных, 1 стоп-бит, без контроля чётности
    UCSR0B = (1 << RXEN0); // разрешить прием данных
    }


    //*** Инициализация таймера 1, частота ~16 КГц ***//
    inline void timer_init(void)
    {
    //TCCR1A = 0; // режим CTC
    TCCR1B = (1 << WGM12) | (1 << CS12) | (1 << CS10); // fOSC/1024
    //OCR1A = 0xFFFF; // считать до упора
    }



    //*** Прием данных по UART ***//
    unsigned char uart_receive(void)
    {
    while (!(UCSR0A & (1 << RXC0)));
    return UDR0;
    }

    void loop()
    {
    //////////
    //outputValue = 1720;

    // delay(1000);
    //////////
    //
    uint8_t x; // индекс принятого байта в буфере
    uint8_t buf[5]; // буфер приёма
    uint16_t tmr; // предыдущее состояние таймера
    #define FREQ (*(uint32_t*)buf)
    #define RXTX (buf[4])
    #define TXFLAG 0x80
    //_end
    uart_init();
    timer_init();
    tmr = TCNT1;
    x = 0;
    while (x < 5)
    {
    buf[x++] = uart_receive();
    if (TCNT1 - tmr > 600) // если на приём ушло много времени,
    x = 1; // ... то это первый байт пакета
    tmr = TCNT1; // обновим таймер
    }

    for (uint8_t i = 0; i < sizeof(freqs) / sizeof(freqs[0]); i++)
    {
    if (FREQ <= freqs[i])
    {
    switch_bpf(i);
    //1
    if (FREQ >= 450000 && FREQ <= 500000){outputValue=dac_out[12];}
    if (FREQ >= 500000 && FREQ <= 550000){outputValue=dac_out[21];}
    if (FREQ >= 550000 && FREQ <= 800000){outputValue=dac_out[26];}
    //
    //2
    if (FREQ >= 800000 && FREQ <= 900000){outputValue=dac_out[0];}
    if (FREQ >= 1000000 && FREQ <= 1100000){outputValue=dac_out[2];}
    if (FREQ >= 1100000 && FREQ <= 1200000){outputValue=dac_out[3];}
    if (FREQ >= 1200000 && FREQ <= 1400000){outputValue=dac_out[5];}
    if (FREQ >= 1400000 && FREQ <= 1600000){outputValue=dac_out[15];}
    if (FREQ >= 1600000 && FREQ <= 1800000){outputValue=dac_out[25];}
    if (FREQ >= 1800000 && FREQ <= 1900000){outputValue=dac_out[25];}
    if (FREQ >= 1900000 && FREQ <= 2500000){outputValue=dac_out[0];}
    //
    //3
    if (FREQ >= 2500000 && FREQ <= 3000000){outputValue=dac_out[0];}
    if (FREQ >= 3000000 && FREQ <= 3400000){outputValue=dac_out[2];}
    if (FREQ >= 3400000 && FREQ <= 4000000){outputValue=dac_out[7];}
    if (FREQ >= 4000000 && FREQ <= 4500000){outputValue=dac_out[11];}
    if (FREQ >= 4500000 && FREQ <= 5000000){outputValue=dac_out[17];}
    //if (FREQ >= 5000000 && FREQ <= 5500000){outputValue=dac_out[13];}
    //
    //4
    if (FREQ >= 5000000 && FREQ <= 6800000){outputValue=dac_out[0];}
    if (FREQ >= 6800000 && FREQ <= 7000000){outputValue=dac_out[1];}
    if (FREQ >= 7000000 && FREQ <= 8000000){outputValue=dac_out[5];}
    if (FREQ >= 8000000 && FREQ <= 9000000){outputValue=dac_out[11];}
    if (FREQ >= 10000000 && FREQ <= 11000000){outputValue=dac_out[19];}
    if (FREQ >= 11000000 && FREQ <= 12000000){outputValue=dac_out[24];}
    if (FREQ >= 12000000 && FREQ <= 13000000){outputValue=dac_out[27];}
    //
    //5
    if (FREQ >= 13000000 && FREQ <= 14000000){outputValue=dac_out[8];}
    if (FREQ >= 14000000 && FREQ <= 15000000){outputValue=dac_out[10];}
    if (FREQ >= 15000000 && FREQ <= 16000000){outputValue=dac_out[13];}
    if (FREQ >= 16000000 && FREQ <= 17000000){outputValue=dac_out[16];}
    if (FREQ >= 18000000 && FREQ <= 19000000){outputValue=dac_out[19];}
    if (FREQ >= 19000000 && FREQ <= 20000000){outputValue=dac_out[24];}
    if (FREQ >= 20000000 && FREQ <= 21000000){outputValue=dac_out[25];}
    if (FREQ >= 21000000 && FREQ <= 22000000){outputValue=dac_out[26];}
    //
    //6
    if (FREQ >= 22000000 && FREQ <= 33000000){outputValue=dac_out[10];}
    //
    digitalWrite(LD, HIGH);
    digitalWrite(CS, LOW);
    data = highByte(outputValue);
    SPI.transfer(data);
    data = lowByte(outputValue);
    SPI.transfer(data);
    digitalWrite(CS, HIGH);
    digitalWrite(LD, LOW);
    break;
    }
    }

    }


    Оса просто передает на вход ардуины свою частоту, не важно прием или передача.

  4. #424

    Регистрация
    03.01.2017
    Адрес
    Белгород
    Сообщений
    1,483
    Записей в дневнике
    1
    NikB,
    Доброго дня.
    А как аппаратно происходит связь OSы с контроллером ардуины? Нет у Вас набросков схемного решения?

  5. #425
    Добрый день!

    Порт ардуино rx0 подключен к порту AUX output Осы. Данные передаются в формате RS232. Подробнее в посте #127

  6. Спасибо от Radiotester

  7. #426
    Добрый день!
    Нужен совет от вас по поводу передающей части трансивера на базе Осы.

    На каком варианте Вы бы остановились:
    Современный тюнер и усилитель с Али или ламповый или транзисторный с вариометром и набором емкостей?
    Корпус позволяет реализовать и то и то.
    И чтобы хватило мощи Осы раскачать это дело!

    Всем спасибо за помощь!

  8. #427

    Регистрация
    15.02.2014
    Адрес
    Алексеевка
    Сообщений
    1,585
    Позывной
    RC3ZQ
    NikB,
    Если полупроводниковый вариант - то тюнер N7DDC очень хороший, и это полный автомат.
    Оконечник можно на RD16hhf1 4шт и снимать с них честных 70вт при 24в питании.
    Китайские наборы на mrf это очень чудо чудные наборы которые крови попьют не мало, пусть там что угодно говорят бывалые но это "не тот компот".

  9. Спасибо от NikB

  10. #428
    Если есть Антенны, то эти железки не нужны

  11. #429
    Цитата Сообщение от RC3ZQ Посмотреть сообщение
    Оконечник можно на RD16hhf1 4шт и снимать с них честных 70вт при 24в питании.
    Спасибо! А что перед ними посоветуете? У Осы я так понимаю на выходе не более +5dbm.


  12. #430
    Цитата Сообщение от NikB Посмотреть сообщение
    А что перед ними посоветуете?
    Хотя бы однотактный каскад на RD06, RD15 или том же RD16.
    Юрий.

Страница 43 из 46 ПерваяПервая ... 3340414243444546 ПоследняяПоследняя

Информация о теме

Пользователи, просматривающие эту тему

Эту тему просматривают: 2 (пользователей: 0 , гостей: 2)

Похожие темы

  1. Измерительный прибор OSA103 Mini
    от Sergey_gh в разделе Измерения
    Ответов: 4535
    Последнее сообщение: Вчера, 10:10
  2. СДР трансивер на базе Red Pitaya
    от Kia2700d в разделе Software Defined Radio (SDR), Digital Radio Mondiale (DRM)
    Ответов: 1035
    Последнее сообщение: 11.11.2020, 06:07
  3. Трансивер на базе приёмника КАРЛСОН
    от валерий радио в разделе Трансиверы, приемники КВ/УКВ
    Ответов: 11
    Последнее сообщение: 15.12.2014, 00:49
  4. Вседиаппазонный КВ трансивер на базе радиостанции Ангара 1
    от Владимирдесага в разделе Модификация радиостанций
    Ответов: 3
    Последнее сообщение: 26.03.2009, 19:51
  5. Трансивер на базе фирменного фильтра
    от DerBear в разделе Технический кабинет
    Ответов: 12
    Последнее сообщение: 02.03.2006, 13:47

Ваши права

  • Вы не можете создавать новые темы
  • Вы не можете отвечать в темах
  • Вы не можете прикреплять вложения
  • Вы не можете редактировать свои сообщения
  •