Ага, типо того. Только я сильно упростил, потом может переделаю. Чем подробнее таблица и больше выводов на делители, тем точней сигнал на выходе. Народ много чего из этого делает - http://easyelectronics.ru/parallelnyj-c ... -r-2r.html
Даже
_________________ „Выживает не самый сильный и не самый умный, а тот, кто лучше всех приспосабливается к изменениям.“ — Чарлз Дарвин
Карма: 67
Рейтинг сообщений: 1060
Зарегистрирован: Чт сен 18, 2008 12:27:21 Сообщений: 19758 Откуда: Столица Мира Санкт-Петербург
Рейтинг сообщения:0 Медали: 1
Я надеюсь, это чисто в образовательных целях?)
_________________ [ Всё дело не столько в вашей глупости, сколько в моей гениальности ] [ Правильно заданный вопрос содержит в себе половину ответа ] Измерить нннада?
Больше да, теорию сравнить с практикой, узнать что-то новое для себя. Ну и в пользу для хозяйства где что можно применить. ПЛИС ки это такой пластилин, балдею от них. Не хватает только (у бюджетных камней) встроенного АЦП, внутреннего генератора, ПЗУ, ОЗУ и другой мелочи. Но это уже мои капризы. Кстати, может имеете информацию, какие книжки можно полистать, почитать, про математические операции с логикой? Особенно интересны вычисления синусов, косинусов, извлечение корней.
_________________ „Выживает не самый сильный и не самый умный, а тот, кто лучше всех приспосабливается к изменениям.“ — Чарлз Дарвин
Карма: 67
Рейтинг сообщений: 1060
Зарегистрирован: Чт сен 18, 2008 12:27:21 Сообщений: 19758 Откуда: Столица Мира Санкт-Петербург
Рейтинг сообщения:0 Медали: 1
Соусы и косинусы (возможно, корни тоже) - это в ПЛИСах алгоритмы CORDIC: там все вычисления сводятся к сложениям и переносам. Конкретные книги не скажу, ищите статьи и материалы по этой теме.
_________________ [ Всё дело не столько в вашей глупости, сколько в моей гениальности ] [ Правильно заданный вопрос содержит в себе половину ответа ] Измерить нннада?
Про извлечение корня попался "детский" метод., вроде как не сложный, можно будет поиграть при возможности.
Цитата:
Итак, вернемся к вычислению квадратного корня. Мы будем использовать «детский» метод (он же арифметический), который основывается на том простом факте, что квадрат числа — это сумма нечетных чисел от 1 до 2n-1: 1 = 1^2 = 1 1 + 3 = 2^2 = 4 1 + 3 + 5 = 3^2 = 9
Сравнил синусоиду сделанную ШИМом. На R-2R по красивей будет. Это ещё при том что я таблицу в два раза больше нарисовал. Первая картинка ШИМ, вторая R-2R.
_________________ „Выживает не самый сильный и не самый умный, а тот, кто лучше всех приспосабливается к изменениям.“ — Чарлз Дарвин
Карма: 67
Рейтинг сообщений: 1060
Зарегистрирован: Чт сен 18, 2008 12:27:21 Сообщений: 19758 Откуда: Столица Мира Санкт-Петербург
Рейтинг сообщения:0 Медали: 1
Фильтрануть получше, и должно быть одинаково.
_________________ [ Всё дело не столько в вашей глупости, сколько в моей гениальности ] [ Правильно заданный вопрос содержит в себе половину ответа ] Измерить нннада?
На фиксированной частоте можно выделить участок, при плавающей R-2R будет выигрывать. Каждому методу, наверное своё применение.
Хочу ещё по играться с энкодерами. Как их собирать на логике пока не курил. И надо ли от дребезга контактов делать узел, или достаточно ёмкостя на ножки повесить?
_________________ „Выживает не самый сильный и не самый умный, а тот, кто лучше всех приспосабливается к изменениям.“ — Чарлз Дарвин
Зависит от энкодера. Сейчас я колёса кручу моторами - там датчики холла с гистерезисом - никакого подавления дребезга не нужно, всё по классике. А вот когда делал "ручную крутилку" с механическими контактами - там дребезг ого-го и конденсаторами... сделаешь так что подавляется - будет терять срабатывания, если резко крутанёшь ручку. Так что для механических контактов я рекомендую пользовать машину состояний. viewtopic.php?p=413434#p413434
Для энкодера сделал такую крякозяблу. Ёмкости на ногах датчика по 10 нФ. Кто первый замыкает контакт, с тем и работаем. Если длительность сигнала будет меньше 3-4 мс, то импульс не засчитываем. Погонял руками туда-сюда, работает, проблем не заметил. Что логический анализатор, что циферками на индикаторе, вроде пока всё в порядке.
Это будет крутилка для установки значений.
Теперь хотелось бы завязать установленные значения с подсчитанными и шимом разгонять или тормозить безщёточный двигатель. Датчик положения выдаёт сигнал на подобе датчиков Холла, как в обычных ходовых BLDC, три смещённых сигнала, каждый по 2 импульса на оборот. В идеале бы погонять на скоростях от 100 об/мин до 6 тысяч.
Пока думаю, что придумать.
_________________ „Выживает не самый сильный и не самый умный, а тот, кто лучше всех приспосабливается к изменениям.“ — Чарлз Дарвин
Карма: 67
Рейтинг сообщений: 1060
Зарегистрирован: Чт сен 18, 2008 12:27:21 Сообщений: 19758 Откуда: Столица Мира Санкт-Петербург
Рейтинг сообщения:0 Медали: 1
Конкретнее, что есть на входе и что надо получить на выходе?
_________________ [ Всё дело не столько в вашей глупости, сколько в моей гениальности ] [ Правильно заданный вопрос содержит в себе половину ответа ] Измерить нннада?
Полная задача - имеем двигатель бесщёточный, ватт на 200, вольт тоже в районе 200. Датчик положения сквт, resolver и куча других названий.
По положению ротора, рисуем сигнал как у обычных бесщёточных двигателей с датчиком холла. На предыдущей странице игрался с низковольтным моторчиком, за основу брал описание микросхемы МС33035
Эта плата расположена на двигателе.
Далее, на плате управления, делаем шесть сигналов управлением обмотками статора (верхняя часть фотографии) и по заданному алгоритму, подаём сигнал на управление обмотками статора (нижние шесть сигналов, в инверсии).
Вот у этого нижнего сигнала управления, надо как-то менять ширину, в зависимости от оборотов. Желательно от середины и к краям. Если по частоте делать, на низких оборотах будет мало импульсов за определённое время, могут плавать эти обороты. С повышением скорости веселее. Если по периоду, то наоборот, внизу всё отлично, высокие обороты не так точно уже будут регулироваться (хотел часовом кварце уместить, на 32768 Гц). На индикации будут отображаться не обороты, а условные попугаи.
Пока как-то так.
_________________ „Выживает не самый сильный и не самый умный, а тот, кто лучше всех приспосабливается к изменениям.“ — Чарлз Дарвин
Карма: 67
Рейтинг сообщений: 1060
Зарегистрирован: Чт сен 18, 2008 12:27:21 Сообщений: 19758 Откуда: Столица Мира Санкт-Петербург
Рейтинг сообщения:0 Медали: 1
Т.е. на входе есть какая-то частота с датчиков (импульсы), а на выходе надо иметь ШИМ, синхронный по частоте с этими импульсами и чтобы импульс уширялся в обе стороны от этих импульсов?
И как вы хотите 6 тыщ оборотов 2 имп/оборот с кварцем на 32 кГц?
_________________ [ Всё дело не столько в вашей глупости, сколько в моей гениальности ] [ Правильно заданный вопрос содержит в себе половину ответа ] Измерить нннада?
6000 об/мин, это 100 оборотов в секунду. Для измерения периода, вроде как, много места. Даже по 1 mc их уже 5 штук будет на пол оборота. А можно попробовать, условно после 1000 об/мин одним количеством тактов измерять, а обороты с датчика делить. Ниже наоборот, чтоб общее значение совпадало только.
Про шим да, когда мотор выйдет на определённую частоту вращения, период будет известен и можно тогда плясать от середины, увеличивая или уменьшая ширину этого управляющего импульса. Если частота вращения ниже минимальной условной, либо ротор вообще стоит, то пульсациями подавать короткий отрезок шима, до достижения этого минимального необходимого порога оборотов. Уложить бы это всё ещё в одном камне. Уже подозреваю, что индикацию на третий камень надо будет переносить.
Комбинация управления обмотками, сейчас, жёстко привязана к датчику положения ротора. Ослик с морковкой уже бегает от 24 вольт.
_________________ „Выживает не самый сильный и не самый умный, а тот, кто лучше всех приспосабливается к изменениям.“ — Чарлз Дарвин
Карма: 67
Рейтинг сообщений: 1060
Зарегистрирован: Чт сен 18, 2008 12:27:21 Сообщений: 19758 Откуда: Столица Мира Санкт-Петербург
Рейтинг сообщения:0 Медали: 1
6000 оборотов в минуту. Туплю я. Я уже примерно представил, как сделал бы я: По фронтам от датчиков фиксируем значение N счётчика и сбрасываем его. N - длительность одного оборота (цикла) в тактах. Далее на выходе счётчика состоят 2 компаратора - на включение и выключение ключа. Пороги компараторов вычисляются каждый цикл в зависимости от N, например 1/256*N и 255/256*N. Крутилка, которая изменяет скважность ШИМ, одновременно меняет пороги в компараторах вплоть до 127/256*N и 129/256*N. Надо будет погонять в симуляторе как время будет.
_________________ [ Всё дело не столько в вашей глупости, сколько в моей гениальности ] [ Правильно заданный вопрос содержит в себе половину ответа ] Измерить нннада?
Сейчас поставил счётчики - до 100 (двочно-десятичный) у энкодера, счётчик на "цикл" такой же до 100. Такими просто пока удобней на цифкрки смотреть. Компаратор, что бы их сравнивать и выдавать единицу если одно значение превышает другое. Управление шириной заполнения управляющего сигнала (не синхронный, просто добавляет или отнимает доски в заборе при каждом цикле, решение не удачное, но пока не важно). Декодер двоично-десятичных значений в семисигментную индикацию. Декодер для управляющих сигналов на обмотку. И всё, программа ругается, я так понял бухта проводов закончилась. Что мог урезать, привести к экономии сделал. Вроде как скушала, прошилась. Результат правда нестабильный, надо допиливать схемотехнику. В запасе есть внешний декодер на индикаторы, делители, но наверное они погоды много не сделают. Буду переходить на 144 камень, правда там уже сотня ногодрыгов и надо снова набивать руку под эти мелконоги для ЛУТ.
_________________ „Выживает не самый сильный и не самый умный, а тот, кто лучше всех приспосабливается к изменениям.“ — Чарлз Дарвин
Карма: 67
Рейтинг сообщений: 1060
Зарегистрирован: Чт сен 18, 2008 12:27:21 Сообщений: 19758 Откуда: Столица Мира Санкт-Петербург
Рейтинг сообщения:3 Медали: 1
Цитата:
Да и деление, умножение я ещё не делал пока на плиске.
Не будет никакого умножения/деления, только сдвиги и сложение/вычитание! Вот схема: Но там ещё не реализован алгоритм вычисления порогов — они забиты как константы. Тактовая частота 32768 Гц, при 6000 об/мин счётчик успевает досчитать только до 326: Поэтому для 50 % ШИМ константы забиты = 81 и 244. На выходе имеем:
Уезжаю в командировку, так что поправить/дополнить могу только на следующей неделе.
_________________ [ Всё дело не столько в вашей глупости, сколько в моей гениальности ] [ Правильно заданный вопрос содержит в себе половину ответа ] Измерить нннада?
Как-то не заметил, когда сутки стали короче, постоянно времени на всё не хватает. Ещё и носители информации в последнее время кучно отказывать начали.....
По схеме , прям волшебство какое-то. В ней, так понял, есть огромный счётчик. Set и Reset (81 и 244) срабатывают на совпадении, плавать будут в зависимости от установки значений? Как работают Unit Delay и про Constant, пока не соображу.
Про задающую частоту, не обязательно привязывать всё к 32 кГц, изначально брал чтоб делить частотомеру удобней было. В наличии есть генератор на 10 МГц, кварцы на 2,4,8,16,20 МГЦ и разнобойных кучка.
Сейчас наколхозил по быстому макетку для 144 камня. Визуально вроде всё впорядке. Частично в работе на индикаторе и энкодере проверил. Немного переделать надо первую плату определения положения и затем снова покрутить моторчик.
_________________ „Выживает не самый сильный и не самый умный, а тот, кто лучше всех приспосабливается к изменениям.“ — Чарлз Дарвин
Карма: 67
Рейтинг сообщений: 1060
Зарегистрирован: Чт сен 18, 2008 12:27:21 Сообщений: 19758 Откуда: Столица Мира Санкт-Петербург
Рейтинг сообщения:3 Медали: 1
Цитата:
По схеме , прям волшебство какое-то. В ней, так понял, есть огромный счётчик.
Да, "большой" 16-разрядный счётчик (в идеале с насыщением для очень низких оборотов), который считает длительность оборота в тактах. Я гоняю и 29-разрядные счётчики на 300 МГц.
Цитата:
Set и Reset (81 и 244) срабатывают на совпадении, плавать будут в зависимости от установки значений?
Да, Сет и Ресет — просто цифровые компараторы, которые дают "1" при совпадении значений на входах. Да, вход PWM (заданный к-т заполнения ШИМ) должен менять эти значения исходя из требуемого значения ШИМ.
Цитата:
Как работают Unit Delay и про Constant, пока не соображу.
Это просто (синхронный) RS-триггер на основе D-триггера со входами count_enable (E) и reset (R), на вход (D) которого приходит лог. "1" — я так привык.
Цитата:
Про задающую частоту, не обязательно привязывать всё к 32 кГц
Тактовая частота и разрядность счётчика будут определять минимальную частоту, на которой можно будет реализовать мой алгоритм. С понижением тактовой частоты будет страдать точность ШИМ на высших оборотах.
Сейчас попробовал добавить в модель динамическое управление порогами — ничего не получилось, попробую найти косяки и поправить на неделе.
Поправил модель, сделал для примера 2-разрядный вход ШИМ. Вроде всё работает
_________________ [ Всё дело не столько в вашей глупости, сколько в моей гениальности ] [ Правильно заданный вопрос содержит в себе половину ответа ] Измерить нннада?
Сейчас этот форум просматривают: нет зарегистрированных пользователей и гости: 2
Вы не можете начинать темы Вы не можете отвечать на сообщения Вы не можете редактировать свои сообщения Вы не можете удалять свои сообщения Вы не можете добавлять вложения