Перейти к содержимому

Фотография

Авторулевой своими руками


Сообщений в теме: 308

#276 Лотос

Лотос

    Рулевой 2-го класса

  • Основной экипаж
  • PipPipPipPipPip
  • 393 сообщений
  • Из:Астрахань

Отправлено 03 июля 2018 - 18:07

Сам эл. привод из чего состоит? Датчик положения на каком принципе? Пожалуйста на доступном языке,если можно.
  • 0

#277 StrangerM

StrangerM

    чужой

  • Модератор форума
  • 13 890 сообщений
  • Из:СПб
  • Судно: МН
  • Название: Stranger

Отправлено 03 июля 2018 - 18:40

Привод мощный моментный(медленный) двигатель постоянного тока (ДПТ) от перемотки ЕС ЭВМ. Датчик положения штуртроса - инфракрасный дальномер и отражательная пластина на тросе. 


  • 1

#278 Aleksk

Aleksk

    Яхтенный капитан

  • Капитан
  • 9 851 сообщений
  • Из:Ленинград
  • Судно:
  • Название: Неспешный

Отправлено 03 июля 2018 - 22:09

 Можно подключить режим компенсации ухода с курса,Cross Track error из RMB  (попробую в следующей раз). 

я полагал, что  Ози уже учитывает величину XTE  в своем  геодезическом алгоритме (у меня на экране XTE в километрах и знак отклонения)  и стремится уменьшить по возможности XTE до нуля, задавая  определённым образом курс регулятору автопилота.


  • 0

#279 StrangerM

StrangerM

    чужой

  • Модератор форума
  • 13 890 сообщений
  • Из:СПб
  • Судно: МН
  • Название: Stranger

Отправлено 04 июля 2018 - 05:41

На практике я не очень следую дорожке, поэтому у меня в качестве опции. У посылок Ози я беру курс на точку,  этом случае ХТЕ не сокращается. Кстати, основным задающем у-вом планирую использовать не Ози, а GPS III+.


  • 0

#280 StrangerM

StrangerM

    чужой

  • Модератор форума
  • 13 890 сообщений
  • Из:СПб
  • Судно: МН
  • Название: Stranger

Отправлено 07 июля 2018 - 07:34

Решил коротко обсудить упрощенную модель АП-катер, которая позволяет прикинуть коэффициенты ПИД-регулятора и протекание переходных процессов по управляющему и возмущающему воздействию.

 

 

 

При полном повороте штурвала от нулевого положения (те на 25 уе длины штуртроса) на 25 град. за 1 сек.

Пусть момент поворота линейно зависит от поворота штурвала (длины штуртроса – х ),

М=Кх  ,

где К – коэффициент пропорциональности. Тогда угол поворота катера ф можно получить из выражения

ф=(К/Н)*х/р*р ,

где 1/р – оператор итегрирования по времени. Пусть известно (из практики), что при полном отклонении штурвала 25 уе катер за время t=1 сек. Катер поворачивает на 25 град., тогда,

25=(К/Н)*25*t*t=(К/Н)*25*1,

или,

(К/Н)=25/25=1  .

С точки зрения САУ имеем звено с передаточной функцией (изменение длины штуртроса в угол поворота катера)

W=0.4/p*p

Тк электропривод позиционируется, как показало ручное управление, практически мгновенно. Представим его апериодическим звеном с постоянной времени равной обороту петли в работе микроконтроллера

W=1/(0.2p+1)

Получается ПИД-регулятор, апериодическое звено и два звена интегрирующих.


  • 0

#281 StrangerM

StrangerM

    чужой

  • Модератор форума
  • 13 890 сообщений
  • Из:СПб
  • Судно: МН
  • Название: Stranger

Отправлено 07 июля 2018 - 11:41

Я же писал, что у меня получилось угадать коэффициенты, а это непросто - система склонна к автоколебаниям (как оказалась при моделировании).Поэтому я решил пока не заниматься синтезом регулятора, а поиграться с имеющимся. Оказалось, что только Кд следует существенно увеличить от 1 до 4 - уменьшится время переходного процесса, Кп=2, Ки=0.8 трогать не стоит  - начинаются автоколебания. После возни с коэффициентами интересно посмотреть задающие и возмущающие воздействия, как малые, так и большие (с насыщением контура регулирования).

Прикрепленные изображения

  • syst.JPG

  • 0

#282 StrangerM

