Киевский клуб любителей астрономии "Астрополис"

astromagazin.net
* *
Добро пожаловать, Гость. Пожалуйста, войдите или зарегистрируйтесь.
29 Мая 2017, 05:06:02


Автор Тема: «Тикалка» для шаговика (или как моторизовать монтировку-2)  (Прочитано 21100 раз)

0 Пользователей и 1 Гость просматривают эту тему.

alex~

  • Оффлайн Оффлайн
  • Сообщений: 5761
  • Благодарностей: 139

   На написание этой темы меня сподвигли просьбы о помощи нескольких форумчан, после того, как в одной из тем я обмолвился о том, что монтировка очень быстро и просто может быть моторизована  с помощью микроконтроллера [МК] Atmega8. Вот, по сему и позвольте поделиться своим «тайным знанием», которое я получил в ходе недавнего знакомства с этим МК Atmega8 от фирмы AMTEL.

   Данное устройство [ДУ] (контроллером его назвать не повернется язык) будет выполнять одну из важнейших функций в монтировке:  крутить полярную ось, естесственно с помощью шагового двигателя [ШД].  Этого будет вполне достаточно, чтобы с комфортом визуалить и заниматься планетным астрофото.  А может быть даже и не это главное.  Главное - показать, что написать микропрограмму, прошить МК сможет каждый, даже ваша бабушка. 

   Итак, для начала работы по созданию ДУ необходим сам МК Atmega8, а именно: в виде обычной микросхемы в корпусе DIP28. Питается Atmega8 напряжением +5 вольт. Во время отладки ДУ я использую напряжение, получаемое из разьема USB. Это крайние выводы в этом разьеме. Я их и подключаю в точки +5v и GND (см. схему). На начальном этапе сам ШД и микросхему ULN2003 (назовем ее драйвером ШД) можно и не подключать. Просто «повесим» на выводы 26, 25, 24, 23 МК по светодиоду (достаточно и одного). Они помогут увидеть как «тикает» ДУ.  Подключить ШД - это задача последняя. (Кстати, стоит упомянуть, что ДУ расчитано на управление униполярными ШД. У таких ШД обычно по 5-6 выводов, т.е. имеются отводы от середин обмоток).

   Чтобы читать и записывать содержимое памяти МК, надо его подключить к персональному компьютеру [ПК].  Я использовал наипростейший доступный мне способ. Это подключение через паралельный порт (LPT).  (В моем десктопе он к счастью оказался. В противном случае вы бы сейчас не читали эту тему. Изготовление программатора работающего через COM или USB - задача малость по-сложнее, сложнее чем само изготовление ДУ и этим я точно не занимался бы). А LPT-программатор - это всего навсего простой кабель, без всяких наворотов. Глядя на схему, видим, что ничего сложного в программаторе нет. Также ясно, к каким выводам МК нужно подключить программатор.

   К МК подключены несколько кнопок, работающих на замыкание. Это есть кнопки «пульта».  Чтобы «видеть» нажатия на кнопки, на выв.11 также повесим светодиод.  Микропрограммой МК на кнопки возложены следующие функции ДУ: включение/выключение ШД, подстройка скорости шагов  ШД (медленнее/быстрее), запись значения этой скорости в энергонезависимую память. Т.е. это обеспечит сопряжение ДУ с любым ШД, с любым редуктором. Ведь того, какой ШД, редуктор удастся найти для самодельной монтировки, наперед не знает никто. Тем более, имея исходный код микропрограммы, каждый сможет в ней разобраться, модифицировать, добавив какие-то новые функции. Язык, на котором написана микропрограмма, это язык Си. Всё очень просто. Исходник микропрограммы очень простой, содержит только самое необходимое. Скомпилированный объектный код занимает около 800 байт. (т.е. всего ~10% от общего количества флеш-памяти в МК Atmega8). Т.е. «простор» для творчества еще имеется.

   Пока передохну… а затем уже продолжим в «программной среде»…
Записан

