Программируемая логика - это не так уж и сложно. Разберемся вместе.
Ответить

Re: XILINX 9572 у чайника

Чт апр 06, 2023 19:50:01

Ага, типо того. Только я сильно упростил, потом может переделаю. Чем подробнее таблица и больше выводов на делители, тем точней сигнал на выходе.
Народ много чего из этого делает - http://easyelectronics.ru/parallelnyj-c ... -r-2r.html

Даже :)))


Изображение

Re: XILINX 9572 у чайника

Пт апр 07, 2023 16:13:26

Я надеюсь, это чисто в образовательных целях?)

Re: XILINX 9572 у чайника

Пт апр 07, 2023 17:24:23

Больше да, теорию сравнить с практикой, узнать что-то новое для себя. Ну и в пользу для хозяйства где что можно применить. ПЛИС ки это такой пластилин, балдею от них. :)) Не хватает только (у бюджетных камней) встроенного АЦП, внутреннего генератора, ПЗУ, ОЗУ и другой мелочи. Но это уже мои капризы. :))
Кстати, может имеете информацию, какие книжки можно полистать, почитать, про математические операции с логикой? Особенно интересны вычисления синусов, косинусов, извлечение корней.

Re: XILINX 9572 у чайника

Сб апр 08, 2023 08:35:19

Соусы и косинусы (возможно, корни тоже) - это в ПЛИСах алгоритмы CORDIC: там все вычисления сводятся к сложениям и переносам.
Конкретные книги не скажу, ищите статьи и материалы по этой теме.

Re: XILINX 9572 у чайника

Вс апр 09, 2023 20:32:25

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

Итак, вернемся к вычислению квадратного корня. Мы будем использовать «детский» метод (он же арифметический), который основывается на том простом факте, что квадрат числа — это сумма нечетных чисел от 1 до 2n-1:
1 = 1^2 = 1
1 + 3 = 2^2 = 4
1 + 3 + 5 = 3^2 = 9

https://habr.com/ru/articles/133893/

Сравнил синусоиду сделанную ШИМом. На R-2R по красивей будет. Это ещё при том что я таблицу в два раза больше нарисовал.
Первая картинка ШИМ, вторая R-2R.

Изображение Изображение

Re: XILINX 9572 у чайника

Пн апр 10, 2023 10:45:26

Фильтрануть получше, и должно быть одинаково.

Re: XILINX 9572 у чайника

Пн апр 10, 2023 15:25:12

На фиксированной частоте можно выделить участок, при плавающей R-2R будет выигрывать. Каждому методу, наверное своё применение.

Хочу ещё по играться с энкодерами. Как их собирать на логике пока не курил. И надо ли от дребезга контактов делать узел, или достаточно ёмкостя на ножки повесить?

Re: XILINX 9572 у чайника

Пн апр 10, 2023 15:37:15

Зависит от энкодера. Сейчас я колёса кручу моторами - там датчики холла с гистерезисом - никакого подавления дребезга не нужно, всё по классике. А вот когда делал "ручную крутилку" с механическими контактами - там дребезг ого-го и конденсаторами... сделаешь так что подавляется - будет терять срабатывания, если резко крутанёшь ручку. Так что для механических контактов я рекомендую пользовать машину состояний. viewtopic.php?p=413434#p413434

Re: XILINX 9572 у чайника

Пн апр 10, 2023 22:38:36

Моторчики так понимаю BLDC ? У них регулировку, контроль скорости делаете?

Re: XILINX 9572 у чайника

Вт апр 11, 2023 06:44:31

нет-нет. Обычный коллекторник с таходатчиком на валу.

Re: XILINX 9572 у чайника

Вт апр 25, 2023 21:44:18

Для энкодера сделал такую крякозяблу. Ёмкости на ногах датчика по 10 нФ.
Кто первый замыкает контакт, с тем и работаем. Если длительность сигнала будет меньше 3-4 мс, то импульс не засчитываем.
Погонял руками туда-сюда, работает, проблем не заметил. Что логический анализатор, что циферками на индикаторе, вроде пока всё в порядке.

Изображение

Это будет крутилка для установки значений.

