Контроллер управления шаговым двигателем avr

Подключение униполярного шагового двигателя к микроконтроллерам AVR

rating starrating starrating starrating starrating star

Подробную теоретическую информацию о шаговых двигателях можно найти на просторах интернета, а здесь займемся практическим решением. Униполярный двигатель имеет одну обмотку в каждой фазе, от середины обмотки сделан отвод. Это позволяет изменять направление магнитного поля, создаваемого обмоткой, простым переключением половинок обмотки. При этом существенно упрощается схема драйвера. Драйвер должен иметь только 4 простых ключа. Средние выводы обмоток могут быть объединены внутри двигателя, поэтому такой двигатель может иметь 5 или 6 выводов. Иногда униполярные двигатели имеют раздельные 4 обмотки, по этой причине их ошибочно называют 4-х фазными двигателями. Каждая обмотка имеет отдельные выводы, поэтому всего выводов 8. Из-за простоты подключения и управления униполярного двигателя в этой статье рассмотрим именно этот тип шагового двигателя.

404 01

404 02

Управляющий контроллер Atmega8, тактируется от внутреннего генератора частотой 8МГц. В программе используем два внешних прерывания и прерывание по переполнению таймера Т0. Все прерывания определяем и настраиваем в главной функции, также настраиваем порты ввода/вывода микроконтроллера.

Для запуска двигателя в ту или иную сторону необходимо подать на его обмотки последовательность импульсов сдвинутых по фазе. Эти последовательности импульсов определим в массивах cw_dir[] и ccw_dir[], соответственно по часовой стрелке и против часовой стрелки. Указатель направления вращения status меняет свое состояние с лог.0 на лог.1 и наоборот при нажатии на одну из кнопок SB1 и SB2. Если status == 1 двигатель вращается против часовой, если status == 0 двигатель вращается по часовой стрелке. Переменная status меняет свое значение при наступлении внешних прерываний на входах INT0 и INT1. Чтобы происходило внешнее прерывание подтягиваем входы INT0 и INT1 через резисторы к плюсу питания.

Сигналы управления обмотками двигателя формируются на портах PB3 – PB0 программно. Формирование импульсных последовательностей выполняется в обработчике прерывания таймера 0. Переключение фаз происходит только при переполнении программного таймера. Переменная ovftimes определяет величину задержки между чередованиями импульсов. Ее значение связано со значением АЦП, чем больше значение АЦП тем медленнее вращается вал двигателя и наоборот. Регулировка скорости вращения осуществляется переменным резистором R8, средний вывод которого подключен к каналу ADC0. Ниже представлен код управляющей программы с подробными комментариями.

Источник

AVR Урок 18. Подключаем шаговый двигатель. Часть 1

Урок 18

Подключаем шаговый двигатель

Сегодня мы попробуем к микроконтроллеру Atmega8a подключить шаговый двигатель.

Шаговые двигатели – это такие двигатели, которые посредством подачи напряжения на определённую обмотку переводят свой ротор в определённое место, тем самым достигается более точное управление угловой скоростью. Можно также, в принципе, управлять и положением ротора, но это уже как-то больше сервоприводы, с которыми, мы, возможно, тоже, когда-то столкнёмся.

Шаговые двигатели в наше время приобретают всё больший интерес, так как в наш век точной электроники люди что-то мастерят движущееся, наподобие роботов и каких-то умных машин, также доходит дело до определённых летательных аппаратов и прочих устройств.

Поэтому я также не обошел этот вопрос стороной и решил также что-то об этом рассказать и подключить шаговый двигатель к контроллеру и попробовать им поуправлять. Как только мне это удалось, я решил этим поделиться и с вами.

Мне в руки попался именно вот такой вот шаговый двигатель 28-BJ48 компании Kiatronics

Image00 6

Питается данный двигатель от 5 вольт, питание подается попеременно на различные обмотки, которых 4, и если питание снимается с одной обмотки и подается на другую, то ротор. соответственно. устраемляется к ней.