alex~

  • Оффлайн Оффлайн
  • Сообщений: 5761
  • Благодарностей: 139

  Итак продолжаем начатое...

  Попробуем дать ответ на вопрос: как теперь «рулить» этими компонентами ?
А очень просто. Для этого я использовал программную среду под названием CodeVisionAVR ( http://www.hpinfotech.ro ). Если быть конкретнее, то использую версию 1.25.8 Professional.  Найти эту версию в интернете не проблема: http://yandex.ua/yandsearch?clid=9582&text=CodeVisionAVR+1.25.8&lr=143&ncrnd=3169
Если возникнут сложности с поиском программы, то я смогу выслать инсталлятор по e-mail.

  Устанавливаем и запускаем CodeVisionAVR. Вид программы показан на рис.01. Сразу же переходим в окно настроек на наш тип программатора. Окно вызывается командой главного меню: Settings --> Programmer. Из списка выбираем наш программатор, как показано на скриншоте. См. рис.02.
Записан

alex~

  • Оффлайн Оффлайн
  • Сообщений: 5761
  • Благодарностей: 139

  Подключаем МК Atmega8 к программатору. Подаем питание на МК. Для того чтобы проверить МК идем в меню:  Tools --> Chip Programmer. Это и есть окно, в котором происходит чтение и запись данных в МК. Выбираем из списка наш тип МК, а именно Atmega8. См. рис.03.

  Сразу же выпоняем команду Read --> FLASH. См. рис.04.
Если со схемой всё в порядке и ничего не напутано, то увидим ход чтения данных из МК. То что прочиталось, можно увидеть в шестнадцатеричном виде (Edit --> FLASH). Если МК новый, то все значения кодов будут FFFF.

 
Записан

alex~

  • Оффлайн Оффлайн
  • Сообщений: 5761
  • Благодарностей: 139

  Следующим этапом необходимо выполнить проверку и при необходимости программирование т.н. Фьюзов. Их можно представить себе, как некие глобальные переключатели в МК.  Не буду уточнять значение всех фьюзов, но нас интересует группа из четырех фьюзов, которые определяют тактовую частоту МК. Мы будем программировать наш МК на частоту 8МГц, генератор которой находится внутри самого МК.  Т.е. для начала читаем текщее состояние  фьюзов МК. Выполняем команду Read --> Fuse bit(s). И утвердительно отвечаем (Yes)  в появившемся диалоговом окне. См. рис.05. 
 
  Если состояние фьюзов отличается от показанного на рис.05, то делаем правки и сразу же выполняем программирование нового состояния фьюзов коммандой Program --> Fuse bit(s). См. рис.06.
Записан

alex~

  • Оффлайн Оффлайн
  • Сообщений: 5761
  • Благодарностей: 139

  Далее покидаем окно Chip Programmer, возвращаясь в главное окно CodeVisionAVR.
Открываем проект Stepper.PRJ. См. рис.07 и 08.

 
« Последнее редактирование: 01 Октября 2011, 21:18:32 от alex~ »
Записан

alex~

  • Оффлайн Оффлайн
  • Сообщений: 5761
  • Благодарностей: 139

Далее выполняем компиляцию проекта. Это делается коммандой Project --> Compile. Или в данном случае можно сразу выполнить Project --> Make. Положительный результат компиляции показан на рис.09.
Записан

alex~

  • Оффлайн Оффлайн
  • Сообщений: 5761
  • Благодарностей: 139

  Следующим этапом будет запись полученного объектного кода в МК. Иными словами, мы выполним «прошивку» МК. Снова идем в окно Tools --> Chip Programmer.  Загружаем файл maim.ROM, который появился в папке проекта после компиляции. Т.е. выполняем File -->  Load FLASH. См. рис.10.
Записан


alex~

  • Оффлайн Оффлайн
  • Сообщений: 5761
  • Благодарностей: 139

И, наконец-то, саму «прошивку»  выполняем командой Program --> FLASH. См. рис.11.
Записан

alex~

  • Оффлайн Оффлайн
  • Сообщений: 5761
  • Благодарностей: 139

   Наблюдаем за процессом «прошивки». См. рис.12.
По окончании которого светодиод (на выводе 26) должен «затикать».
Записан

alex~

  • Оффлайн Оффлайн
  • Сообщений: 5761
  • Благодарностей: 139

Вот, в принципе, и всё...
А вы говорите: микроконтроллеры, микроконтроллеры!
Да любая домохозяйка справится с этой простой задачей. (шутю я)
Исходники проекта я хорошо прокомментировал. Вопросов особых вызвать не должно.
Исходный код проекта прилагаю. См. архив Stepper.Project.ZIP.
Кажется ничего не упустил...
 :SLA:

_______
p.s.  Кстати, отлаживалось все это хозяйство на вот такой чудной макетной плате. Пайки она не требует. Просто соединяем компоненты проводками. В любой момент можно изменить схему. Так что советую иметь такую...
p.p.s. применение ИК-приемника и индикатора не являются предметом рассмотрения в этой теме. 

« Последнее редактирование: 01 Октября 2011, 22:28:59 от alex~ »
Записан

achaika

  • Оффлайн Оффлайн
  • Сообщений: 517
  • Благодарностей: 10
  • Чайка Олександр

Очень интересная, по крайней мере для меня, тема! Извините за наглость - может у Вас есть готовые ссылки на и-магазины торгующие нужными м-схемами?

P.S. Почему 2? Есть подобная тема 1?
Записан
SW1309 EQ2, БШР, SkyMaster 15x70

MAKsutik

  • Оффлайн Оффлайн
  • Сообщений: 4707
  • Благодарностей: 249
  • Ищи на третьей планете.
    • Project EQDrive

Очень интересная, по крайней мере для меня, тема! Извините за наглость - может у Вас есть готовые ссылки на и-магазины торгующие нужными м-схемами?

P.S. Почему 2? Есть подобная тема 1?
у кого проблема с комплектующими помогу http://www.kosmodrom.com.ua куплю и вышлю (также могу сразу прошить микроконтроллер)
Записан



Nazgol

  • Оффлайн Оффлайн
  • Сообщений: 242
  • Благодарностей: 4
  • Слава Україні!

 Здравствуйте. Очень кстати. Я один из доставших Александра на выдачу тайны. В данный момент занимаюсь сборкой програматора(соеденительного кабеля для LPT порта). Я кокраз и пытаюсь побывать в роли БАБУШКИ.
 Александр, Вы уж не судите строго за то, что встреваю в тему.
 Я в этом деле наверное  "похлеще" бабушки. Я попросил помощи у знакомого, чуть понимающего в этом, он меня настращал, что мол LPT порты устарели, или в них чтото там устарело, или в них не работает как надо чтото. И всё это может привести к тому, что во время прошивки выйдет из строя сама Atmega. Но я решил рискнуть. Как ни странно, но при сборе комплектующих столкнулся с проблемой, за символическую сумму денег был куплен редуктор(будильник 0.2об/мин - думаю для EQ1 подойдёт), и 4 шаговых двигателя - биполярные, и только один самый мелкий униполярный, да и в нём очень крупный шаг (кажись 24) это наверное мало.Есть на 400 шагов 12V,но он би, для другой схемы был бы в самый раз, но более сложную схему я не осилю.        Да о главном, спасибо за тему, может кто ещё такой как я рискнёт, так вместе веселей будет разбираться.
Записан
Даже сломаные часы-дважды в сутки не ошибаются.
 ПИДРУЧНИК  И   ПОСИБНИК

alex~

  • Оффлайн Оффлайн
  • Сообщений: 5761
  • Благодарностей: 139

Цитата: Nazgol
Я как раз и пытаюсь побывать в роли БАБУШКИ.
 Александр, Вы уж не судите строго за то, что встреваю в тему.
Я эту тему специально и создал, чтобы в ней задавать разные вопросы и по возможости давать на них ответы.
 ;)

