Например TDA7294

Форум РадиоКот • Просмотр темы - Простейший ГКЧ на AD9850 и Arduino Nano 328
Форум РадиоКот
Здесь можно немножко помяукать :)





Текущее время: Чт апр 18, 2024 06:21:51

Часовой пояс: UTC + 3 часа


ПРЯМО СЕЙЧАС:



Начать новую тему Ответить на тему  [ Сообщений: 406 ]     ... , , , 16, , , ...  
Автор Сообщение
Не в сети
 Заголовок сообщения: Re: Простейший ГКЧ на AD9850 и Arduino Nano 328
СообщениеДобавлено: Чт ноя 23, 2017 18:42:02 
Опытный кот
Аватар пользователя

Карма: 10
Рейтинг сообщений: 34
Зарегистрирован: Пт июл 26, 2013 22:33:37
Сообщений: 766
Рейтинг сообщения: 0
Спасибо, принцип понятен.


Вернуться наверх
 
Не в сети
 Заголовок сообщения: Re: Простейший ГКЧ на AD9850 и Arduino Nano 328
СообщениеДобавлено: Чт мар 22, 2018 09:05:22 
Родился

Зарегистрирован: Ср мар 14, 2018 16:01:14
Сообщений: 8
Рейтинг сообщения: 0
Привет всем прибор такой ARDUino NANO, AD9850, AD8009, AD8307, все видит порт вкл. рисует график но проблема такая греется модуль AD9850 проверил питания 4,95В на неё подается, я думаю нормально, может кто подскажет в чем дело, и ещё вопрос такой мне надо прибор для настройки ПДФ и КФ и все подскажите какую лучше схему собрать за ранние благодарен


Вернуться наверх
 
Не в сети
 Заголовок сообщения: Re: Простейший ГКЧ на AD9850 и Arduino Nano 328
СообщениеДобавлено: Сб мар 24, 2018 08:04:26 
Первый раз сказал Мяу!

Карма: 3
Рейтинг сообщений: 3
Зарегистрирован: Пт май 12, 2017 12:19:03
Сообщений: 33
Рейтинг сообщения: 0
Для Pavel64: Запитайте модуль на ad9850 от 3.3В стабилизатора. Если на нём стоИт маленький, плоский smd опорник, он- то и греется. По поводу-"какую схему лучше собрать?"- у вас вроде всё есть. Я в такой комплектации и настраиваю и ДПФ-ы и кварцевые. Успехов.


Вернуться наверх
 
PCBWay - всего $5 за 10 печатных плат, первый заказ для новых клиентов БЕСПЛАТЕН

Сборка печатных плат от $30 + БЕСПЛАТНАЯ доставка по всему миру + трафарет

Онлайн просмотровщик Gerber-файлов от PCBWay + Услуги 3D печати
Не в сети
 Заголовок сообщения: Re: Простейший ГКЧ на AD9850 и Arduino Nano 328
СообщениеДобавлено: Чт апр 26, 2018 13:25:30 
Родился

Карма: 2
Рейтинг сообщений: 2
Зарегистрирован: Ср апр 25, 2018 07:29:52
Сообщений: 2
Рейтинг сообщения: 0
Не подскажет, где можно скачать последнюю версию ПО и схем с топологией платы для данного устройства? Если у кого есть, киньте сюда пожалуйста. Хочу попробовать повторить прибор.


Вернуться наверх
 
Организация питания на основе надежных литиевых аккумуляторов EVE и микросхем азиатского производства

Качественное и безопасное устройство, работающее от аккумулятора, должно учитывать его физические и химические свойства, профили заряда и разряда, их изменение во времени и под влиянием различных условий, таких как температура и ток нагрузки. Мы расскажем о литий-ионных аккумуляторных батареях EVE и нескольких решениях от различных китайских компаний, рекомендуемых для разработок приложений с использованием этих АКБ. Представленные в статье китайские аналоги помогут заменить продукцию западных брендов с оптимизацией цены без потери качества.

Подробнее>>
Не в сети
 Заголовок сообщения: Re: Простейший ГКЧ на AD9850 и Arduino Nano 328
СообщениеДобавлено: Пн май 14, 2018 05:50:58 
Первый раз сказал Мяу!