Данные обмотки своими сердечниками в статоре находятся не в 4 местах, а намного чаще, а именно каждая повторяется 2048 раз, поэтому когда мы подаем напряжение на соседнюю обмотку, ротор поворачивается на очень малый угол. А если напряжение подавать ещё и на 2 соседние обмотки, то ротор можно расположить между ними, и количество положений при этом вообще удваивается. А есть вообще микрошаговый режим, когда мы на одну обмотку подаём меньшее напряжение, а на другую большее, то и вообще можно потеряться в количестве шагов и вообще крутить данный шаговый двигатель очень плавно.

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

Image01 8

Данный модуль представляем собой микросхему ULN2003. Можно использовать ее не только для двигателей. Но мы будем использовать здесь 4 входа и 4 выхода, так как у нашего двигателя 4 провода. каждый из которых подключен к определённой обмотке, а пятый провод является общим. Подключенный таким образом мотор уже не влияет на ножки портов, у которых ограничен максимальный ток и можно уже ничего не бояться на этот счёт. При подключении к ножкам контроллера мы используем входы модуля IN1, IN2, IN3 и IN4, а разъём двигателя просто соединим с разъёмом модуля.

Нарисуем вот такую схему, чтобы лучше понять принцип работы двигателя (чтобы увидеть процесс рисования, смотрите видеоверсию урока, ссылка на которую внизу страницы)

Image02 9

Здесь мы видим 4 катушки, одним выводом которые соединены к общему проводу, а на другие выводы каждой катушки мы будем подавать логические уровни, например на рисунке поданы 1000.

Данные обмотки потом по кругу так циклически и повторяются.

Теперь рассмотрим возможные режимы управления с помощью логических уровней.

1 режим – этот простейший режим, при котором мы по очереди подаём логические единицы или высокие логические уровни на каждую обмотку. Называется он также полношаговый режим или One Phase Step Mode.

Схематично данный режим можно изобразить таким образом

Image03 8

Существует также ещё один интересный режим – это режим когда ротор будет шагать между обмотками, то есть мы единички будем подавать на 2 соседние обмотки

Читайте также:  маммарный лимфоузел молочной железы что это

Image04 11

А также есть ещё и третий решим – это полушаговый режим, когда мы уже чередуем комбинации, сначала ротор будет находиться у обмотки, потом наполовину переместится к соседней обмотке, потом совсем к соседней обмотке и т.д. Это полушаговый режим или one and two-phase-on

Image05 10

Вот таких вот три режима существуют. мы остановимся на 3 режиме, так как он будет самый плавный и самый интересный.

На следующем занятии мы соберём всю нашу схему с шаговым двигателем и начнём уже писать какой-то исходный код.

Программатор и шаговый двигатель 28YBJ-48 с драйвером ULN2003 можно приобрести здесь:

Смотреть ВИДЕОУРОК (нажмите на картинку)

Источник

Подключение шагового двигателя к микроконтроллеру AVR ATmega16

Interfacing Stepper Motor with AVR Microcontroller Atmega16 using ULN2003

Шаговые двигатели – это бесщеточные двигатели постоянного тока, которую могут вращаться от 00 до 3600 дискретными шагами. С каждым управляющим сигналом ось такого двигателя поворачивается на фиксированное значение (шаг). Управление вращением подобных двигателей осуществляется последовательностью специальных сигналов. В отличие от серводвигателей шаговые двигатели могут управляться контактами ввода-вывода общего назначения, а не только контактами ШИМ модуляции, и могут вращаться на (+3600) и (-3600). Последовательность следования управляющих сигналов определяет будет ли шаговый двигатель вращаться по часовой или против часовой стрелки. Для управления скоростью вращения такого двигателя необходимо просто изменять уровень управляющих сигналов. У шаговых двигателей есть несколько режимов шагового (дискретного) вращения – на полный шаг, на половину шага и на микрошаг.

