Автор Тема: Arduino за стрелки  (Прочетена 58183 пъти)

svetljjjo

  • Гост
  • Trade Count: (0)
Re: Arduino за стрелки
« Отговор #105 -: 02 Март 2018, 21:03:54 »
тук в 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

  • Trade Count: (35)
  • Hero Member
  • *****
  • Публикации: 2388
  • Рейтинг: 978
  • H0, еп. I, II, III, IV, София
    • Снимките ми ...
Re: Arduino за стрелки
« Отговор #106 -: 02 Март 2018, 21:23:49 »
Светльо, в setup не можеш нищо да проверяваш. Сервото не може да се чете. Просто му се дава команда да отиде в началната посока. И се надяваш отгоре да няма влак.

dred77

  • Trade Count: (2)
  • Sr. Member
  • ****
  • Публикации: 386
  • Рейтинг: 328
Re: Arduino за стрелки
« Отговор #107 -: 02 Март 2018, 22:18:02 »
 Малко встрани от 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

  • Гост
  • Trade Count: (0)
Re: Arduino за стрелки
« Отговор #108 -: 03 Март 2018, 00:01:32 »
Off-Topic:
Светльо, в setup не можеш нищо да проверяваш. Сервото не може да се чете. Просто му се дава команда да отиде в началната посока. И се надяваш отгоре да няма влак.

да абсолютно прав си
не погледнах целия код само последните постове и това което съм написал е безсмислено  ;D

Mixy

  • КЖМ - България
  • Trade Count: (3)
  • Hero Member
  • *****
  • Публикации: 1538
  • Рейтинг: 384
    • SCARM - българският софтуер за дизайн на релсови планове и жп макети
Re: Arduino за стрелки
« Отговор #109 -: 03 Март 2018, 00:46:19 »
Цитат на: mitko0888 link=topic=4987.msg110888#msg110888 date=1520018629
Сервото не може да се чете. Просто му се дава команда да отиде в началната посока. И се надяваш отгоре да няма влак.

Тука вече трябва да се вкарат онези ключета за двете крайни позиции на рамото. Дали директно, дали през релета, не мога да кажа, но те трябва да се четат на два от входовете на Ардуиното.

И в setup() следва да се проверява тяхното положение. Ако входът за положение "право" е 0 (условно), това ще значи, че рамото е "в отклонение" или "някъде по средата". Прави се цикъл в който се подава команда на сервото да се премести с една стъпка (градус или каквото е там) към положение "право" и след това се проверява отново за 1 на вход "право" - ако е налично, цикълът се прекратява. Така, при включване, стрелката винаги ще преминава в позиция "право".

Но остава проблемът с колоос, зацепена в езика. Тогава, сервото няма да може да се премести в положение "право". Затова следва да се броят и колко стъпки са му подадени, т.е. цикълът трябва да е с for. Ако стъпките са повече от максималния брой, нужни за преместване от едната крайна позиция в другата за дадената стрелка, следва излизане от първия цикъл и позициониране в положение "отклонение" с нов цикъл, при който вече сервото ще се върти в другата посока и ще се чете другото ключе за достигане на крайната позиция.

Ако и при втория цикъл не може да се достигне крайна позиция след максималния брой стъпки за пълно отклонение, следва да се подаде някаква индикация за неизправност в стрелката, защото сервото не работи, някое от ключетата е дефектирало, има прекъсване в окабеляването или някой е омазал баластирането и езика е залепнал.

mitko0888

  • Trade Count: (35)
  • Hero Member
  • *****
  • Публикации: 2388
  • Рейтинг: 978
  • H0, еп. I, II, III, IV, София
    • Снимките ми ...
Re: Arduino за стрелки
« Отговор #110 -: 03 Март 2018, 08:18:09 »
Mixy, така е най-добре, ама ще стане много истинско. Не е за "първи стъпки".

pavel75

  • КЖМ - България
  • Trade Count: (18)
  • Hero Member
  • *****
  • Публикации: 1812
  • Рейтинг: 264
  • HO; IV и V; BDZ, BG; София
Re: Arduino за стрелки
« Отговор #111 -: 03 Март 2018, 10:51:29 »
Цитат на: mitko0888 link=topic=4987.msg110886#msg110886 date=1520012608
Ще трябва да си поиграеш още малко за да го видиш откъде е. Сложи някакъв delay(1000) в началото, преди първия attach, че и още един след него, преди първия write. След това нали има detach? Това всичкото да е в setup()

