Подписаться на получение новых статей на почту:

ПИД-регулятор на примере «электрогитары» для станка. Шаг№ 64

Всем привет. В прошлой статье мы с Вами познакомились с основами ПИД — регулятора, и данная теория нам пригодится в этой записи для вычисления его  коэффициентов. Сегодня мы рассмотрим устройство которое проектировалось под «электрогитару» (электронные шестерни) для фрезерного станка, которое заменяло бы собой механический узел, «съедающий» значительную часть времени при переборки «гитары» для резьбы и подач (ниже выложен проект в Proteus).

К сожалению, проект не дошел  до финишной прямой в силу разных причин. Но все же этапы проектирования для ознакомления я решил выложить. Данное устройство не новинка, давно разработаны проекты, которые успешно используются. Рассмотрим пример расчетов коэффициентов звеньев регулирования и последовательность для написания алгоритма. Для экспериментов был выбран МК ATmega 8, для реализации на плате ATmega 128. Ну что ж поехали.

Первоочередная задача — это синхронизации двигателей. Где в прошлой статье был выложен проект в Proteus, в котором угол поворота задающего энкодера с углом поворота объекта управления обрабатывался в МК, и быстро, и плавно происходила подрегулировка. Для преобразования в "электрогитару" требуется ввести коэффициент электронной редукции в алгоритм подсчета импульсов внешних прерываний. Рисунок ниже.

Синхронизация двигателейКоэффициенты законов регулирования рассчитывались уже на физической экспериментальной модели, т.к. электронный симулятор не может учесть всех внешних и внутренних факторов физического мира. Ниже, слева рисунок этой модели. Сперва был взят двигатель постоянного тока для сверления отверстия в плате, вместо энкодера служила механическая мышка, в которой присутствует фотодатчик и колесико прокрутки. В качестве ЗУ служил генератор импульсов. На рисунке ниже, справа.

Энкодер и двигательГенератор импульсов

 

 

 

 

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

Регулировка двигателяДа конечно, на этом рисунке хаос, т.к. надо было быстро добиться результата. МК ATmega 8 был взят на скорую руку с другого устройства.

Перед всем этим для достижения цели плавного регулирования необходимо было рассчитать коэффициенты. Рассчитываем.

Для  правильного  подбора коэффициентов ПИД – регулятора требуется найти  следующие  характеристики двигателя:  Tэ- электрическая  постоянная  времени,  Tm — электромеханическая  постоянная  времени,  Tж  - желаемое  время  работы  системы,  Кдв  - коэффициент  двигателя.  В  результате  подставив полученные значения  в формулы, получим необходимые нам коэффициенты ПИД — регулятора. Расчет постоянных по времени  параметров  электродвигателя (Тэ, Тж) рассчитывается на основе  времени  установления  скорости  вращения  при  подаче номинального напряжения.

Итак наши исходные данные:
Пусть нагрузка двигателя max 5В min 0. В 8-ми битном ШИМе шаг от 0 до 1 составит 1/255=0,00392. Т.е. максимальная скорость мотора —  255, т.к. управляем ШИМом. Максимальное напряжение 5В (то же 255, т.к. привязана к ШИМ). Время разгона двигателя разгона примерно 7 секунд до полной скорости 255 (по ШИМу).

Определяем характеристики двигателя:
Тм = время полного разгона/5 = 7/5 = 1.4;
Тэ = Тм/10=0,14;
Тж = Тм = 1.4;
Кдв=Uхх/Un=255/255=1. 
Un — максимальная величина напряжения (мощности) в условных единицах. Пусть Un = 255 (5в в шиме). а Uxx — максимальная скорость мотора. В данном случае это 255 шага. Как видите последний параметр я рассчитал чисто по условным единицам. Т.к. подставляя строго оговоренные параметры коэффициенты получались нереальные. Поехали дальше. Рассчитываем коэффициенты.

Пропорциональный коэффициент:
(Тм+Тэ)/(Тж*кдв)= (1,4+0,14)/(1,4*1)=1,54/1,4= 1,1.

Интегральный коэффициент:
1/(Тж*Кдв)= 1/1,4*1 = 0,714

