Ardudue, изучал, но практически не использовал, для чего? Приёмники не проверить, у них частоты не те, да и купить фм-трансмиттер за 100руб если что не проблема. А фазу двигать не трудно, для этого желательно подключить модуль в паралельном режиме, и после установки частоты отсылать только изменённый первый байт данных, в котором 5 старших бит отвечают за фазу.
"Для управления частотой (и даже фазой) в м/с AD9850 необходимо загружать последовательно 40 бит информации (макс. частота смены частот более 3 МГц :) "
ua6em, я конечно иногда ошибаюсь, но не в этот раз :) Единственно что - возможно, что эта фича только в паралельном режиме работает, я в нём сам работаю, и проверял. PS: Там и в даташите сносочка есть на этот счёт: To update W0 it is not necessary to load W1 through W4. Simply load W0 and assert FQ_UD. To update W1, reload W0 then W1— users do not have random access to programming words.
можно попробовать в последовательном загружая только w0
то из инструкции 1997 года были данные
я к тому что модулировать можно
Так модулируют. Иван выложил скетч и даже ссылку на видео дал. Вот все работает https://youtu.be/FJdQhJg-_6k . А в статье коллега SV1RME так и пишет чтобы достичь скорости передачи в AD9850 надо использовать SPI interface.
SPI transfer. Since we can made the ADC to sample so fast the incoming audio must be modulated and transferred to the DDS fast enough so we can hear something on our reciever. Simple serial is very far from speed because it uses easy to write but slow functions that costs processing many many clock cycles. On the other side, using the hardware SPI interface gives us the opportunity to send the 40bit tuning word using only 3 wires, and in less than 20μS time. So here we are talking serious… 20μS for data transfer and 20μS for our analog read makes us around 40μS. Also the modulation math inside the code may take us around 4μS more so what are we dealing with is a overall time of 44μS. That means after doing the math, that the FM modulation is occurring at around 16kHz sample rate. Pretty good that we can hear the highs of the drums from a song.!!!!
//More info http://zissisprojects.wordpress.com/arduino-sdr-ad9850
// https://zissisprojects.wordpress.com/2014/02/10/all-digital-fm-modulation-w-arduino-ad9850
#include <SPI.h>
uint32_t frequency = 694000; //The desired frequency must be divided by 50 ex. 34,7MHz/50 = 694000
uint32_t tword = frequency * 3436 / 100; //tuning word calculation
byte W[5] = {0,0,0,0,0};
const unsigned char PS_128 = (1 << ADPS2) | (1 << ADPS1) | (1 << ADPS0); //these are the prescalers for the ADC sampling rate.
const unsigned char PS_32 = (1 << ADPS2) | (1 << ADPS0);
const unsigned char PS_16 = (1 << ADPS2);
int mic = 512;
void setup()
{
DDRB = B01100000; //portb has outputs, PB5(may be used for reset) PB6(FU_UD pin)
PORTB = 0x00;
// Serial.begin(115200); // everything can be controlled by serial comm
pinMode (A0,INPUT); // here comes the audio frequency in
SPI.setDataMode(SPI_MODE0); // mode 0 seems to be the right one //Функция устанавливает режим работы шины SPI, задавая уровень сигнала синхронизации и фазу синхронизации. http://arduino.ru/Reference/Library/SPI/setDataMode
SPI.setClockDivider(SPI_CLOCK_DIV2); // this is pretty fast //Устанавливает делитель частоты синхронизации SPI к частоте контроллера. http://arduino.ru/Reference/Library/SPI/setClockDivider
SPI.setBitOrder(LSBFIRST); // AD9850 wants LSB first // SPI.setBitOrder(LSBFIRST); -Функция устанавливает порядок вывода даннах в/из шины SPI, может быть LSBFIRST (наименьший разряд(бит) первый) или MSBFIRST (старший разряд первый). Вывод будет MSBFIRST с первого (левого) бита http://arduino.ru/Reference/ShiftOut
// http://arduino.ru/Reference/Library/SPI/setBitOrder
SPI.begin();
// set up the ADC
ADCSRA &= ~PS_128; // remove bits set by Arduino library
ADCSRA |= PS_32; // setting the sampling rate at 16MHz/32 this makes the analogRead() complete in around 40μs
}
void loop()
{ mic = analogRead(A0); //reading the AF signal
frequency = 694000 + 3*mic-1536; //this is the Frequency Modulation. Desired frequency is divided by 50 and then around 75khz deviation is calculated depending on the input amplitude
tword = frequency * 1718; //calculating the tuning word for AD9850
W[0] = (byte) tword;
W[1] = (byte) (tword >> 8);
W[2] = (byte) (tword >> 16); //converting it to bytes
W[3] = (byte) (tword >> 24);
W[4] = 0; //phase zero
//start sending with spi interface
PORTB = B01000000;
PORTB = 0x00; //pulse FU_UD
for (int j = 0; j<5;j++)
{
SPI.transfer(W[j]); //send the word
}
PORTB = B01000000;
PORTB = 0x00; //pulse FU_UD
}
Спасибо. Но этот проект видимо подходит только для AD9850 , не работает с AD9851.
Ardudue, у этих чипов насколько мне известно полная совместимость, отличие только программное - в конфигурационном байте, ну и в тактовой частоте. Но вы ж вроде хотели фазовую модуляцию? Там-то частотная..
Ardudue, у этих чипов насколько мне известно полная совместимость, отличие только программное - в конфигурационном байте, ну и в тактовой частоте. Но вы ж вроде хотели фазовую модуляцию? Там-то частотная..
Так вот как раз програмный код и не подходит от 9850. Как сделать не знаю. Так я и писал что пытаюсь сделать FM модуляцию. Это и есть Frequency modulation
Ardudue, вы ж писали русским по белому -про сдвиг фаз. Я и подумал что про фазовую модуляцию, иначе нафига фазы двигать. А частотная модуляция -это совершенно другое. Вообще по моему мнению задействовать этот чип под то, чем занимается автор по ссылке -это изврат. Какая практическая польза? Есть однокристальные fm-трансмиттеры. Обладают гораздо большими возможностями при смешной цене. На AD9851 делают великие вещи, типа многофункционального прибора, ГКЧ, АЧХ-метр с рисованием графиков и куча прочих радиолюбительтских мечтаний в одном. Вот это штука классная, польза реальная.. Сам бы сделал, но лень)
dimax, я так понял в AD9851 надо включить множитель на х6 . Кварц то 30 МГц стоит в модуле. Но как это сделать в этом проекте я не знаю. Может подскажете, если разобрались с AD9851?
//More info <a href="http://zissisprojects.wordpress.com/arduino-sdr-ad9850" rel="nofollow">http://zissisprojects.wordpress.com/arduino-sdr-ad9850</a>
// <a href="https://zissisprojects.wordpress.com/2014/02/10/all-digital-fm-modulation-w-arduino-ad9850" rel="nofollow">https://zissisprojects.wordpress.com/2014/02/10/all-digital-fm-modulation-w-arduino-ad9850</a>
#include <SPI.h>
uint32_t frequency = 694000; //The desired frequency must be divided by 50 ex. 34,7MHz/50 = 694000
uint32_t tword = frequency * 3436 / 100; //tuning word calculation
byte W[5] = {0,0,0,0,0};
const unsigned char PS_128 = (1 << ADPS2) | (1 << ADPS1) | (1 << ADPS0); //these are the prescalers for the ADC sampling rate.
const unsigned char PS_32 = (1 << ADPS2) | (1 << ADPS0);
const unsigned char PS_16 = (1 << ADPS2);
int mic = 512;
void setup()
{
DDRB = B01100000; //portb has outputs, PB5(may be used for reset) PB6(FU_UD pin)
PORTB = 0x00;
// Serial.begin(115200); // everything can be controlled by serial comm
pinMode (A0,INPUT); // here comes the audio frequency in
SPI.setDataMode(SPI_MODE0); // mode 0 seems to be the right one //Функция устанавливает режим работы шины SPI, задавая уровень сигнала синхронизации и фазу синхронизации. <a href="http://arduino.ru/Reference/Library/SPI/setDataMode" rel="nofollow">http://arduino.ru/Reference/Library/SPI/setDataMode</a>
SPI.setClockDivider(SPI_CLOCK_DIV2); // this is pretty fast //Устанавливает делитель частоты синхронизации SPI к частоте контроллера. <a href="http://arduino.ru/Reference/Library/SPI/setClockDivider" rel="nofollow">http://arduino.ru/Reference/Library/SPI/setClockDivider</a>
SPI.setBitOrder(LSBFIRST); // AD9850 wants LSB first // SPI.setBitOrder(LSBFIRST); -Функция устанавливает порядок вывода даннах в/из шины SPI, может быть LSBFIRST (наименьший разряд(бит) первый) или MSBFIRST (старший разряд первый). Вывод будет MSBFIRST с первого (левого) бита <a href="http://arduino.ru/Reference/ShiftOut" rel="nofollow">http://arduino.ru/Reference/ShiftOut</a>
// <a href="http://arduino.ru/Reference/Library/SPI/setBitOrder" rel="nofollow">http://arduino.ru/Reference/Library/SPI/setBitOrder</a>
SPI.begin();
// set up the ADC
ADCSRA &= ~PS_128; // remove bits set by Arduino library
ADCSRA |= PS_32; // setting the sampling rate at 16MHz/32 this makes the analogRead() complete in around 40μs
}
void loop()
{ mic = analogRead(A0); //reading the AF signal
frequency = 694000 + 3*mic-1536; //this is the Frequency Modulation. Desired frequency is divided by 50 and then around 75khz deviation is calculated depending on the input amplitude
tword = frequency * 1718; //calculating the tuning word for AD9850
W[0] = (byte) tword;
W[1] = (byte) (tword >> 8);
W[2] = (byte) (tword >> 16); //converting it to bytes
W[3] = (byte) (tword >> 24);
W[4] = 0; //phase zero
//start sending with spi interface
PORTB = B01000000;
PORTB = 0x00; //pulse FU_UD
for (int j = 0; j<5;j++)
{
SPI.transfer(W[j]); //send the word
}
PORTB = B01000000;
PORTB = 0x00; //pulse FU_UD
}
Ardudue, вы ж писали русским по белому -про сдвиг фаз. Я и подумал что про фазовую модуляцию, иначе нафига фазы двигать. А частотная модуляция -это совершенно другое. Вообще по моему мнению задействовать этот чип под то, чем занимается автор по ссылке -это изврат. Какая практическая польза? Есть однокристальные fm-трансмиттеры. Обладают гораздо большими возможностями при смешной цене. На AD9851 делают великие вещи, типа многофункционального прибора, ГКЧ, АЧХ-метр с рисованием графиков и куча прочих радиолюбительтских мечтаний в одном. Вот это штука классная, польза реальная.. Сам бы сделал, но лень)
если синусоидальный модулирующий сигнала - результаты частотной и фазовой модуляции совпадают.
Именно и хочу сделать радиолюбительские приборы ГКЧ и АЧХ в проекте.
я так понял в AD9851 надо включить множитель на х6 . Кварц то 30 МГц стоит в модуле. Но как это сделать в этом проекте я не знаю. Может подскажете, если разобрались с AD9851?
Это как раз самое простое. В строчке W[4] = 0; поставить вместо ноля единичку. Посложнее будет скорректировать частоту, там автор что-то мудрил с пересчётом. Но по идее должно заработать и без пересчёта константы, просто частота будет в 180/120= 1,5 раза больше рассчётной.
Ardudue пишет:
Именно и хочу сделать радиолюбительские приборы ГКЧ и АЧХ в проекте.
Ну и делайте прибор, зачем терять время на эту фигню? гугль расскажет что где и как, забейте в поиск nwt-7
я так понял в AD9851 надо включить множитель на х6 . Кварц то 30 МГц стоит в модуле. Но как это сделать в этом проекте я не знаю. Может подскажете, если разобрались с AD9851?
Это как раз самое простое. В строчке W[4] = 0; поставить вместо ноля единичку. Посложнее будет скорректировать частоту, там автор что-то мудрил с пересчётом. Но по идее должно заработать и без пересчёта константы, просто частота будет в 180/120= 1,5 раза больше рассчётной.
А почему автор дает такой комментираий " W[4] = 0; //phase zero " ? Или этот код относится только к 9850?
Вчера получил модуль AD9850. Долго маялся, не мог запустить демку. Не хотел работать ни в какую. Потом покрутил подстроечник на модуле и он завелся.
Вот миллионная картинка осциллограмм
Выглядит вполне прилично на частоте примерно 1.2 мегагерца. На максимальной гораздо корявее. Но думаю, что вполне пойдет, тем более собрано на макетке.
Будем изучать, засовывать в корпус.
Прямоугольничек на этой частоте тоже хорош. Время спада и подъема 14-16 наносек.
Joiner, подстроечник задаёт точку опоры компаратора, и влияет только на выход прмямоугольного сигнала. На синус он никак не влияет.. и по поводу кривости посмотрите пост 41 :)
Joiner, подстроечник задаёт точку опоры компаратора, и влияет только на выход прмямоугольного сигнала. На синус он никак не влияет.. и по поводу кривости посмотрите пост 41 :)
Пока я его не покрутил, модуль не работал. Не знаю почему. Может в каких-то крайних положениях перестает работать?
Ваш осцил. из другой весовой категории. На нем картинка изумительная, и модуль, скорее всего не на соплях подключен. У меня на 12 мегагерцах прямоугольный сигнал становится безобразно корявый, с глубоим седлом на полках.
P.S. Отключил фильтр высоких на осц. , прямоугольник на частоте 1.2мегагерца стал со всплесками на краях, но время спада-нарастания стало 5-7 наносекунд. На других генераторах (NE555, XR2206, транзистор-тестер) время спада нарастания было гораздо больше.
Теперь остается выбрать проект генератора для повторения.
я эту связку буду реализовывать для генератора под катушку Мишина, всё есть, даже кусок программы уже собрал, кстати эти микросхемы бывают и в исполнении типа TDA7056, одно и друхрядного формования ног, но цена не гуманная 400 рублей корпус
Я для испытаний по ссылке что давал заказал, всё еще на уровне идеи, проектировать конкретное устройство буду, тогда можно уже и под болт рассматривать
Я для испытаний по ссылке что давал заказал, всё еще на уровне идеи, проектировать конкретное устройство буду, тогда можно уже и под болт рассматривать
Мне из всех микросхем, которые попробовал, больше всех AD9850 понравилась, понравилась точностью установки и стабильностью частоты. Знаю, что есть что-то гораздо лучше, даже тот же готовый в корпусе китайский двухканальный генератор сигналов произвольной формы за 3500р. Но я не такой крутой электронщик, что достоин такого генератора :). Попробую что-то слепить на AD9850......может что-то и получится.....хотя это не самый лучший путь.
Зависит от того какие вас частоты интересуют и насколько чистый сигнал. К примеру у AD9951 14 бит ЦАП (у AD9850 10 бит) и 400 МГц тактовая (против 125) - оно конечно получше (особенно от 20 МГц и выше), но в виде готового недорогого модуля не видел (платы/схемы можно найти, я собирал). Если синус не интересует - есть интересная недорогая микросхема si5351 (в виде модуля можно купить), может генерить 2 частоты одновременно, для всяких простых приемников/передатчиков вполне годится.
..................... для всяких простых приемников/передатчиков вполне годится.
Да я приемниками-передатчиками пока не интересуюсь, мне нужен простой генератор сигналов для разных опытов. Мне бы XR2206 вполне хватило бы, но не понравилась установка частоты....а так по всем характеристикам для меня вполне покатил бы. На ней легко сделать и синус, и прямоугольник, и пилу (прямую и обратную), и мегагерца мне вполне пока хватает, но установка частоты переменным резистором.....жуть. Но тем не менее уже удалось с ее помощью установить собственный резонанс импульсного трансформатора....примерно (потому, что переменным резистором точно установить частоту не удалось).
..................... для всяких простых приемников/передатчиков вполне годится.
Да я приемниками-передатчиками пока не интересуюсь, мне нужен простой генератор сигналов для разных опытов. Мне бы XR2206 вполне хватило бы, но не понравилась установка частоты....а так по всем характеристикам для меня вполне покатил бы. На ней легко сделать и синус, и прямоугольник, и пилу (прямую и обратную), и мегагерца мне вполне пока хватает, но установка частоты переменным резистором.....жуть. Но тем не менее уже удалось с ее помощью установить собственный резонанс импульсного трансформатора....примерно (потому, что переменным резистором точно установить частоту не удалось).
Это надо точный многооборотный проволочный с планетарной ручкой настройки, есть такой, от какого-то девайса СССР
Угу. Я брал подобные для блока питания у кого то на радиокоте с ручками-счетчиками, сейчас смотрю тему ужалили уже - может кончились. Ну и частотомер добавить - для опытов на НЧ вполне достаточно :)
AVGN, поделитесь схемкой, пожалуйста. Интересует подключение кнопки и энкодера. Я подключал, может быть неправильно....Изображение моргает, ни чего не работает. А без энкодера все красиво загружается, выходит заставочка и прочее
Что-то ни как не врублюсь где моя ошибка.
P.S. Генератор генерит то, что написано на дисплее.
у меня тоже с энкодером и кнопкой были проблемы, правда энкодер не 40 а непонятно какой, в моей конструкции он не понадобится, так что не разбирался, можно ли применить другой тип
Все понял. Пришлось немного внимательнее почитать скетч. Спасибо. Буду доделывать.
P.S. Работает так - ардуинка загружается, выводится заставка, через несколько секунд переходит в рабочий режим (показывает частоту 1000.0000 , Шаг 1.0000 , потом какой-то 0 и за ним много звезд, не понимаю пока что это означает, а внизу постоянная надпись ГЕНЕРАТОР и про диапазоны). Кручу энкодер против часовой, показания от 1000.0000 не меняются, по часовой - растут по 1 килогерцу, как и обещано, на осцилографе соответствующий сигнал. Нажимаю кнопку энкодера - верхняя цифа становится 0.0010, и если при нажатой покрутить по часовой, то начинают расти по единичке показания целой части. При отпускании кнопки все возвращается как было при запуске. Непонятненько........
Это макрос чтобы "дернуть ножкой". FQ_UD в AD9850 наподобие защелки в 595м регистре (On the rising edge of this clock, the DDS updates to the frequency (or phase)loaded in the data input register). Вот после того как все биты в AD отправлены дергаем ножкой этим макросом.
Запустил сегодня на макетке свой генератор с дисплейчиком Nokia5110. Пока сделал просто генератор. Использовал проект по ссылке выше(пост83) и скетч AVGN. Показалось, что AVGN черпал вдохновение там же.
Результаты порадовали. Сделал диапазон частоты 1герц - 10мегагерц. Порадовало, что в этом диапазоне амплитуда стабильная, около 1 в. Вся конструкция питается от источника 3.3 вольта. Очень удобно управлять частотой, менять без остановки генерации с любым шагом, изменяемым так же на лету.
В дальнейшем хочу добавить ГКЧ. Модуляцию и ПЧ, как у автора, делать не буду.
Завтра немного поправлю интерфейс и выложу видео (очень хочется похвастаться).
Запустил сегодня на макетке свой генератор с дисплейчиком Nokia5110. Пока сделал просто генератор. Использовал проект по ссылке выше(пост83) и скетч AVGN. Показалось, что AVGN черпал вдохновение там же.
Результаты порадовали. Сделал диапазон частоты 1герц - 10мегагерц. Порадовало, что в этом диапазоне амплитуда стабильная, около 1 в. Вся конструкция питается от источника 3.3 вольта. Очень удобно управлять частотой, менять без остановки генерации с любым шагом, изменяемым так же на лету.
В дальнейшем хочу добавить ГКЧ. Модуляцию и ПЧ, как у автора, делать не буду.
Завтра немного поправлю интерфейс и выложу видео (очень хочется похвастаться).
Joiner, вдохновение я черпал у коллеги и в своей мастерской ;) . История проекта здесь . Схему не чертил, подключение в скетче расписал. На дисплее у Вас неправильно выводится информация, потому что я перепилил библиотеку. Как сюда прицепить файл библиотеки что-то не могу найти. Вот отсюда скачайте библиотеку клик. Библиотеку, которая у Вас уже установлена в IDE уберите. Иначе будет конфликтовать.
Joiner, очень сильный мандраж синуса у вас. Сомневаюсь, что это из-за осцилла. Попробуйте чистый меандр из МК посмотреть, так же будет? Если нет генератора, можно из терминалки запустить с этим скечтем.
Joiner, очень сильный мандраж синуса у вас. Сомневаюсь, что это из-за осцилла. Попробуйте чистый меандр из МК посмотреть, так же будет? Если нет генератора, можно из терминалки запустить с этим скечтем.
Если честно, то на макетке и такого результата не ожидал. Может в этом причина? Еще есть непонятная проблема - если на два входа осциллографа подать синус и меандр, то на синусе, на спадах и подъемах возникают длинные вертикальные полосы. По отдельности (если смотреть один сигнал или 2 синуса или 2 меандра), то все нормально.
Решил пока разместить все в нормальном корпусе, с нормальным монтажом, а потом буду трудиться над скетчем.
За замечания и ссылку спасибо. Часто пользуюсь Вашими рекомендациями и примерами.
.......Попробуйте чистый меандр из МК посмотреть, так же будет? .......................
Попробовал F-генератором транзистортестера и генератором AD9850. Слева вертикально осциллограммы транзистор тестера (Atmega 328), сверху без фильтра верхних частот, снизу с включенным фильтром.
Справа вертикально осциллограммы AD9850, без фильтра и с фильтром соответственно.
dimax, в чем разница между этими двумя генераторами? У которого меандр лучше? Во всех случаях мондража замечено не было. И, если возможно, покажите как выглядит меандр 2 мегагерца с Вашего генератора на Вашем осциллографе.
P.S. Сегодня таскал свой генератор к соседу на советский аналоговый лучевой осциллограф. Во всем диапазоне и синус и меандр на нем смотрятся без претензий. На меандре всплески видны гораздо меньше чем на моей осциллограме.
Joiner, под мандражем я подразумевал исключительно динамические колебания, в вашем ролике на 5м10 сек очень заметно как синус прыгает по горизонтали и даже встроенный частотомер меняет показания. На чистом меандре с МК нет такого? У меня же совершенно статическая картинка, словно нарисована, что синус что меандр. Поэтому в динамике нет смысла показывать. Картинку 2МГц снял, кликабельно:
Кстати по моей картинке в лог.1 видно как мандражит картинку от помехи 16МГц с питания мк :) Для бытовых нужд оно пофиг, но для измерительных приборов недопустимо..
А это сигнал с МК или с AD 9850? Фронты красивые, не то что у меня с МК (транзистортестер). Надо бы еще с Ардуинки попробовать.
Сегодня с утра снова попробовал AD9850 с осциллографом. Меандр как вкопаный, а синусоида нравится не очень. Как-то подергивается и раз, примерно в две секунды, появляются мгновенные всплески шума на синусоиде...хотя вчера на аналоговом осциллографе все было нормально.
Соберу на нормальном шасси с нормальным питанием, посмотрю, что получится отпишу.
P.S. Вчера слушал свой генратор через хорошие колонки. К своему удивлению понял, что выше 10000 я абсолютно ни чего не слышу.... А вот на низкой частоте чудеса. Слышу, как мне показалось, до 10 герц, а ниже тоже слышу, но какие-то шорохи, хотя по теории должна быть абсолютная тишина. А вот на частоте выше 10000, слышу абсолютную тишину, абсолютно ни чего, ни шорохов, ни щелчков.
Надо будет, когда сделаю ГКЧ, снять АЧХ со своего усилителя :)
Ardudue, изучал, но практически не использовал, для чего? Приёмники не проверить, у них частоты не те, да и купить фм-трансмиттер за 100руб если что не проблема. А фазу двигать не трудно, для этого желательно подключить модуль в паралельном режиме, и после установки частоты отсылать только изменённый первый байт данных, в котором 5 старших бит отвечают за фазу.
"Для управления частотой (и даже фазой) в м/с AD9850 необходимо загружать последовательно 40 бит информации (макс. частота смены частот более 3 МГц :) "
ua6em, я конечно иногда ошибаюсь, но не в этот раз :) Единственно что - возможно, что эта фича только в паралельном режиме работает, я в нём сам работаю, и проверял. PS: Там и в даташите сносочка есть на этот счёт: To update W0 it is not necessary to load W1 through W4. Simply load W0 and assert FQ_UD. To update W1, reload W0 then W1— users do not have random access to programming words.
можно попробовать в последовательном загружая только w0
то из инструкции 1997 года были данные
я к тому что модулировать можно
можно попробовать в последовательном загружая только w0
то из инструкции 1997 года были данные
я к тому что модулировать можно
SV1RME даже SSB модуляцию на AD9850 реализовал, интересно!!!
dimax, Вы случайно не разбирались с функцией сдвига фазы в AD9851?
Можно ли управлять сдвигом фазы с помощью Arduino?
Пытаюсь сделать FM модуляцию на базе AD9851 под управлением Arduino .
Посмотрите здесь
Что получилось у автора https://youtu.be/FJdQhJg-_6k
Пытался разобраться с проектом, но не доковырял
Ardudue, у этих чипов насколько мне известно полная совместимость, отличие только программное - в конфигурационном байте, ну и в тактовой частоте. Но вы ж вроде хотели фазовую модуляцию? Там-то частотная..
Ardudue, у этих чипов насколько мне известно полная совместимость, отличие только программное - в конфигурационном байте, ну и в тактовой частоте. Но вы ж вроде хотели фазовую модуляцию? Там-то частотная..
В статье по ссылке от Ivan_Kornege автор пишет All Digital FM modulation
Ardudue, вы ж писали русским по белому -про сдвиг фаз. Я и подумал что про фазовую модуляцию, иначе нафига фазы двигать. А частотная модуляция -это совершенно другое. Вообще по моему мнению задействовать этот чип под то, чем занимается автор по ссылке -это изврат. Какая практическая польза? Есть однокристальные fm-трансмиттеры. Обладают гораздо большими возможностями при смешной цене. На AD9851 делают великие вещи, типа многофункционального прибора, ГКЧ, АЧХ-метр с рисованием графиков и куча прочих радиолюбительтских мечтаний в одном. Вот это штука классная, польза реальная.. Сам бы сделал, но лень)
dimax, я так понял в AD9851 надо включить множитель на х6 . Кварц то 30 МГц стоит в модуле. Но как это сделать в этом проекте я не знаю. Может подскажете, если разобрались с AD9851?
Ardudue, вы ж писали русским по белому -про сдвиг фаз. Я и подумал что про фазовую модуляцию, иначе нафига фазы двигать. А частотная модуляция -это совершенно другое. Вообще по моему мнению задействовать этот чип под то, чем занимается автор по ссылке -это изврат. Какая практическая польза? Есть однокристальные fm-трансмиттеры. Обладают гораздо большими возможностями при смешной цене. На AD9851 делают великие вещи, типа многофункционального прибора, ГКЧ, АЧХ-метр с рисованием графиков и куча прочих радиолюбительтских мечтаний в одном. Вот это штука классная, польза реальная.. Сам бы сделал, но лень)
Именно и хочу сделать радиолюбительские приборы ГКЧ и АЧХ в проекте.
я так понял в AD9851 надо включить множитель на х6 . Кварц то 30 МГц стоит в модуле. Но как это сделать в этом проекте я не знаю. Может подскажете, если разобрались с AD9851?
Это как раз самое простое. В строчке W[4] = 0; поставить вместо ноля единичку. Посложнее будет скорректировать частоту, там автор что-то мудрил с пересчётом. Но по идее должно заработать и без пересчёта константы, просто частота будет в 180/120= 1,5 раза больше рассчётной.
Именно и хочу сделать радиолюбительские приборы ГКЧ и АЧХ в проекте.
Ну и делайте прибор, зачем терять время на эту фигню? гугль расскажет что где и как, забейте в поиск nwt-7
на всяк случай
Что такое NWT и его параметры
я так понял в AD9851 надо включить множитель на х6 . Кварц то 30 МГц стоит в модуле. Но как это сделать в этом проекте я не знаю. Может подскажете, если разобрались с AD9851?
Это как раз самое простое. В строчке W[4] = 0; поставить вместо ноля единичку. Посложнее будет скорректировать частоту, там автор что-то мудрил с пересчётом. Но по идее должно заработать и без пересчёта константы, просто частота будет в 180/120= 1,5 раза больше рассчётной.
А почему автор дает такой комментираий " W[4] = 0; //phase zero " ? Или этот код относится только к 9850?
И к 9851, а что непонятного? Регистр заведует и фазой, и ещё парой бесполезных параметров.
Спасибо! Буду экспериментировать.
Вчера получил модуль AD9850. Долго маялся, не мог запустить демку. Не хотел работать ни в какую. Потом покрутил подстроечник на модуле и он завелся.
Вот миллионная картинка осциллограмм
Выглядит вполне прилично на частоте примерно 1.2 мегагерца. На максимальной гораздо корявее. Но думаю, что вполне пойдет, тем более собрано на макетке.
Будем изучать, засовывать в корпус.
Прямоугольничек на этой частоте тоже хорош. Время спада и подъема 14-16 наносек.
Joiner, подстроечник задаёт точку опоры компаратора, и влияет только на выход прмямоугольного сигнала. На синус он никак не влияет.. и по поводу кривости посмотрите пост 41 :)
Joiner, подстроечник задаёт точку опоры компаратора, и влияет только на выход прмямоугольного сигнала. На синус он никак не влияет.. и по поводу кривости посмотрите пост 41 :)
Ваш осцил. из другой весовой категории. На нем картинка изумительная, и модуль, скорее всего не на соплях подключен. У меня на 12 мегагерцах прямоугольный сигнал становится безобразно корявый, с глубоим седлом на полках.
P.S. Отключил фильтр высоких на осц. , прямоугольник на частоте 1.2мегагерца стал со всплесками на краях, но время спада-нарастания стало 5-7 наносекунд. На других генераторах (NE555, XR2206, транзистор-тестер) время спада нарастания было гораздо больше.
Теперь остается выбрать проект генератора для повторения.
А самому ))) В связке с одной из этих микросхем будет шикарный генератор
AD815ARB-24 AD815ARBZ-24 AD815 SOP-24
....... с одной из этих микросхем будет шикарный генератор
AD815ARB-24 AD815ARBZ-24 AD815 SOP-24
Пока настроен попробовать генератор в этой теме с дисплейчиком от Nokia от AVGN.
да, 120 мегагерц, 3,5 ватта на нагрузке 100 ом, микросхема усилителя для VDSL модемов
да, 120 мегагерц, 3,5 ватта на нагрузке 100 ом, микросхема усилителя для VDSL модемов
я эту связку буду реализовывать для генератора под катушку Мишина, всё есть, даже кусок программы уже собрал, кстати эти микросхемы бывают и в исполнении типа TDA7056, одно и друхрядного формования ног, но цена не гуманная 400 рублей корпус
........... цена не гуманная 400 рублей корпус
........... цена не гуманная 400 рублей корпус
Я для испытаний по ссылке что давал заказал, всё еще на уровне идеи, проектировать конкретное устройство буду, тогда можно уже и под болт рассматривать
Я для испытаний по ссылке что давал заказал, всё еще на уровне идеи, проектировать конкретное устройство буду, тогда можно уже и под болт рассматривать
Зависит от того какие вас частоты интересуют и насколько чистый сигнал. К примеру у AD9951 14 бит ЦАП (у AD9850 10 бит) и 400 МГц тактовая (против 125) - оно конечно получше (особенно от 20 МГц и выше), но в виде готового недорогого модуля не видел (платы/схемы можно найти, я собирал). Если синус не интересует - есть интересная недорогая микросхема si5351 (в виде модуля можно купить), может генерить 2 частоты одновременно, для всяких простых приемников/передатчиков вполне годится.
..................... для всяких простых приемников/передатчиков вполне годится.
..................... для всяких простых приемников/передатчиков вполне годится.
Это надо точный многооборотный проволочный с планетарной ручкой настройки, есть такой, от какого-то девайса СССР
Угу. Я брал подобные для блока питания у кого то на радиокоте с ручками-счетчиками, сейчас смотрю тему ужалили уже - может кончились. Ну и частотомер добавить - для опытов на НЧ вполне достаточно :)
AVGN, поделитесь схемкой, пожалуйста. Интересует подключение кнопки и энкодера. Я подключал, может быть неправильно....Изображение моргает, ни чего не работает. А без энкодера все красиво загружается, выходит заставочка и прочее
Что-то ни как не врублюсь где моя ошибка.
P.S. Генератор генерит то, что написано на дисплее.
у меня тоже с энкодером и кнопкой были проблемы, правда энкодер не 40 а непонятно какой, в моей конструкции он не понадобится, так что не разбирался, можно ли применить другой тип
Все понял. Пришлось немного внимательнее почитать скетч. Спасибо. Буду доделывать.
P.S. Работает так - ардуинка загружается, выводится заставка, через несколько секунд переходит в рабочий режим (показывает частоту 1000.0000 , Шаг 1.0000 , потом какой-то 0 и за ним много звезд, не понимаю пока что это означает, а внизу постоянная надпись ГЕНЕРАТОР и про диапазоны). Кручу энкодер против часовой, показания от 1000.0000 не меняются, по часовой - растут по 1 килогерцу, как и обещано, на осцилографе соответствующий сигнал. Нажимаю кнопку энкодера - верхняя цифа становится 0.0010, и если при нажатой покрутить по часовой, то начинают расти по единичке показания целой части. При отпускании кнопки все возвращается как было при запуске. Непонятненько........
P.S. Спрыгнул на другой проект. Случайно наткнулся. Показалось, немного интереснее.... Ухожу в изучение https://frompinskto.wordpress.com/2016/09/19/arduino-dds-%D1%81%D0%B8%D0%BD%D1%82%D0%B5%D0%B7%D0%B0%D1%82%D0%BE%D1%80-%D1%87%D0%B0%D1%81%D1%82%D0%BE%D1%82%D1%8B-%D0%BD%D0%B0-%D0%B1%D0%B0%D0%B7%D0%B5-ad9851-%D0%BF%D0%BE%D0%B4-%D1%83%D0%BF%D1%80/
Программисты, подскажите пожалуйста что это такое
Это макрос чтобы "дернуть ножкой". FQ_UD в AD9850 наподобие защелки в 595м регистре (On the rising edge of this clock, the DDS updates to the frequency (or phase)loaded in the data input register). Вот после того как все биты в AD отправлены дергаем ножкой этим макросом.
Это макрос .........
Поищу в скетче, как он используется, может что и пойму.....
Спасибо.
P.S. Что-то нашел.... pulseHigh(RESET); , например, оно наверное побыстренькому пин RESET переводит в High а потом быстренько в LOW
И тут еще
int32_t freq = frequency * 4294967295/125000000;
for
(
int
b=0; b<4; b++, freq>>=8) { tfr_byte(freq & 0xFF); }
tfr_byte(0x000);
pulseHigh(FQ_UD);
Похожая тема, но с уклоном в радиосвязь есть тут http://www.cqham.ru/forum/showthread.php?29944-%D1%E8%ED%F2%E5%E7%E0%F2%EE%F0-%E7%E0-%EF%EE%EB%F7%E0%F1%E0
И тут еще
....
Запустил сегодня на макетке свой генератор с дисплейчиком Nokia5110. Пока сделал просто генератор. Использовал проект по ссылке выше(пост83) и скетч AVGN. Показалось, что AVGN черпал вдохновение там же.
Результаты порадовали. Сделал диапазон частоты 1герц - 10мегагерц. Порадовало, что в этом диапазоне амплитуда стабильная, около 1 в. Вся конструкция питается от источника 3.3 вольта. Очень удобно управлять частотой, менять без остановки генерации с любым шагом, изменяемым так же на лету.
В дальнейшем хочу добавить ГКЧ. Модуляцию и ПЧ, как у автора, делать не буду.
Завтра немного поправлю интерфейс и выложу видео (очень хочется похвастаться).
Запустил сегодня на макетке свой генератор с дисплейчиком Nokia5110. Пока сделал просто генератор. Использовал проект по ссылке выше(пост83) и скетч AVGN. Показалось, что AVGN черпал вдохновение там же.
Результаты порадовали. Сделал диапазон частоты 1герц - 10мегагерц. Порадовало, что в этом диапазоне амплитуда стабильная, около 1 в. Вся конструкция питается от источника 3.3 вольта. Очень удобно управлять частотой, менять без остановки генерации с любым шагом, изменяемым так же на лету.
В дальнейшем хочу добавить ГКЧ. Модуляцию и ПЧ, как у автора, делать не буду.
Завтра немного поправлю интерфейс и выложу видео (очень хочется похвастаться).
по этой схеме?
Да, но немного пины поменял. И дисплей у меня от Nokia5110. Не люблю я что-то дисплеи 16х2.
Joiner, вдохновение я черпал у коллеги и в своей мастерской ;) . История проекта здесь . Схему не чертил, подключение в скетче расписал. На дисплее у Вас неправильно выводится информация, потому что я перепилил библиотеку. Как сюда прицепить файл библиотеки что-то не могу найти. Вот отсюда скачайте библиотеку клик. Библиотеку, которая у Вас уже установлена в IDE уберите. Иначе будет конфликтовать.
.......... . История проекта здесь . ......................Библиотеку, которая у Вас уже установлена в IDE уберите. Иначе будет конфликтовать.
А пока "по-быстренькому", сделал по-своему. Результат порадовал. Все улучшения потом :)
Снял небольшое видео по генератору. Демонстрация работы https://youtu.be/sfH1PiWPY54
P.S. Попробовал при помощи генератора поискать резонанс https://youtu.be/c8MzKf1oNq4
Joiner, очень сильный мандраж синуса у вас. Сомневаюсь, что это из-за осцилла. Попробуйте чистый меандр из МК посмотреть, так же будет? Если нет генератора, можно из терминалки запустить с этим скечтем.
Joiner, очень сильный мандраж синуса у вас. Сомневаюсь, что это из-за осцилла. Попробуйте чистый меандр из МК посмотреть, так же будет? Если нет генератора, можно из терминалки запустить с этим скечтем.
Решил пока разместить все в нормальном корпусе, с нормальным монтажом, а потом буду трудиться над скетчем.
За замечания и ссылку спасибо. Часто пользуюсь Вашими рекомендациями и примерами.
.......Попробуйте чистый меандр из МК посмотреть, так же будет? .......................
Справа вертикально осциллограммы AD9850, без фильтра и с фильтром соответственно.
dimax, в чем разница между этими двумя генераторами? У которого меандр лучше? Во всех случаях мондража замечено не было. И, если возможно, покажите как выглядит меандр 2 мегагерца с Вашего генератора на Вашем осциллографе.
P.S. Сегодня таскал свой генератор к соседу на советский аналоговый лучевой осциллограф. Во всем диапазоне и синус и меандр на нем смотрятся без претензий. На меандре всплески видны гораздо меньше чем на моей осциллограме.
Joiner, под мандражем я подразумевал исключительно динамические колебания, в вашем ролике на 5м10 сек очень заметно как синус прыгает по горизонтали и даже встроенный частотомер меняет показания. На чистом меандре с МК нет такого? У меня же совершенно статическая картинка, словно нарисована, что синус что меандр. Поэтому в динамике нет смысла показывать. Картинку 2МГц снял, кликабельно:
Кстати по моей картинке в лог.1 видно как мандражит картинку от помехи 16МГц с питания мк :) Для бытовых нужд оно пофиг, но для измерительных приборов недопустимо..
.......... снял, кликабельно:
.......
Сегодня с утра снова попробовал AD9850 с осциллографом. Меандр как вкопаный, а синусоида нравится не очень. Как-то подергивается и раз, примерно в две секунды, появляются мгновенные всплески шума на синусоиде...хотя вчера на аналоговом осциллографе все было нормально.
Соберу на нормальном шасси с нормальным питанием, посмотрю, что получится отпишу.
P.S. Вчера слушал свой генратор через хорошие колонки. К своему удивлению понял, что выше 10000 я абсолютно ни чего не слышу.... А вот на низкой частоте чудеса. Слышу, как мне показалось, до 10 герц, а ниже тоже слышу, но какие-то шорохи, хотя по теории должна быть абсолютная тишина. А вот на частоте выше 10000, слышу абсолютную тишину, абсолютно ни чего, ни шорохов, ни щелчков.
Надо будет, когда сделаю ГКЧ, снять АЧХ со своего усилителя :)
А это сигнал с МК или с AD 9850?
С МК. Вставил щуп прямо в разъём ардуины.
Соберу на нормальном шасси с нормальным питанием, посмотрю, что получится отпишу.
Да, возможно всё это из-за "бороды" на макетке.
А вот на частоте выше 10000, слышу абсолютную тишину, абсолютно ни чего, ни шорохов, ни щелчков.
Тут ещё нужно точно знать, воспроизводят ли колонки свыше 10кГц, и с каким уровнем..