Заплачу 500 рублей за написание грамотного скетча

Тема в разделе "Глядите, что я сделал", создана пользователем gidep, 5 мар 2013.

  1. gidep

    gidep Нуб

    Заплачу 500 рублей за написание грамотного скетча. Например - положу на номер телефона. Условия задачи позже.
     
  2. Megakoteyka

    Megakoteyka Оракул Модератор

    С условий надо начинать.
     
  3. L_off

    L_off Нерд

    вот именно
     
  4. gidep

    gidep Нуб

    К тексту приложен эскиз 0002.
    1. Существует некий механизм "М" с поворачивающимся на 180 градусов валом. Механизм управляется "блоком управления" который, в свою очередь, управляется сервой. Валик управления поворачивается на 20 градусов в обе стороны от ноля.
    В позиции блока управления -"0" вал механизма "М" неподвижен.
    В позиции блока управления "- 20" вал механизма "М" движется против часовой стрелки с максимальным ускорением.
    Соответственно, в позиции блока управления "20", вал механизма "М" движется по часовой стрелке с максимальным ускорением.
    Ускорение движения вала механизма "М" прямопропорционально связано с углом поворота валика блока управления. Т.е. в позиции блока "10" вал механизма поворачивается с половиной возможной скорости.

    2. На валу механизма "М" закреплен одноповоротный потенциометр №2 10кОм.

    3. Существует "рычаг" управляемый вручную. На его валу, так же закреплен потенциометр №1.

    Задача: Вал механизма "М" должен повторять угол и скорость поворота "рычага".
     

    Вложения:

    • scan0002.jpg
      scan0002.jpg
      Размер файла:
      308,7 КБ
      Просмотров:
      806
  5. L_off

    L_off Нерд

    не проще самому научится? и 500 рублей не потратишь, и сам научишься что да как
     
  6. Unixon

    Unixon Оракул Модератор

    У вала "М" все же скорость или ускорение линейно зависит от положения блока управления?
     
  7. Unixon

    Unixon Оракул Модератор

    Пусть X - положение потенциометра 1, Y - положение потенциометра 2, Z - положение сервы, t - время.
    Из описания механизма следует, что величины связаны между собой следующим образом:

    Y = X
    Y = Z*t

    откуда следует Z = X/t, но для полноценного управления этого недостаточно, т.к. нужно еще устранять ошибки управления, из-за неопределенности начальных условий и неидеальности системы.
    Пусть e - ошибка положения, e = Y-X, ее нужно устремлять к 0. Вследствие имеющегося механизма управления, не быстрее, чем ~1/t.
    Управляющее воздействие должно быть направлено на минимизацию ошибки положения

    Y-X = -Z*t
    -e = Z*t
    Z = -e/t

    В первом приближении, без учета подводных камней, ноги у регулятора должны расти отсюда.
     
  8. gidep

    gidep Нуб

    Скорость поворота вала М связана с углом поворота валика регулятора. Не ускорение. Оговорился.
     
  9. gidep

    gidep Нуб

    Не силен в теории. Думаю, потенциометр №2 тем более будет отставать от потенциометра №1 чем выше скорость управляющего поворота "рычага". Соответственно, чем больше разность между данными потенциометров, тем сильнее серва должна повернуть валик управляющего блока и скорость поворота вала М возрастет.
    В этой задаче много архаичной механики, но условия именно такие.
    Плюс, положение "0" валика блока управления может дрейфовать при температурных колебаниях и вал М начнет потихоньку проворачиваться в одну из сторон. Нужно, что бы контроллер обновлял нейтральное положение валика блока управления.
    Вот такая задача.
    А денег можно и побольше заплатить.
     
  10. roggedhorse

    roggedhorse Гик

    В доардуиновую эпоху многие узлы самолетов упралялись с помощью вот этих девайсов
    http://ru.wikipedia.org/wiki/Сельсин

    Индикаторный режим - ваше решение
     
  11. gidep

    gidep Нуб

    Согласен, сельсины это стильно.
    Но, возможно, возникнет необходимость в более сложной зависимости между управляющим импульсом и ответным движением. А в Ардуине это можно прописать.
     
  12. roggedhorse

    roggedhorse Гик

    В таком случае подойдите системно (как при решении задач на аналоговых вычислительных машинах).
    В вашей системе есть все: возмущающее воздействие, обратная связь, управляющее воздействие и пр.
    Опишите закон управления. Переложите его на язык Ардуины и задача будет решена вами же и самостоятельно.
     
  13. Unixon

    Unixon Оракул Модератор

    Вот с законом управления вся загвоздка и состоит. Нужно решать задачу об оптимальном управлении с точки зрения каких-то определенных критериев. Выше я крайне примитивно изложил идею управления. В реальности в задаче сразу возникнут интегралы по времени, в которые будет входить функция управления. Это как-то нужно будет переписать в виде некоторого функционала и уже его потом минимизировать. Интегральный подход.

    На дифференциальном уровне мы что пытаемся сделать: изменяя производную одной функции по времени ( Z(t)=dY/dt ) пытаемся сравнять две другие функции ( X(t)=Y(t) ), что можно сделать бесконечным количеством способов. Из всех возможный способов нужно выбрать оптимальный, например, по критерию времени выравнивания, т.е. опять возвращаемся к интегральному подходу. А там еще получится, что Y(t) это вообще интеграл, в который кроме Z(t) еще войдут какие-то коэффициенты или функции, характеризующие свойства реального механизма - трение и момент инерции вала и т.д. и т.п., зависимость таких величин от скорости вращения и времени...

    Написать программу для ардуины это вообще самый последний и самый простой шаг. Главное - расписать модель управления.
     
    nailxx нравится это.
  14. gidep

    gidep Нуб

    С чего-то надо начинать. В идеале, хотелось бы добиться минимального отставания поворота мотора от рычага, а следовательно минимальной разницы в показаниях потенциометров.
    Может быть, регулируя скорость поворота мотора отталкиваться от разницы в показаниях потенциометра №1 за единицу времени?
     
  15. gidep

    gidep Нуб

    А если я начну перекладывать закон управления на язык Ардуины..боюсь, что конструкция будет неоправдано громоздкой. С моим-то опытом.
     
  16. Unixon

    Unixon Оракул Модератор

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

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

    roggedhorse Гик

    Адаптивный ПИД хорошо работает в таких случаях
    Мне приходилось делать АРУЗ на цифровом ПИД. Очень даже хорошо регулировал после "обучения"
     
  18. gidep

    gidep Нуб

    Хорошо. Покручу регулятор на разных углах отклонения. Попробую зафиксировать скорость реакции. До сих пор, я крутил серву от спектрумовского приемника через радио канал, вручную. Ардуину еще не подключал. А положение "0" выравнивал механически. Так было ..нагляднее.
    Нужен какой-то скетч, что бы Ардуина поймала "0" регулятора и от него вертела серву. Не поможете, а то я чайник.
     
  19. Stran_Nik

    Stran_Nik Нуб

    Ну отчего же в доандуриновскую эпоху... вот сельсины оптические-http://electroprivod.ru/selsins.htm
     
  20. Stran_Nik

    Stran_Nik Нуб

    А вот еще замечательная штуковина) Инкрементальные энкодеры. Энкодеры используются в различных устройствах для получения информации о вращающемся объекте: скорости, направлении, положении.
    Они выдают сигнал
    Выходной сигнал:
    [​IMG]
    Количество импульсов на оборот: 100, 200, 256, 360, 400, 500, 512, 1000, 1024
    Я так думаю что для андурины в самый раз)