Я думаю, что для начала надо добиться простого "тикания" микроконтроллера. Пусть даже с простеньким 24-шаговым двигателем. В любой момент ULN2003 можно заменить драйвером для униполярного ШД.

Да и с LPT портом проблем не должно никакх возникать. Особенность  NT-подобных операционок (Win2000...Win7) в том, что они не дают программам напрямую общаться с LPT-портом. Но CodeVisionAVR для преодоления этого момента использует специальный драйвер : IOPORT.SYS.
« Последнее редактирование: 02 Октября 2011, 01:21:41 от alex~ »
Записан

achaika

  • Оффлайн Оффлайн
  • Сообщений: 517
  • Благодарностей: 10
  • Чайка Олександр

to MAKsutik
Написал в личку.
Записан
SW1309 EQ2, БШР, SkyMaster 15x70

alex~

  • Оффлайн Оффлайн
  • Сообщений: 5761
  • Благодарностей: 139

Этот пост не принимаем во внимание. Информация в нем не верна! См. пост #20.
-----

Для биполярного ШД нужно использовать микросхему L6210.
(Наверняка, существуют и другие подобные микросхемы. Я думаю, что более знающие спецы подскажут)

Четыре вывода соответственно подключаем к МК (вместо ULN2003).
Либо реализовать функцилнал L6210 с помощью 8-ми диодов. Именно на диодах я подключал биполярный ШД в своей "амбарке".
« Последнее редактирование: 02 Октября 2011, 08:16:04 от alex~ »
Записан