StrangerM

    чужой

  • Модератор форума
  • 13 890 сообщений
  • Из:СПб
  • Судно: МН
  • Название: Stranger

Отправлено 07 июля 2018 - 12:05

Все оказалось замечательно, ведь контур имеет астатизм 1го порядка по задающему и 2ого по возмущающему воздействию. Будут интересны кривые - я их приведу. Для примера - на 1 сек задание 20 град в отсутствии Возмущающего Воздействия и при наличии случайного ВВ с постоянной составляющей -10 уе штуртроса. (в уе перемещения штуртроса),

Прикрепленные изображения

  • MATLAB.jpg
  • MATLAB3.jpg

  • 0

#283 StrangerM

StrangerM

    чужой

  • Модератор форума
  • 13 890 сообщений
  • Из:СПб
  • Судно: МН
  • Название: Stranger

Отправлено 07 июля 2018 - 18:52

Запустил оптимизацию ПИД регулятора в Матлабе Nonlinear Control Design Blockset, она дала Kp=1.13 , Ki=0.28  Kd=2.21. У меня при испытаниях  Kp=2 , Ki=0.8  Kd=1. Неплохо.


  • 0

#284 StrangerM

StrangerM

    чужой

  • Модератор форума
  • 13 890 сообщений
  • Из:СПб
  • Судно: МН
  • Название: Stranger

Отправлено 07 июля 2018 - 20:25

Ну я Kd 2 сделаю, Ki 0.5 Kp 1.5 - в общем, имеющиеся коэффициенты работают, модель приближенная......


  • 0

#285 Aleksk

Aleksk

    Яхтенный капитан

  • Капитан
  • 9 851 сообщений
  • Из:Ленинград
  • Судно:
  • Название: Неспешный

Отправлено 07 июля 2018 - 22:35

Коэффициенты в общем случае зависят от скорости лодки. Но можно и так оставить для крейсерской. Тема обширная для исследований.


  • 0

#286 StrangerM

StrangerM

    чужой

  • Модератор форума
  • 13 890 сообщений
  • Из:СПб
  • Судно: МН
  • Название: Stranger

Отправлено 08 июля 2018 - 03:42

Конечно зависят - будет меняться К, как функция от квадрата скорости, но, мне, естественно, важна именно крейсерская, тк АП может понадобиться только на ней. Но, не трудно прикинуть переходные процессы и по краям диапазона, если это для 12.3 км/час, то для 10 и 14, я думаю мало будет отличаться. Мало того, К еще зависит нелинейно от длины штуртроса, тк там присутствует sin угла поворота руля (в моем случае +_20 град) и куча еще. Однако, важный итог исследований - я "почувствовал" коэффициенты. И модель адекватная. Можно еще поиграться.


  • 0

#287 StrangerM

StrangerM

    чужой

  • Модератор форума
  • 13 890 сообщений
  • Из:СПб
  • Судно: МН
  • Название: Stranger

Отправлено 08 июля 2018 - 04:20

Глянул и синус, и разные скорости - практически мало отличается переходные процессы от, но, естественно при малых скоростях ( при 10 км/час, К=0.66 вместо 1) допустимая амплитуда отрабатываемых ВВ упала. И колебательность больше.

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


  • 0

#288 StrangerM

StrangerM

    чужой

  • Модератор форума
  • 13 890 сообщений
  • Из:СПб
  • Судно: МН
  • Название: Stranger

Отправлено 08 июля 2018 - 08:50

....

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

О, совсем другое дело, другие коэффициенты, гораздо хуже переходные процессы.

Прикрепленные изображения

  • disc.JPG

  • 0

#289 Aleksk

Aleksk

    Яхтенный капитан

  • Капитан
  • 9 851 сообщений
  • Из:Ленинград
  • Судно:
  • Название: Неспешный

Отправлено 25 июля 2018 - 22:03

Потихоньку переползаю на STM32 (Nucleo).

Написал парсер компорта под GPS на голом Си (как сумел, я не настоящий сварщик). Фишка, в том , что мой парсер не заглатывает целиком строку после чего происходит анализ, а парсит её на подстроки (разделитель - запятая) прямо в процессе приема байт из порта. Не совсем понимаю почему, но матерые программисты железа любят такой способ. Можно парсер допилить, и он не будет ждать символа окончания строки, а приняв последнюю нужную подстроку, завершит свою работу. Этим повышается помехоустойчивость, т.к. из GPS иногда лезут строки с диковатым содержанием. 

 

https://os.mbed.com/...119d3/main.cpp/

 

 

