You are on page 1of 3

Сензори и актуатори, 2016.

Студент: Марија Рафаиловић 109/2013


Вежба 3.
Управљање LEGO главом помоћу NI6008 USB AD/DA конвертора
Управљање мотором
Након што сте повезали мотор у вежби 2, можете да управљате истим помоћу НИ6008. Раставите
главу тако да ослободите мотор.

Задатак 1. Отворите скрипту upravljanjeMotorom.py. Упишите назив уређаја и излазни канал на


који је повезан мотор. Пошто сте повезали мотор на NI6008 преко неинвертујућег појачивача, у
променљиву zeljeniIzlazniNaponуписујете вредност која ће доћи на један крај мотора (дакле од 0 до
10 V). Међутим, пошто је тај сигнал добијен појачавањем, потребо је да одредите вредност напона
који ће се појавити на излазу AO0. Ово треба да имплементирате у линији 7 као израз који зависи
ос zeljeniIzlazniNapon. Покрените скрипту. У зависности да ли сте унели напон већи или мањи од 5
V, мотор ће се кретати у једном, или другом смеру. Испробајте ово са више вредности напона.

Задатак 2. Раскоментаришите променљиву naponNaMotoru. Сада ћемо преко ње директно да


одређујемо колики напон желимо да буде на мотору. Али, то значи да променљива
zeljeniIzlazniNapon сада више није константа, већ зависи од naponNaMotoru. Како? Измените код за
додељивање вредности овој променљивој.
Zato sto je
naponNaMotoru = 5
zeljeniIzlazniNapon = naponNaMotoru/2+2.5

Задатак 3. Додајте код који ће спречити да променљива izlazniNaponима вредност већу од 5 V или
мању од 0. Другим речима АКО је izlazniNapon ВЕЋИ од 5 V, тада би izlazniNaponтребало да буде
5 V, a у СУПРОТНОМ АКО је мањи од 0 V, тада је 0 V. Испишите код испод.
if izlazniNapon>5:
izlazninapon=5
if izlazniNapon<0:
izlazniNapon=0
Калибрација потенциометра главе
Саставите главу. Повежите крајње конекторе потенциометра на позитивни, односно негативни
крај напајања (10 V) и средњи извод напајања на аналогни улаз AI0.

Задатак 4. Калибрација потенциометра. Руком заокрените главу у положај 0 о и измерите напон


потенциометра: 0.08V.
о
Сада заокрените главу у положај 180 и поново измерите напон на потенциометру 6.68V
Ако је зависност напона од угла заокретања потенциометра линеарна функција (а јесте), одредите
функцију угла заокретања главе у зависности од напона на потенциометру.
𝑌 − 0.08
𝑋=
0.0367
Отворите скрипту potenciometar.py и унесите назив уређаја, број улазног канала на који је
потенциометар повезан и израз за одређивање угла потенциометра на основу измереног напона.
Покрените скрипту. Руком заокрећите главу. У конзоли се исписују измерене вредности угла. Да
ли одговарају стварном заокренутом углу?
Odgovaraju.

Позициони серво
Направићемо пропорционални позициони контролер за ЛЕГО главу. Уносићемо жељени угао,
мерићемо тренутни угао преко потенциометра, а наш алгоритам треба да одреди грешку тих
вредности, да их помножи са појачањем које му задамо и тај напон проследи ка мотору.

Задатак 5. Нацртајте блок дијаграм пропорционалног позиционог серво система.

Која је вредност грешке? Грешка представља разлику жељеног и тренутног угла.


Која је вредност управљања? Вредност управљања се добија тако што се вредност грешке
помножи са појачањем.
Сада ћемо имплементирати позициони серво који ће управљати позицијом главе.

Задатак 6. Отворите фајл pozicioniServo.py. Унесите назив уређаја, улазни канал на који је повезан
потенциометар, излазни канал на који је повезан мотор. Унесите жељени угао од 0 о до 180 о . Као у
задатку 4, унесите израз за одређивање угла потенциометра у зависности од измереног напона.
Унесите израз за одређивање грешке на основу променљивих zeljeniUgaoи potenciometar. Унесите
вредност појачања. Ово је константна вредност и за почетак би било добро да се изабере 0.1.
Унесите израз за одређивње управљања на основу greskaи pojacanje. Унесите израз за одређивање
излаза AO0 и израз за ограничавање излаза као у задацима 1, 2 и 3. Покрените скрипту. Да ли
глава тежи да заузме угао који сте унели? Ако је кретање главе преспоро, можете повећати
појачање и пробати поново. Ова скрипта се зауставља са ctrl+c.

Управљање ЛЕГО главом.


Повежите један фотосензор са аналогним улазом AI1, a други фотосензор са аналогним улазом
AI2. Отворите скрипту legoGlava.py. Упишите назив уређаја, канал на који је повезан
потенциометар, канал на који је повезан леви фотоотпорник, канал на који је повезан десни
фотосензор и излазни канал на који је повезан мотор.
Унесите офсет фотосензора (разлику напона на фотосензорима) за удаљеност светла од 30 cm, што
сте одредили у вежби 2.

Задатак 7. Алгоритам за управљање ЛЕГО главом.Унесите израз за угао потенциометра на основу


измереног напонакао у претходним задацима. Унесите израз за одређивање грешке на основу
променљивих foto1 и foto2. Унесите појачање (за почетак може да буде једнако 1). Док не будете
сигурни да алгоритам за заокретање главе не ради савршено, не морате да се бавите
имплементацијом израза за одређивање удаљености, нек за почетак избацује само константно 1.
Унесите израз за управљање на основу грешке и појачања. Унесите израз за вредност излаза и
алгоритам за ограничавање излаза као у претходним задацима. Покрените скрипту. Проверите да
ли глава прати извор светлости. Ако је глава преспора, повећајте појачање. Ако се понаша
исувише осцилаторно, или прави велике прескоке, смањите појачање. Сада можете да
имплементирате изразе за одређивање удаљености које сте одредили у оквиру вежбе 2. Задатак
завршавате са тим да предметном професору или сараднику покажете функционалну главу која
ради исправно и која одређује удаљеност са разумно малом грешком.

You might also like