roboforum.ru

Технический форум по робототехнике.
Текущее время: 24 ноя 2024, 00:19

Часовой пояс: UTC + 4 часа




Начать новую тему Ответить на тему  [ Сообщений: 448 ]  На страницу Пред.  1 ... 14, 15, 16, 17, 18, 19, 20 ... 30  След.
Автор Сообщение
 Заголовок сообщения: Re: Охотник
СообщениеДобавлено: 27 окт 2012, 22:20 
Не в сети
Аватара пользователя

Зарегистрирован: 12 окт 2012, 01:32
Сообщения: 221
мои 5 коп. :) : ПИД насколько я понимаю далеко не самый лучший способ "авторегулирования". Он не учитывает ускорения и интегральная составляющая - увеличивает ошибку (если сравнивать с гипотетической истинной невязкой). В болшинстве случаев правильнее вместо интегральной составляющей считать распределение невязки и добавить анализ ускорения.

... но, это все теория :cry: , а на практике в эти уравнения, если строить мат.модель системы, надо добавить еще не один десяток параметров описывающих работу сервов, разного рода задержки и тому подобное :D

_________________
Оружие не должно быть умнее хозяина.


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Охотник
СообщениеДобавлено: 28 окт 2012, 00:11 
Не в сети
Аватара пользователя

Зарегистрирован: 13 янв 2011, 15:25
Сообщения: 8033
Откуда: Санкт-Петербург
В том и дело, что советующие "спецы" слабо себе представляют, что есть ПИД.
Интеграл вообще отключают при больших рассогласованиях, ибо в таких случаях накапливается ошибка, которую потом надо утилизировать. Какая наф скорость от такого ПИ? :)
И "мутирующий ПИД" - нормальный регулятор не времен разработки ПИДа на одной лампе, максимум двойного тетрода.
Смысла спорить - не вижу, ичицо, учицо и еше раз учицо... :pardon:
Алисам - чудеса, про блокировку интеграла:
http://logic-bratsk.ru/radio/pid/st12/st12_r.htm


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Охотник
СообщениеДобавлено: 28 окт 2012, 09:52 
Не в сети
Аватара пользователя

Зарегистрирован: 10 дек 2010, 13:16
Сообщения: 4995
Откуда: Красногорск МО
прог. языки: C, Python, wiring/processing
ФИО: Андрей
Ты как всегда очень помог. Все сразу все поняли и стали делать "как надо"

_________________
Мой волшебник это я сам. Всю архитектуру программы придумал лично, а ребята помогли воплотить её. Я бы и сам мог написать, но лень учить язык и его конструкции.


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Охотник
СообщениеДобавлено: 28 окт 2012, 12:35 
Не в сети
Аватара пользователя

Зарегистрирован: 13 янв 2011, 15:25
Сообщения: 8033
Откуда: Санкт-Петербург
Ты не подумай, что я вредничаю, уж очень хочется увидеть "развернутый ответ по ПИД для турелей" :roll:
И я не узрел, чтоб ты советовал PID, Спрашивал -да, советовал - нет.
Я бы делал так:
Запускаем турель, замеряем сколько времени надо для набора макс. скорости.
Даем команду стоп, засекаем на сколько повернется турель. Число запоминаем :)
Ффсе.
При вращении турели, если набрана макс. скорость, вычитаем это число из обратной связи.
Для других значений скорости вращения находим свои числа (например 5 точек, интерполяция)
Шибко умные могут сделать обсчет плавно...
Щаз скажут, что это классический ПД регулятор. :)


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Охотник
СообщениеДобавлено: 28 окт 2012, 12:52 
Не в сети

Зарегистрирован: 24 апр 2010, 14:47
Сообщения: 736
Откуда: Уфа
прог. языки: avr asm
А для разных направлений вращения это число точно одинаковым будет?


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Охотник
СообщениеДобавлено: 28 окт 2012, 13:02 
Не в сети
Аватара пользователя

Зарегистрирован: 12 окт 2012, 01:32
Сообщения: 221
​... понятно что, диф. часть в пид - это своего рода прогнозирование на основе скорости. Это самое прогнозирование можно делать самыми разными способами (правда это уже будет не ПИД, если строго придерживаться терминологии :D )

В том числе прогнозировать можно и так, как написал Дмитрий, а можно выпендриться и наворотить обучающуюся систему прогнозирования и еще много-много вариантов :D

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

Ну это я так, мысли вслух, масло масляное :D так сказать :D

_________________
Оружие не должно быть умнее хозяина.


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Охотник
СообщениеДобавлено: 28 окт 2012, 13:07 
Не в сети
Аватара пользователя