в терминале выдаст, например, для строки $GPGSV -

arg$[0]=GPGSV
arg$[1]=3
arg$[2]=3
arg$[3]=10
arg$[4]=29
arg$[5]=10
arg$[6]=341
arg$[7]=24
arg$[8]=30
arg$[9]=23
arg$[10]=216

  • 0

#290 Aleksk

Aleksk

    Яхтенный капитан

  • Капитан
  • 9 851 сообщений
  • Из:Ленинград
  • Судно:
  • Название: Неспешный

Отправлено 26 июля 2018 - 08:17

что то сайт тормозит вставлю код напрямую (он хоть и работает, но вдруг в нем есть очевидная лажа ?)-

/*
Parse of  string for COM-port. As examle - COM from GPS.
Program for step to step read bytes from port (file) and separating stream of bytes on substrings in real time. Separator  is  a comma.
Разбор строки для COM-порта. В качестве примера - COM из GPS.
Программа для пошагового чтения байтов из порта (файла) и разделения потока байтов на подстроки в реальном времени. Разделитель - запятая.
*/
#include "mbed.h"
#include "stdio.h"
 
 
#define maxnstr 20                                                              // maximum nbr of params(sybstrings) used to hold the data fields
#define maxnsym 20                                                              // maximum nbr of symbols
char arg$[maxnstr][maxnsym]={""};                                               // 
int nstr=0;                                                                     //номер подстроки (number of substring)
int nsym=0;                                                                     //и номер символа строки в двумерном массиве строк arg$[][]
char x$;                                                                        //байтовый символ полученный из порта (или файла) 
Serial pc(USBTX, USBRX);                                                        // tx, rx for F411RE    out port diagnostica
Serial gps(PA_9, PA_10);                                                        // tx, rx for F411RE    in port nmea
//Serial pc(PA_9,PA_10);                                                        // tx, rx for F091RC    out port diagnostica
//Serial gps(PC_10,PC_11);                                                      // tx, rx for F091RC    in port nmea
int GetGPSData()
{
  do{
      do{x$ = gps.getc();
        } while(x$!='$');                                                       //ждем $ -символ начала строки (first symbol of new string)
       for ( nstr = 0; nstr< maxnstr; nstr++)
       {nsym=0;                                                                 //обнуление индекса символа, подготовка для создания новой строки   
        do{ x$ = gps.getc();              
            if (x$ == ','){arg$[nstr][nsym] ='\0';break;}                       //вставка окончания строки и выход из цикла             
            if (x$ == '\n'){return 0;}                                          //символ окончания сообщения - команда на выход (symbol of end string)
            arg$[nstr][nsym] = x$ ;                                             //побайтовое создание новой строки в массиве строк
            nsym=nsym+1;          
          } while(1);                               
       }                                
    } while(1);
}
 
int main() 
{   pc.baud(115200);
    gps.baud(9600);
    pc.printf("***********************Device Starting**************\r\n");
   
  while(1)                                                                      //main  cycle
  {   
    GetGPSData();                                                               //ловим очередную строку сообщения и разбиваем на подстроки
    for (int i=0; i<nstr; i++) {pc.printf("arg$[%d]=%s\r\n",i, arg$[i]);}       //поcтрочный вывод из массива
 
  }
 
}

Сообщение отредактировал Aleksk: 26 июля 2018 - 08:20

  • 0

#291 maxik

maxik

    Яхтенный капитан

  • Администратор
  • 2 179 сообщений
  • Из:Москва
  • Судно: 34 фута
  • Название: Ирида

Отправлено 14 августа 2018 - 21:20

Приехала сегодня новая плата, завтра продолжу свои эксперименты.

 

А откуда вы брали алгоритмы, как должен работать автопилот? К  примеру, отклонился я на один градус от курса, на чколько двигать руль? Увелиивать ли движение руля, если на курс, скажем, за секунду не встал? Как выходить на трек, если включил автопилот далеко от трека (raymarin, к примеру, просто рулит на ближайшую маршрутную точку, ну и т.д.)? Ну и да, в отличие от Михаила, мне желательно точное следование треку, ибо бОльшая часть движения у меня по каналам.


  • 0

#292 Aleksk

Aleksk

    Яхтенный капитан

  • Капитан
  • 9 851 сообщений
  • Из:Ленинград
  • Судно:
  • Название: Неспешный

Отправлено 14 августа 2018 - 22:15

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

