Сообщения без ответов | Активные темы
Автор |
Сообщение |
pBorisov
|
Заголовок сообщения: Re: Синтезатор за полчаса Добавлено: Ср 01 апр 2015 21:36 |
|
Зарегистрирован: Вс 07 дек 2008 01:00 Сообщений: 328 Откуда: С-Петербург
|
Спасибо, уже нашел вариант конструктива. На работе попался на глаза двигатель от жесткого диска, блин от двигателя дисковода 3.5 диаметром 70мм. И как-то сразу пошло- движек от HDD как опора, блин как ручка настройки. Разорил в запаснике убитый струйник, снял с него диск и оптопару. 1000 шагов при таком диаметре ручки будет вполне нормально. Проблему с диаметром решу переносом органов управления с торцевой части корпуса на плоскую. Есть еще одна не реализованная идея. Берем пищевую фольгу, на ней на лазернике печатаем диск, клеим на прозрачный пластик, травим. От дисковода движек есть, 200 шагов, но тяжелый, зараза.
_________________ UA1AUB
|
|
Вернуться наверх |
|
|
R1LB
|
Заголовок сообщения: Re: Синтезатор за полчаса Добавлено: Пн 08 июн 2015 00:23 |
|
Зарегистрирован: Пн 14 май 2012 22:42 Сообщений: 486 Откуда: KO49TQ
|
R1AIT писал(а): UB1CDO писал(а): На Дегене все звучит нормально в заявленном диапазоне и даже выше. Частоты вещательного ФМ диапазона получаются без проблем, но как там с формой сигнала и чистотой спектра сказать не могу. Была задумка использовать модуль в бакенах. После "лабораторной работы" с данным изделием уже сомневаюсь. Выбег частоты около 50 Гц за 5 мин после включения, долговременная нестабильность также не радует. Прошита 28.222,500, измерения проводил при комнатной температуре. Вложение:
Комментарий к файлу: not comment...
9850_china.jpg [ 179.24 Кб | Просмотров: 17605 ]
_________________ 73! de R1LB, R1LB-5 Leonid.
|
|
Вернуться наверх |
|
|
386
|
Заголовок сообщения: Re: Синтезатор за полчаса Добавлено: Ср 30 сен 2015 14:42 |
|
Зарегистрирован: Вс 23 сен 2007 00:00 Сообщений: 193 Откуда: Гатчина
|
Возможно кому-нибудь будет полезно - пример кода для работы с AD9850 под Atmel Studio: Код: #define BUS_PORT PORTD #define BUS_DDR DDRD #define DATA PD3 #define FQ_UD PD2 #define W_CLK PD1 #define RESET PD0
void AD9850_init (void) { BUS_PORT &= ~(1<<RESET); BUS_PORT |= 1<<RESET; BUS_PORT &= ~(1<<RESET); BUS_PORT &= ~(1<<DATA); BUS_PORT |= 1<<W_CLK; BUS_PORT &= ~(1<<W_CLK); BUS_PORT |= 1<<FQ_UD; BUS_PORT &= ~(1<<FQ_UD); BUS_PORT |= 1<<W_CLK; BUS_PORT &= ~(1<<W_CLK); BUS_PORT |= 1<<W_CLK; BUS_PORT &= ~(1<<W_CLK); BUS_PORT |= 1<<W_CLK; BUS_PORT &= ~(1<<W_CLK); BUS_PORT |= 1<<FQ_UD; BUS_PORT &= ~(1<<FQ_UD); }
void AD9850_Powerdown (void) { unsigned char i; unsigned char cmd = 0x04;
BUS_PORT |= 1<<FQ_UD; for (i=0; i<8; i++) { if (cmd & 1) BUS_PORT |= 1<<DATA; else BUS_PORT &= ~(1<<DATA); BUS_PORT |= 1<<W_CLK; if (i == 0) BUS_PORT &= ~(1<<FQ_UD); cmd >>= 1; BUS_PORT &= ~(1<<W_CLK); } BUS_PORT |= 1<<FQ_UD; BUS_PORT &= ~(1<<FQ_UD); }
void AD9850_Set (double freq) { unsigned char i; unsigned long dataword;
dataword = 4294967296*freq/125000000; for (i=0; i<40; i++) { if (dataword & 1) BUS_PORT |= 1<<DATA; else BUS_PORT &= ~(1<<DATA); BUS_PORT |= 1<<W_CLK; dataword >>= 1; BUS_PORT &= ~(1<<W_CLK); } BUS_PORT |= 1<<FQ_UD; BUS_PORT &= ~(1<<FQ_UD); }
|
|
Вернуться наверх |
|
|
Maks48
|
Заголовок сообщения: Re: Синтезатор за полчаса Добавлено: Чт 01 окт 2015 10:25 |
|
Зарегистрирован: Ср 24 апр 2013 18:31 Сообщений: 136 Откуда: отсюда и не видно ...
|
мои 5 копеек драйвер AD9850(51) для Pic16fxxx (с подробными комментариями) Код: /*------------------------------------------------------------------------------ AD9850 Serial driver AD9850 notes: be sure to ground reset pin and set Data 0,1,2 per MFG data
схема управления DDS на PIC16F887 конфигурация выводов RC0 -> DAT dds (Ddata) RC1 -> CLK dds (Dclock) RC2 -> FQ dds (Dlatch) RB5 -> RESET dds
Алгоритм управления по последовательному методу: аппаратно установлено на выводе 22 (RESET) уровень L (=0) на выводе 2 (D2) уровень L (=0) на выводах 3-4 (D1-D0) уровень H (=1) программные установки 1) подать на выводе 7(WCLK) импульс WCLK HIGH длительностью tWH>= 3.5ns 2) после окончания импульса WCLK HIGH с задержкой >= 3.5ns подать на вывод 8(FQ_UD) импульс FQ_UD HIGH длительностью tFH >= 7.0ns 3) после окончания импульса FQ_UD HIGH, спустя не менее 18 периодов опорной частоты, подать на вывод 25(D7 - DATA) первый бит управляющего слова 4) с задержкой tDS(>= 3.5ns) относительно подачи бита DATA подать на вывод 7(WCLK) импульс WCLK HIGH длительностью tWH>= 3.5ns 5) по окончанию импульса WCLK HIGH подать на вывод 25 (D7 - DATA) следующий бит управляющего слова 6) с задержкой tDS(>= 3.5ns) относительно подачи бита DATA подать на вывод 7(WCLK) импульс WCLK HIGH длительностью tWH>= 3.5ns повторять пп 5 и 6 до загрузки последнего 40-г0 бита управляющего слова 43) по окончанию 40-го импульса WCLK HIGH удерживать последний бит на выводе 25 (D7 - DATA) не менее 3.5ns и одновременно подать на вывод 8(FQ_UD) импульс FQ_UD HIGH длительностью tFH >= 7.0ns 43) после окончания импульса FQ_UD HIGH пауза до подачи следующего управляющего слова не менее 18 периодов опорной частоты
Для МК: инициализировать три вывода МК "на вывод" установить на этих выводах уровень L (=0) задать значение управляющего слова (40 бит - 5 байт) для установки частоты по формуле: Fout=(WORD x Fclk)/2^32 (MHz), WORD - 32bit число, Fclk - частота опорного генератора MHz. Или WORD = Fout(x)*2^32/Fclk
Fout(x) - введеное в ПП "Задать частоту" на дисплее значение частоты в Hz загружено в массив ValD[9] =[vD9(ст.байт-дес.разряд)- ... -vD0(мл.байт-дес..разряд)} это число преобразуется в ПП "конвертировать Dec to Bin" в 32-бит массив ValB[3]= =[vB3(ст.байт)- ... -vB0(мл.байт)} в значение частоты в 32-бит Bin формате ПП "вычислить WORD" вычисляет командное слово управления по ф-ле: WORD = Fout(x)*2^32/Fclk:
-------------------------------------------------------------------------------*/
#define Dlatch PIN_C2 #define Dclock PIN_C1 #define Ddata PIN_C0 #define DCtog output_low(Dclock);delay_us(4);output_high(Dclock) #define DLtog output_high(Dlatch);delay_us(4);output_low(Dlatch)
extern int32 WordF;
// инициализация AD9850
void ad9850_init(void) { //output_low(Ddata); // MUST be low to init OUTPUT_LOW(Ddata); DCtog; DLtog; }
// загрузка командного слова WordF и Старт
void ad9850_setfreq(void) { unsigned int8 i=0; unsigned int32 D=0; #bit curbit=D.0 D=WordF; i=0; do { if(curbit) output_high(Ddata); else output_low(Ddata); output_high(Dclock); // raise LATCH pin D >>=1; output_low(Dclock); // lower LATCH } while(++i<32);
i=0; output_low(Ddata); do { output_high(Dclock); i++; output_low(Dclock); } while(i<8); DLtog; // set data in DDS chip } //end ad9850_setfreq
_________________ «окончил два института» (из них один университет) © В.Орлов"Альтист Данилов"
|
|
Вернуться наверх |
|
|
RA1ATE
|
Заголовок сообщения: Re: Синтезатор за полчаса Добавлено: Чт 19 ноя 2015 00:09 |
|
Зарегистрирован: Вс 03 май 2009 00:00 Сообщений: 212 Откуда: Saint-Petersburg
|
|
Вернуться наверх |
|
|
R1AIT
|
Заголовок сообщения: Re: Синтезатор за полчаса Добавлено: Пт 20 ноя 2015 11:57 |
|
Зарегистрирован: Ср 17 дек 2008 01:00 Сообщений: 1488 Откуда: Малая Охта
|
RA1ATE писал(а): Есть несколько плат под этот прибор - https://sites.google.com/site/swr4arduino/Могу поделиться. Мне пожалуйста. +7 921 967 03 шестьдесят восемь.
_________________ DE R1AIT / OH7FUV (2010) ex RA1AIT (2005-2010), UB5LQJ(1982), UB5-077-1242(1978-1982), ex op. UK5LBN (1978-1982).
|
|
Вернуться наверх |
|
|
RA1ATE
|
Заголовок сообщения: Re: Синтезатор за полчаса Добавлено: Сб 21 ноя 2015 16:30 |
|
Зарегистрирован: Вс 03 май 2009 00:00 Сообщений: 212 Откуда: Saint-Petersburg
|
RA1ATE писал(а): Есть несколько плат под этот прибор - https://sites.google.com/site/swr4arduino/Могу поделиться. Есть несколько желающих, предлагаю одному приехать ко мне (Веселый Поселок) сегодня (по работе напряженный график, освобождаюсь после 21:00, шесть дней в неделю) и отвезти все пять плат в клуб, напр, в мой QSL-ящик.
_________________ Sergej Pypeć
|
|
Вернуться наверх |
|
|
RA1ATE
|
Заголовок сообщения: Re: Синтезатор за полчаса Добавлено: Вт 19 янв 2016 21:27 |
|
Зарегистрирован: Вс 03 май 2009 00:00 Сообщений: 212 Откуда: Saint-Petersburg
|
RA1ATE писал(а): Есть несколько плат под этот прибор - https://sites.google.com/site/swr4arduino/Могу поделиться. Привез несколько плат на Попова, уже осталось 4, лежат в пакетике в ящике с QSL RA1ATE и др. Забирайте, кому надо. Только отпишите в личку, чтобы знал, что кончились и нужны ещ...
_________________ Sergej Pypeć
|
|
Вернуться наверх |
|
|
Кто сейчас на форуме |
Сейчас этот форум просматривают: нет зарегистрированных пользователей и гости: 1 |
|
Вы не можете начинать темы Вы не можете отвечать на сообщения Вы не можете редактировать свои сообщения Вы не можете удалять свои сообщения Вы не можете добавлять вложения
|
|