Страница 1 из 1
прибор на AD9850
Добавлено: Вс ноя 22, 2020 01:05:57
Loyso Pondohva
Добрый день! Кошаков у меня двое, они мне активно помогают... Но вот пока не получается что-то.
Решил сделать универсальный прибор (генератор сигналов, измеритель резонансов и.т.д.) на blue pill и AD9850. Синтезатор частот купил в Амперкоте.
Подсоединил - не получается. Ну решил повторить для начала известную схему. Присоединил к Ардуино (хоть и не люблю ее - вспоминал вот распиновку...) на макетке . Все равно на выходе - ничего.
Вот скетч.
Спойлер
#define W_CLK PD2 // connect to AD9850 module word load clock pin (CLK)
#define FQ_UD PD3 // connect to freq update pin (FQ)
#define DATA PD4 // connect to serial data load pin (DATA)
#define RESET PD5 // connect to reset pin (RST).
#define pulseHigh(pin) {digitalWrite(pin, HIGH); digitalWrite(pin, LOW); }
// transfers a byte, a bit at a time, LSB first to the 9850 via serial DATA line
void tfr_byte(byte data)
{
for (int i=0; i<8; i++, data>>=1) {
digitalWrite(DATA, data & 0x01);
pulseHigh(W_CLK); //after each bit sent, CLK is pulsed high
}
}
// frequency calc from datasheet page 8 = <sys clock> * <frequency tuning word>/2^32
void sendFrequency(double frequency) {
int32_t freq = frequency * 4294967295/125000000; // note 125 MHz clock on 9850
for (int b=0; b<4; b++, freq>>=8) {
tfr_byte(freq & 0xFF);
}
tfr_byte(0x000); // Final control byte, all 0 for 9850 chip
pulseHigh(FQ_UD); // Done! Should see output
}
void setup() {
// configure arduino data pins for output
pinMode(FQ_UD, OUTPUT);
pinMode(W_CLK, OUTPUT);
pinMode(DATA, OUTPUT);
pinMode(RESET, OUTPUT);
pulseHigh(RESET);
pulseHigh(W_CLK);
pulseHigh(FQ_UD); // this pulse enables serial mode - Datasheet page 12 figure 10
}
void loop() {
sendFrequency(2000);
delay(1000);
}
Взят отсюда.
http://arduino.ru/forum/proekty/dds-gen ... ino-ad9850 Что делает скетч - понятно. Подключил питание, землю и 4 управляющих сигнала, как в скетче. На выходе - ничего.
Что делать дальше? Кварц проверить не могу - осциллограф тянет только до 10 Мгц, а там - 125 Мгц. Потенциометр крутил, плату протирал изопропанолом.
Отзовитесь пожалуйста. Надеюсь все же где-то "косяк" или я что-то упустил. Плата дорогая все же...
Re: прибор на AD9850
Добавлено: Вт ноя 24, 2020 13:40:30
Loyso Pondohva
Ну что же вы, почтенные читатели, не отозвались хотя бы на то что скетч бредовый. Это не потому что автор совсем долболюб, а потому что уставший был и начал писать, а потом пошел тестировать. А к тому моменту текст удалился. Пришлось опять вводить, совсем уставшим был. И посмотрел инет по этой микросхеме. То, что с ней делали, не особо позволяет разобраться (либо работает, либо нет)
Скетч по которому проверял - он правильный (ну надеюсь). А предыдущий - неверно запостил, в нем нет ни setup ни loop.
Спойлер
/ Установка DDS AD9850
#define W_CLK PD2 // Pin - connect to AD9850 module word load clock pin (CLK)
#define FQ_UD PD3 // Pin - connect to freq update pin (FQ)
#define DATA PD4 // Pin - connect to serial data load pin (DATA)
#define RESET PD5 // Pin - connect to reset pin (RST)
#define pulseHigh(pin) { digitalWrite(pin, HIGH); digitalWrite(pin, LOW); }
void setup()
{
pinMode(FQ_UD, OUTPUT);
pinMode(W_CLK, OUTPUT);
pinMode(DATA, OUTPUT);
pinMode(RESET, OUTPUT);
pulseHigh(RESET);
pulseHigh(W_CLK);
pulseHigh(FQ_UD); // this pulse enables serial mode on the AD9850 - Datasheet page 12.
//sendFrequency(20000);
}
void loop()
{
sendFrequency(20000);
delay(1000);
}
// Расчет частоты для DDS
// Frequency calc from datasheet page 8 = <sys clock> * <frequency tuning word>/2^32
void sendFrequency(double frequency) {
int32_t freq = frequency * 4294967295/125000000; // note 125 MHz clock on 9850. You can make 'slight' tuning variations here by adjusting the clock frequency.
for (int b=0; b<4; b++, freq>>=8) { tfr_byte(freq & 0xFF); }
tfr_byte(0x000); // Final control byte, all 0 for 9850 chip
pulseHigh(FQ_UD); // Done! Should see output
} // Конец расчета частоты
// Передача частоты в DDS
// transfers a byte, a bit at a time, LSB first to the 9850 via serial DATA line
void tfr_byte(byte data)
{
for (int i=0; i<8; i++, data>>=1)
{
digitalWrite(DATA, data & 0x01);
pulseHigh(W_CLK); //after each bit sent, CLK is pulsed high
}
} // Конец передачи частоты в DDS
Написал в магазин, попросил заменить...
Re: прибор на AD9850
Добавлено: Вт ноя 24, 2020 14:06:10
BlackKilkennyCat