2. Посмотрите как работает ПИД-регулятор, ну или хотя бы простой пропорциональный регулятор (на нем уже можно ездить). Игра идёт на максимально-возможное уменьшение ошибки.(ошибки тоже могут быть разные, например ошибка отклонения от курса (градусы) и ошибка отклонения от геодезической дуги заданного трека (метры) )

3. Мой автопилот возвращается обратно на трек двигаясь перпендикулярно (в первом приближении) к  нему.

4. Точное перемещение по треку невозможно. Всегда будут отклонения или медленные колебания, но их можно уменьшить до нескольких метров (или меньше когда волны и ветра нет), настроив коэффициенты ПИД-регулятора (но и этого на самом деле мало, например при развороте на очередной точке на 150...180 градусов, желательно в нужный момент отключить а потом включить интегратор, предварительно его обнулив, иначе будет большая по диаметру петля разворота и потом затухающие колебания при выходе на трек).

5. Не знаю как делается правильно в промышленных автопилотах, но у меня при следовании по треку алгоритм ослика и морковки. Морковка от ослика всегда на расстоянии 60 метров. Т.е. в главном цикле каждый 1 раз в секунду вычисляется по формулам Боуринга точка трека на расстоянии 60 метров впереди лодки и азимут на неё. Одновременно для компенсации сноса от бокового ветра (течения) вычисляется кросс трак еррор XTE  расстояние отклонения от трека в  метрах (со знаком). XTE умножается на коэффициент 0.005 (подобран под мои условия) и входит в интегральную составляющую регулятора.

6. Если будете использовать OpenCPN  или Ozi , которые сами всю геодезию для трека считают и выдают азимут, то  пункты 3, 4 ,5 не актуальны. Но вы будете связаны возможностями и багами этих программ.


Сообщение отредактировал Aleksk: 14 августа 2018 - 22:29

  • 0

#293 Лотос

Лотос

    Рулевой 2-го класса

  • Основной экипаж
  • PipPipPipPipPip
  • 393 сообщений
  • Из:Астрахань

Отправлено 16 августа 2018 - 08:26

Приветствую.Спецы по электронике,подскажите пожалуйста.
Обычно ДУ делаю на шнуре и кнопках стеклоподъемника,тут добавил китайский радио пульт.А у него задержка на выключение.
Может возможно что то подрегулировать в приемнике,чтобы все происходило мгновенно,как с кнопками на шнуре?
  • 0

#294 Aleksk

Aleksk

    Яхтенный капитан

  • Капитан
  • 9 851 сообщений
  • Из:Ленинград
  • Судно:
  • Название: Неспешный

Отправлено 16 августа 2018 - 08:43

что за пульт? Полное название.


  • 0

#295 Лотос

Лотос

    Рулевой 2-го класса

  • Основной экипаж
  • PipPipPipPipPip
  • 393 сообщений
  • Из:Астрахань

Отправлено 16 августа 2018 - 08:50

что за пульт? Полное название.

Типа такого https://ru.aliexpres...9999.324.78xVwh
Только второй маленький брелок.
Вот для ясности по запаздыванию https://youtu.be/O4DiTVU_hJg
  • 0

#296 Vada

Vada

    Яхтенный капитан

  • Капитан
  • 5 211 сообщений
  • Из:С-Петербург
  • Судно: Maxi 84
  • Название: Ласточка

Отправлено 16 августа 2018 - 09:11

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

2. Посмотрите как работает ПИД-регулятор, ну или хотя бы простой пропорциональный регулятор (на нем уже можно ездить). Игра идёт на максимально-возможное уменьшение ошибки.(ошибки тоже могут быть разные, например ошибка отклонения от курса (градусы) и ошибка отклонения от геодезической дуги заданного трека (метры) )

3. Мой автопилот возвращается обратно на трек двигаясь перпендикулярно (в первом приближении) к  нему.

4. Точное перемещение по треку невозможно. Всегда будут отклонения или медленные колебания, но их можно уменьшить до нескольких метров (или меньше когда волны и ветра нет), настроив коэффициенты ПИД-регулятора (но и этого на самом деле мало, например при развороте на очередной точке на 150...180 градусов, желательно в нужный момент отключить а потом включить интегратор, предварительно его обнулив, иначе будет большая по диаметру петля разворота и потом затухающие колебания при выходе на трек).