Карма: 3
Рейтинг сообщений: 3
Зарегистрирован: Пт май 12, 2017 12:19:03
Сообщений: 33
Рейтинг сообщения: 0
Всего-то 16 страниц ветки. Мотайте от конца к началу и всё найдёте. Печатки выкладывал Laguvit. Софт на 4 входа. На 11-ой странице всё есть.


Вернуться наверх
 
Новый аккумулятор EVE серии PLM для GSM-трекеров, работающих в жёстких условиях (до -40°С)

Компания EVE выпустила новый аккумулятор серии PLM, сочетающий в себе высокую безопасность, длительный срок службы, широкий температурный диапазон и высокую токоотдачу даже при отрицательной температуре. Эти аккумуляторы поддерживают заряд при температуре от -40/-20°С (сниженным значением тока), безопасны (не воспламеняются и не взрываются) при механическом повреждении (протыкание и сдавливание), устойчивы к вибрации. Они могут применяться как для автотранспорта (трекеры, маячки, сигнализация), так и для промышленных устройств мониторинга, IoT-устройств.

Подробнее>>
Не в сети
 Заголовок сообщения: Re: Простейший ГКЧ на AD9850 и Arduino Nano 328
СообщениеДобавлено: Пт мар 20, 2020 16:15:02 
Родился

Зарегистрирован: Чт мар 19, 2020 15:59:31
Сообщений: 1
Рейтинг сообщения: 0
а где продолжение лили оконечни вариант


Вернуться наверх
 
Не в сети
 Заголовок сообщения: Re: Простейший ГКЧ на AD9850 и Arduino Nano 328
СообщениеДобавлено: Сб апр 11, 2020 21:21:45 
Потрогал лапой паяльник
Аватар пользователя

Карма: 7
Рейтинг сообщений: 30
Зарегистрирован: Вт апр 23, 2013 22:21:18
Сообщений: 374
Откуда: KUBAN, Krasnodar
Рейтинг сообщения: 0
Привет! А вместо обычной Nano 3 китайский клон WAVGAT с контроллером LGT8F328P на борту кто нибудь заюзал? Там АЦП покруче (12bit) будет и возможность подключить 3 внутренних референсных источников AREF.

_________________
Девице - Device


Вернуться наверх
 
Не в сети
 Заголовок сообщения: Re: Простейший ГКЧ на AD9850 и Arduino Nano 328
СообщениеДобавлено: Вс апр 12, 2020 09:27:26 
Нашел транзистор. Понюхал.

Карма: 5
Рейтинг сообщений: 21
Зарегистрирован: Вс апр 17, 2011 09:51:26
Сообщений: 192
Откуда: Тула
Рейтинг сообщения: 0
А вместо обычной Nano 3 китайский клон WAVGAT с контроллером LGT8F328P на борту кто нибудь заюзал?

У меня нет LGT8F328P. Если есть желание допилить ПО прилагаю исходники для ПК и ATMega 328P.


Вложения:
Комментарий к файлу: Исходники для ПК и МК
AD9850_1.ZIP [579.77 KiB]
Скачиваний: 494
Вернуться наверх
 
Не в сети
 Заголовок сообщения: Re: Простейший ГКЧ на AD9850 и Arduino Nano 328
СообщениеДобавлено: Вс апр 12, 2020 16:17:07 
Потрогал лапой паяльник
Аватар пользователя

Карма: 7
Рейтинг сообщений: 30
Зарегистрирован: Вт апр 23, 2013 22:21:18
Сообщений: 374
Откуда: KUBAN, Krasnodar
Рейтинг сообщения: 0
Спасибо за исходники. Попробую

Добавлено after 5 hours 3 minutes 10 seconds:
Для LGT8F328P (WAVGAT UNO R3) + AD9851 + диодный ВЧ пробник такое сквозное АЧХ получилось при analogReference(INTERNAL2V048) и 12 бит разрешение АЦП
Спойлер
Код:
#define W_CLK 8       
#define FQ_UD 9       
#define DATA 10       
#define RESET 11     

#define pulseHigh(pin) {digitalWrite(pin, HIGH); digitalWrite(pin, LOW); }

void tfr_byte(byte data)
{
 for (int i=0; i<8; i++, data>>=1) {
   digitalWrite(DATA, data & 0x01);
   pulseHigh(W_CLK);   
 }
}

