Форум РадиоКот https://radiokot.ru/forum/ |
|
Управление сервомашинками через COM порт ПК https://radiokot.ru/forum/viewtopic.php?f=24&t=139125 |
Страница 1 из 2 |
Автор: | Alexey1969 [ Ср дек 07, 2016 05:40:26 ] | ||
Заголовок сообщения: | Управление сервомашинками через COM порт ПК | ||
Задумалось мне сделать управление сервомашинками от компьютера, для новогодней аниматроники, и желательно попроще. В результате получилась схемка на «голом» контроллере. Как думаете , будет достаточно или что то все же надо добавить ?
|
Автор: | vlasovzloy [ Ср дек 07, 2016 11:59:03 ] |
Заголовок сообщения: | Re: Управление сервомашинками через COM порт ПК |
лучше с оптопарой сделать. а то коротнешь и спалишь и порт на компе и свое устройство. а по схеме на GP4 стабилитрон 5 вольт |
Автор: | Alexey1969 [ Ср дек 07, 2016 15:52:19 ] |
Заголовок сообщения: | Re: Управление сервомашинками через COM порт ПК |
Не... оптрон тут точно не пойдет, связь то двухсторонняя. Разновидность LIN шины. А стабилитрон зачем ? |
Автор: | vlasovzloy [ Ср дек 07, 2016 16:46:25 ] |
Заголовок сообщения: | Re: Управление сервомашинками через COM порт ПК |
на всякий случай. у ком порта же +12 и -12 уровни |
Автор: | Alexey1969 [ Ср дек 07, 2016 17:15:03 ] |
Заголовок сообщения: | Re: Управление сервомашинками через COM порт ПК |
А.... нет необходимости. Уровни ограничиваются до уровней источника питания через встроенные на входе контроллера защитные диоды. В целом все получилось, жаль что при использовании внутреннего 4 мГц генератора, точность позиционирования 2 градуса. Хотя при 2 машинках можно получить и 1 градус. Быстродействия чуток не хватает ![]() |
Автор: | vlasovzloy [ Ср дек 07, 2016 17:20:49 ] |
Заголовок сообщения: | Re: Управление сервомашинками через COM порт ПК |
а что за проект? интересно бы посмотреть, мож и повторить |
Автор: | Alexey1969 [ Ср дек 07, 2016 17:28:29 ] |
Заголовок сообщения: | Re: Управление сервомашинками через COM порт ПК |
Пока только видео https://www.youtube.com/watch?v=D5SoTyg71BA Описание думаю завтра сделаю, выложу вместе с исходниками и прошивками. Планируется для анимации игрушек, НГ на носу ![]() |
Автор: | vlasovzloy [ Ср дек 07, 2016 17:54:42 ] |
Заголовок сообщения: | Re: Управление сервомашинками через COM порт ПК |
блюпуп прикрутить, и можно с телефона управлять |
Автор: | Alexey1969 [ Ср дек 07, 2016 18:01:44 ] |
Заголовок сообщения: | Re: Управление сервомашинками через COM порт ПК |
Можно. Можно и любой радио модуль, можно и просто алгоритм вшить. Там половина памяти свободна осталась, при том что программа не оптимизирована, многое решено прямо в лоб, тяжело и громоздко ![]() |
Автор: | Мурик [ Ср дек 07, 2016 18:59:01 ] |
Заголовок сообщения: | Re: Управление сервомашинками через COM порт ПК |
Alexey1969 писал(а): жаль что при использовании внутреннего 4 мГц генератора, точность позиционирования 2 градуса. Надо было вместо PIC12F629 поставить STM32F030F4P6 (у которого тактовая частота не 4, а 48 МГц ![]() ![]() У него USART может работать с полудуплексном режиме используя один вывод для приема и передачи. ![]() |
Автор: | Alexey1969 [ Ср дек 07, 2016 19:23:01 ] |
Заголовок сообщения: | Re: Управление сервомашинками через COM порт ПК |
Этот тоже может работать быстрее, но встроенный генератор именно 4 мГц, а для большей скорости нужен внешний резонатор, а это лишняя обвязка. Люблю минимализм в железе ![]() Опять же разные архитектуры, так что быстродействие исходя из тактовой сравнить не получится. Да и по привык я к Гарвардской ![]() Полудуплексе тут тоже реализован. |
Автор: | Мурик [ Ср дек 07, 2016 19:56:59 ] |
Заголовок сообщения: | Re: Управление сервомашинками через COM порт ПК |
Alexey1969 писал(а): но встроенный генератор именно 4 мГц STM32 может на встроенном RC генераторе работать на частоте 48 МГц, т. е. кварц не нужен.Alexey1969 писал(а): Полудуплексе тут тоже реализован. Программно? Речь про аппаратную реализацию.
|
Автор: | Alexey1969 [ Ср дек 07, 2016 20:03:22 ] |
Заголовок сообщения: | Re: Управление сервомашинками через COM порт ПК |
Вроде по датшиту только 8 встроенным, хотя я не знаком. Программно. Какая разница , что внутри ящика , если он делает то что нужно ?:) |
Автор: | Мурик [ Ср дек 07, 2016 20:32:15 ] |
Заголовок сообщения: | Re: Управление сервомашинками через COM порт ПК |
Alexey1969 писал(а): Какая разница Разница в надежности. Программный UART и программный ШИМ для сервоприводов могут не всегда дружить друг с другом. Или UART что-то не то примет или передаст, или стабильность частоты/скважности ШИМ может "поплыть".
|
Автор: | Alexey1969 [ Чт дек 08, 2016 07:11:23 ] |
Заголовок сообщения: | Re: Управление сервомашинками через COM порт ПК |
Большая надежность аппаратной реализации, это на мой взгляд, из области верований ![]() ![]() Добавлено after 2 hours 35 minutes 20 seconds: Все файлы тут http://autobills.ru/kusc1.html |
Автор: | abc [ Чт дек 08, 2016 07:38:49 ] |
Заголовок сообщения: | Re: Управление сервомашинками через COM порт ПК |
Возможно, стоит попробовать PIC12F1822. Аппаратный UART, четыре PWM и частота внутреннего генератора до 32 MHz. |
Автор: | Мурик [ Чт дек 08, 2016 12:20:10 ] |
Заголовок сообщения: | Re: Управление сервомашинками через COM порт ПК |
Посмотрел исходник... Во первых, на сервопривод нужно подавать импульсы с частотой 50 Гц и длительностью импульса от 1 до 2 мс. А у вас сколько? Во вторых, где гарантия что при 500 микросекундной задержке или выполнении цикла формирующего импульсы для сервомашинок не придут данные с COM порта и они частично или полностью будут пропущены по той причине что в этот момент не выполняется функция SERIN? Есть 100% уверенность что такого не может произойти? Alexey1969 писал(а): А вопрос надежности программной реализации исключительно вопрос прямизны рук программиста Ваш вариант мягко говоря не самый надежный и правильный. Выше написал почему.
|
Автор: | Alexey1969 [ Чт дек 08, 2016 12:43:04 ] | ||
Заголовок сообщения: | Re: Управление сервомашинками через COM порт ПК | ||
Что касается длительности импульса, то не верно, она 450-2450 , смотрим датшит. В реальности, частота следования импульсов может не обязательно должна быть строго 50 герц, она совершенно спокойно может меняться в достаточно широких пределах и влияет только на скорость позиционирования, но не на положение. По гарантиям исполнения, команды действительно могут быть пропущены, ну так контроллер возвращает подтверждения если все исполнил ![]() Собственно все и выложено, что возможно будет предложен лучший вариант ![]()
|
Автор: | Мурик [ Чт дек 08, 2016 18:37:14 ] |
Заголовок сообщения: | Re: Управление сервомашинками через COM порт ПК |
Alexey1969 писал(а): что возможно будет предложен лучший вариант Ну я предлагал. ![]() Мурик писал(а): Надо было вместо PIC12F629 поставить STM32F030F4P6 В чем преимущество STM32F030F4P6 в данном случае?Во первых, аппаратный USART с поддержкой полудуплексного режима с приемом и передачей по одной линии. Это гарантирует отсутствие пропуска данных из-за занятости процессора. При приеме байта произойдет прерывание. Более того, если настроить использование DMA то можно принимать и передавать не по байтно, а по множеству байт не отвлекая процессор, т. е. аппаратно. Во вторых, есть 32-ух битный таймер которого больше чем достаточно по разрядности для генерации ШИМ для 4-ёх сервоприводов. И в третьих, стоимость PIC12F629 и STM32F030F4P6 примерно одинаковая, но если сравнить их характеристики, то становится понятно что PIC12F629 даже близко не сравнится с STM32F030F4P6 по возможностям. |
Автор: | Alexey1969 [ Чт дек 08, 2016 18:50:59 ] |
Заголовок сообщения: | Re: Управление сервомашинками через COM порт ПК |
Не... не приемлемо. Во первых железка собрана, во вторых там архитектура другая, пока нет времени, да и желания на изучение. Ну и самое главное , поскольку задача чисто спортивная, интересно выжать из минимального железа максимальные возможности. Так что вопросы только по алгоритму ![]() Добавлено after 6 minutes 1 second: Вот например главный цикл: ;циекл для задержки ASM MOVLW D'100' ;загружаем количество циклов MOVWF _I MMM CLRWDT ;незабываем очищать сторожевой таймервдлинном цикле ASM ;канал 0 MOVF _I, W ;переменную цикла в W XORWF _Serv_0, W ;маскируем переменной,если 0,совпало BTFSC STATUS, Z ;пропускаем следующую если не совпало BCF GPIO, 0 ;завершим импульс ;канал 1 MOVF _I, W ;переменную цикла в W XORWF _Serv_1, W ;маскируем переменной,если 0 то совпало BTFSC STATUS, Z ;пропускаем следующую еслине совпало BCF GPIO, 1 ;завершим импульс ;канал 2 MOVF _I, W ;переменную цикла в W XORWF _Serv_2, W ;маскируем переменной,если 0 то совпало BTFSC STATUS, Z ;пропускаем следующую еслине совпало BCF GPIO, 2 ;завершим импульс ;канал 3 MOVF _I, W ;переменную цикла в W XORWF _Serv_3, W ;маскируем переменной,если 0 то совпало BTFSC STATUS, Z ;пропускаем следующую еслине совпало BCF GPIO, 5 ;завершим импульс DECFSZ _I,F GOTO MMM ENDASM Установки каждой машинки сравниваются с переменной цикла, на сравнение каждой 4 команды. Что занимает много времени. Вот если бы удалось сократить... можно повысить разрешение установки |
Страница 1 из 2 | Часовой пояс: UTC + 3 часа |
Powered by phpBB © 2000, 2002, 2005, 2007 phpBB Group http://www.phpbb.com/ |