Меню

Схема контроллера скорости мотора

Схема контроллера скорости мотора

Дельта принтеры крайне требовательны к точности изготовления комплектующих (геометрия рамы, длины диагоналей, люфтам соединения диагоналей, эффектора и кареток) и всей геометрии принтера. Так же, если концевые выключатели (EndStop) расположены на разной высоте (или разный момент срабатывания в случае контактных концевиков), то высота по каждой из осей оказывается разная и мы получаем наклонную плоскость не совпадающая с плоскостью рабочего столика(стекла). Данные неточности могут быть исправлены либо механически (путем регулировки концевых выключателей по высоте), либо программно. Мы используем программный способ калибровки.
Далее будут рассмотрены основные настройки дельта принтера.
Для управления и настройки принтера мы используем программу Pronterface.
Калибровка принтера делится на три этапа:

1 Этап. Корректируем плоскость по трем точкам

Выставление в одну плоскость трех точек — A, B, C (расположенных рядом с тремя направляющими). По сути необходимо уточнить высоту от плоскости до концевых выключателей для каждой из осей.
Большинство (если не все) платы для управления трехмерным принтером (В нашем случае RAMPS 1.4) работают в декартовой системе координат, другими словами есть привод на оси: X, Y, Z.
В дельта принтере необходимо перейти от декартовых координат к полярным. Поэтому условимся, что подключенные к двигателям X, Y, Z соответствует осям A, B, C.(Против часовой стрелки начиная с любого двигателя, в нашем случае смотря на логотип слева — X-A, справа Y-B, дальний Z-C) Далее при слайсинге, печати и управлении принтером в ручном режиме, мы будем оперировать классической декартовой системой координат, электроника принтера сама будет пересчитывать данные в нужную ей систему. Это условность нам необходима для понятия принципа работы и непосредственной калибровки принтера.

Точки, по которым мы будем производить калибровку назовем аналогично (A, B, C) и позиция этих точек равна A= X-52 Y-30; B= X+52 Y-30; C= X0 Y60.