void sendFrequency(double frequency) {
 int32_t freq = frequency * 4294967295/180000000; 
 for (int b=0; b<4; b++, freq>>=8) {
   tfr_byte(freq & 0xFF);
 }
 tfr_byte(0x001);   
 pulseHigh(FQ_UD); 
}

float readInVoltage()
{
  float vin = 0;
  float vin1 = 0;
  float vin2 = 0;
 
  for (int i = 0; i < 12; i++)
  {
    vin1 = analogRead(A0);
    vin2 = analogRead(A1);
    vin = vin + (((vin1 + vin2) / 2) / 4095 * 2.048);
  }
  vin = vin / 12;
  return vin;
}

void setup() {
 pinMode(FQ_UD, OUTPUT);
 pinMode(W_CLK, OUTPUT);
 pinMode(DATA, OUTPUT);
 pinMode(RESET, OUTPUT);

 pulseHigh(RESET);
 pulseHigh(W_CLK);
 pulseHigh(FQ_UD); 
 analogReference(INTERNAL2V048);
 analogReadResolution(12);
 Serial.begin(115200);
uint32_t i=0; 
while(i<=70000000)
  {
    sendFrequency(i);
    Serial.print("fr=");
    Serial.print(i);
    Serial.print(" v=");
    Serial.print(readInVoltage(),6);
    Serial.println("");
    i=i+1000;
  }
}

void loop() {
}


Судя по графику, нужно только подкинуть широкополосной усилитель для AD9851 c обратной связью, и получить равномерную напругу в 2V или 4V (для рефернса 4.096) во всем интересуемом диапазоне частот (1мгц - 60 мгц). Остальные навороты в виде входных цепей от NWT нафиг не нужны. И между установкой очередной частоты нет смысла на A1 логический "0" выставлять для разряда кондера в пробнике. Потенциал в 0.3 v все равно присутствовать будет.


Вложения:
АЧХ.png [46.72 KiB]
Скачиваний: 400

_________________
Девице - Device
Вернуться наверх
 
Не в сети
 Заголовок сообщения: Re: Простейший ГКЧ на AD9850 и Arduino Nano 328
СообщениеДобавлено: Вс апр 12, 2020 18:13:42 
Нашел транзистор. Понюхал.

Карма: 5
Рейтинг сообщений: 21
Зарегистрирован: Вс апр 17, 2011 09:51:26
Сообщений: 192
Откуда: Тула
Рейтинг сообщения: 0
Измеряемое напряжение с Mega328 выводится на монитор компьютера. Для отображения АЧХ на мониторе достаточно 512 пикселей по вертикали (в среднем пол экрана). В АЦП Mega328p 10 разрядное (можно вывести 1024 пикселей). Так что, 10 бит разрешение АЦП для данного проекта достаточно.
Не забываем что это не высокоточный вольтметр, а ГКЧ для показа АЧХ.

Основная погрешность измерения АЧХ связана с временем окончания переходных процессов. Это наглядно видно если увеличить время измерения на каждой частоте (убрать галочку в V max в окне АЧХ, что уменьшает скорость сканирования по шкале частоты).

Разница амплитуд между соседними частотами не слишком большая и разряжать конденсатор пикового детектора до 0 необязательно.

Данный проект задумывался для измеритель АЧХ из минимум деталей. Можно не делать печатку, а бросить несколько проводников между модулями AD9850 и Arduino Nano 328р и спаять простейший выпрямитель. Питание осуществляется от USB.

Изображение

Что позволяет во многих случаях посмотреть АЧХ.

Изображение

А для дальнейшего развития ставь различные усилители на вход/выход, заводи отдельное питание...


Вложения:
Комментарий к файлу: Прошивка для МК и софт для ПК
ГКЧ.zip [444.18 KiB]
Скачиваний: 418


Последний раз редактировалось kvn234 Пн апр 13, 2020 13:14:15, всего редактировалось 2 раз(а).
Вернуться наверх
 
Не в сети
 Заголовок сообщения: Re: Простейший ГКЧ на AD9850 и Arduino Nano 328
СообщениеДобавлено: Вс апр 12, 2020 18:28:07 
Потрогал лапой паяльник
Аватар пользователя

