Подмяна на rc серво протокол

Няма да говоря за недостатъците на протокола RC-PWM, а защо не и I2C, който вече се използва, например, в OpenServo. Мисля, че всичко това ще стане ясно по-късно.
Вторият режим е двоичен протокол за управление на мрежа от подчинени устройства. Схемата на свързване е както следва, използвайки примера на три устройства.

До RX се поставят диоди и издърпвания, така че само капацитетът на диодите да се зарежда през резистора, а не всички проводници.
Какво ще бъде в полезния товар се определя от номера на крайната точка. Тоест, ако изпратим нещо някъде, тогава трябва да знаем какво устройство има и какво получава. За сървър можете да направите нещо подобно.
В S можете да поставите контролна сума, можете да не правите нищо.
Номерът на крайната точка определя не само формата на пакета, но и наличието / липсата на отговор. Самият процес на отговор е следният.
Както можете да предположите, този протокол е адаптиран за използване на DMA. Формираме масив с всички пакети и включваме предаването. В крайна сметка имаме получения масив от пакети с отговори.
Забравих да кажа за превключването от един режим на друг. От shell към двоичен преход при получаване на някакъв еднобайтов NOP пакет без полезен товар. Превключване обратно към обвивката чрез таймер, 1 секунда например, ако все още няма двоични пакети, тогава отидете.
Можете да ускорите малко обмена, ако не изпратите ep-номер в отговора, тогава контейнерът може да не е необходим. И къде е чий отговор и така е ясно, за да се изпращат заявки, ако няма повреди / пропускане на байтове.
Така изглежда, достатъчно просто ли е?
Физическото ниво засега не ми харесва най-много. станисъмнения относно надеждността на работата при висока скорост (поне
Коментари ( 21 )
Объркан съм от наличието на режими на работа и два "протокола" (имаше и двоичен). Разбира се, може да е удобно (обикновен потребителски интерфейс през всяка терминална програма), но някак си не е спретнато :)
Може да направи конфигурация чрез двоичен протокол (като в USB чрез нулева крайна точка, тъй като вече имаме крайни точки).
Но това е само моята промяна.
Отличноневъзможност за проста подмяна по принцип, т.к трябва да зададете поне номера на сървъра. Затварянето на линията при едно от сервомоторите поставя цялата мрежа. Необходимостта от използване на микробрадавицата (или организацията на мека брадавица), докато нейната брадавична обвивка на готовото устройство е много по-важна от черупките на отделните двигатели.
Ето защо лично за мен такъв канал е неприемлив.
Грешите, ако мислите, че е толкова лесно да вземете и смените сервото или ESC на модела. В повечето случаи ESC трябва да бъде предварително конфигуриран и калибриран.
Затварянето на линията при едно от сервомоторите поставя цялата мрежа.
Основното нещо е защо се прави всичко това и къде планирате да използвате тези сервосистеми.
Основната цел и приложение на сервиза е техниката на моделиране. Традицията и съвместимостта играят важна роля тук. Протокол с последователно предаване на канални импулси с различна ширина в оборудване за пропорционално радиоуправление се появи още през 60-те години и беше окончателно установен през 70-те години. Въпреки цялата си простота, той осигури достатъчно параметри за точност, скорост и най-важното - надеждност и устойчивост на шум. Оттогава той се превърна в основен стандарт за моделистите. Под него са направени както самите сервоприводи, така и приемо-предавателното оборудване. Дори и с преминаването към цифрови методи - комуникационният протоколсамото серво с приемника остана непроменено. Например, сега е популярно евтино цифрово оборудване на 2400 MHz. Автоматичен избор на канал между приемник и предавател, цифрова пакетна комуникация между тях. Но имайте предвид, че в приемника цифрата се преобразува в същия код с модулация на продължителността на импулса, както беше преди половин век.
Имаше и "цифрови" сервомашини. Но, отново, те са цифрови само вътре, от датчика за положение до двигателя. Те все още получават управляващ сигнал с продължителност на импулса, като аналоговите.
Защо е така? Да, защото можете да закупите ВСЕКИ серво от ВСЕКИ производител (с тегло от 2-3 грама до половин килограм, със сила от части от кг до десетки кг на сантиметър) - и да ги използвате на всякакви модели, с всяко радио оборудване. Без да мисля как и какво има вътре.
Ако правиш нещо за себе си - можеш да правиш всичко и както искаш. Това е ваше право. Но ако искате други да го използват, тогава има много проблеми със съвместимостта със съществуващото оборудване.
И никой сериозен моделист няма да захвърли надеждната си техника, изпитана през годините, в името на кой знае какво, произведена от кой знае кой, колкото и да се рекламира.
Ще успеете ли да осигурите на всички едно и също надеждно, удобно, с голяма функционалност приемно-предавателно оборудване? И кой ще го вземе, ако само вие го направите? Кога е днес, утре не се знае...
И куп други подобни проблеми...
За себе си никой не ви притеснява да изхвърлите контролната му платка от всяко серво и да инсталирате своя собствена, контролирайки я както искате от всичко. Просто - вече няма да е сървър. Защото при думата "серва" - всеки моделист (и не само) знае какво е това, как и къде да го залепи и с всичкоТя ще работи. И не се знае какво устройство е създадено от някого, не се знае защо.
Моделната индустрия е строго стандартизирано нещо и е невъзможно да се пробие там с гег. Те няма да приемат.
За себе си можете да правите каквото искате. Поне веднага управлявайте сервото от мобилен телефон. Няма проблем, всичко е във вашите ръце. Направете каквото искате.
Въпреки че, честно казано, не виждам голяма полза, която би ми дала например в моя робот от такива преобразувани сервосистеми. Много по-удобно ми е да използвам родния им протокол. Знаейки, че във всеки един момент мога да заменя едно серво с което и да е друго... Да генерирам пакет от импулси с период от 20 ms и зададена продължителност — какво по-лесно за контролера? На всякакви крака на порта, за произволен брой сервизи... Със сигурност не комуникация с него чрез USART или, освен това, I2C...
Ако използвах голям брой серво (например в някакъв вид android или hexapod) - дори тогава бих предпочел да не преправям всяко серво, а да инсталирам специален контролер, който да ги управлява, който да управлява поне петдесет стандартни серво чрез регистри за преместване, получавайки управление на свой ред - от централния ... Това е по-добре, отколкото да преправя самите серво.
Със сигурност не общува с нея чрез USART или, освен това, I2C ...
Да генерира пакет от импулси с период от 20 ms и зададена продължителност - какво може да бъде по-лесно за контролера? На всякакви леви крака, за произволен брой серв...
Е, тук има малък проблем - стабилността на таймингите. Например, имам китайско серво, управлявано от библиотеката Servo arduino (и това е много добре направено, трябва да се отбележи), не спря напълно - бръмчи около зададената позиция (въпреки че може би това е проблемът на самата серва - тя е доста скапана).
И туквъв всичко останало - недвусмислено съгласен. Да, и инсталирането на специален MK, който ще генерира сигнал за серво, ако е необходимо, е очевидно по-евтино и по-малко излишно от инсталирането на такъв контролер във всяко серво.
Всяко цифрово серво може да бъде програмирано по същите 3 проводника (сигнал, захранване, общ), като се използва специален протокол. В този случай се задава мъртва зона, максимални ъгли на отклонение и куп други параметри. За да се опрости тази процедура за неспециалисти (моделисти), се издават специални "карти за програмиране" - програмисти на тези параметри. Или по-гъвкави серво програмисти - например www.hobbyking.com/hobbyking/store/__15515__GWS_DSP_1_Digital_Servo_Programmer.html
Също така няма интерес към оборудването на модела поради протокола, така че не се очакват проблеми със съвместимостта. Не предлагам на никого да преправя всички сървъри. Не смятам да правя нищо на всеки, който иска.
Вероятно винаги се стремя твърде много да контролирам всички компоненти на системата, в противен случай не е интересно, оказва се това, което всички вече са правили много пъти, сглобяване от готови модули. И освен това виждам много възможности, които дава този контрол. Например, роботизирана ръка може да оцени теглото на заснет обект без допълнителни сензори.
Това е предназначено основно за определяне и настройка на параметрите на сервото при програмирането му, но никой не ви пречи да ги използвате за собствени цели.
Като човек, който се занимава с моделство, ще си позволя една малка забележка.
Написахте всичко правилно, PWM е стандарт и все още се използва, въпреки факта, че радио оборудването и задвижващите механизми отдавна са станали цифрови. PWM осигурява съвместимост и е чудесна.
Но това не означава,че той напълно устройва всички и всички са доволни. Ако със сервосистемите всичко е сравнително просто, тогава с ESC вече се появяват определени проблеми. Например, за квадрокоптерите стандартната честота на ШИМ (50 Hz) не е достатъчна, затова преминахме към Бърза / Турбо ШИМ (
400Hz). За моделите автомобили, в допълнение към оборотите на двигателя, трябва да контролирате заден ход и, за предпочитане, спирачен режим. Трябва да избягвате, за да се "вместите" в стандартния протокол, да калибрирате ESC за различни режими.
Възможността за конфигуриране на серво и ESC е (както правилно отбелязахте). Но това разширение прилича повече на "патерица". За да направите това, задвижващият механизъм трябва да бъде въведен в специален режим на конфигурация; той няма да работи за комуникация със серво или ESC в „нормален“ режим. И бих искал. Например, бих искал обратна връзка (да разбера истинската позиция на сервото, да разбера такива параметри като ток, входно напрежение и температура от ESC).
Така че не всичко е толкова просто и моделистите и производителите вече мислят за преминаване към цифров интерфейс. Но засега не всичко е толкова гладко, има много проблеми (липса на единен стандарт и т.н.).