Добро пожаловать на Форум по станкам с ЧПУ!

Контроллер с драйвером на 4 двигателя (серва)

Тема в разделе "Электронные компоненты станков и бытовой техники", создана пользователем kiper, 21 мар 2017.

  1. kiper

    kiper

    Регистрация:
    7 июн 2012
    Сообщения:
    62
    Симпатии:
    0
    Всем привет.

    Вот начало:
    ссылка на начало

    Что в итоге я имею.
    Плата 100х150мм.
    Вход питания 12В, 3.3В, питание двиг. от 15 до 60В.
    Интерфейсы UART, I2C.
    4 выхода на коллекторные двигатели.
    4 входа для энкодеров квадратурных.

    Стоит МК на плате LPC2134 128кБ флеш 16кБ ОЗУ.
    Опторазвязки нет.
    Нет аппаратной защиты по току.
    Теоретически плату делал до 60В питания двигателей и ток ключей 48А.
    Практически крутил 2 двигателя нагруженных с потреблением 5А и 24В.
    Всё крутится отлично и ключи холодные.
    На 10А нагруженный мост был слегка тёплый.

    Думаю, что плата сможет работать с двигателями рассчитанными на рабочий ток 7А с пиками до 30А.

    Теперь программа.
    Прошивка уже есть готовая с управлением через терминал ПК.
    Рабочие команды прямая запись ШИМ с направлением и запись ШИМ с плавной регулировкой.
    Работа с энкодерами в процессе.
     
  2. NCuser

    NCuser

    Регистрация:
    8 май 2012
    Сообщения:
    321
    Симпатии:
    0
    А про систему команд расскажи?
     
  3. kiper

    kiper

    Регистрация:
    7 июн 2012
    Сообщения:
    62
    Симпатии:
    0
    Управление моторами.
    MX,YYY
    X - номер мотора
    YYY - ШИМ 7 бит задаёт направление.

    Например:
    M0,95 - на 1-ый двигатель подать ШИМ 95%
    M1, 150 - на 2-ой двигатель подать ШИМ 22% и включить реверс.

    Другие команды задают настройки.
    Переключение режимов SWX, где Х режим регулирования 0 - прямая запись, 1 - плавное изменение ШИМ до указанного значения.
    Например:
    SW0 - переключить на режим 0.
    Команда TPXX, где XX задаёт паузу между изменением ШИМ для режима 1.

    Вот основные команды.
     
  4. devid

    devid

    Регистрация:
    11 май 2012
    Сообщения:
    126
    Симпатии:
    0
    А нельзя ли поточнее ссылку на схемку, проанализировать.
     
  5. NCuser

    NCuser

    Регистрация:
    8 май 2012
    Сообщения:
    321
    Симпатии:
    0
    хм... насколько я понимаю обратной связи по положению пока еще нет?
    Для ЧПУ надо реализовывать пространственно-временное управление.
    т.е. самое интересное еще впереди!
     
  6. kiper

    kiper

    Регистрация:
    7 июн 2012
    Сообщения:
    62
    Симпатии:
    0
    Схема:
    [​IMG]
     
  7. kiper

    kiper

    Регистрация:
    7 июн 2012
    Сообщения:
    62
    Симпатии:
    0
    Сделать прошивку с управлением по позиции просто, но нужны энкодеры, которые я сейчас делаю.
     
  8. kiper

    kiper

    Регистрация:
    7 июн 2012
    Сообщения:
    62
    Симпатии:
    0
    Например, написать команду переместится на 30 тиков энкодера.

    Допустим команда выглядит так:
    PZX,YYY - где Х, номер мотора, YYY - количество тиков энкодера и бит 7 направление.
     
  9. NCuser

    NCuser

    Регистрация:
    8 май 2012
    Сообщения:
    321
    Симпатии:
    0
    Да вот еще надо чтоб за конкретное время
     
  10. kiper

    kiper

    Регистрация:
    7 июн 2012
    Сообщения:
    62
    Симпатии:
    0
    Это уже и будет ПИД с параметрами время и расстояние.
    Сделать хорошо не просто такой алгоритм.

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

    NCuser

    Регистрация:
    8 май 2012
    Сообщения:
    321
    Симпатии:
    0
    Вот, посмотри: ПИД
    можт что пригодится...
    Если чисто для привода - наверное достаточно команды на перемещение на заданное расстояние за заданное время...
     
  12. kiper

    kiper

    Регистрация:
    7 июн 2012
    Сообщения:
    62
    Симпатии:
    0
    Ну вот, можно, для начала, сделать перемещение на расстояние за время.
    Команда вот такая.
    PTX,N,YYY,ZZZ - где X мотор, N направление, YYY кол-во тиков, ZZZ время в мс.

    Команды посылать в COM порт.
    Скорость порта 19200 бод.
    Если настроить COM порт на нестандартную скорость, то можно и выше.

    Вот только как это всё на пальцах делать непонятно.

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

    П.С.
    Про ПИДы я уже начитался.
     
  13. NCuser

    NCuser

    Регистрация:
    8 май 2012
    Сообщения:
    321
    Симпатии:
    0
    А что не понятного, вот тут все правильно написано:

    Под такой формат управляющая программа может быть легко настроена.
     
  14. Stanislav-pl

    Stanislav-pl

    Регистрация:
    5 май 2012
    Сообщения:
    222
    Симпатии:
    0
    Контроллер понравился, драйвер - нет. Похож на мой первый. А после него было еще десять версий, и похоже, еще будут Если кратко, то у вас, из того что я понял, реализован медленный спад тока. Со всеми вытекающими.
     
  15. kiper

    kiper

    Регистрация:
    7 июн 2012
    Сообщения:
    62
    Симпатии:
    0
    А можно по конкретнее.
    Весь контроллер состоит из одной МК LPC2134.
    Если уж делать контроллер хороший, то поставить какой нить покруче чип и загружать весь G-код в него.
    Я лучше не мог поставить из за изготовления платы лутом дома.

    А что вы имеете ввиду под драйвером с медленным спадом?

    Там обычный мост стоит, других вариантов изготовления не встречал...
     
  16. Stanislav-pl

    Stanislav-pl

    Регистрация:
    5 май 2012
    Сообщения:
    222
    Симпатии:
    0
    Тем и понравился, что довольно мощный, хоть для крутых задач может и слабоват.
    Медленный спад тока в обмотке - про это уже писано-переписано. Для коллекторника и привода тележки может и не так важно, но для сервы и для шаговиков важно, т.к. без этого они становятся тормозными в управлении - сигнал уже снят, а ток все продолжает течь.
     
  17. NCuser

    NCuser

    Регистрация:
    8 май 2012
    Сообщения:
    321
    Симпатии:
    0
    Вить, на "избранное" кинь ссылку - ознакомиться с явлением и методами борьбы...
    Мысль кстати пришла: очевидно что энергию в индуктивности двигателя надо куда-то девать, так можт ее в конденсатор? а потом использовать? вроде как "рекуперация"?
     
  18. Stanislav-pl

    Stanislav-pl

    Регистрация:
    5 май 2012
    Сообщения:
    222
    Симпатии:
    0
    Это хде ? Вот дока от алегры - все расписано, что должно быть:

    This new IC incorporates several unique design
    features, including automatic mixed-mode current decay
    control, PWM current control, synchronous rectification,
    low rDS(on) power DMOS outputs, full-, half-, quarter-, and
    eighth-step operation, HOME output, sleep mode,
    and an
    easy-to-implement step and direction interface
     
  19. kiper

    kiper

    Регистрация:
    7 июн 2012
    Сообщения:
    62
    Симпатии:
    0
    Хитрые у вас выражения "Медленный спад тока в обмотке".
    Довольно трудно понять о чём речь, но я попробую.

    Наверно вы хотели спросить, есть ли торможение двигателем в моём драйвере ?

    И скажу я вам, что да есть торможение двигателем и если что, то можно быстро остановить его.

    А в моей тележке - это вообще вред.
    Железо разбивает в лёт.
    Сделал плавное изменение ШИМ и двигатель разгоняется с 0 до максимума за 1с.
    Уже работает нормально, хоть и реакция плохая.
     
  20. devid

    devid

    Регистрация:
    11 май 2012
    Сообщения:
    126
    Симпатии:
    0
    Со схемой понятно.
    Но сразу говорю что 4мя сервами на одном контроллере с приемлимой скоростью и разрешением, для станка, управлять невозможно!
    Проще тогда ставить драйвер сервы на дуокоре сделанный...
    Сила в схеме - важная вещь - но не первостепенная, как я понял работа энкодера - важнее. Необходимо не только обеспечить достаточную точность считывания на больших скоростях, но и еще ПИД-регулирование обсчитать. А вот это задачка не слабая.
    Я пока кроме как на ПЛИС это сделать вариантов не вижу.
    представьте если с помощью энкодера необходимо обсчитать ПИД для одного двигателя с разрешением 200 импульсов на 1 мм (сразу переведу),
    для скорости хотя бы 1 м/c. Какая для этого должна быть производительность контроллера?