Мазмуну:

PID Controller VHDL: 10 кадам
PID Controller VHDL: 10 кадам

Video: PID Controller VHDL: 10 кадам

Video: PID Controller VHDL: 10 кадам
Video: 8 инструментов в Excel, которыми каждый должен уметь пользоваться 2024, Июль
Anonim
PID контролери VHDL
PID контролери VHDL
PID контролери VHDL
PID контролери VHDL

Бул долбоор Корк технологиялык институтунун бакалавр даражасын аяктоо үчүн менин акыркы долбоорум болду. Бул үйрөткүч эки бөлүмгө бөлүнөт, биринчиси долбоордун негизги максаты болгон PID кодунун негизги бөлүгүн камтыйт, ал эми экинчи бөлүмдө Basys 3 иштеп чыгуу тактасында ишке ашырылган жана андан кийин теннис теннисинин шарына туташкан коддун интерфейси камтылган. левитация аппараты. Теориялык жана курулган жабдуу тиркелген сүрөттөрдө көрсөтүлгөн.

Жабдуулар

Симуляция

Vivado Design Suite

Ишке ашыруу (кашаада менин долбоорум үчүн колдонулган нерсе)

  • Санарип/Аналогдук сигналдарды киргизе жана чыгара турган FPGA Board (Basys 3)
  • бир гана пикир булагы менен башкарылуучу система (Ping Pong Ball Levitation Rig)

Rig

  • Поликарбонат түтүк
  • 5V желдеткичи
  • IR Sensor
  • 3D Басылган Базасы (Бул окуу куралы сенсор менен камсыз кылуу үчүн бургулоочу түзүлүштүн курулушун документтештирет, бирок жабдуу жалпысынан бирдей болгон)
  • 1k резисторлор
  • 5V жана GND Rail менен нан тактасы

1 -кадам: Башкаруунун негизги теориясы

Негизги башкаруу теориясы
Негизги башкаруу теориясы

Башкаруунун кээ бир негизги теориясын кошуу бул кодду колдонууну каалагандардын баарына баштоо үчүн жакшы база берет деп ойлогом.

Тиркелген диаграмма бир укурук контроллеринин макети.

r- Бул шилтеме. Бул контроллердин кайда барууну каалагандыгын аныктайт.

e-ката. Бул сенсордогу маалымат менен шилтеменин ортосундагы айырма. мис. e = r- (d+сенсордун чыгышы).

K-Бул контролер. Контроллер үч терминден турушу мүмкүн. Бул терминдер P, I жана D. Үч терминдин тең Kp, Ki жана Kd аттуу көбөйткүчтөрү бар. Бул баалуулуктар контролердин жообун аныктайт.

  • P-пропорционалдуу. Катуу P контроллери учурдагы катага пропорционалдуу чыгууга ээ болот. P контроллерин ишке ашыруу жана иштөө оңой, бирок сиз койгон баага эч качан жетпейт (маалымдама).
  • I-Integral. Катуу интегралдык контролер мурунку катаны жыйынтыктайт, ал акыры каалаган шилтемеге жетет. Бул контролер жалпысынан ишке ашыруу үчүн өтө жай. Р терминин кошуу шилтемеге жетүү үчүн кеткен убакытты кыскартат. Киргизүүнүн үлгүсү алынган убакыт интегралдык мөөнөттү эске алуу менен эске алынышы керек.
  • D-туунду. Туунду термин катанын өзгөрүү ылдамдыгына көз каранды болгон өндүрүмгө ээ болот. Бул термин жалпысынан P термини же PI термини менен колдонулат. Бул катанын өзгөрүү ылдамдыгына пропорционалдуу болгондуктан, ызы -чуу болгон сингл системанын туруксуз болушуна алып келиши мүмкүн. Убакытты да эске алуу керек, анткени туунду термин да убакытка байланыштуу.

U- Бул башкаруу сигналы. Бул сигнал жабдуу үчүн кириш болуп саналат. Бул долбоордо u ылдамдыкты өзгөртүү үчүн күйөрманга PWM сигналын киргизүү болуп саналат.