Зарегистрирован: 10 дек 2010, 13:16
Сообщения: 4995
Откуда: Красногорск МО
прог. языки: C, Python, wiring/processing
ФИО: Андрей
диф - это реактивная часть. реагирует на резкие всплески-отклонения. пока резких отклонений нет, сидит и не выеживается, как только появился всплеск - дает сильный импульс, обратный по знаку, гасящий всплеск.

_________________
Мой волшебник это я сам. Всю архитектуру программы придумал лично, а ребята помогли воплотить её. Я бы и сам мог написать, но лень учить язык и его конструкции.


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Охотник
СообщениеДобавлено: 30 окт 2012, 15:57 
Не в сети
Аватара пользователя

Зарегистрирован: 26 янв 2012, 03:59
Сообщения: 1341
Откуда: Казань
прог. языки: LabVIEW
ФИО: Никита Есенин
вот пулеметы для гороха http://topwar.ru/2365-metateli-pul.html
последний вариант сейчас применяется на всех автоподатчиках шаров (тенис,футбол и пр). но у него шибко малый путь разгона.
надо первый вариант опробовать
Изображение


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Охотник
СообщениеДобавлено: 30 окт 2012, 19:16 
Не в сети

Зарегистрирован: 14 июл 2012, 04:15
Сообщения: 372
Откуда: ишим (тюменская область)
ФИО: Роман Артемович
решил создать машинку по типу вашей, только ни для того чтобы мочить кошек, а просто для езды по бездорожью :oops: ) масштаб правда побольше, привод задний))ыыыыы 8) позже создам отдельную тему, загляните :)


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Охотник
СообщениеДобавлено: 31 окт 2012, 11:46 
Не в сети
Аватара пользователя

Зарегистрирован: 04 сен 2012, 00:39
Сообщения: 1536
Откуда: Украина
ФИО: Владимир
ну когда уже будет готофф прототип пушки, нетерпится увидеть в деле:-)

Добавлено спустя 1 минуту 48 секунд:
насчет метателя, лучше использовать конструкцию с двумя валиками. она проще имхо

_________________
Самое важное в жизни- найти человека , который смотрит на мир, так же как и ты:)


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Охотник
СообщениеДобавлено: 31 окт 2012, 18:10 
Не в сети
Аватара пользователя

Зарегистрирован: 26 янв 2012, 03:59
Сообщения: 1341
Откуда: Казань
прог. языки: LabVIEW
ФИО: Никита Есенин
могу показать тока гаус пушку в деле


Добавлено спустя 3 минуты 14 секунд:
если мишень не крепить, пуля ничего не пробивает.
ствол при выстреле уходит вверх. внизу видно как лазер скачет (я не настраивал прицел).
в некоторых случаях пуля не летит прямо (острием вперед), а вращается как хочет. печалька.
PS печенька была очень сухой и прочной ))


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Охотник
СообщениеДобавлено: 31 окт 2012, 19:52 
Не в сети
Аватара пользователя

Зарегистрирован: 18 апр 2009, 22:18
Сообщения: 10668
какая пулька просто стержень, так и летит.


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Охотник
СообщениеДобавлено: 01 ноя 2012, 01:10 
Не в сети
Аватара пользователя

Зарегистрирован: 04 сен 2012, 00:39
Сообщения: 1536
Откуда: Украина
ФИО: Владимир
убивца милых печенюх:-(

_________________
Самое важное в жизни- найти человека , который смотрит на мир, так же как и ты:)


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Охотник
СообщениеДобавлено: 03 ноя 2012, 10:37 
Не в сети
Аватара пользователя

Зарегистрирован: 26 янв 2012, 03:59
Сообщения: 1341
Откуда: Казань
прог. языки: LabVIEW
ФИО: Никита Есенин
наконец то набрался желания перенести расчет времени вкл. двигателей на ардуино. благо есть функция millis()
Код:
unsigned long previousMillis = 0;     
unsigned long currentMillis = 0;
boolean running1 = false;
boolean running2 = false;
    byte interval_1 = 30;
    byte interval_2 = 30;
int charg = 4; 
boolean lastchart = false;


void setup() {               
  Serial.begin(128000);
  Serial.println("TURRET ON");
  pinMode(2, OUTPUT);
  pinMode(3, OUTPUT);
  pinMode(4, INPUT);  // сигнал заряда на входе 4
  pinMode(5, OUTPUT);
  pinMode(6, OUTPUT);
  pinMode(7, OUTPUT);
  pinMode(10, OUTPUT);
  pinMode(11, OUTPUT);

}