alex~

  • Оффлайн Оффлайн
  • Сообщений: 5761
  • Благодарностей: 139

Цитата: Nazgol
В данный момент занимаюсь сборкой програматора(соеденительного кабеля для LPT порта).
На фото я вижу четыре резистора, заготовленные для кабеля-программатора.
Только мне они больше кажутся диодами. Это на самом деле есть такие резисторы ?
 ;)
Записан

Nazgol

  • Оффлайн Оффлайн
  • Сообщений: 242
  • Благодарностей: 4
  • Слава Україні!

Я конечно БАБУШКА, но на радиорынке сказал 4 разистора по 300 Ом и мне дали, правда спосили за требуемую мощность, на что я дал ответ что они должны быть небольшими.
 Попутный вопрос: В папе ЛПТ есть выводы, которые нужно соеденить между собой, смотрю на схему, смотрю на папу с фронта, нахожу нужные контакты и с внутреней стороны спаиваю их, или как нужно ориентироваться? Выводы на микросхеме номеруются от ключа, тобиж ключ от себя, номера начинаются слева?
« Последнее редактирование: 02 Октября 2011, 12:01:22 от Nazgol »
Записан
Даже сломаные часы-дважды в сутки не ошибаются.
 ПИДРУЧНИК  И   ПОСИБНИК

Nazgol

  • Оффлайн Оффлайн
  • Сообщений: 242
  • Благодарностей: 4
  • Слава Україні!

Сейчас проверил блоком питания и светодиодом, пропускает ток в обеих направлениях, но светодиод не тускнет.
Записан
Даже сломаные часы-дважды в сутки не ошибаются.
 ПИДРУЧНИК  И   ПОСИБНИК

alex~

  • Оффлайн Оффлайн
  • Сообщений: 5761
  • Благодарностей: 139

Я конечно БАБУШКА, но на радиорынке сказал 4 разистора по 300 Ом и мне дали, правда спосили за требуемую мощность, на что я дал ответ что они должны быть небольшими.
 Попутный вопрос: В папе ЛПТ есть выводы, которые нужно соеденить между собой, сотрю на схему, смотрю на папу с фронта, нахожу нужные контакты и с внутреней стороны спаиваю их, или как нужно ориентироваться? Выводы на микросхеме номеруются от ключа, тобиж ключ от себя, номера начинаются слева?
1) На некоторых схемах LPT-программаторов видел, что земля просто берется с одного выв.25. А перемычки между 2-12 и 3-11 отсутствовали. Я думаю, что можно и так, и так... Но я впаял их...

2) По нумерации выводов в микросхемах см. на рис.  Может быть или маленький кружочек, или выемка, указывающая с какой стороны начинать нумерацию.
Записан