G- Бул көзөмөлгө алынган система. Бул системаны S же Z доменинде математикалык түрдө моделдөөгө болот. Системалар n -тартипте болушу мүмкүн, бирок кимдир бирөө башкарууну баштаганда, биринчи кезектеги системаны кабыл алуу керек, анткени аны эсептөө алда канча оңой. Бул Интернеттен табууга мүмкүн болгон моделдөө системасы боюнча маалыматтын Плейторасы. Сенсордун тандалуу убактысына жараша системанын модели дискреттик же үзгүлтүксүз болот. Бул контроллерге кескин таасир этет, ошондуктан экөөнү тең изилдөө сунушталат.

d- Бул тутумга кошулган бузулуу. Тынчсыздануу - бул системанын модели эске албаган тышкы күчтөр. Мунун жөнөкөй мисалы, сиз 5 метрге шамал соккусу келген пилотсуз учак болмокчу жана дронду 1 метрге түшүрсөңүз, контролер дрондун баш аламандык болгондон кийин ордун алмаштырат. Бул шамал кайталанбай тургандыктан, тынчсыздануу деп аталат, андыктан аны моделдөө мүмкүн эмес.

Контроллерди жөндөө үчүн атоого өтө көп эрежелер бар, бирок мен баштаган кээ бир жакшы эрежелер - Коэн Кун жана Зигер Николс.

Системаны моделдештирүү негизинен эң маанилүү бөлүк болуп саналат, так модели жок, контроллер каалагандай жооп бербейт.

Бул жерде контроллердин айрым изилдөөлөр менен кантип иштээрин түшүнүү үчүн жетиштүү маалымат болушу керек жана контроллердин астындагы код үч терминдин айкалышы менен ишке ашырылышы мүмкүн.

2 -кадам: PID кодун жазуу

PID кодун жазуу
PID кодун жазуу

Төмөнкү шилтемеден табылган коддун негизги принциби кабыл алынган жана өзгөртүлгөн, анткени бул код иштебейт, бирок көптөгөн жакшы принциптерге ээ болгон, бул жакшы башталыш пунктун берген. Original PID Коду сыяктуу бир нече каталар болгон

  • Үзгүлтүксүз иштөө - контроллер тукум кууп өткөн, ошондуктан контроллерди жаңы киргизүү болгондо бардык 3 терминди гана эсептөө үчүн орнотуу керек болчу. Бул симуляциянын тегерегиндеги иш, акыркы жолу киргизүүнүн өзгөргөнүн текшерүү болчу. бул коддун туура иштешин тууроо үчүн гана иштейт.
  • Үлгү убактысы интегралдык жана туунду терминге эч кандай таасирин тийгизген эмес - Контроллер үлгү алынган убакытты да эске алган эмес, андыктан интегралдык жана туунду терминдердин туура иштешин камсыз кылуу үчүн убакытка бөлүнүүчү деп аталган маани кошулган. интервал.
  • Ката гана позитивдүү болушу мүмкүн - катаны эсептөөдө дагы көйгөй бар болчу, анткени кайра байланыш сигналы шилтеме маанисинен ашып кеткенде, ката эч качан терс мааниге ээ боло албайт, контролер чыгууну азайтууда көбөйтүүнү улантат.
  • 3 терминдин баалуулуктары бүтүн сандар болчу - менин тажрыйбамда, контролердеги 3 терминдин мааниси дайыма өзгөрмөлүү чекиттүү сандар болушу керектигин аныктады, анткени сүзгүч чекиттүү номуру жок, баалуулуктарга саноочу маанини жана бул көйгөйдү айланып өтүү үчүн кызмат кыла турган бөлүштүргүч наркы.

Код төмөндө тиркелет, коддун негизги органы жана кодду симуляциялоо үчүн тест столу. Убакытты үнөмдөө үчүн ачыла турган ZIP папкасында Vivado'до мурунтан эле код жана testbench камтылган. коддун симуляцияланган тести да бар, ал бул шилтемени көзөмөлдөөнү көрсөтөт, бул код ойдогудай иштеп жаткандыгын далилдейт.

3 -кадам: Системаңызды кантип өзгөртүү керек