Карма: 7
Рейтинг сообщений: 30
Зарегистрирован: Вт апр 23, 2013 22:21:18
Сообщений: 374
Откуда: KUBAN, Krasnodar
Рейтинг сообщения: 0
kvn234, понятно что перфекционизм штука вредная :) , но иногда хочется на собранном на коленках девайсе сделать реальные измерения с точностью плюс-минус лапоть хотя бы, а не только посмотреть. Я с Вами полностью согласен, и благодарю за полезную идею. Сотня баксов экономии без необходимости покупать NWT.

_________________
Девице - Device


Вернуться наверх
 
Не в сети
 Заголовок сообщения: Re: Простейший ГКЧ на AD9850 и Arduino Nano 328
СообщениеДобавлено: Вс апр 12, 2020 18:53:24 
Нашел транзистор. Понюхал.

Карма: 5
Рейтинг сообщений: 21
Зарегистрирован: Вс апр 17, 2011 09:51:26
Сообщений: 192
Откуда: Тула
Рейтинг сообщения: 0
иногда хочется на собранном на коленках девайсе сделать реальные измерения с точностью плюс-минус лапоть хотя бы, а не только посмотреть.


А что и как мерить? Как я писал, если хотите увеличит точность измерения АЧХ необходимо увеличить время измерения на каждой частоте (для окончания переходных процессов). А затем для большего увеличения точности повышать разрядность АЦП.

Вас устроит время построения АЧХ 10-40 сек?

Для 40 сек для каждой частоты время измерения 40/1000=40 мс., и этого может быть недостаточно для окончания переходных процессов в некоторых цепях.

Другой вариант уменьшить количество частот для сканирования.

Увеличение разрядности АЦП не основной параметр для повышения точности.


Последний раз редактировалось kvn234 Вс апр 12, 2020 19:17:56, всего редактировалось 1 раз.

Вернуться наверх
 
Не в сети
 Заголовок сообщения: Re: Простейший ГКЧ на AD9850 и Arduino Nano 328
СообщениеДобавлено: Вс апр 12, 2020 19:14:28 
Потрогал лапой паяльник
Аватар пользователя

Карма: 7
Рейтинг сообщений: 30
Зарегистрирован: Вт апр 23, 2013 22:21:18
Сообщений: 374
Откуда: KUBAN, Krasnodar
Рейтинг сообщения: 0
Аж 12 раз с двух каналов с усреднением. Достаточно для любого переходного процесса (50ms)

Код:
float readInVoltage()
{
  float vin = 0;
 
  for (int i = 0; i < 12; i++)
  {
    vin = vin + ((((float)analogRead(A0) + (float)analogRead(A1)) / 2) / 4095 * 2.048);
  }
  vin = vin / 12;
  return vin;
}



Полоса в 500 кГц сканируется за 3 секунды с шагом 1 кГц. Вполне приемлимое время

_________________
Девице - Device


Вернуться наверх
 
Не в сети
 Заголовок сообщения: Re: Простейший ГКЧ на AD9850 и Arduino Nano 328
СообщениеДобавлено: Вс апр 12, 2020 19:54:56 
Нашел транзистор. Понюхал.

Карма: 5
Рейтинг сообщений: 21
Зарегистрирован: Вс апр 17, 2011 09:51:26
Сообщений: 192
Откуда: Тула
Рейтинг сообщения: 0
Аж 12 раз с двух каналов с усреднением. Достаточно для любого переходного процесса (50ms)

Полоса в 500 кГц сканируется за 3 секунды с шагом 1 кГц. Вполне приемлимое время


1. 500измерений х 50ms = 25000ms = 25s

2. Я писал об окончании переходных процессов в измеряемой цепи.

3. Измерение надо начинать (включать АЦП) после окончания переходных процессов в измеряемой цепи. Выставил частоту, ждеш окончания переходного процесса (можно делать вычисление следующей частоты) например 50ms, затем включаем АЦП. И так в цикле 500 раз.

Изображение


Вложения:
Переходной процесс.JPG [42.75 KiB]
Скачиваний: 175


Последний раз редактировалось kvn234 Вс апр 12, 2020 20:52:35, всего редактировалось 2 раз(а).
Вернуться наверх
 
Не в сети
 Заголовок сообщения: Re: Простейший ГКЧ на AD9850 и Arduino Nano 328