Махнах detach-а в setup-а и вече работи. Ако е в отклонение изключено, при включване застава в правилна позиция.
Явно му трябва повече време да се "освести"

VladoC

  • Trade Count: (0)
  • Jr. Member
  • **
  • Публикации: 64
  • Рейтинг: 42
Re: Arduino за стрелки
« Отговор #112 -: 03 Март 2018, 17:14:09 »
Ще се опитам и аз да споделя какво направих.
Не е по-различно от описаното до тук, но работи успешно.
Използвам Arduino Nano, като с него управлявам четири стрелки.
За всяка стрелка се използват четири извода на Arduino: един за бутона, един за сервота и два за светодиодите, пиказващи  положението на стрелката.
Програмката е написана от брат ми - Иван Цанков, който също е запален по това хоби.
Ако Mixy ми помогне ще я публикувам тук.
Иначе платката изглежда така:







Направих тестов модул с три стрелки собствено производство. Целта е да тествам стрелките и управлението им със сервота, преди да се захвана с нещо по-сериозно.
Получи се това:



И ето как действа:

https://youtu.be/XKqiFnL7eAw


pavel75

  • КЖМ - България
  • Trade Count: (18)
  • Hero Member
  • *****
  • Публикации: 1812
  • Рейтинг: 264
  • HO; IV и V; BDZ, BG; София
Re: Arduino за стрелки
« Отговор #113 -: 03 Март 2018, 19:15:13 »
Изглежда страхотно. Ще бъда благодарен ако пуснеш кода.
Един въпрос - 4 стрелки всяка ползва по 4 пина това прави 16 пина, а ардуиното има 14?
Ползвате някой от аналоговите ли?

VladoC

  • Trade Count: (0)
  • Jr. Member
  • **
  • Публикации: 64
  • Рейтинг: 42
Re: Arduino за стрелки
« Отговор #114 -: 03 Март 2018, 19:53:53 »
Ардуино нано има 19 пина.
Кода не знам как мога да го кача тук. Затова писах, че Mivy трябва да ми помогне.
Иначе мога да ти го изпратя на e-mail, aкo ми кажеш твоя.
В програмката има коментари, които обясняват всичко, включително свързването на бутоните и светодиодите.

Mixy

  • КЖМ - България
  • Trade Count: (3)
  • Hero Member
  • *****
  • Публикации: 1538
  • Рейтинг: 384
    • SCARM - българският софтуер за дизайн на релсови планове и жп макети
Re: Arduino за стрелки
« Отговор #115 -: 03 Март 2018, 20:23:40 »
Не съм сигурен къде точно е проблема с качването на кода, затова ще импровизирам: отваряш си редактора, в който ти е програмата и маркираш целия код (обикновено става с Ctrl-A), след което го копираш в клипборда (Ctrl-C). Накрая започваш нов отговор в темата тук и поставяш кода от клипборда в браузъра (Ctrl-V).

VladoC

  • Trade Count: (0)
  • Jr. Member
  • **
  • Публикации: 64
  • Рейтинг: 42
Re: Arduino за стрелки
« Отговор #116 -: 03 Март 2018, 20:27:24 »
Вместо да копирам кода, не може ли да го прикача като файл?
Все пак е доста дълъг.

Mixy

  • КЖМ - България
  • Trade Count: (3)
  • Hero Member
  • *****
  • Публикации: 1538
  • Рейтинг: 384
    • SCARM - българският софтуер за дизайн на релсови планове и жп макети
Re: Arduino за стрелки
« Отговор #117 -: 03 Март 2018, 20:55:06 »
Може, но трябва да използваш външен сървър където да го качиш или пък някоя услуга като Google Disk, Dropbox и др. подобни, след което да пуснеш линк към файла.

VladoC

  • Trade Count: (0)
  • Jr. Member
  • **
  • Публикации: 64
  • Рейтинг: 42
Re: Arduino за стрелки
« Отговор #118 -: 03 Март 2018, 21:18:30 »
Това за мен е доста сложно, неразбираемо.
Предпочитам да ти го изпратя на електронна поща и ти да го качиш.
Извинявай, че минах на ти!

pavel75

  • КЖМ - България
  • Trade Count: (18)
  • Hero Member
  • *****
  • Публикации: 1812
  • Рейтинг: 264
  • HO; IV и V; BDZ, BG; София
Re: Arduino за стрелки
« Отговор #119 -: 03 Март 2018, 21:51:28 »
с любезното съдействие на VladoC:

https://www.dropbox.com/s/zh90gvqrszc43x0/Servo_PWM_Digi.ino?dl=0