Часть 1. Energia + Arduino GRLB = Lm4F120H5QR GRLB.

Итак, продолжаю тему ARM процессора Lm4F120H5QR и его отладочной платформы Stellaris Launchpad. Предыдущим постом я анонсировал управление шаговыми двигателями с помощью этой платы. И, надо признаться, не ожидал, что реализация этой идеи займет столько времени и потребует не мало усилий. Но этому способствовали некоторые факторы, о который ниже.

Наверняка, вы узнаете в заглавной картинке Arduino подобный интерфейс, эта IDE   называется Energia, и среди поддерживаемых платформ есть Lm4F120H5QR. Именно под нее у меня получилось относительно легко переписать/портировать ардуиновскую программу управления ШД, а фактически G-code интерпретатор, Но пришел я к этому далеко не сразу….

Первая особенность. Состав располагаемых мною аппаратных средств весьма невелик.

Как и сообщал раньше, я приобрел, фактически бесплатно, два ШД: один — биполярный с 4-мя выводами, и один — униполярный с пятью. И для коммутации двигателей имеются драйверы L298 для биполярного, и ULN2003A для униполярного.  Вот такой винегрет.) И рулить всем этим должен Stellaris. Да, минусы такого подхода очевидны: заняты целых четыре цифровых выводов на управление одним ШД, двумя — уже восемь, и т.д. Step/dir подход, конечно же экономичнее в этом плане, но нужно паять/покупать драйвер, а этого делать я не хотел. Не ограничивается ток в обмотках двигателя, что будет приводить к перегреву как самих  ШД,  Как с этим бороться. пока не придумал, только если не держать двигатели продолжительное время под напряжением  + поставить радиаторы и кулер.)

Вторая особенность. Программы — прототипы заточены под step/dir. Здесь необходимо  вспомнить как все началось.

Идея состояла в том, чтобы сделать не просто программу управления ШД, а еще и с заделом на будущий descktop CNC router/плоттер. К большим ЧПУ нарисовалась  проблема: его пока некуда поставить, да, отсутствие «производственных площадей» в виде гаража и ограниченность балконом в квартире друга не способствуют сему начинанию.( Но сборка уже практически завершена и планирую в недалеком будущем об этом написать.

В общем будущая программа должна понимать G-code и уметь с ним работать. Под arduino есть уже не мало таких интерпретаторов, например GRLB, и MAPP_GCode_interp2, на котором я больше всего и основывался. В общем он не сложен, но заточен под step/dir. Это потребовало переписать процедуры управления двигателями по 4-х пиновое подключение. Для этого в проекте под arduino я использовал версию библиотеки stepper.h  для работы с ШД, где реализовано режим половины шага. Единственное, я добавил к ней функцию release, отключающую режим удержания ШД:

void Stepper::release()
{
        digitalWrite(motor_pin_1, LOW);
        digitalWrite(motor_pin_2, LOW);
        digitalWrite(motor_pin_3, LOW);
        digitalWrite(motor_pin_4, LOW);
 
}
void Stepper::release()
{
    	digitalWrite(motor_pin_1, LOW);
      	digitalWrite(motor_pin_2, LOW);
      	digitalWrite(motor_pin_3, LOW);
      	digitalWrite(motor_pin_4, LOW);

}

Подключал моторы к цифровым выводам 12,11,10,9 и 8,7,6,5. Управление осуществлялось с помощью программы Universal-G-Code-Sender. Двигатели работали,  осуществляя перемещение по программе.

Особенность третья.  Пришло время портировать программу на Lm4F120H5QR. До этого, я программировал в официальной Code composer studio V5, бесплатно раздаваемой TI. И начал писать тоже здесь, но для меня, с учетом ограниченности во времени и знаниях, это был тупиковый путь, отнявший не мало сил. Написать библиотеку аналогичную stepper не получилось, классы почему-то не захотели создаваться. За основу я взял пример usb_dev_serial, в котором организован протокол взаимодействия с виртуальным COM портом. С трудом, мне удалось написать процедуры управления ШД в основной программе, но затык с таймером и оценка того, что еще предстоит сделать, способствовали переходу на Energia. Да, это не true, но позволяет сэкономить драгоценное время:) и любительским целям удовлетворяет.  За неполных пол дня, я заставил работать этот интерпретатор, правда в значительно урезанной версии (доступна только команда G0 — холостое перемещение), но и это потребовало решения ряда проблем. Во первых пришлось переписать библиотеку Stepper.h, и дописать функцию инициализации ШД, которая вставляется теперь в setup(). Да еще и определить, что char в energia — это беззнаковая переменная по-умолчанию, что зацикливало перемещение «назад». Теперь нужно последовательно портировать все функции с интерпретатора и «научить» контроллер понимать большее число G команд.

Видео работы:

Arduino Nano теперь освобождается под другое начинание!)

Исходники программы rsteppercontroller_01. Библиотеки Stepper.h Предупреждаю! По ссылка сырой и наспех собранный код, особенно ратующим за чистоту программирования просьба не рефлексировать.

Запись опубликована в рубрике ARM, Разработки, ЧПУ. Добавьте в закладки постоянную ссылку.

         
Подписаться на новые статьи блога:

Один комментарий: Часть 1. Energia + Arduino GRLB = Lm4F120H5QR GRLB.

  1. Уведомление: Часть 2. DrawBot. | Skab in Sky

Добавить комментарий

Ваш e-mail не будет опубликован. Обязательные поля помечены *

Лимит времени истёк. Пожалуйста, перезагрузите CAPTCHA.