СообщениеДобавлено: Вс апр 12, 2020 20:48:41 
Потрогал лапой паяльник
Аватар пользователя

Карма: 7
Рейтинг сообщений: 30
Зарегистрирован: Вт апр 23, 2013 22:21:18
Сообщений: 374
Откуда: KUBAN, Krasnodar
Рейтинг сообщения: 0
Скетч адаптировал под LGT8 и десктопный показомер UA3REO

Спойлер
Код:
#define W_CLK 8
#define FQ_UD 9
#define DATA 10
#define RESET 11

#define pulseHigh(pin) {digitalWrite(pin, HIGH); digitalWrite(pin, LOW); }

String serial_readline = "";
const int bSize = 64; //serial buffer size from desktop
char Buffer[bSize]; //serial buffer from desktop
long freq = 35000000;

void tfr_byte(byte data)
{
  for (int i = 0; i < 8; i++, data >>= 1) {
    digitalWrite(DATA, data & 0x01);
    pulseHigh(W_CLK);
  }
}

void sendFrequency(double frequency) {
  int32_t freq = frequency * 4294967295 / 180000000;
  for (int b = 0; b < 4; b++, freq >>= 8) {
    tfr_byte(freq & 0xFF);
  }
  tfr_byte(0x001);
  pulseHigh(FQ_UD);
}

float readInVoltage()
{
  float vin = 0;

  for (int i = 0; i < 12; i++)
  {
    vin = vin + ((((float)analogRead(A0) + (float)analogRead(A1)) / 2) / 4095 * 2.048);
  }
  vin = vin / 12;
  return vin;
}

void setup() {
  pinMode(FQ_UD, OUTPUT);
  pinMode(W_CLK, OUTPUT);
  pinMode(DATA, OUTPUT);
  pinMode(RESET, OUTPUT);

  pulseHigh(RESET);
  pulseHigh(W_CLK);
  pulseHigh(FQ_UD);

  analogReference(INTERNAL2V048);
  analogReadResolution(12);

  Serial.begin(115200);
  Serial.setTimeout(100);

}

void loop() {
  while (Serial.available() > 0)
  {
    memset(Buffer, 0, bSize);
    Serial.readBytesUntil('\n', Buffer, bSize);
    serial_readline = String(Buffer);
    if (serial_readline.startsWith("GET "))
    {
      String sfreq = serial_readline.substring(4);
      char carray[sfreq.length() + 1];
      sfreq.toCharArray(carray, sizeof(carray));
      sendFrequency(long(atof(carray)));
      Serial.println(readInVoltage(), 6);
    }
    Serial.flush();
  }

}

Завтра полосовик посмотрю


Вложения:
СквозноеАЧХсКалибровкой.png [230.32 KiB]
Скачиваний: 282

_________________
Девице - Device
Вернуться наверх
 
Не в сети
 Заголовок сообщения: Re: Простейший ГКЧ на AD9850 и Arduino Nano 328
СообщениеДобавлено: Пн апр 13, 2020 06:07:16 
Первый раз сказал Мяу!
Аватар пользователя

Карма: 7
Рейтинг сообщений: 8
Зарегистрирован: Чт апр 17, 2014 19:33:41
Сообщений: 26
Рейтинг сообщения: 0
Скетч адаптировал под LGT8 и десктопный показомер UA3REO


Блин!!!! Я сразу, как и все читающие форум, понял, что такое LGT8 и десктопный показомер UA3REO.
По LGT8 информацию нашёл здесь: http://arduino.ru/forum/apparatnye-vopr ... -lgt8f328p
А по запросу "десктопный показомер UA3REO" гугл вежливо послал меня к черту:

По запросу десктопный показомер UA3REO ничего не найдено.

Рекомендации:

Убедитесь, что все слова написаны без ошибок.
Попробуйте использовать другие ключевые слова.
Попробуйте использовать более популярные ключевые слова.
Попробуйте уменьшить количество слов в запросе.

Может дадите ссылочки, что бы заценить и воспользоваться Вашим скетчем?


Вернуться наверх
 
Не в сети
 Заголовок сообщения: Re: Простейший ГКЧ на AD9850 и Arduino Nano 328
СообщениеДобавлено: Пн апр 13, 2020 07:06:23 
Потрогал лапой паяльник
Аватар пользователя