Алгоритм настройки:

  1. Подключаемся к принтеру. (В случае “крагозяб” в командной строке, необходимо сменить скорость COM порта. В нашем случае с 115200 на 250000 и переподключится)

    После чего мы увидим все настройки принтера.
  2. Обнуляем высоты осей X, Y, Z командой M666 x0 y0 z0.
    И сохраняем изменения командой M500. После каждого изменения настроек необходимо нажать home (или команда g28), для того что бы принтер знал откуда брать отсчет.
  3. Калибровка принтера производится “на горячую”, то есть должен быть включен подогрев стола (если имеется) и нагрев печатающей головки (HotEnd’а) (Стол 60град., сопло 185 град.) Так же нам понадобится щуп, желательно металлический, известных размеров. Для этих задач вполне подойдет шестигранный ключ (самый большой, в нашем случае 8мм, он предоставляется в комплекте с принтерами Prizm Pro и Prizm Mini)
  4. Опускаем печатающую головку на высоту (условно) 9мм (от стола, так, что бы сопло еле касалось нашего щупа, т.к. высота пока что не точно выставлена.) Команда: G1 Z9.
  5. Теперь приступаем непосредственно к настройке наших трех точек.
    Для удобства можно вместо g- команд создать в Pronterface четыре кнопки, для перемещения печатающей головки в точки A, B, C, 0-ноль.

  • Последовательно перемещаясь между тремя точками (созданными ранее кнопками или командами) выясняем какая из них находится ниже всего (визуально) и принимает эту ось за нулевую, относительно нее мы будем менять высоту остальных двух точек.
  • Предположим, что точка A у нас ниже остальных. Перемещаем головку в точку B(Y) и клавишами управления высотой в Pronterface опускаем сопло до касания с нашим щупом, считая величину, на которую мы опустили сопло (в лоб считаем количество нажатий на кнопки +1 и +0.1)
    Далее командой меняем параметры высоты оси Y: M666 Y <посчитанная величина>
    M666 Y0.75
    M500
    G28
  • Ту же операцию проделываем с оставшимися осями. После чего следует опять проверить высоту всех точек, может получится, что разброс высот после первой калибровки уменьшится, но высота все равно будет отличатся, при этом самая низкая точка может изменится. В этом случае повторяем пункты 6-7.
  • 2 Этап. Исправляем линзу

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

    Корректируется этот параметр т.н. дельта радиусом, который подбирается экспериментально.

    Калибровка:

    1. Отправляем головку на высоту щупа в любую из трех точек стола. Например G1 Z9 X-52 Y-30
    2. Сравниваем высоту центральной точки и высоту точек A,B,C. (Если высота точек A, B, C разная, необходимо вернутся к предыдущей калибровки.)
    3. Если высота центральной точки больше остальных, то линза выпуклая и необходимо увеличить значение дельта радиуса. Увеличивать или уменьшать желательно с шагом +-0,2мм, при необходимости уменьшить или увеличить шаг в зависимости от характера и величины искривления (подбирается экспериментально)
    4. Команды:
      G666 R67,7
      M500
      G28
    5. Подгоняем дельта радиус пока наша плоскость не выровняется
    3 Этап. Находим истинную высоту от сопла до столика

    Третьим этапом мы подгоняем высоту печати (от сопла до нижней плоскости — столика) Так как мы считали, что общая высота заведомо не правильная, необходимо ее откорректировать, после всех настроек высот осей. Можно пойти двумя путями решения данной проблемы:
    1 Способ:
    Подогнав вручную наше сопло под щуп, так что бы оно свободно под ним проходило, но при этом не было ощутимого люфта,

    • Командой M114 выводим на экран значение фактической высоты нашего HotEnd’а
    • Командой M666 L получаем полное значение высоты (Параметр H)
    • После чего вычитаем из полной высоты фактическую высоту.
    • Получившееся значение вычитаем из высоты щупа.

    Таким образом мы получаем величину недохода сопла до нижней плоскости, которое необходимо прибавить к полному значению высоты и и записать в память принтера командами:
    G666 H 235.2
    M500
    G28

    2 Способ:
    Второй способ прост как валенок. С “потолка”, “на глаз” прибавляем значение высоты (после каждого изменение не забываем “уходить” в home), добиваясь необходимого значения высоты, но есть шанс переборщить со значениями и ваше сопло с хрустом шмякнется об стекло.

    Как сделать авто калибровку для вашего принтера и что при этом авто калибрует принтер вы узнаете из следующих статей.

    Схема регулятора скорости бесколлекторного двигателя (ESC)

    Схема условно разделена на две части: левая — микроконтроллер с логикой, правая — силовая часть. Силовую часть можно модифицировать для работы с двигателями другой мощности или с другим питающим напряжением.

    Контроллер — ATMEGA168. Гурманы могут сказать, что хватило бы и ATMEGA88, а AT90PWM3 — это было бы «вааще по феншую». Первый регулятор я как раз делал «по феншую». Если у Вас есть возможность применять AT90PWM3 — это будет наиболее подходящий выбор. Но для моих задумок решительно не хватало 8 килобайт памяти. Поэтому я применил микроконтроллер ATMEGA168.

    Эта схема задумывалась как испытательный стенд. На котором предполагалось создать универсальный настраиваемый регулятор для работы с различными «калибрами» бесколлекторных двигателей: как с датчиками, так и без датчиков положения. В этой статье я опишу схему и принцип работы прошивки регулятора для управления бесколлекторными двигателями с датчиками Холла и без датчиков.

    Схема регулятора

    Питание

    ШИМ и сигналы для ключей

    Обратная связь (контроль напряжения фаз двигателя)

    Датчики Холла

    Измерения аналоговых сигналов

    На вход ADC3(PC3) поступает аналоговый сигнал от датчика тока. Датчик тока ACS756SA. Это датчик тока на основе эффекта Холла. Преимущество этого датчика в том, что он не использует шунт, а значит, имеет внутреннее сопротивление близкое к нулю, поэтому на нем не происходит тепловыделения. Кроме того, выход датчика аналоговый в пределах 5В, поэтому без каких-либо преобразований подается на вход АЦП микроконтроллера, что упрощает схему. Если потребуется датчик с большим диапазоном измерения тока, Вы просто заменяете существующий датчик новым, абсолютно не изменяя схему.

    Если Вам хочется использовать шунт с последующей схемой усиления, согласования — пожалуйста.

    Задающие сигналы

    Кроме того, есть вход RC сигнала, который повсеместно используется в дистанционно управляемых моделях. Выбор управляющего входа и его калибровка выполняется в программных настройках регулятора.

    UART интерфейс

    Прочее

    Светодиод, сигнализирующий о состоянии регулятора, подключен к выводу PD4.

    Силовая часть

    Ключи нужно выбирать в зависимости от максимального тока и напряжения питания двигателя (выбору ключей и драйверов будет посвящена отдельная статья). На схеме обозначены IR540, в реальности использовались K3069. K3069 рассчитаны на напряжение 60В и ток 75А. Это явный перебор, но мне они достались даром в большом количестве (желаю и Вам такого счастья).

    Конденсатор С19 включается параллельно питающей батареи. Чем больше его емкость — тем лучше. Этот конденсатор защищает батарею от бросков тока и ключи от значительной просадки напряжения. При отсутствии этого конденсатора Вам обеспечены как минимум проблемы с ключами. Если подключать батарею сразу к VD — может проскакивать искра. Искрогасящий резистор R32 используется в момент подключения к питающей батарее. Сразу подключаем «» батареи, затем подаем «+» на контакт Antispark. Ток течет через резистор и плавно заряжает конденсатор С19. Через несколько секунд, подключаем контакт батареи к VD. При питании 12В можно Antispark не делать.

    Возможности прошивки

    • возможность управлять двигателями с датчиками и без;
    • для бездатчикового двигателя три вида старта: без определения первоначального положения; с определением первоначального положения; комбинированный;
    • настройка угла опережения фазы для бездатчикового двигателя с шагом 1 градус;
    • возможность использовать один из двух задающих входов: 1-аналоговый, 2-RC;
    • калибровка входных сигналов;
    • реверс двигателя;
    • настройка регулятора по порту UART и получение данных от регулятора во время работы (обороты, ток, напряжение батареи);
    • частота ШИМ 16, 32 КГц.
    • настройка уровня ШИМ сигнала для старта двигателя;
    • контроль напряжения батарей. Два порога: ограничение и отсечка. При снижении напряжения батареи до порога ограничения обороты двигателя понижаются. При снижении ниже порога отсечки происходит полная остановка;
    • контроль тока двигателя. Два порога: ограничение и отсечка;
    • настраиваемый демпфер задающего сигнала;
    • настройка Dead time для ключей

    Работа регулятора

    Включение

    После включения двигатель издает 1 короткий сигнал (если звук не отключен), включается и постоянно светится светодиод. Регулятор готов к работе.

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

    Запуск

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

    Запуск двигателя с датчиками Холла также выполняется с применением настроек для старта двигателя. Т.е. если для запуска двигателя с датчиками дать полный газ, то регулятор подаст напряжение, которое указано в настройках для старта. И только после того, как двигатель начнет вращаться, будет подано полное напряжение. Это несколько нестандартно для двигателя с датчиками, поскольку такие двигатели в основном применяются как тяговые, а в данном случае достичь максимального крутящего момента на старте, возможно, будет сложно. Тем не менее, в данном регуляторе присутствует такая особенность, которая защищает двигатель и регулятор от выхода со строя при механическом заклинивании двигателя.

    Во время работы регулятор выдает данные об оборотах двигателя, токе, напряжении батарей через порт UART в формате:

    Данные выдаются с периодичностью примерно 1 секунда. Скорость передачи по порту 9600.

    Настройка регулятора

    Переход регулятора в режим настройки происходит при включении регулятора, когда задающий сигнал потенциометра больше нуля. Т.е. Для перевода регулятора в режим настройки следует повернуть ручку задающего потенциометра, после чего включить регулятор. В терминале появится приглашение в виде символа «>«. После чего можно вводить команды.

    Регулятор воспринимает следующие команды (в разных версиях прошивки набор настроек и команд может отличаться):

    h — вывод списка команд; ? — вывод настроек; c — калибровка задающего сигнала; d — сброс настроек к заводским настройкам.

    команда «?» выводит в терминал список всех доступных настроек и их значение. Например: Изменить нужную настройку можно командой следующего формата:

    pwm.start=15

    Если команда была дана корректно, настройка будет применена и сохранена. Проверить текущие настройки после их изменения можно командой «?«.

    Измерения аналоговых сигналов (напряжение, ток) выполняются с помощью АЦП микроконтроллера. АЦП работает в 8-ми битном режиме. Точность измерения занижена намеренно для обеспечения приемлемой скорости преобразования аналогового сигнала. Соответственно, все аналоговые величины регулятор выдает в виде 8-ми битного числа, т.е. от 0 до 255.

    Список настроек, их описание:

    Параметр Описание Значение
    motor.type Тип мотора 0-Sensorless; 1-Sensored
    motor.magnets Кол.во магнитов в роторе двигателя. Изпользуется только для расчета оборотов двигателя. 0..255, шт.
    motor.angle Угол опережения фазы. Используется только для Sensorless двигателей. 0..30, градусов
    motor.start.type Тип старта. Используется только для Sensorless двигателей. 0-без определения положения ротора; 1-с определением положения ротора; 2-комбинированный;
    motor.start.time Время старта. 0..255, мс
    pwm Частота PWM 16, 32, КГц
    pwm.start Значение PWM (%) для старта двигателя. 0..50 %
    pwm.min Значение минимального значения PWM (%), при котором двигатель вращается. 0..30 %
    voltage.limit Напряжение батареи, при котором следует ограничивать мощность, подаваемую на двигатель. Указывается в показаниях ADC. 0..255*
    voltage.cutoff Напряжение батареи, при котором следует выключать двигатель. Указывается в показаниях ADC. 0..255*
    current.limit Ток, при котором следует ограничивать мощность, подаваемую на двигатель. Указывается в показаниях ADC. 0..255**
    current.cutoff Ток, при котором следует выключать двигатель. Указывается в показаниях ADC. 0..255**
    system.sound Включить/выключить звуковой сигнал, издаваемый двигателем 0-выключен; 1-включен;
    system.input Задающий сигнал 0-потенциометр; 1-RC сигнал;
    system.damper Демпфирование входного сигнала 0..255, условные единицы
    system.deadtime Значение Dead Time для ключей в микросекундах 0..2, мкс

    * — числовое значение 8-ми битного аналого цифрового преобразователя. Рассчитывается по формуле: ADC = (U*R6/(R5+R6))*255/5 Где: U — напряжение в Вольтах; R5, R6 — сопротивление резисторов делителя в Омах.

    ** — числовое значение 8-ми битного аналого цифрового преобразователя. Рассчитывается по формуле: ADC = U*255/5 Где: U — напряжение датчика тока в Вольтах, соответствующее требуемому току.

    Фьюзы микроконтроллера должны быть выставлены на работу с внешним кварцем. Строка для программирования фьюзов с помощью AVRDUDE:

    -U lfuse:w:0xFF:m -U hfuse:w:0xDC:m

    Читайте также:  Hyundai accent двигатель устройство
    Adblock
    detector