Статус: Макет готов. В связи с переходом на USB-процессор перетачиваю firmware. В связи с уходом от HID Feature Report на HID Control Message перетачиваю ASCOM-драйвер.
Цель проекта: Кто фотографировал небо или наземные объекты в далёкие времена фотиков без автофокуса, знает правило: "лучше один кадр в фокусе, чем 100 без фокуса". В астофото фокусировка процесс длительный и вручную геморойный. Чтобы его автоматизировать, ставят шаговик / серву с предсказуемым и максимально повторяемым положением.
Структура проекта глобально:
USB: современно, просто, чуток глючно, но де-факто современный стандарт.
Лично для меня прорыв состоял в начале использования мною USB-процессора, старшего брата уже вдоль и поперёк изученного atmega8..16. Звать молодца at90usb162, поставляется только в мелконогом квадратном smd корпусе, но я уже наловчился паять таких жуков, благо в продаже есть макетки под TQFP32 корпус ( http://photo.milantiev.com/?dir=1439 ). До использования проца с аппаратным USB я пользовался программной эмуляцией USB 1.0. Есть и плюсы, и минусы V-USB (программного USB). Основной плюс в возможности использовать DIP-корпуса процессоров, для пайки которых не нужна специальная макетка ( http://photo.milantiev.com/?dir=1427 ). Основной минус в малой скорости обмена с устройством и главное - в высокой загрузке микроконтроллера. Использовать USB-COM, как я делал раньше... ну меня коробит от тыщи ком-портов в системе, причём где какой не поймёшь.
Впрочем, о проекте :). Проект очень простой, состоит из двух частей
- Тот самый USB-процессор. Разъёмчик, кондейчики, питание от USB с огромным запасом. Отдельный бонус, что программируется процессор через USB без доп. средств, кроме разве что пары кнопок на плате. Есть, конечно, оборотная сторона медали - заблокировано 4 / 16 кбайт памяти;
- Драйвер шаговика. Этому вопросу я уделил ох как много времени и даже заказал много разных микрух, но пока "каша варится", я сделал по старинке, так как решает именно эту задачу: буду использовать ULN2003 (ток до 0.5А на канал) и униполярные моторы в полушаге. Потом поставлю L289n, будет биполярник без стабилизации тока. Потом поставлю тошибовский драйвер (уже заказал), будет 1/16 микрошага со стабилизацией тока;
- Один любой термодатчик. 1wire или twi (i2c), не суть;
- Грелка на ШИМ-выход проца. Регулировка из окна настройки драйвера.
Схема:
[потом обязательно нарисую.]
Печатная плата:
[пока на макете всё. Но плату обязательно буду заказывать. Сейчас общаюсь с китайцами.]
[картинки компонент]
Программная часть:
Состоит аж из трёх частей. Это часть на компе. Одна часть виндовая, системная - это низкоуровневый USB-драйвер устройства. Чтобы не писать эту часть самому, моё устройство прикидывается Human Interface Device (HID). Вторая часть на той же винде, это высокоуровневый драйвер. Считается хорошим тоном, чтобы астрономический драйвер был ASCOM-совместимый. Под винду пишу на C# и гуд, что ASCOM даёт шаблоны именно на C# под каждый тип драйвера, в том числе шаблон драйвера фокусёра.
HID может передавать 1000 пакетов в секунду, каждый пакет 64 байт, то есть скорость общения 64000 байт в сек, я только не помню симплекс или дуплекс. В любом случае более чем достаточно, так как опрос одним 64байт пакетом раз в секунду уже хорошо, а два раза в секунду так просто супер.
Часть на мк (firmware) сделал через WinAvr. Сначала думал использовать LUFA, но потом натолкнулся на проект Teensy USB Development Board на том же проце с простым и понятным примером RAW HID общения. 64 байта налево, 64 байта направо. Дальше изголяйся как хочешь.
[Протокол в разработке]
[Код выложу здесь: http://oleg.milantiev.com/projects/]
Включает в себя: [как сделаю..]
- WinAvr: проект. Часть на МК;
- c-sharp: проект в MS Visual Studio 2010. ASCOM драйвер;
- Proteus: упрощённая схема и эмуляция в Proteus;
- Sprint Layout: схема в формате Sprint Layout 5.0 и картинки цоколёвки компонент.
Готовое изделие:
v.1. На atmega8 и программный usb 1.1. Устройство прикидывается HID, не требует низкоуровневого драйвера. Работает с униполярными моторами в полушаге. Опторазвязка, питание мотора 12В, так как был прецедент зависания проца от мотора.
Есть самописная прога управления (не ASCOM), есть рабочий самописный симулятор аском-драйвера фокусёра. Теперь надо просто из двух прог сделать одну, убрать дебуги и сделать форму настроек. Туда же встроена грелка, но пока это просто шим-регулятор 0...12В / 0.5А, без контроля температуры. Пока что макетка :).
.
----
сгонял в отпуск. Как приехала из кЕтая платка на тошибе TB6560AHQ, вот такая
http://www.aliexpress.com/snapshot/105010634.html
Ну и микрух таких несколько скоро придут. На этой платке попробую мотор крутить в 1/16 микрошаге. Если даст нужную плавность, буду готовить платку moFocus на at90usb162 и этом тошибовском драйвере.
Знакомый хвалил микруху, она у него в станке крутит моторы. Говорит только крупная она больно, но по мне так нормально. Ну и есть пожелания по процедуре включения питания силовой и логической части
Turn on VDD. Then, when the VDD voltage has stabilized, turn on VMA/B. Hold the control input pins Low while turning on VDD and VMA/B. (All the control input pins are internally pulled down.) After VDD and VMA/B completely stabilizes at the rated voltages, the RESET and ENABLE pins can be set High. If this sequence is not properly followed, the IC may not operate correctly, or the IC and the peripheral parts may be damaged. When RESET is released High, the CLK signal is applied and excitation is started. Only after ENABLE is also set High, outputs are enabled. When only RESET is set High, outputs are disabled and only the internal counter advances. Likewise, when only ENABLE is set High, the excitation will not be performed even if the CLK signal is applied and the outputs will remain in the initial state. A power-off sequence should be the reverse of this sequence
Другими словами:
- логику в нули: речь про ^reset, enable, в основном;
- подать 5В питание логики;
- подать питание мотора;
- поднять ресет и, чутка подождя, поднять enable;
- погнали шагать куда нужно.
Иначе есть отзывы о сгоревших микрухах.
Потом на moTrek её же буду ставить, попробую крутить моторы eq6pro, у меня валяется без платы. Прикол, но схема та же, только микрухи-драйвера два. Думаю даже, может и в фокусёр две ставить (одну плату заказать). Или просто не напаивать вторую, или позволить крутить два мотора. В максиме как раз можно два фокусёра запустить. Для гида, наверное...
----------
Приехал из отпуска. Всю неделю подзагружен работой, так что проект продвинулся только сегодня.
Опробовал недавно пришедший драйвер шаговика на тошибовской микрухе TB6560. Даёт 1, 1/2, 1/8, 1/16 микрошага для моторов 0.5А ... 3.5А с шагом 0.5А. Задаётся момент 20, 50, 75 или 100%, задаётся режим спада тока. Габариты внушительные, сравнивая с [URL="http://www.pololu.com/catalog/category/6"]polulu[/URL] драйвером на аллегровском [URL="http://www.pololu.com/catalog/product/1182"]А4988[/URL]. У того ток 2.5А.
Аллегровский был опробован и отвергнут. Продолжил поиски другого хорошего драйвера из-за невозможности на моём моторе (nema fl42, 0.4А) добиться плавности 1/16 микрошага. На максимальном Vref было примерно 3..4 уверенных микрошага вместо 16 положенных. Пробовал и на малой скорости, и на достаточно большой, чтобы микрошаги слились в единое плавное движение - фик там :(.
Грешил на неточный подбор токоограничивающих резюков.
Сегодня попробовал тот же мотор плюс ещё один nema fl28 0.9А на тошибовской платке. Та же песня. Боль-мень похоже на плавное движение только при моменте 20% (устанавливается дип-переключателем), на 100% те же 3...4 микрошага :(. На обоих моторах. Мой большой ведёт себя чуток лучше, но и ему не смог подобрать оптимальный режим драйвера.
Питал схему от 12В, от компа. Другого питания под рукой нет. БП 24В уехал на дачу, а то б его попробовал.
Теперь подозрение только на:
- питание;
- то, что оба мотора плохо работают в микрошаге, даже 1/8.
Завтра, будет время, выдерну мотор из EQ6pro, что валяется без мозгов, попробую его покрутить. Этот мотор достаточно хорошо работал в микрошаге от другого хорошего аллегровского драйвера аж в 1/64 микрошаге. Правда, на 24В...
На самом деле для фокусёра это не столь принципиально. А вот для монтировки, где я планировал использовать тот же драйвер шаговика, плавность хода очень важный момент.
http://photo.milantiev.com/?dir=1843
|