Карма: 7
Рейтинг сообщений: 30
Зарегистрирован: Вт апр 23, 2013 22:21:18
Сообщений: 374
Откуда: KUBAN, Krasnodar
Рейтинг сообщения: 0
В предыдущем посте я напутал... 50 мкс - цикл установки частоты и измерение с усреднением.
Скорость визуализации зависит от канала передачи данных. Надо ethernet попробовать...

123ksn, конечно дам...
https://github.com/XGudron/UA3REO-Sweep-Analyzer
https://ua3reo.ru/izmerenie-parametrov- ... a-arduino/


Вложения:
Контур465.png [60.75 KiB]
Скачиваний: 260

_________________
Девице - Device
Вернуться наверх
 
Не в сети
 Заголовок сообщения: Re: Простейший ГКЧ на AD9850 и Arduino Nano 328
СообщениеДобавлено: Пн апр 13, 2020 15:16:39 
Нашел транзистор. Понюхал.

Карма: 5
Рейтинг сообщений: 21
Зарегистрирован: Вс апр 17, 2011 09:51:26
Сообщений: 192
Откуда: Тула
Рейтинг сообщения: 0
Скорость визуализации зависит от канала передачи данных. Надо ethernet попробовать...

У меня скорость передачи 57600, что вполне достаточно.

Считаем время передачи для каждой частоты:

Посылка с МК состоит из кода начала ':' (1 байт), кода признака информации (1 байт), значения частоты (float = 4 байта), значения АЦП (2 байта) и CRC (1 байт). Итого 9 байт.
Для передачи 1 байта в RS232 использую 10 бит. Общая длина посылки для одной частоты 9х10=90бит.
Время передачи одной посылки 1 / 57600 x 90 = 1.562 ms.

Для правильного измерения необходима задержка начала измерения на несколько ms после установки новой частоты (для завершения переходного процесса в измеряемой цепи).
Пока идет задержка и измерение АЦП одновременно идет передача предыдущего значения с использованием кольцевого буфера и прерываний.

Если Вы уберете задержку начала измерения то получите недостоверные измерения на участке переходного процесса.

Изображение

Так что увеличивать скорость передачи не имеет смысла.

У меня время полного сканирования 1000 значений частот около 3 сек. Можно уменьшить время сканирования за счет уменьшения количества частот 2, 4 раза.


Вернуться наверх
 
Не в сети
 Заголовок сообщения: Re: Простейший ГКЧ на AD9850 и Arduino Nano 328
СообщениеДобавлено: Вт апр 14, 2020 11:00:10 
Потрогал лапой паяльник
Аватар пользователя

Карма: 7
Рейтинг сообщений: 30
Зарегистрирован: Вт апр 23, 2013 22:21:18
Сообщений: 374
Откуда: KUBAN, Krasnodar
Рейтинг сообщения: 0
Немного причесал скетч

Спойлер
Код:
//Скетч для AD9851 и платы WAVGAT UNO R3 с контроллером LGT8F328P (AVGA328P) https://aliexpress.ru/item/4000587200875.html?gps-id=pcDetail404&scm=1007.16891.96945.0&scm_id=1007.16891.96945.0&scm-url=1007.16891.96945.0&pvid=12e0d1cd-2156-489e-a2b8-26084e010c5d&_t=gps-id:pcDetail404,scm-url:1007.16891.96945.0,pvid:12e0d1cd-2156-489e-a2b8-26084e010c5d,tpp_buckets:668%230%23131923%239_668%23808%234093%23801_668%23888%233325%235
//для проекта UA3REO-Sweep-Analyzer ссылки на оригинальный проект https://ua3reo.ru/izmerenie-parametrov-filtrov-i-konturov-na-arduino/
//GitHub https://github.com/XGudron/UA3REO-Sweep-Analyzer
//Дрова для этой платы лежат https://raw.githubusercontent.com/dbuezas/lgt8fx/master/package_lgt8fx_index.json
//Выбираем в Инструментах плату LGT8F328, Clock source - Internal, Clock - 16Mhz, Variant - 328P-LQFP32 MiniEVB nano-style