В этом проекте мы будем подключать шаговый двигатель 28BYJ-48 к микроконтроллеру ATmega16 (семейство AVR), используя программу Atmel Studio 7.0. Шаговый двигатель будет работать при напряжении питания 5В. Мы будем подключать шаговый двигатель к микроконтроллеру с помощью драйверов электродвигателей ULN2003 и L293 (по отдельности). Оба будут запитываться напряжением 5В.

Примеры шаговых двигателей

t2 1

Принцип работы биполярного шагового электродвигателя

t1 1

Каждое такое действие проворачивает ротор электродвигателя на один шаг. Для продолжения вращения против часовой стрелки в катушке 1 снова нужно создать намагниченность С (см. представленную таблицу).

Таблица 1. Последовательность действий при вращении шагового двигателя против часовой стрелки

Катушки 1 и 3 Катушки 2 и 4
Ю
С
С
Ю

Прочерки в графах таблицы 1 указывают на то, что катушка в этот момент не оказывает влияния на вращение ротора и должна быть обесточена. Чтобы усилить момент вращения двигателя, на эти обесточенные катушки можно подать такой ток, чтобы полярность их намагниченности совпадала с полярностью стоящего под ней зубца ротора (таблица 2).

Таблица 2. Уточненная последовательность переключения катушек при вращении шагового двигателя

Катушки 1 и 3 Катушки 2 и 4
Ю С
С С
С Ю
Ю Ю

Для изменения направления вращения ротора нужно всего лишь изменить порядок переключения катушек, указанный в таблице 2, на обратный.

Необходимые компоненты

Маркировка контактов шагового двигателя

Представлена на следующем рисунке.

STEPPER MOTOR 28BYJ 48 Pinout

Как видим, схема контактов шагового двигателя как будто специально «заточена» под то, чтобы подключать его к соответствующим драйверам (ULN2003 или L293D).

Назначение контактов микросхемы ULN2003 (драйвера двигателей) приведено на следующем рисунке.

ULN2003 Stepper Motor Driver IC Pinout

Внешний вид этого драйвера двигателей выглядит следующим образом:

ULN2003 Stepper Motor Driver IC

Внешний вид драйвера мотора L293D приведен на следующем рисунке:

L293D Motor Driver IC

Работа схемы

В следующих двух таблицах представлены схемы соединений входных и выходных контактов драйверов моторов ULN2003 или L293D с микроконтроллером AVR ATmega16 и шаговым электродвигателем.

Atmega16 ULN2003 L293D
A0 IN1(PIN1) IN1(PIN2)
A1 IN2(PIN2) IN2(PIN7)
A2 IN3(PIN3) IN3(PIN10)
A3 IN4(PIN4) IN4(PIN15)
Шаговый двигатель ULN2003 L293D
Orange OUT1(PIN16) OUT1(PIN3)
Yellow OUT2(PIN15) OUT2(PIN6)
Pink OUT3(PIN14) OUT3(PIN11)
Blue OUT4(PIN13) OUT4(PIN14)

Схема устройства с драйвером мотора ULN2003 приведена на следующем рисунке.

Circuit Diagram for Interfacing Stepper Motor with AVR Atmega16 using ULN2003

Схема этой же самой конструкции, но с драйвером мотора L293D, будет выглядеть следующим образом.

Circuit Diagram for Interfacing Stepper Motor with AVR Atmega16 using L293D

Внешний вид устройства с использованием ULN2003 приведен в начале статьи, а с использованием L293D он будет выглядеть следующим образом:

Interfacing Stepper Motor with AVR Microcontroller Atmega16 using L293Dt

Соедините все компоненты устройства в соответствии с приведенной схемой соединений (одной из двух). Для управления шаговым двигателем мы будем использовать PORTA микроконтроллера Atmega16. К контактам шагового двигателя нет необходимости подключать питание – для управления им нам понадобятся только контакты его катушек (coil pins) – верно для ULN2003, для L293D немного по другому. Очень важен порядок контактов для того чтобы шаговый двигатель работал корректно. Для микросхемы ULN2003 используются четыре ее входа и четыре ее выхода – входы соединяются с контактами PORTA микроконтроллера, а выходы – с сигнальными контактами шагового двигателя. Также подсоедините кнопку к контакту сброса (Reset pin) чтобы иметь возможность осуществлять сброс микроконтроллера Atmega16 всегда, когда нам это понадобится. Подсоедините к микроконтроллеру кварцевый генератор. Все устройство должно быть запитано напряжением 5В.