Вот смотрю на этот график, и как-то не понятно с
Код: Выделить всё
void setup()
{
pinMode(FQ_UD, OUTPUT);
pinMode(W_CLK, OUTPUT);
pinMode(DATA, OUTPUT);
pinMode(RESET, OUTPUT);
pulseHigh(RESET);
pulseHigh(W_CLK); // зачем?
pulseHigh(FQ_UD); //зачем?
}
Уверены, что длительности pulseHigh хватает? Мне не знакома одурина, но некоторые компиляторы со включенной оптимизацией могут вообще подобное { digitalWrite(pin, HIGH); digitalWrite(pin, LOW); упростить до последнего.
И главное: что с CLKIN? а, увидел, невозможность проверить кварц... но никто и требует для проверки все 125 мгц. Подайте 1 мгц, даташит допускает.
Re: прибор на AD9850
Добавлено: Вт ноя 24, 2020 15:17:52
Loyso Pondohva
Спасибо что откликнулись! Про скетч - пишут что он рабочий,хотя я сам о том же подумал. Про pulseHigh - делал сначала Low потом delay(5) потом High опять delay(5) и Low снова. Не помогло. Попробую везде поставить задержки. Кварц есть вроде не то на 10 не то на 16 Мгц - попробую заменить. До этого не додумался - неопытный еще, меньше 10 девайсов пока собрал.
Re: прибор на AD9850
Добавлено: Вт ноя 24, 2020 17:17:12
BlackKilkennyCat
[uquote="Loyso Pondohva",url="/forum/viewtopic.php?p=3930180#p3930180"]Про pulseHigh - делал сначала Low потом delay(5) потом High опять delay(5) и Low снова.[/uquote]
есть же осциллограф, посмотрите длительности на нём.
Loyso Pondohva писал(а):Кварц есть вроде не то на 10 не то на 16 Мгц - попробую заменить.
Кварц необязателен - настройте какой-нить выход одурины на постоянную генерацию 1 МГц, и его в AD9850 запихнуть на CLKIN
Добавлено after 1 minute 2 seconds:
Кстати, о кварце. На нём генератор собран, или он напрямую подключён?
Re: прибор на AD9850
Добавлено: Вт ноя 24, 2020 20:31:55
Loyso Pondohva
Приятно чувствовать что все же долболюб - я, а проблема решена. Но пока нет.
Списался с техcпецом из магазина. Он проверил партию - все норм. прислал другой сетч (к ардуине) на ардуинском SPI от которого, как я понимаю две линии (на нано))
13 SCK на W_CLCK и 11 MOSI на DATA и еще две специфические для управления - на FQ_UD и RESET. Все равно - ничего. Кварц на плате впаян, сейчас попробую подключить другой а потом - задать на CLKIN какую-нибудь частоту. И длительности посмотрю (я начинающий, до этого выход синхронизации не подключал еще - надо посмотреть про это, как им пользоваться.)
Re: прибор на AD9850
Добавлено: Ср ноя 25, 2020 20:59:56
Loyso Pondohva
Увы... Подключил на CLKIN сигнал на 8 МГц (самодельная трехточка на кварце) 4 в. Ничего на выходе - только при очень большом усилении эти же 8 МГц. Никаких других частот (ну фон 50 Гц еще). Видимо плата все-таки дохлая.
Re: прибор на AD9850
Добавлено: Вт дек 08, 2020 07:47:04
Morroc
Актуально еще ? Могу наснимать с точностью до провода что куда. Не помню там особых затыков, но провода бывало подключал неправильно/не все. У меня подобные затыки обычно связаны с тем, что какой нибудь reset/cs/enable подтянуть забыл или подтянул не к тому уровню. Длительности там хватает, штатные функции ардуины по дерганью ногами довольно тормозные.
Для прибора лучше бы AD99xx если надо десятки МГц и выше, ну или фильтры хорошие на выход.
Re: прибор на AD9850
Добавлено: Вт дек 08, 2020 18:37:06
Loyso Pondohva
Да уже отправил в магазин (Амперкот). Там проверили - действительно брак. Жду новый.
Как я понял, ШИМ нормально (c контроллера) на нем (на прямоугольнике) не делается, да? Ну ШИМ прекрасно и так на stm32 делается, пробовал.
Если у кого есть простая схема выходной цепи самого общего назначания -то есть как сделать AM (FM звуковой частотой, как я понимаю, без труда делается контроллером программно изменением частоты), защиту на выходе от спаливания случайным сигналом, высокое выходное сопротивление и главное - измерительная цепь ВЧ вольтметра для измерения отклика - то скиньте схему.
Германиевого диода у меня нет для ВЧ вольтметра, есть Шоттки и нужно его "сдвинуть" в рабочую область.
Спасибо. Это так, уж если под руку попадется. Я и сам найду.
Re: прибор на AD9850
Добавлено: Сб дек 19, 2020 00:19:52
Morroc
[uquote="Loyso Pondohva",url="/forum/viewtopic.php?p=3938631#p3938631"]Как я понял, ШИМ нормально (c контроллера) на нем (на прямоугольнике) не делается, да? Ну ШИМ прекрасно и так на stm32 делается, пробовал.[/uquote]
Угу, смысла нет, на МК не хуже выйдет.
[uquote="Loyso Pondohva",url="/forum/viewtopic.php?p=3938631#p3938631"]Если у кого есть простая схема выходной цепи самого общего назначания -то есть как сделать AM (FM звуковой частотой, как я понимаю, без труда делается контроллером программно изменением частоты)[/uquote]
Простой конкретно для ad9850/51 наверное такой вариант
https://www.analog.com/media/en/technic ... AN-423.pdf
[uquote="Loyso Pondohva",url="/forum/viewtopic.php?p=3938631#p3938631"], защиту на выходе от спаливания случайным сигналом,[/uquote]
Для защиты можно поставить буферный усилитель с аттенюатором на выходе, думаю достаточно будет. К этому каскаду можно и АМ прикрутить "по классике" с УНЧ и трансформатором.
[uquote="Loyso Pondohva",url="/forum/viewtopic.php?p=3938631#p3938631"]высокое выходное сопротивление и главное - измерительная цепь ВЧ вольтметра для измерения отклика - то скиньте схему.
Германиевого диода у меня нет для ВЧ вольтметра, есть Шоттки и нужно его "сдвинуть" в рабочую область.
Спасибо. Это так, уж если под руку попадется. Я и сам найду.[/uquote]
Какие частоты нужны ? Какие уровни сигналов ? Если точность не нужна (ну типа увидеть сигнал и настроить по максимуму) это одно дело, если нужен
измерительный широкополосный прибор, то все может быть очень непросто и без возможности откалибровать/поверить во всей рабочей полосе ничего толком не выйдет (а если возможность есть может и прибор такой не нужен?). Сейчас приличный осциллограф заменяет все такое для ВЧ измерений сделанное на коленке, остаются неохваченными СВЧ и измерение больших ВЧ мощностей/напряжений - напрямую осциллографом не померить, но и некалиброванными самоделками тоже. Полистайте например
https://vrtp.ru/index.php?showtopic=26983 на ad'шках получится прибор, показаниям которого более менее можно будет доверять без калибровки (ну если сами не накосячите), я готовый модуль измерения мощности на али брал с oled дисплеем - на частотах, которые видит мой осциллограф, показания совпадали.
Re: прибор на AD9850
Добавлено: Чт дек 24, 2020 02:36:53
Loyso Pondohva
Давно здесь не писал.
Платка действительно была бракованной. Обменял на новую - все работает прекрасно
Какие частоты нужны ? Какие уровни сигналов ?
Да я же и делаю себе прибор, и учусь одновременно. Пока что нужно отлаживать всевозможные преобразователи в высокое напряжение на неизвестных ферритах. Вот нужен прибор, чтобы все можно было измерить для таких трансформаторов - индуктивности, параметры насыщения, резонансы, индуктивные выбросы...
Ну а как сделаю прибор - так и до чего-нибудь типа трансивера на 27 мгц на stm32 сделаю. Там видно будет - это потом... Осциллограф у меня древний - С1-94 до 10 МГц.
Кстати, прилагаемый скетч - наверное, минимальный из понятных и рабочих. Вдруг кому нужно проверять. Работает и на ардуине и на blue pill.
Уже собрал конструкцию из AD9850 , blue pill и дисплейчика на 2.2' на ILI9341. Ну и 5 кнопок. Все работает, понемножку пишу код. (Я же чайник - у меня на счету из микропроцессорных приборов всего два - контроллер теплицы на Ардуине а затем метеостанция уже на blue pill. Ну еще мелочь какая-та на Attiny 13).
Заказал у китайцев AD 8009 для усиления на выходе и AD 8307 как детектор на входе. Жду, может быть, до НГ придут. Пока вот код пишу - установку частот кнопочками и меню. Синус красивый на осциллографе
Пока сделаю тренировочный НЧ вариант - на LM358 c эмиттерным повторителем на выходе и его же вторая половинка на входе. Детектор - на двух диодах Шоттки. Чтобы можно было АЧХ мерить килогерц до 300. Индуктивности - емкости померить можно.
А на прямоугольный выход и с AD и с стм-овского ШИМа повешу ULN2003 - дешево и сердито. Пока отлажу - глядишь, и ВЧ часть приедет.
Вот вопрос (не совсем по этой теме - но вдруг кто готовую ссылку кинет). Как тупо и сердито отфильтровать ШИМ (допустим, 200 кгц 1:10)) до постоянного напряжения, можно со временем стабилизации 0.1 с где-то. Но без пульсаций (меньше 2 % например). Цифры - прикидочные, сносный управляемый источник постоянного напряжения.
Тогда еще сделаю управляемый уровень амплитуды выходного сигнала. Ну например до 12 в при выходом сопротивлении 50 ом. Это отдельная тема - управляемые источники постоянного напряжения - но потом добавлю к прибору. Или скорее перейду на stm32f4 там есть готовый ЦАП.
Все влезает (без БП) в коробочку 8 х 8 х 3 см для соединения проводов проводки.
Так что дело движется!
Re: прибор на AD9850
Добавлено: Чт дек 24, 2020 08:17:41
Morroc
У вас слишком много планов, долго будете делать, за это время кучу.других приборов купите, наверное )