Перейти к содержанию
    

Сергей Борщ

Модератор
  • Постов

    10 908
  • Зарегистрирован

  • Посещение

  • Победитель дней

    31

Сообщения, опубликованные Сергей Борщ


  1. 4 часа назад, MPetrovich сказал:

    а "к" - на сколько разрядов сдвинуть ?

    Это коэффициент, на который умножить. У AVR есть команда умножения, бояться умножений не нужно.

    2 часа назад, MPetrovich сказал:

    У меня таблица синуса 36 значений (через 10 градусов),

    Не заставляйте контроллер делать дурную работу. Ему неудобно работать с таблицами размером не равным степени двойки. Зачем вам круглое число градусов? Вам один раз полюбоваться на круглые цифры при написании, а ему всю жизнь лишние команды молотить. Чем вам не нравится таблица из 64 значений (через пи/32 радиан)?

    2 часа назад, MPetrovich сказал:

    о номер значения в таблице будет считаться как n = (100*х)/(65536/36), где х-число итераций с частотой ШИМ?

    Как остаток от деления (100*x)/(65536/36) на 36. Поэтому удобно делать размер таблицы равным степени двойки - тогда остаток от деления вычисляется простой операцией "двоичное И" либо усечением значения при переполнении переменной, а 65536/размер_таблицы - как логический сдвиг.

  2. 6 минут назад, MPetrovich сказал:

    Так я вроде то же написал парой постов ранее...

    "Добавлять 64512" - это только "+ b" :dance3:

    А через kx + b можно из любого данного количества бит получить любое необходимое. То есть АЦП может выдавать сколько угодно бит и выдаваемые им значения можно привести к любому требуемому диапазону N1...N2 приращения аккумулятора фазы.

  3. 6 минут назад, MPetrovich сказал:

    Спасибо большое за доходчивое объяснение.

    Наверное стоило написать так: "То есть изменение приращения в каждом периоде ШИМ аккумулятора фазы на 1 изменит частоту на 0.47 Гц."

  4. 5 минут назад, MPetrovich сказал:

    Мне только осталось неясно сколько же значений в таблицу синуса нужно...

    Зависит от того, насколько чистый синус вам нужен. Минимально - два значения :biggrin:

     

    5 минут назад, MPetrovich сказал:

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

    y = kx + b в школах уже не проходят?.

  5. 2 часа назад, destroit сказал:

    мне нужны катушки разных размеров-геометрии

    Для одного изделия нужны были катушки, диаметр что-то около 4 мм, количество витков от 2 до десяти. Нашли китайцев, они изготовили. Быстро, недорого и с прекрасной повторяемостью в отличие от намотанный вручную. А освободившийся от ручного изготовления этих катушек человек занялся более полезным делом, принося больше прибыли за единицу времени (раз уж мы о зарабатывании денег).

  6. 23 минуты назад, MPetrovich сказал:

    Я взял 10 разрядов потом, что АЦП в ATMega128 выдает 10-битный результат

    А АЦП тут при чем? Каким боком оно к синтезу синуса?

     

    23 минуты назад, MPetrovich сказал:

    Однако, уже следующее значение аккумулятора фазы будет увеличено на 0,477*2^6=30,52Hz... Такая вот незадача...

    Вот этого не понял. При чем тут 2^6, откуда оно взялось? 16-битный аккумулятор фазы дает шаг перестройки частоты 0.47 Гц. То есть изменение приращения аккумулятора фазы на 1 изменит частоту на 0.47 Гц.

  7. 42 минуты назад, Сергей Борщ сказал:

    Если на каждом шаге мы будем прибавлять к аккумулятору фазы по единичке, за 65536 шагов мы обойдем всю таблицу один раз

    Дополню:

    Предположим, что у вас ATmega работает на частоте вот прямо ровно-ровно 16 МГц, таблица состоит из 8-битных значений и режим ШИМа обычный, то есть частота ШИМа у вас 16000000 / 256 = 62500 Гц. Также предположим, что аккумулятор фазы 32-битный. Чтобы выдать частоту 1 Гц, нужно на  каждый период ШИМа увеличивать аккумулятор фазы на 0x100000000 / 62500 = ~68719.476736. Ближайшее целое будет 68719 и реальная выдаваемая частота  получится 68719 / (0x100000000 / 62500) = ~0.999993063 Гц. Если на каждый период ШИМ мы будем увеличивать аккумулятор фазы на 68720  - выдаваемая частота получится 1.000007614. Меняя приращение аккумулятора фазы меняем частоту с шагом 62500 / 0x100000000 = ~0.000014552 Гц. То есть разрядность аккумулятора влияет только на точность или шаг установки частоты. Хотим получить 1000 Гц - прибавляем к аккумулятору фазы 1000 * 0x100000000 / 62500 = 68719476, реальная частота получится 68719476 * (0x100000000 / 62500) = 999.99998929 Гц.

  8. 8 минут назад, MPetrovich сказал:

    Это он?

    Да

    8 минут назад, MPetrovich сказал:

    Получается, что чем меньше частота генерируемого сигнала, тем меньше разрядов аккумулятора фазы используется. И управление частотой сводится к изменению используемых разрядов аккумулятора фазы. Так?

    Нет. Предположим, таблица у нас на 256 значений и аккумулятор фазы 16-битный, 8 старших бит используются для выборки из таблицы. Если на каждом шаге мы будем прибавлять к аккумулятору фазы по единичке, за 65536 шагов мы обойдем всю таблицу один раз и каждое значение таблицы будет выдано по 256 раз. Если мы будем прибавлять по 5, то за 65536 шагов мы обойдем таблицу 5 раз и каждое значение таблицы будет выдано 51 или 52 раза (каждое пятое будет выдано 52 раза, а остальные 51 раз). 

  9. 15 минут назад, MPetrovich сказал:

    Однако, при большом объёме аккумуляторе фазы нужно иметь и большую таблицу значений амплитуды - по крайней мере, не меньше 1/4 объёма аккумулятора фазы...

    Нет, не обязательно. При малом размере таблицы вы можете выдавать одно и то же значение из таблицы несколько раз. Например, у вас аккумулятор фазы может быть 32-битный, но только 8 или, скажем, 6 старших бит использоваться для выборки из таблицы. 

  10. 30 минут назад, MPetrovich сказал:

    Насколько большую?

    Честно говоря мне лень излагать здесь всю теорию прямого цифрового синтеза. Почитайте хотя бы статью Леонида Ивановича, многое станет понятным.

    30 минут назад, MPetrovich сказал:

    В AD9833 хранятся табличные данные только об 1/4 части синусоиды.

    Я рад за них. А я на ATmega8 выдавал ЧМ модуляцию без разрыва фазы для передатчика используя таблицу на 1/8 периода. :blum:

    30 минут назад, MPetrovich сказал:

    Формулу можно? А лучше в виде примерчика кода)))

    Ключевые слова для Яндекса - "алгоритм Герцеля", генерация синусоиды - его частный случай.

  11. 3 минуты назад, EdgeAligned сказал:

    Эммм... 360°/4 = 90°, вроде бы так. Сейчас на калькуляторе проверю на всякий случай 🙂

    Если поменять местами X и Y  - участок единичной окружности от 0 до 45 градусов превращается в участок от 90 до 45 градусов :blush:

  12. 13 минут назад, EdgeAligned сказал:

    Правда, в этом случае таблица синуса должна быть достаточно большой, чтобы получить большой диапазон перестройки частоты.

    Достаточно иметь большую разрядность аккумулятора фазы

  13. 3 часа назад, artemkad сказал:

    ЗЫ. Кстати, та-же логика должна была подсказать, что при расширении полосы вдвое, спектральная плотность  мощности полезного сигнала тоже падает вдвое...

    Естетственнно. Но при передаче ШПС нет необходимости заполнять сигналом и слушать всю полосу одновременно, а вот глушить нужно всю полосу..

  14. 1 час назад, jcxz сказал:

    Поэтому, для повышения помехоустойчивости, полосу сужают.

    Гм. А ученые (не британские) считают иначе. Даже придумали шумоподобные сигналы и методы расширения спектра.

    В 30.07.2023 в 01:56, artemkad сказал:

    Чем шире полоса - тем проще заглушить.

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

  15. 57 минут назад, MegaVolt сказал:

    Главная сложность это понять что те GPS что есть врут и переключится на альтернативные средства.

    Говорят, у моряков есть поговорка: "выходя в море надо брать или один компас, или три".

  16. А, это же GD32, у него такты ожидания флеша не влияют на работу. Хотя у них есть application note про проблемы при программном сбросе, к сожалению не смог найти ее в интернете.AN012 GD32 programming instructions on reset (rev. 1.0).pdf

  17. 6 часов назад, Arlleex сказал:

    В альтиуме оно называется part swap, что мне показалось логичнее.

    По аналогии с part number я бы понял это название как "поменять местами микросхемы". Тут же имеются ввиду именно логические элементы и даже не важно, меняются ли они местами внутри одного или разных корпусов.

×
×
  • Создать...