5. Не знаю как делается правильно в промышленных автопилотах, но у меня при следовании по треку алгоритм ослика и морковки. Морковка от ослика всегда на расстоянии 60 метров. Т.е. в главном цикле каждый 1 раз в секунду вычисляется по формулам Боуринга точка трека на расстоянии 60 метров впереди лодки и азимут на неё. Одновременно для компенсации сноса от бокового ветра (течения) вычисляется кросс трак еррор XTE  расстояние отклонения от трека в  метрах (со знаком). XTE умножается на коэффициент 0.005 (подобран под мои условия) и входит в интегральную составляющую регулятора.

6. Если будете использовать OpenCPN  или Ozi , которые сами всю геодезию для трека считают и выдают азимут, то  пункты 3, 4 ,5 не актуальны. Но вы будете связаны возможностями и багами этих программ.

Может быть стоит в целевую функцию "морковки" добавить еще параметр оптимизации жужжания сервомоторчиком? Подобрать весовой коэффициентик. Ну чтоб и по курсу идти с приемлемой точностью и за пол часа батарею не высосать.

Имея данные прокладки, можно весовой коэффициент как-то посчитать. Например, от предстоящей длинны маршрута. Ну чтоб батареи хватило на переход от пункта А до пункта Б.

Еще одна "мысль". Ну это нужен датчик крена. Вот, например, идем в штилевом режиме (волны нет) и тут мимо проносится моторный и волочит за собой злющую волну. Раймарин у меня в этом случае с ума сходит - начинает дико вертеть румпель туда-сюда. Если я рулю сам, есть два варианта, либо я тоже так-же верчу румпелем не сопротивляясь потребностям рулевого пера, а могу его просто удерживать не давая ворочаться туда-сюда. Жесткое удержание руля, конечно, затормозит ход, но в условиях интенсивного неожиданного волнообразования позволит сэкономить ампер-часы.

Ну это так. Мысли вслух.


  • 0

#297 maxik

maxik

    Яхтенный капитан

  • Администратор
  • 2 179 сообщений
  • Из:Москва
  • Судно: 34 фута
  • Название: Ирида

Отправлено 16 августа 2018 - 09:57

Aleksk:

3. Я думал над этим. Но я использую Гармин, он на экране рисует плавный выход на трек, вот что-то подобное мечтается изобразить.

5. Читал я тут диссертации по автопилотам для барж -- но там гироскоп, итупая механическая схема -- чем сильнее отклонение от курса, там  сильнее отклоняется руль. Правда там не было возвращения на трек. Если использовать алгоритм ослика и морковки, то мне, в моих условиях, придется морковку привязывать метрах в 3-х, 60 метров может быть уже за поворотом.

6. Как я  уже писал, использую Гармин. Он дает и направление с расстоянием до следующей точки поворота, и отклонение от трека. Надо б понять, как это все обработать.

 

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


  • 0

#298 Aleksk

Aleksk

    Яхтенный капитан

  • Капитан
  • 9 851 сообщений
  • Из:Ленинград
  • Судно:
  • Название: Неспешный

Отправлено 16 августа 2018 - 10:11

Типа такого https://ru.aliexpres...9999.324.78xVwh
Только второй маленький брелок.
Вот для ясности по запаздыванию https://youtu.be/O4DiTVU_hJg

короткое нажатие на кнопку фактически приводит к длительному воздействию. Импульс удлиняется во времени. Если эта добавка по времени постоянна, независимо от длительности нажатия, то в принципе её можно вычесть вот такой схемой на выходе приемника. Лишнее время вырезается  постоянной времени RC цепи (t=R*C (секунд)). Конечно надо решить проблему согласований уровней напряжения на входе и умощнить выход.

image128.jpg


Сообщение отредактировал Aleksk: 16 августа 2018 - 10:14

  • 0

#299 Aleksk

Aleksk

    Яхтенный капитан

  • Капитан
  • 9 851 сообщений
  • Из:Ленинград
  • Судно:
  • Название: Неспешный

Отправлено 16 августа 2018 - 11:07

Aleksk:

3. Я думал над этим. Но я использую Гармин, он на экране рисует плавный выход на трек, вот что-то подобное мечтается изобразить.

5. Читал я тут диссертации по автопилотам для барж -- но там гироскоп, итупая механическая схема -- чем сильнее отклонение от курса, там  сильнее отклоняется руль. Правда там не было возвращения на трек. Если использовать алгоритм ослика и морковки, то мне, в моих условиях, придется морковку привязывать метрах в 3-х, 60 метров может быть уже за поворотом.