Исходный код программы на языке С (Си) с пояснениями

Приведенный в этом разделе код программы демонстрирует вращение шагового двигателя под управлением микроконтроллера AVR в обе стороны: по часовой стрелке и против часовой стрелки. Если вы хотите вращать шаговый двигатель только в одну сторону – просто закомментируйте ненужную часть кода.

Источник

Контроллер управления шаговым двигателем avr

В статье описана простая система управления шаговым двигателем на базе персонального компьютера, платы AVR-USB-MEGA16 и простого силового модуля для питания обмоток двигателя. Рассмотрены два варианта программного обеспечения: простой вариант для малых частот вращения двигателя и несколько более сложный, но без ограничений на частоту шагов. Разработка выполнена в лаборатории проблем материаловедения Института химии и химической технологии СО РАН, г. Красноярск (http://www.icct.ru/).

Шаговый двигатель – неотъемлемый атрибут многих исполнительных устройств, используемых для позиционирования в пространстве и регулирования материальных расходов. Шаговые двигатели также широко используются в приводах floppy-дисков, HDD, CD-ROM, в бытовых видеомагнитофонах, фотоаппаратах и видеокамерах. Существует множество конструкций шаговых двигателей и способов их питания. В данной статье мы рассмотрим довольно часто встречающийся вариант – униполярный двигатель в полношаговом режиме с одной включенной фазой. При таком питании в каждый момент времени ток подается только на одну обмотку двигателя. Пусть, например, в начальный момент времени ток подан на первую обмотку. В соответствующем положении находится и ротор. Если в следующий момент времени ток будет подан на вторую обмотку и снят с первой, то двигатель сделает один шаг (т.е. ротор повернется на определенный угол). Затем подадим ток только на третью обмотку, потом – на четвертую и опять на первую. И так далее. Ротор будет вращаться по часовой стрелке. Временная диаграмма сигналов показана на Рис.1. Естественно, если запитывать обмотки в обратной последовательности: 1-4-3-2, то двигатель будет вращаться в противоположном направлении.

Читайте также:  История создания двигателя ямз 740

stepmoto01 avr usb mega16

Рис.1. Схема обмоток и временная диаграмма

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

[Силовой модуль]

Схема модуля представлена на Рис.2. При открывании какого-нибудь из транзисторов, ток будет протекать через соответствующую обмотку шагового двигателя. Для управления транзисторами используются свободные выходы PC0, PC1, PC6 и PC7 микроконтроллера платы AVR-USB-MEGA16. Тип транзисторов зависит от мощности подключаемого двигателя, напряжения его питания и, естественно, нагрузочной способности портов микроконтроллера. В данной конструкции я использовал составные транзисторы BD677, обладающие достаточным коэффициентом усиления по току, с допустимым напряжением коллектор-эмиттер до 60В, ток коллектора – до 4 А. Для большинства двигателей, которые используются в лабораторной практике – вполне достаточно. Если не нужна большая мощность, то при питании двигателя от 5В источника можно вообще обойтись без радиаторов.

stepmoto02 avr usb mega16

Рис.2. Схема силового модуля

Поскольку нагрузка индуктивная, полезно поставить защитные диоды. Я поставил 1-амперные диоды 1N4001, но можно обойтись и без них. Защитные диоды увеличивают время спада тока в обмотках шагового двигателя (через них ЭДС самоиндукции возвращается в источник питания V+), что уменьшает максимально возможную частоту вращения шагового двигателя. Если убрать диоды, то время спада тока окажется минимальным, двигатель сможет вращаться быстрее, но при этом возникают опасные для транзисторов выбросы ЭДС самоиндукции, которые могут превысить допустимое для них напряжение 60 В.

Для первых экспериментов и отладки программного обеспечения взял небольшой шаговый двигатель от старого матричного принтера. Силовая часть разместилась на макетной плате. Питание двигателей производилось от внешнего источника. Напряжение питания – 5В. Вся электроника с двигателем показана на Рис.3, общий вид стенда – на Рис.4.

stepmoto03 avr usb mega16

Рис.3. Электронная часть и шаговый двигатель

stepmoto04 avr usb mega16

Рис.4. Общий вид стенда

[Программное обеспечение]

Как было отмечено выше, все управление нашим шаговым двигателем сводится к подаче логической единицы последовательно на порты микроконтроллера PC0, PC1, PC6 и PC7. В каждый момент времени единица должна быть только на одном порте. При подаче единицы, откроется соответствующий транзистор в силовом модуле и через одну из обмоток потечет ток. Двигатель сделает шаг. Затем нужно подать единицу на следующий порт, и двигатель сделает следующий шаг. Если не требуется высокая частота шагов, то с такой задачей вполне справится и сам хост. Рассмотрим этот вариант подробнее.

Простой вариант

Прошивка, исходные файлы firmware и проект приложения хоста (на языке C# для Visual Studio 2008 Express Edition) приведены в папке «01 Простой вариант» архива [1]. Приложение хоста очень простое, поэтому ограничусь только комментариями по общей организации программы.

В массиве ph находятся байты, которые нужно послать в порт C для того, чтобы подать единицу на один из портов PC0, PC1, PC6 и PC7. Объявление этого массива – в классе Form1:

Период следования импульсов (переменная T) регулируется компонентом NumericUpDown. При изменении T происходит модификация свойства Interval таймера timerPulse (см. метод numericUpDownMs_ValueChanged()).

Как уже отмечалось, данная реализация программного обеспечения будет работать только на сравнительно низких частотах следования шаговых импульсов. Для того, чтобы придать более строгий смысл фразе «сравнительно низкие частоты», проведем небольшой эксперимент. Подключим к одному из портов (PC0, PC1, PC6 или PC7) осциллограф и будем измерять длительность импульсов на этом порте в зависимости от длительности импульсов, задаваемой хостом при помощи компонента NumericUpDown. Мы увидим, что длительность импульсов и период их следования заметно «гуляют» (на десятки миллисекунд). Поэтому будем измерять среднее значение (например, по 10-20 импульсам). На Рис. 5 представлена зависимость этой средней величины от длительности, задаваемой хостом. Шкалы – в логарифмическом масштабе.

stepmoto05 avr usb mega16

Рис.5. Длительность импульсов на выводе порта микроконтроллера в зависимости от длительности, задаваемой хостом.

Быстрый и точный вариант

Самый простой выходом из описанной выше ситуации является переход от управления шагами двигателя по таймеру хоста к управлению от аппаратного таймера микроконтроллера. Логика работы программы не меняется, только тактирование шагов двигателя и подача соответствующих байтов в порт C происходит уже не из хоста, а непосредственно в firmware. Некритичные ко времени реакции системы операции (в частности, инициализация таймера, изменение частоты шагов и направления вращения двигателя) можно оставить на хосте.

Для реализации этого варианта нам нужно модифицировать как firmware, так и приложение хоста. Исходные файлы и проект можно найти в папке «02 Быстрый вариант» архива [1]. Ниже – небольшие комментарии к этому программному обеспечению. Начнем с firmware (за основу без изменений взято firmware из статьи [5]).

Firmware

Модифицируем файл main.c из папки «firmware simple» следующим образом.
1. Вставим в начале модуля объявление константы:

2. Как и в предыдущем варианте (но только не в хосте, а в firmware!) объявим массив байтов, посылаемых в порт C и другие рабочие переменные:

3. Напишем две функции (сделать шаг в нужном направлении и обработчик прерывания от таймера):

4. И, наконец, в функцию usbFunctionSetup() вставим еще один case для установки направления вращения двигателя:

Это все изменения firmware, которые необходимо сделать. Компилируем, прошиваем микроконтроллер и переходим к хосту.

ПО хоста

Сначала модифицируем класс-обертку ATMega (файл ATMega.cs).

1. В секцию «Константы» блока «Интерфейс с libusb» добавим константу, связанную с установкой направления вращения двигателя:

2. В секцию «Адреса портов, регистров и порты микроконтроллера ATMega16» добавим константы для работы с регистром масок прерываний TIMSK:

Раньше мы не использовали прерывания от таймера, поэтому этот фрагмент в «firmware simple» просто не был реализован. Естественно, нужно добавить и реализацию свойства TIMSK.

Читайте также:  на каком сроке можно понять что двойня

3. Сделаем это в секции «Работа с регистрами TIMER1»:

4. Ну и, наконец, свойство smDir, задающее направление вращения двигателя:

Все. Модификация класса-обертки закончена.

Теперь разберемся с главным файлом приложения (файл Form1.cs). Готовый файл можно найти в проекте хоста (папка «02 Быстрый вариант» архива [1]). Краткие комментарии ниже.

1. После успешного создания объекта dev класса ATMega16 производится инициализация таймера TIMER1. Выбираем режим 4 – обнуление таймера при совпадении счетчика со значением, находящимся в регистре OCR1A (единичка в бите WGM12 регистра TCCR1B, см. Datasheet на ATMega16). Коэффициент деления тактовой частоты выбираем 1024 (биты CS12 и CS10 в 1, а CS11 – в 0). При этом 16 разрядный счетчик перекроет весь необходимый нам диапазон частот (здесь я ориентировался на свой микродозатор, для которого, собственно говоря, и делалась вся эта разработка).

2. Далее посылаем в регистр OCR1A какое-нибудь значение по умолчанию (здесь оно берется из компонента numericUpDownMs.Value). В конце метода соответствующие биты порта C настраиваются на вывод.
Далее вся работа приложения основана на обработке событий от элементов управления, расположенных на форме.

3. При нажатии на кнопку «Старт/Стоп» вызывается метод checkBoxStartStop_CheckedChanged(), в котором, в зависимости от состояния кнопки (нажата или отжата), происходит либо разрешение, либо запрет прерываний от таймера в микроконтроллере (бит OCIE1A регистра TIMSK). Дальше генерацией шаговых импульсов двигателя занимается уже сам микроконтроллер (точнее – его аппаратный таймер TIMER1) независимо от хоста.

5. При изменении значения компонента numericUpDownMs, вызывается метод numericUpDownMs_ValueChanged(), в котором происходит вычисление нового значения регистра OCR1A и присваивание ему этого значения. Текущее значение счетчика (TCNT1) при этом обнуляется. Теперь шаговый двигатель будет делать шаги с новой частотой.

6. Чтобы не греть двигатель по окончанию работы программы (таймер микроконтроллера работает независимо от хоста!) в методе Form1_FormClosing(), вызываемом при закрытии формы приложения, происходит запрет прерываний от таймера микроконтроллера и обнуление тока всех обмоток двигателя.

Вот, собственно говоря, и все приложение. Компилируем и запускаем. Теперь измерим длительности импульсов на каком-нибудь из портов (PC0, PC1, PC6 или PC7) микроконтроллера как и в предыдущем (простом) варианте программного обеспечения. Результат такого эксперимента представлен на Рис.6. Видно, что теперь длительность импульсов на портах микроконтроллера совпадает с длительностью импульсов, задаваемых в приложении хоста во всем нужном нам диапазоне.

stepmoto06 avr usb mega16

Рис.6. Теперь можно работать на любых частотах

[Микродозатор]

Расширенный вариант программного обеспечения, описанного выше, используется в реальном прототипе микродозатора жидкостей. В его основе лежит шприцевой насос, приводимый в действие шаговым двигателем. В качестве модели насоса был взят насос от жидкостного хроматографа Милихром. Там используется неплохой отечественный шаговый двигатель ДШИ-200-1. Он работает довольно устойчиво от этого же силового модуля, которое рассмотрено в данной статье выше.

Программное обеспечение было расширено за счет введения следующих дополнительных функций.

1. Элементы управления откалиброваны в естественных для дозатора единицах. Объемы – в микролитрах, скорости подачи – микролитры/мин.
2. Естественно, для работы реальных устройств необходима обработка сигналов от ограничителей диапазона перемещения поршня насоса. При наборе раствора – это сигнал от концевого выключателя (логический 0), расположенного снизу. При подаче – сигнал от датчика давления. При засорении капилляров происходит повышение давления и на выходе датчика формируется логический 0. Этот же сигнал формируется и при достижении поршнем насоса предельного положения при подаче. Обработка этих сигналов производится на стороне firmware.
3. Для дозатора необходим режим подачи (или набора) заданного количества жидкости, после чего насос должен остановиться. Этот функционал тоже реализован в firmware.
4. Еще один необходимый элемент дозатора – счетчик и передача хосту количества поданной или набранной жидкости (в том числе и в режиме накопления, т.е. за несколько включений дозатора в различных режимах).
Прошивка, исходные файлы firmware и полный проект хоста для Visual Studio 2008 Express Edition можно найти в архиве [1], в папке «03 Расширенный вариант». Общий вид прототипа микродозатора показан на Рис.7. Как выглядит приложение хоста можно посмотреть на Рис.8.

stepmoto07 avr usb mega16

Рис.7. Общий вид прототипа микродозатора

stepmoto08 avr usb mega16

Рис.8. Вид работающего приложения хоста

Байты перемычек (fuse bits) ATmega16 должны быть 0xFF (low) и 0x09 (high).

@ S.V.Kukhtetskiy, 2009
Кухтецкий Сергей Владимирович,
лаборатория проблем материаловедения,
Институт химии и химической технологии СО РАН, Красноярск
E-mail: ku@icct.ru

[Решение возможных проблем]

Здесь описаны некоторые типичные проблемы, которые возникают при использовании прошивки Сергея Кухтецкого. Решение других проблем см. в статье AVR-USB-MEGA16, V-USB, FAQ: переписка по вопросам программирования.

1. Записал в платку прошивку Сергея Кухтецкого с помощью загрузчика USB и программы Khazama, но платка не определяется как устройство USB. Если снова установить перемычку для активации загрузчика USB, то платка определяется, и загорается светодиод. В чем проблема? Ответ: платка у Вас исправна, но Вы записали в неё не ту прошивку. Например, прошивка соответствует другой частоте кварца, не той что используется на Вашей макетной плате AVR-USB-MEGA16. Прошейте HEX-файл прошивки Сергея Кухтецкого, рассчитанный на нужную частоту кварца, который стоит у Вас. Частоту кварца можно прочитать на его корпусе, например если на корпусе написано 12.000, то кварц на 12 МГц.

2. При подключении платки к компьютеру (в платку записана прошивка Сергея Кухтецкого) система Windows запрашивает драйвер. Что это за драйвер, где его брать? Ответ: это драйвер библиотеки LibUSB, скачайте его по ссылке [11].

3. На моей системе Windows драйвер LibUSB не устанавливается, и о причине система не сообщает. Как быть? Ответ: такое нередко бывает на урезанных версиях Windows. Причина может быть в том, что не отключена система проверки цифровой подписи драйвера, либо пакет драйвера неполон (например, если Вы скачали драйвер по ссылке из статьи на сайте vanoid.ru, то там не хватает некоторых файлов, требуемых для 64-битных версий Windows). Поэтому, во-первых, перезагрузите систему, и при загрузке отключите проверку цифровой подписи драйвера (нажимайте при старте F8, и на черном экране выберите соответствующую нижнюю строчку загрузочного меню). Во-вторых, устанавливайте полную версию драйвера LibUSB (скачайте его по ссылке [11]).

[Ссылки]

Комментарии

Источник

Поделиться с друзьями
admin
Ваша безопасность
Adblock
detector