Теперь хотелось бы завязать установленные значения с подсчитанными и шимом разгонять или тормозить безщёточный двигатель.
Датчик положения выдаёт сигнал на подобе датчиков Холла, как в обычных ходовых BLDC, три смещённых сигнала, каждый по 2 импульса на оборот. В идеале бы погонять на скоростях от 100 об/мин до 6 тысяч.

Пока думаю, что придумать. :tea:

Re: XILINX 9572 у чайника

Ср апр 26, 2023 13:01:23

Конкретнее, что есть на входе и что надо получить на выходе?

Re: XILINX 9572 у чайника

Чт апр 27, 2023 19:14:26

Полная задача - имеем двигатель бесщёточный, ватт на 200, вольт тоже в районе 200. Датчик положения сквт, resolver и куча других названий.

По положению ротора, рисуем сигнал как у обычных бесщёточных двигателей с датчиком холла. На предыдущей странице игрался с низковольтным моторчиком, за основу брал описание микросхемы МС33035

Изображение Изображение Изображение

Эта плата расположена на двигателе.

Далее, на плате управления, делаем шесть сигналов управлением обмотками статора (верхняя часть фотографии) и по заданному алгоритму, подаём сигнал на управление обмотками статора (нижние шесть сигналов, в инверсии).

Изображение

Вот у этого нижнего сигнала управления, надо как-то менять ширину, в зависимости от оборотов. Желательно от середины и к краям.
Если по частоте делать, на низких оборотах будет мало импульсов за определённое время, могут плавать эти обороты. С повышением скорости веселее.
Если по периоду, то наоборот, внизу всё отлично, высокие обороты не так точно уже будут регулироваться (хотел часовом кварце уместить, на 32768 Гц). На индикации будут отображаться не обороты, а условные попугаи.

Пока как-то так.

Re: XILINX 9572 у чайника

Пт апр 28, 2023 16:12:23

Т.е. на входе есть какая-то частота с датчиков (импульсы), а на выходе надо иметь ШИМ, синхронный по частоте с этими импульсами и чтобы импульс уширялся в обе стороны от этих импульсов?

И как вы хотите 6 тыщ оборотов 2 имп/оборот с кварцем на 32 кГц?

Re: XILINX 9572 у чайника

Пт апр 28, 2023 21:37:06

6000 об/мин, это 100 оборотов в секунду. Для измерения периода, вроде как, много места. Даже по 1 mc их уже 5 штук будет на пол оборота.
А можно попробовать, условно после 1000 об/мин одним количеством тактов измерять, а обороты с датчика делить. Ниже наоборот, чтоб общее значение совпадало только.

Про шим да, когда мотор выйдет на определённую частоту вращения, период будет известен и можно тогда плясать от середины, увеличивая или уменьшая ширину этого управляющего импульса. Если частота вращения ниже минимальной условной, либо ротор вообще стоит, то пульсациями подавать короткий отрезок шима, до достижения этого минимального необходимого порога оборотов.
Уложить бы это всё ещё в одном камне. Уже подозреваю, что индикацию на третий камень надо будет переносить. :))

Комбинация управления обмотками, сейчас, жёстко привязана к датчику положения ротора. Ослик с морковкой уже бегает от 24 вольт.

Изображение

Re: XILINX 9572 у чайника

Сб апр 29, 2023 11:10:24

6000 оборотов в минуту. Туплю я.
Я уже примерно представил, как сделал бы я:
По фронтам от датчиков фиксируем значение N счётчика и сбрасываем его.
N - длительность одного оборота (цикла) в тактах.
Далее на выходе счётчика состоят 2 компаратора - на включение и выключение ключа.
Пороги компараторов вычисляются каждый цикл в зависимости от N, например 1/256*N и 255/256*N.
Крутилка, которая изменяет скважность ШИМ, одновременно меняет пороги в компараторах вплоть до 127/256*N и 129/256*N.
Надо будет погонять в симуляторе как время будет.

Re: XILINX 9572 у чайника

Вс апр 30, 2023 20:18:48