void loop()
{ //контроль вкл зарядки
  if (digitalRead(charg) == HIGH && lastchart == false)
  {   lastchart = true;
      Serial.println("chart on");   }
  //контроль выклл зарядки
    if (digitalRead(charg) == LOW && lastchart == true)
  {   lastchart = false;
      Serial.println("chart off");   }
 
  if(Serial.available() > 8)
  {
    byte a,b,c,d,e,f,g,h,i;  // принимаем байты и разбиваем их
    a = Serial.read();  // питание турели
    b = Serial.read();  // лево-1 \ право-0
    c = Serial.read();  // шим л\п
    d = Serial.read();  // время л\п
    e = Serial.read();  // верх-1 \ низ-0
    f = Serial.read();  // шим в\н
    g = Serial.read();   // время в\н
    h = Serial.read();   //выстрел
    i = Serial.read();   //лазер
   
      interval_1 = d; //запоминаем длительность вкл л\п
      interval_2 = g; //запоминаем длительность вкл в\н
      previousMillis = millis();// запоминаем время
     
      if(interval_1 == 0)
      running1 = false;
        else
      running1 = true; //устанавливаем флаг л\п
     
        if(interval_2 == 0)
      running2 = false;
        else
      running2 = true; //устанавливаем флаг в\н
     
  //вкл выкл
    if(a == 1)
    {    digitalWrite(2, HIGH);   Serial.println("power on");  }
    if(a == 0)
    {    digitalWrite(2, LOW);   Serial.println("power off"); }
  //выстрел
    if(h == 1)
    {    digitalWrite(3, HIGH);  Serial.println("shot on");  }
    if(h == 0)
    {    digitalWrite(3, LOW);  Serial.println("shot off");  }
  //лазер
    if(i == 1)
    {    digitalWrite(7, HIGH);  Serial.println("laser on");  }
    if(i == 0)
    {    digitalWrite(7, LOW);  Serial.println("laser off");  }
        //влево
    if(b == 1)
    {   analogWrite(6, 0);
        analogWrite(5, c);   Serial.print("left ");Serial.println(c);  }
       //вправо
    if(b == 0)
    {   analogWrite(5, 0);
        analogWrite(6, c);   Serial.print("right ");Serial.println(c);  }
        //верх
    if(e == 1)
    {   analogWrite(11, 0);
        analogWrite(10, f);   Serial.print("up "); Serial.println(f); }   
        //вниз
    if(e == 0)
    {   analogWrite(10, 0);
        analogWrite(11, f);   Serial.print("down "); Serial.println(f); }
       
Serial.flush();
  }
 
     if (running1 == true)
   { 
     currentMillis = millis();
      if(currentMillis - previousMillis > interval_1)
     {
        analogWrite(6, 0);
        analogWrite(5, 0);
        running1 = false;
        Serial.println("time off 1");
     }

   }
   
      if (running2 == true)
   { 
     currentMillis = millis();
      if(currentMillis - previousMillis > interval_2)
     {
        analogWrite(10, 0);
        analogWrite(11, 0);
        running2 = false;
        Serial.println("time off 2");
     }

   }
 
 
}

число байт выросло до 9. хотел по началу оставить 7,но потом прикинул сколько гемороя будет на стороне labview (вплоть до очереди команд с проверкой пропуска) и забил. разницы все равно не видно.
А вот что действительно заметно, так это появившееся "машинная" точность времени вкл. Минимальное время вкл теперь вплоть до 1мс (+ШИМ). минимальный угол поворота турели снизился (предельная точность наведения повысилась). При значении задержки "0", управление идет как было до этого (крутим до поступления команды на выкл). Теперь в ПО Labview код существенно упростится. Если раньше я извращался вкл\выкл с компа с минимальным доступным промежутком (5мс и как оказалось ужасно скачет), то теперь после обработки кадра, будет отправляться одна команда с вкл. двигателя или без ограничения времени (до обработки следующего кадра) или на заданное время.


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Охотник
СообщениеДобавлено: 04 ноя 2012, 17:41 
Не в сети
Аватара пользователя

Зарегистрирован: 04 сен 2012, 00:39
Сообщения: 1536
Откуда: Украина
ФИО: Владимир
аж в глазах зарябило:-(

Добавлено спустя 47 секунд:
а турель плпнируешь оставить на той моделе?

_________________
Самое важное в жизни- найти человека , который смотрит на мир, так же как и ты:)


Вернуться к началу
 Профиль  
 
Показать сообщения за:  Поле сортировки  
Начать новую тему Ответить на тему  [ Сообщений: 448 ]  На страницу Пред.  1 ... 14, 15, 16, 17, 18, 19, 20 ... 30  След.

Часовой пояс: UTC + 4 часа


Кто сейчас на конференции

Сейчас этот форум просматривают: нет зарегистрированных пользователей и гости: 0


Вы не можете начинать темы
Вы не можете отвечать на сообщения
Вы не можете редактировать свои сообщения
Вы не можете удалять свои сообщения
Вы не можете добавлять вложения

Найти:
Перейти:  
cron
Powered by phpBB © 2000, 2002, 2005, 2007 phpBB Group
Русская поддержка phpBB
phpBB SEO