6. Как я  уже писал, использую Гармин. Он дает и направление с расстоянием до следующей точки поворота, и отклонение от трека. Надо б понять, как это все обработать.

 

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

 

3. А зачем думать, если чартплоттер Гармин сам выдает азимут  сервоприводу при движении по треку ? Это ведь не азимут на  одну из точек трека (маршрута), а постоянно изменяющаяся величина для поддержания лодки на треке.

 

5. В простом случае это и для электроники справедливо. Первый макет пилота я так и сделал - азимут из магнитного компаса (а можно и из GPS  из GPRMC строки извлекать) по линейной формуле преобразовывал в длительность импульса для сервомашинки. Работало на ура , т..е. можно было идти по прямой с некоторым отклонением от заданного курса (пока не добавил ошибку разницы заданного курса и реального в программный интегратор, тогда разница практически исчезла).

Расстояние зависит от реализации. У меня очень большая редукция поэтому время перемещения румпеля большое. При более шустром приводе расстояние будет существенно меньше без риска возникновения автоколебаний.

 

6. Я предполагал, что Гармин работает в режиме непосредственного управления сервоприводом, как в пункте три (выше).  Но если он тупо выдает азимут на введенную лодочником точку маршрута, и отдельно  XTE -отклонение от курса, этого в принципе достаточно для обработки. Образуется функциональный блок, на входе которого азимут и XTE, а на выходе может быть что угодно, начиная от копеечной сервомашинки из наборов для Ардуино поделок и заканчивая шаговыми двигателелями , промышленными сервами или колхозными контакторами.

XTE имеет знак, он крайне важен для управления, т.к. показывает с какой стороны от трека мы находимся.  В простом случае к азимуту прибавляем интеграл ошибки отклонения от курса (Ki-коэффициент интегрирования, например 0.005.  Азимут в градусах).

ERRAZ1=Ki*XTE                           //-интегрирование ошибки отклонения
ERRAZ2=ERRAZ2+ERRAZ1                    //--------------------------------
If ERRAZ2>40 Then ERRAZ2=40             //- ограничение насыщения интегратора сверху
If ERRAZ2<-40 Then ERRAZ2=-40           // - и снизу
AZ=AZ+ERRAZ2                            //-новое значение азимута с учетом ошибки
If AZ>=225 Then AZ=225                  //- ограничение поворота сервомашинки сверху
If AZ<=135 Then AZ=135                  //- и снизу
AZF=180*(1+Cos(1.7453E-2*(270+2*AZ)))   //- косинус нужен для плавного скругления функции по краям у 225 и 135 градусов
Tservo=0.7+4.7222E-3*AZF                //- длительность ШИМ импульса в мс (функция преобразования азимута в длительность импульса)    
PWM 50, 5*Tservo                        //-  функция включающая 50 Гц ШИМ

Нюанс в том, что при курсе 0 градусов азимут будет скакать от 0 до 360. Этого можно избежать применением условных операторов , но у меня сделано по другому - нормальное положение , когда ошибка равно нулю, это 180 градусов, поэтому скачков нет.

 

 

Еще можно добавить дифференциальную составляющую ошибки и получить полноценный ПИД-регулятор.

 

-----------------------------------------

Я тоже сделал два режима - первый чисто по компасу, второй по GPS треку.


Сообщение отредактировал Aleksk: 16 августа 2018 - 11:44

  • 0

#300 Лотос

Лотос

    Рулевой 2-го класса

  • Основной экипаж
  • PipPipPipPipPip
  • 393 сообщений
  • Из:Астрахань

Отправлено 16 августа 2018 - 12:39

короткое нажатие на кнопку фактически приводит к длительному воздействию. Импульс удлиняется во времени. Если эта добавка по времени постоянна, независимо от длительности нажатия, то в принципе её можно вычесть вот такой схемой на выходе приемника. Лишнее время вырезается  постоянной времени RC цепи (t=R*C (секунд)). Конечно надо решить проблему согласований уровней напряжения на входе и умощнить выход.
image128.jpg

Там без разницы время удержания кнопки,там задержка идет после отпускания(не сразу размыкается)
Спрашивал у форумчан,один откликнулся-говорит нет у него задержки.Приемник такой же.
Смотрел без подключения к реле-задержка прослушивается(щелкает в приемнике)
Формулы мне ничего не говорят-я далек от этого.
Спасибо.
  • 0



Ответить



  


Количество пользователей, читающих эту тему: 0

0 пользователей, 0 гостей, 0 скрытых пользователей