"Читал пейджер, много думал......"©
С вашими уравнениями не особо понял, как их воплотить на логике? Да и деление, умножение я ещё не делал пока на плиске. На пальцах или на бумажке можно показать последовательность эту?

Сейчас поставил счётчики - до 100 (двочно-десятичный) у энкодера, счётчик на "цикл" такой же до 100. Такими просто пока удобней на цифкрки смотреть. Компаратор, что бы их сравнивать и выдавать единицу если одно значение превышает другое. Управление шириной заполнения управляющего сигнала (не синхронный, просто добавляет или отнимает доски в заборе при каждом цикле, решение не удачное, но пока не важно). Декодер двоично-десятичных значений в семисигментную индикацию. Декодер для управляющих сигналов на обмотку.
И всё, программа ругается, я так понял бухта проводов закончилась. Что мог урезать, привести к экономии сделал. Вроде как скушала, прошилась. Результат правда нестабильный, надо допиливать схемотехнику.
В запасе есть внешний декодер на индикаторы, делители, но наверное они погоды много не сделают. Буду переходить на 144 камень, правда там уже сотня ногодрыгов и надо снова набивать руку под эти мелконоги для ЛУТ.

Re: XILINX 9572 у чайника

Вт май 02, 2023 19:18:26

Да и деление, умножение я ещё не делал пока на плиске.

Не будет никакого умножения/деления, только сдвиги и сложение/вычитание!
Вот схема:
Изображение
Но там ещё не реализован алгоритм вычисления порогов — они забиты как константы.
Тактовая частота 32768 Гц, при 6000 об/мин счётчик успевает досчитать только до 326:
Изображение
Поэтому для 50 % ШИМ константы забиты = 81 и 244.
На выходе имеем:
Изображение

Уезжаю в командировку, так что поправить/дополнить могу только на следующей неделе.

Re: XILINX 9572 у чайника

Ср май 10, 2023 04:27:48

Как-то не заметил, когда сутки стали короче, постоянно времени на всё не хватает. Ещё и носители информации в последнее время кучно отказывать начали.....

По схеме , прям волшебство какое-то. В ней, так понял, есть огромный счётчик. Set и Reset (81 и 244) срабатывают на совпадении, плавать будут в зависимости от установки значений? Как работают Unit Delay и про Constant, пока не соображу.

Про задающую частоту, не обязательно привязывать всё к 32 кГц, изначально брал чтоб делить частотомеру удобней было. В наличии есть генератор на 10 МГц, кварцы на 2,4,8,16,20 МГЦ и разнобойных кучка.

Сейчас наколхозил по быстому макетку для 144 камня. Визуально вроде всё впорядке. Частично в работе на индикаторе и энкодере проверил. Немного переделать надо первую плату определения положения и затем снова покрутить моторчик.

Изображение Изображение

Re: XILINX 9572 у чайника

Ср май 10, 2023 20:46:48

По схеме , прям волшебство какое-то. В ней, так понял, есть огромный счётчик.
Да, "большой" 16-разрядный счётчик (в идеале с насыщением для очень низких оборотов), который считает длительность оборота в тактах. Я гоняю и 29-разрядные счётчики на 300 МГц.
Set и Reset (81 и 244) срабатывают на совпадении, плавать будут в зависимости от установки значений?
Да, Сет и Ресет — просто цифровые компараторы, которые дают "1" при совпадении значений на входах. Да, вход PWM (заданный к-т заполнения ШИМ) должен менять эти значения исходя из требуемого значения ШИМ.
Как работают Unit Delay и про Constant, пока не соображу.
Это просто (синхронный) RS-триггер на основе D-триггера со входами count_enable (E) и reset (R), на вход (D) которого приходит лог. "1" — я так привык.
Про задающую частоту, не обязательно привязывать всё к 32 кГц
Тактовая частота и разрядность счётчика будут определять минимальную частоту, на которой можно будет реализовать мой алгоритм. С понижением тактовой частоты будет страдать точность ШИМ на высших оборотах.

Сейчас попробовал добавить в модель динамическое управление порогами — ничего не получилось, попробую найти косяки и поправить на неделе.

Поправил модель, сделал для примера 2-разрядный вход ШИМ. Вроде всё работает :)
Ответить