Дифференциальный коэффициент:
(Тм*Тэ)/(Тж*кдв) = (1,4*0,14)/(1,4*1)=0,196/1,4=0,14 

Далее друзья, введем в алгоритм сумматор обратной связи, все как по структурной схеме из предыдущей статьи. Обозначим его E и он у нас в данном случае будет равен ошибке положению зубцов, обозначим i. Как Вы помните, по схеме у нас работают два внешних прерывания. Один энкодер со знаком плюс, второй — минус. Их сумма нам дает рассогласование. И это важный параметр, который если и отклонился на 1 то буквально на считанные доли секунды. И он присутствует во многих  ЧПУ станках. Например на рисунке ниже панель ЧПУ плазмореза.

Панель плазмореза

ЧПУ плазморез

 

 

 

 

 

 

Теперь необходимо ввести в алгоритм пропорциональное звено. Опираясь на формулу из предыдущей статьи у нас выходит:
Eр = E * Кп.
Интегральное звено:
Ei = S*Ki*t,  где S — это у нас аккумулятор предыдущих показаний E + действующее E
t - задержка в программе
Дифференциальное звено:
Ed = (Кд/t)*(E-Eo), все известно, кроме Eo — это предыдущие показания ошибки.

Ну и последнее, по определению ПИД-регулятор — это сумма трех звеньев, поэтому слаживаем результат и посылаем в ШИМ. Получаем нашу плавную регулировку. Вот такой в принципе не сложный алгоритм.

Важно! Настройка  ПИД-регулятора  по  формулам обычно  не  является  оптимальной  и  может  быть улучшена  с  помощью  дальнейшей  подстройки. Подстройка может быть выполнена  оператором  на основании  эвристических  правил  или автоматически, с помощью блока нечёткой логики, нейронных сетей и генетических алгоритмов (Fazzy-ПИД, нейро -ПИД, нейро-Fazzy-ПИД регуляторы с генетическими алгоритмами). Последнее пока пропускаем, а вот ручками подстраиваем, о чем я и писал выше. 

Хочется добавить, что для МК есть уже написанные библиотеки ПИД-регулятора: куча в просторах интернета. Знакомимся с матмоделью, что-то добавляем или меняем для себя и используем в своем проекте.

После успешного выше описанного эксперимента была собрана модель на 1 кВт двигателе, добавлен частотник для его управления, который управляется микроконтроллером. Рисунок ниже.

ПИД-регулирование 1кВт двигателяЗдесь мы управляем ШИМом непосредственно через частотный преобразователь. Также ЗУ — генератор частот. В качестве энкодера та же несчастная мышка. Коэффициенты были рассчитаны и далее подстроены. Результат данного эксперимента также получился успешным: плавное и быстрое подрегулирование.

Следующий шаг был проектирование платы. Здесь устройство уже строилось на базе ATmega 128. На рисунке ниже слева проект в sprint layot и слева разведенная плата где использовали метод фоторезиста (негатив).

 

Проект пид-регуляторПечатная плата на фоторезисте

 

 

 

 

 

 

 

 

На рисунке ниже, слева собранное устройство и проект в Proteus справа.

ПИД-регулятор на ATmega128

 

 

 

 

 

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

Синхронизация двигателей с электронной редукцией ( Скачали: 161 чел. ) 

В двух статьях мы с Вами бегло рассмотрели основы ПИД-регулирование и его применение. Думаю в будущем мы еще вернемся к использованию регулирования в других проектах. После небольшой паузы мы возвращаемся в следующей статье к проектированию веб — интерфейса. Кто забыл смотрим статью №60, где поэтапно прописаны проделанные шаги. На этом и остановимся. Всем пока.

Просмотрено 3821 раз.

Я на Google+

ПИД-регулятор на примере «электрогитары» для станка. Шаг№ 64: 3 комментария

  1. Интересный проект, жаль что без продолжения. Мне кажется коэффициенты можно не заморачиваться расчитывать, а просто подобрать вручную. Автору респект.

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

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

Добавить комментарий

Ваш e-mail не будет опубликован.

Можно использовать следующие HTML-теги и атрибуты: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <strike> <strong>

Subscribe without commenting