//Ноги для управления AD9851.
//Генератор на такой плате https://russian.alibaba.com/product-detail/ad9851-dds-signal-generator-module-circuit-diagram-2-sine-wave-0-70mhz-and-2-square-wave-0-1mhz-output-1918582945.html
//Перемычки J1,J2 установлены. Перемычка J3 - по желанию, если надо прямоугольник получить
 
#define W_CLK 7
#define FQ_UD 8
#define DATA 9
#define RESET 10

#define INP_VAL A0  //Измерительный вход

#define pulseHigh(pin) {digitalWrite(pin, HIGH); digitalWrite(pin, LOW); }

String serial_readline = "";
const int bSize = 64; //serial buffer size from desktop
char Buffer[bSize]; //serial buffer from desktop
long freq = 35000000;

void tfr_byte(byte data)
{
  for (int i = 0; i < 8; i++, data >>= 1) {
    digitalWrite(DATA, data & 0x01);
    pulseHigh(W_CLK);
  }
}

void sendFrequency(double frequency) {
  int32_t freq = frequency * 4294967295 / 180000000;
  for (int b = 0; b < 4; b++, freq >>= 8) {
    tfr_byte(freq & 0xFF);
  }
  tfr_byte(0x001);
  pulseHigh(FQ_UD);
}

float readInVoltage()
{
  float vin = 0;
  for (int i = 0; i < 12; i++)
  {
    vin = vin + ((float)analogRead(INP_VAL) / 4096 * 4.096);
  }
  vin = vin / 12;
  return vin;
}

//При старте переключаемся на внешний кварц
void switchToExtQuartz() {

  bitSet(PMCR, PMCE);
  bitSet(PMCR, OSCMEN);
  asm("nop");
  asm("nop");
  asm("nop");
  bitSet(PMCR, PMCE);
  bitClear(PMCR, CLKFS);
  bitSet(PMCR, CLKSS);
  asm("nop");
  asm("nop");
  asm("nop");

}

void setup() {

  switchToExtQuartz(); // Для WAVGAT UNO R3, nano с внешним кварцем

  pinMode(FQ_UD, OUTPUT);
  pinMode(W_CLK, OUTPUT);
  pinMode(DATA, OUTPUT);
  pinMode(RESET, OUTPUT);

  pulseHigh(RESET);
  pulseHigh(W_CLK);
  pulseHigh(FQ_UD);

  analogReference(INTERNAL4V096);
  analogReadResolution(12);

  Serial.begin(115200);
}

void loop() {
  while (Serial.available() > 0)
  {
    memset(Buffer, 0, bSize);
    Serial.readBytesUntil('\n', Buffer, bSize);
    serial_readline = String(Buffer);
    if (serial_readline.startsWith("GET "))
    {
      freq = (long)serial_readline.substring(4).toFloat();
      sendFrequency(freq);
      Serial.println(readInVoltage(), 6);
    }
    Serial.flush();
  }
}

_________________
Девице - Device


Вернуться наверх
 
Не в сети
 Заголовок сообщения: Re: Простейший ГКЧ на AD9850 и Arduino Nano 328
СообщениеДобавлено: Чт апр 16, 2020 08:08:42 
Потрогал лапой паяльник
Аватар пользователя

Карма: 7
Рейтинг сообщений: 30
Зарегистрирован: Вт апр 23, 2013 22:21:18
Сообщений: 374
Откуда: KUBAN, Krasnodar
Рейтинг сообщения: 0
У LGT8F328P (WAVGAT UNO R3) на борту 8 битный ЦАП есть. А это как бы намекает... :)


Вложения:
DAC.png [16.95 KiB]
Скачиваний: 231
Пила.png [102.98 KiB]
Скачиваний: 194

_________________
Девице - Device
Вернуться наверх
 
Показать сообщения за:  Сортировать по:  Вернуться наверх
Начать новую тему Ответить на тему  [ Сообщений: 406 ]     ... , , , 16, , , ...  

Часовой пояс: UTC + 3 часа


Кто сейчас на форуме

Сейчас этот форум просматривают: нет зарегистрированных пользователей и гости: 5


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

Найти:
Перейти:  


Powered by phpBB © 2000, 2002, 2005, 2007 phpBB Group
Русская поддержка phpBB
Extended by Karma MOD © 2007—2012 m157y
Extended by Topic Tags MOD © 2012 m157y