Биринчиден, бардык системалар бирдей эмес, системанын кириштерин жана чыгымдарын талдоо керек. Менин учурда, менин позициям үчүн мааниге ээ болгон бургумдун чыгышы аналогдук сигнал жана системадан кирүү PWM сигналы болгон. Бул ADC конверсиясы керек дегенди билдирет. Бактыга жараша Basys 3 ADCде курулган, андыктан IR сенсорунун чыгышы 0V-1Vге чейин азайышы керек болчу, анткени бул борттогу ADCдин максималдуу диапазону. Бул 1k каршылыгы менен катар 3k каршылыгы катары орнотулган 1k каршылыгынан жасалган чыңалуу бөлүштүргүч схемасы аркылуу жасалган. Аналогдук сигнал азыр ADC чегинде болгон. Желдеткичке PWM киргизүү түздөн -түз Basys 3төгү PMOD портунун чыгышы менен шартталган.

4 -кадам: Basys 3 боюнча I/O артыкчылыгын алуу

Basys 3те код иштеп турганда мүчүлүштүктөрдү оңдоого мүмкүндүк берген бир катар I/O бар. киргизүү/чыгаруу төмөнкүдөй орнотулган.

  • Жети сегменттин дисплейи - Бул вольтто ADCдеги шилтеме менен нарктын маанисин көрсөтүү үчүн колдонулган. Жети сегменттин дисплейинин биринчи эки цифрасы ADC маанисинин ондук санынан кийинки эки цифраны көрсөтөт, анткени маани 0-1V ортосунда. Жети сегменттин дисплейиндеги үч жана төрт цифрлар вольттогу шилтеме маанисин көрсөтөт, бул дагы ондуктан кийинки биринчи эки цифраны көрсөтөт, анткени диапазон 0-1V ортосунда.
  • 16 Светодиоддор - Чыгуу диоддору өндүрүштүн каныккандыгын жана өндүрүштүн туура өзгөрүп жатканын камсыз кылуу үчүн чыгымдын маанисин көрсөтүү үчүн колдонулган.

5 -кадам: IR сенсорунун чыгышындагы ызы -чуу

Бул көйгөйдү чечүү үчүн сенсордун үнүндө ызы -чуу пайда болду, анткени бул жетиштүү жана аяктоо үчүн өтө аз ишти талап кылган.

6 -кадам: Жалпы коддун жайгашуусу

Жалпы коддун жайгашуусу
Жалпы коддун жайгашуусу

Азырынча сүйлөшүлө элек бир код бар. Бул код триггер деп аталган саат бөлүштүргүч. коддун бул бөлүгү ADC кодун үлгүгө келтирет. ADC кодун толтуруу үчүн эң көп дегенде 2us талап кылынат, андыктан учурдагы киргизүү жана мурунку киргизүү орточо болот. 1us андан кийин контроллер P, I жана D шарттарын эсептейт. коддун жана интерфейстин баардык жайгашуусу убактылуу байланыш схемасында көрсөтүлгөн.

7 -кадам: Тестирлөө

Тестирлөө
Тестирлөө

Код Basys 3ке жайгаштырылган жана төмөнкү жооп жазылган. шилтеме 2 маанинин ортосунда өзгөрдү. бул тиркелген долбоордун кодунда тиркелет. Тиркелген видео реалдуу убакытта бул жоопту көрсөтөт. Тиркемелер түтүктүн жогорку бөлүгүндө тезирээк чирийт, анткени контроллер бул аймак үчүн иштелип чыккан, бирок контроллер түтүктүн ылдый жагында иштебейт, анткени система сызыктуу эмес.

8 -кадам: Долбоорду жакшыртуу үчүн өзгөртүүлөр

Долбоор ойлогондой иштеди, бирок долбоор узартылышы мүмкүн болсо, мен бир аз өзгөртүүлөрдү киргизет элем.

  • Толугу менен ызы -чууну басаңдатуу үчүн санарип чыпканы колдонуңуз
  • ADC кодун, Орточо кодду жана Интеграция кодун ырааттуу түрдө иштетүү үчүн орнотуңуз.
  • кайтарым байланыш үчүн башка сенсорду колдонуңуз, анткени бул сенсордун сызыктуу эмес жообу бул проект менен көптөгөн көйгөйлөрдү жараткан, бирок бул коддоо жагында эмес, башкаруу жагында.

9 -кадам: Кошумча жумуш

