Електроника и Електротехника | Electronics and Electrical Engineering > Аналогово управление | Analog Control
Arduino за стрелки
svetljjjo:
тук в setup трябва да се прави проверка с if
digitalWrite (led_pravo, HIGH);
digitalWrite (led_otklonenie, LOW);
примерно както е направена такава във loop
if(pos == pravo){
digitalWrite (led_pravo, HIGH);
digitalWrite (led_otklonenie, LOW);
}
else{
digitalWrite (led_otklonenie, HIGH);
digitalWrite (led_pravo, LOW);
}
а може би ще е по добре и със
switch (pos ) {
case pravo:
digitalWrite (led_pravo, HIGH);
digitalWrite (led_otklonenie, LOW);
break;
case diasno :
digitalWrite (led_otklonenie, HIGH);
digitalWrite (led_pravo, LOW);
break;
default:
digitalWrite (led_otklonenie, LOW);
digitalWrite (led_pravo, LOW);
}
в случай че позицията е неопределена някаде е спряло къдету му е дошло
mitko0888:
Светльо, в setup не можеш нищо да проверяваш. Сервото не може да се чете. Просто му се дава команда да отиде в началната посока. И се надяваш отгоре да няма влак.
dred77:
Малко встрани от Arduino, някой може ли да предложи читава схема за захранване на серво мотори /5V,3-5A/, при включване да не подскачат/ както се вижда и в клипа на колегата/. Аз ги мъча по DCC, но при подаване на захранването от декодера : ,
подскачат дразнещо и застават в положението, в което са спрени /cv34 -1/. Пробвах и това :http://www.fucik.name/masinky/servo/Acc_decc_4servo_sch.GIF, ефекта е същият. С това http://www.elimex.bg/product/96196/zahranvasht-blok-hy3005d.html без управляван пин също подскача.
Най-интересно е, че с това http://www.constructor.bg/mk/Supply.htm, при подаване на напрежение сервото помръдва нищожно малко /може би около 0,5мм/, просто както се вижда е доста по трудоемка схема от горе описните.
Някой пробвал ли е UBEC Servo Power Supply със SG90 и дали има ефект от подобно нещо :https://es.aliexpress.com/item/Hot-1pc-BEC-UBEC-3A-5V-Brushless-Receiver-Servo-Power-Supply-for-RC-Airplane-Aircraft-New/32787549778.html?spm=2114.search0204.3.1.10777051ae5jfo&ws_ab_test=searchweb0_0%2Csearchweb201602_1_10152_10151_10065_10344_10068_10342_10343_10340_10341_10084_10083_10618_10304_10307_10302_5711211_10313_10059_10534_100031_10103_10627_10626_10624_10623_10622_5722411_10621_10620_5711311%2Csearchweb201603_37%2CppcSwitch_5_ppcChannel&algo_expid=e0c1931d-29dd-482f-86bf-d0b6e200d19b-0&algo_pvid=e0c1931d-29dd-482f-86bf-d0b6e200d19b&transAbTest=ae803_5&priceBeautifyAB=0.
svetljjjo:
Off-Topic:Светльо, в setup не можеш нищо да проверяваш. Сервото не може да се чете. Просто му се дава команда да отиде в началната посока. И се надяваш отгоре да няма влак.
да абсолютно прав си
не погледнах целия код само последните постове и това което съм написал е безсмислено ;D
Mixy:
--- Цитат на: mitko0888 link=topic=4987.msg110888#msg110888 date=1520018629 ---Сервото не може да се чете. Просто му се дава команда да отиде в началната посока. И се надяваш отгоре да няма влак.
--- Край на цитат ---
Тука вече трябва да се вкарат онези ключета за двете крайни позиции на рамото. Дали директно, дали през релета, не мога да кажа, но те трябва да се четат на два от входовете на Ардуиното.
И в setup() следва да се проверява тяхното положение. Ако входът за положение "право" е 0 (условно), това ще значи, че рамото е "в отклонение" или "някъде по средата". Прави се цикъл в който се подава команда на сервото да се премести с една стъпка (градус или каквото е там) към положение "право" и след това се проверява отново за 1 на вход "право" - ако е налично, цикълът се прекратява. Така, при включване, стрелката винаги ще преминава в позиция "право".
Но остава проблемът с колоос, зацепена в езика. Тогава, сервото няма да може да се премести в положение "право". Затова следва да се броят и колко стъпки са му подадени, т.е. цикълът трябва да е с for. Ако стъпките са повече от максималния брой, нужни за преместване от едната крайна позиция в другата за дадената стрелка, следва излизане от първия цикъл и позициониране в положение "отклонение" с нов цикъл, при който вече сервото ще се върти в другата посока и ще се чете другото ключе за достигане на крайната позиция.
Ако и при втория цикъл не може да се достигне крайна позиция след максималния брой стъпки за пълно отклонение, следва да се подаде някаква индикация за неизправност в стрелката, защото сервото не работи, някое от ключетата е дефектирало, има прекъсване в окабеляването или някой е омазал баластирането и езика е залепнал.
Навигация
[0] Списък на темите
Премини на пълна версия