Жай бою мен каскаддык контроллердин кодун жаздым жана бирдиктүү PID контроллери үчүн сунушталган өзгөртүүлөрдү киргиздим.

Кадимки PID контроллерине өзгөртүүлөр киргизилди

· Киргизилген FIR чыпкасы шаблону каалаган чектүү жыштыкка жетүү үчүн коэффициенттерди өзгөртүү керек. Учурдагы ишке ашыруу-5 таптап турган арча чыпкасы.

· Коддун убактысы чыпка жаңы үлгү аркылуу жайыла тургандай кылып орнотулду жана чыгаруу даяр болгондо интегралдык термин иштей баштайт, бул кодду өзгөртүү үчүн азыраак күч менен ар кандай убакыт аралыгында иштөөгө өзгөртүлүшү мүмкүн дегенди билдирет. код

· Программаны башкаруучу цикл үчүн негизги дагы кыскартылды, анткени бул цикл 7 циклди ээлеген, бул мурда Контроллердин максималдуу иштөө ылдамдыгын басаңдаткан, бирок t 4 циклин азайтуу менен бул коддун негизги блогу иштей алат дегенди билдирет 4 саат циклинин ичинде.

Тестирлөө

Бул контролер сыноодон өткөрүлүп, каалагандай аткарылды, мен бул далилдин сүрөттөрүн тарткан жокмун, анткени долбоордун бул бөлүгү акылды активдүү кармоо үчүн болгон. Testbench катары тестирлөө коду бул жерде жеткиликтүү болот, андыктан программаны ишке ашырардан мурун текшере аласыз.

Эмне үчүн каскаддык контроллерди колдонуу керек

Каскаддык контроллер системанын эки бөлүгүн башкарат. Бул учурда каскаддык контроллердин сырткы укуругу болот, ал IR сенсорунан кайтарым байланышта болгон контроллер. Ички циклде вентилятордун айлануу ылдамдыгын аныктоочу тахометрдин импульстарынын ортосундагы убакыт түрүндө кайтарым байланыш бар. Көзөмөлдү ишке ашыруу менен системадан жакшы жооп алууга болот.

Каскад контроллери кантип иштейт?

Контроллердин сырткы цикли импульстун ички цикл контроллерине чейинки убакыттын маанисин берет. Бул контролер импульстар ортосундагы каалаган убакытка жетүү үчүн кызмат циклин көбөйтөт же төмөндөтөт.

Түзмөктө өзгөртүүлөрдү киргизүү

Тилекке каршы, мен бул өзгөртүүлөрдү киргизе алган жокмун, анткени ага кире алган жокмун. Мен иштелип чыккан бирдиктүү цикл контроллерин сынап көрдүм. Мен каскад контроллерин азырынча сынап көрө элекмин. Мен контролер иштейт деп ишенем, бирок иштөө үчүн бир аз өзгөртүүлөрдү талап кылышы мүмкүн.

Тестирлөө

Мен контроллерди сынап көрө алган жокмун, анткени эки булакты окшоштуруу кыйын болчу. Каскаддык контроллер менен мен көрө алган жалгыз көйгөй-бул тышкы цикл ички циклге берилген белгиленген чекти жогорулатууга аракет кылгандыктан, чоңураак чекит чындыгында күйөрман үчүн төмөнкү RPS болуп саналат, бирок муну оңой эле чечсе болот. белгиленген чекти сигналдын максималдуу маанисинен алыңыз (4095 - белгиленген чек - tacho_result).

10 -кадам: Жыйынтык

Жалпысынан алганда, долбоор мен ойлогондой иштейт, мен жыйынтыкка кубанычтамын. VHDLде PID контроллерин иштеп чыгуу аракетимди окуу үчүн убакыт бөлгөнүңүз үчүн рахмат. Эгерде кимдир бирөө бул системада кандайдыр бир вариантты колдонууга аракет кылып жатса жана кодду түшүнүү үчүн кандайдыр бир жардамды талап кылса, мага тез арада жооп берем. Ким толтурулган, бирок аткарылбаган кошумча жумушту жасоого аракет кылса, мага колуңуз менен кайрылыңыз. Кимде -ким аны ишке ашырса, анын кандай жүрүп жатканын мага билдирсе, мен абдан ыраазы болмокмун.

Сунушталууда: