Андрей Смирнов
Время чтения: ~17 мин.
Просмотров: 0

Прошивка микроконтроллеров через ардуино

28 комментариев на «Драйвер шагового двигателя TB6560-V2. Описание, характеристики, рекомендации по эксплуатации.»

Подключаем AVR при помощи NoName USB-2-TTL кабелем на чипе Prolific PL2303HXA

Ничем не примечательный кабель черного цвета и немного большим, чем обычно, разъемом USB, стоит копейки, но позволяет не хуже других подключаться по последовательному интерфейсу к AVR (и прочим системам, умеющим работать по Serial). Однако, в кабеле кроется хитрость. А именно то, что компания производитель чипа, на основе которого и реализовано подключение по USB, закончила его поддержку в далеком 2012 году. И подключая кабель к системам на основе Win10 можно получить неработающее устройство по причине несовместимого драйвера, который установился автоматически.

Выбор требуемого драйвера в настройках устройства в Win10 для чипов разного времени выпуска.

И в чем загвоздка? В том, что некоторые китайские компании до сих пор продолжают выпускать поддельные чипы. И соответственно устройства на их основе. И с новыми драйверами они не работают. Для того, чтобы появилась возможность работы с таким устройством, необходимо установить старый драйвер и в ручном режиме назначить его к проблемному устройству. Кстати, узнать версию чипа можно при помощи специализированной программулины от Prolific, которая опознает чип. Только вот, для ее работы опять же нужен драйвер.

После установки соответствующего драйвера кабель может выполнять свои функции. Кстати, в одной системе (Win10) может быть установлено несколько драйверов Prolific и все устройства, при условии ручного подключения драйверов, продолжают работать.

Прошиваем AVR при помощи Arduino AVP ISP Shield от DIYMORE

Шилд от DIY More, пожалуй, самый интересный образчик сегодняшнего обзора. Не секрет, что в ISP программатор можно превратить любую плату Arduino (и даже обычный микроконтроллер ATmega328). Все дело в том, что для того, чтобы стать программатором ISP, нужно иметь цифровые выходы, которые можно превратить в выходы ISP: MISO, SCK, RST, MOSI. На всех оригинальных и не очень, платах Arduino Uno (и многих других) вообще специально разведен ISP 6-пин коннектор. Через него можно запрограммировать сам микроконтроллер на плате.

DIYMORE AVR ISP shield установленный на RoboDyn Uno R3. В панельке ATmega328P.

На официальном сайте итальянцев есть даже несколько инструкций как превратить обычную плату Arduino в ISP программатор: «Как превратить Arduino в ISP программатор» и «И как программировать ATmega328 без всего остального». У меня уже есть плата с удобной колодкой для установки микросхем, соответственно я могу воспользоваться ей, для прошивки микроконтроллера (соединив кабелем ISP разъемы). Этот вариант уже рассматривался, тем более, что в сети обнаружился весьма интересный вариант в виде платы-расширения для Arduino Uno с удобной колодкой для установки микросхемы, светодиодами, динамиком ISP 6-пин выводом, местом для установки 6-пин UART вывода, место для установки 10-пин ISP вывода.

Плата устанавливается как плата расширения на Arduino Uno. Причем не обязательно это должен быть оригинал от итальянцев. Все отлично взгромоздилось на клон от Robot Dyn. А затем все так же замечательно и прошилось.

Итак, чтобы воспользоваться AVR ISP shield сперва в Arduino-носитель нужно закачать скетч ArduinoISP. Скетч входит в стандартную поставку Arduino IDE и располагается в примерах. Залить скетч можно как обычным способом, через загрузчик (по USB), так и через ISP на плате Arduino при помощи одного из вышеописанных программаторов ISP. Напомню, что если загружать скетч из Arduino IDE посредством Upload using programmer, то скетч загрузится в плату без загрузчика. И для того, чтобы им потом плату можно было прошивать по USB придется отдельно загрузить в нее загрузчик. Данная операция осуществляется в том числе и через Arduino IDE (Burn bootloader), разумеется, с использованием ISP программатора. Однако, если скомпилировать скетч через Export compiled Binary, то можно загрузить через ISP-программатор и AVRDUDESS (или просто AVRDUDE) прошивку вместе с загрузчиком.

Но, рекомендуется идти простым путем, а именно загрузкой по USB из среды Arduino IDE скетча ArduinoISP

После загрузки можно устанавливать плату, важно не воткнуть ее со смещением, и микроконтроллер сверху (выемкой в сторону ручки). В качестве программатора выбирается ArduinoISP, так же необходимо выбрать нужный тип микроконтроллера

Прошивка осуществляется через Upload using programmer (через обычную кнопку загрузки скетч закачается в носитель).

Еще одна особенность AVR ISP Shield. На ней, как и на плате Arduino Uno присутствует вывод ISP 6-пин. И если установить плату AVR ISP Shield на Arduino Uno, то задаешься вопросом — к какому микроконтроллеру дает доступ этот разъем? К тому, что установлен в колодку или к тому, что стоит в Arduino? Ответ находится очень просто — экспериментом. Разъем на AVR ISP Shield дает доступ только к микроконтроллеру, что установлен на колодке. Запрограммировать плату Arduino-носитель через шилд не выйдет. Нужно его снять и подключиться к разъему ISP самой платы Arduino. С другой стороны, AVR ISP Shield можно использовать вообще без Arduino-носителя (Uno), просто подключив 6-ти пиновый разъем к ISP-программатору (не забыв про питание). Точно так же можно подключить и USB2TTL, дабы получать вывод с Serial.

Пробрасывает ли AVR ISP Shield вывод в последовательный порт на плату носитель с установленной ArduinoISP? Нет, такой функции не предусмотрено, хотя ее ничто не мешает реализовать. Ну почти ничего. Во-первых, необходимо физически соединить выводы с колодки на AVR ISP Shield к необходимым pin-ам, а затем произвести проброску чтения с этих пинов в скетче ArduinoISP с выводом их в стандартный Serial. Текущие версии фреймворка Arduino позволяют провернуть подобную операцию. Связь будет односторонней, только с микроконтроллера на плате и в порт носителя, но тем не менее, подобный подход позволит в одном устройстве соединить сразу две функции. Что, согласитесь, удобно.

Простой стерео усилитель

Рейтинг:   / 5

Подробности
Категория: УМЗЧ на микросхемах
Опубликовано: 30.11.2017 16:51
Просмотров: 1408

Перепрошивка загрузчика Arduino в ATMEGA328P через ATMEGA16U2

Довольно сложная часть нашего мероприятия по прошивке Ардуино. Вам нужно будет припаять некоторые провода. В основном нам нужно подключиться таким образом:

ICSP1 MISO2.Pin.1 -> ICSP MISO.Pin.1
ICSP1 SCK2.Pin.3 -> ICSP SCK.Pin.3
ICSP1 MOSI2.Pin.4 -> ICSP MOSI.Pin.4
JP2 PB4.Pin.1 -> ICSP RESET.Pin.5

Смотрите картинку ниже для понимания:

Подключите плату Arduino к USB-кабелю. Светодиоды RX и TX должны помигать два раза. Драйверы должны быть правильно распознаны (Jungo Connectivity -> AVRISP mkII). Запустите Atmel Studio. Зайдите в: Пуск -> Все программы -> Atmel -> Atmel Studio.

Перейдите в: Инструменты -> Программирование устройства. Выберите:

Инструмент -> AVRISP mkII
Устройство -> ATmega328P
Интерфейс -> ISP

Нажмите кнопку «Применить».

Установите частоту ISP на 16,1 кГц. Нажмите кнопку «Установить».

Программатор не будет работать, если вы установите очень низкую тактовую частоту ISP. Вы получите сообщение об ошибке: «ispProgramMem: получено состояние ошибки: получено 0x81, ожидаемое 0x00 (истекло время выборки контакта RDY / nBSY)». На английском будет звучать так: «ispProgramMem: Error status received: Got 0x81, expected 0x00 (RDY/nBSY pin sampling timed out)«. Однако максимальная скорость ISP также ограничена и не может превышать 1/4 частоты устройства.

Перейдите в «Подпись устройства» (Device signature) и нажмите кнопку «Читать» (Read). Вы должны увидеть правильную «подпись устройства»: 0x1E950F. Нажмите «Memories» и найдите hex файл загрузчика Arduino. Он находится в:

C:\Program Files\ Arduino\hardware\arduinobootloaders\optiboot\optiboot_atmega328.hex

Нажмите кнопку «Program». Если вы используете совершенно новый незапрограммированный ATMEGA328P, вы также должны запрограммировать FUSES. Перейдите в Fuses и используйте следующие значения: low_fuses = 0xff; high_fuses = 0xDE; extended_fuses = 0x05.

Вы успешно прошили 328P с загрузчиком Arduino. На следующем шаге мы вернем оригинальную прошивку 16U2.

Темная тема для Arduino IDE

Очень многих раздражает простенькое оформление Arduino IDE в корпоративных цветах Arduino. Все такое белое и «слепое». Долго работать в таком цветовом решении не всегда комфортно, особенно если это ночь, вокруг темно и все спят.

Вариант темной темы под Mac. Скриншот с GitHub.

Для такого случая сторонний разработчик разработал так называемую темную тему, тему которая позволяет вернуть знакомый с детства вариант черного фона и светлого текста на нем. Тема не идеальна, так как не позволяет полностью настроить все нюансы, но ограничение это связано не с самой темой, а с ограничениями Arduino IDE. Тему, при желании, можно подредактировать самостоятельно.

Популярные публикации

Элементы платы

Подключение двигателя

На контакты 1, 2 подключается первая обмотка биполярного шагового двигателя. На контакты 3, 4 — вторая обмотка. Униполярный двигатель подключается точно также, просто не используются выводы из середин обмоток.

Питание двигателя

На колодки Vin подаётся напряжение 4,5–25 В постоянного тока. Для питания двигателя рекомендуется использовать отдельный контур питания, не связанный с цепью питания управляющего контроллера.

К примеру, если вы используете Arduino, не рекомендуется использовать питание с пина 5V Arduino. Это может привести к перезагрузке управляющего контроллера, или к перегрузке регулятора напряжения Arduino. В некоторых случаях допускается использовать для питания шагового двигателя пин Vin Arduino. Например, если Arduino запитана от мощного внешнего источника питания 7–12 В, напряжение которого при включении двигателя не падает ниже 7 В.

Контакты подключения 3-проводного шлейфа

Troyka-Stepper подключается к управляющей электронике по трём 3-проводным шлейфам.
Назначение контактов 3-проводных шлейфов:

  • Питание (V) — красный провод. На него должно подаваться напряжение 3,3–5 В, которое используется для питания логической части драйвера шагового двигателя.
  • Земля (G) — чёрный провод. Должен быть соединён с землёй микроконтроллера.
  • Сигнальный — жёлтый провод. Через него происходит управление соответствующим пином модуля.

Для управления модулем используется от одного до трёх сигнальных контакта:

  • Step. Каждый раз, когда напряжение на этом контакте переходит из низкого уровня напряжения в высокий, шаговый двигатель делает следующий шаг.
  • Direction. Направление вращения шагового двигателя зависит от схемы подключения его обмоток и от напряжения на этом пине. Если на пине direction установлен высокий уровень напряжения, двигатель вращается в одну сторону. Если низкий — в другую. Если изменять направление вращения двигателя не нужно, вы можете не подключать этот контакт к микроконтроллеру.
  • Enable. Высокий уровень на этом пине включает подачу напряжения на двигатель. При остановке шагового двигателя в определённом положении, питание продолжает поступать на его управляющую обмотку. Это приводит к нагреву шагового двигателя и излишнему расходу электроэнергии. Чтобы отключить подачу питания на двигатель, достаточно выставить низкий уровень напряжения на этом контакте. При остановке двигателя бывает полезно подать на этот контакт ШИМ-сигнал. Это позволит оставить на двигателе небольшое усилие, необходимое для удержания вала в текущем положении. Электроэнергии в таком случае будет тратится значительно меньше. Если нет необходимости управлять включением двигателя, вы можете не подключать этот контакт к микроконтроллеру. Тогда ток через обмотки двигателя будет течь всегда, если есть напряжение питания.

Модные варианты

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

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

«Принц Альберт»

Нераспустившийся бутон цветка – такое сравнение приходит на ум, когда видишь этот галстучный узел. Его нелегко создать, но это стоит того. Он прекрасно подходит для длинных воротников, для воротников на клепках, для зауженных галстуков. Форма такого узла слегка асимметрична и довольно объемна за счет двойной петли. Ему можно придать как деловой вид, затянув посильнее, так и более свободный, немного ослабив давление.

«Мюррелл»

Эффектность «Мюрелла» создается за счет перевернутости и двухслойности, узкая половина галстука накладывается на широкую. Симметричный со строгой треугольной формой, он идеально подойдет к сорочкам с широким и мягким воротом.

«Онассис»

В основе «Онассиса» лежит четвертной узел с тем лишь отличием, что широкая половина галстука не пропускается в ушко, а просто перекидывается поверх перекрещения половин. Такой узел выглядит необычно и привлекательно. Эксцентричным мужчинам, которые не боятся выделиться из толпы, он точно понравится. Для создания «Онассиса» подойдут галстуки ярких цветов и легкие по текстуре.

«Кейп»

Этот узел – выбор смелых и уверенных мужчин, он встречается очень редко, так как сложен в исполнении, но если на каком-то мероприятии появится человек в галстуке, завязанном «Кейпом», всеобщие взгляды и внимание к его персоне гарантированы. Надо помнить, что галстуки в полоску и такой узел – несовместимы

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

«Ван Вейк»

Этот способ завязывания является одним из самых необычных. Его красота заключается в сходстве со спиралью. Происходит он из узла «Принц Альберт». Но заметно отличается от последнего. «Ван Вейк» выглядит более вытянутым и объемным за счет того, что широкая сторона галстука обвивает узкую трижды, при этом создается красивый эффект наслоения складок. Прекрасно такой узел сочетается с воротниками рубашек на пуговицах и на клепках, также отлично подойдет воротник в итальянском стиле.

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

Создаем скетч для Arduino Nano

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

Если мы идем по первому пути — мы должны добавить следующий код в наше приложение:

int redPin = 12;

void setup() {
  // initialize Leds
  pinMode(redPin, OUTPUT);
}

void loop() {
  digitalWrite(redPin, HIGH);
  delay(1000);
  digitalWrite(redPin, LOW);
  delay(1000);
}

Второй вариант — это выбор уже готового проекта в нашей IDE. Для этого нужно сделать следующее.

File → Examples → 01. Basics → Blink
(Файл → Примеры → 01. Основы → Моргание)

После чего мы увидим код в нашем окне программы:

И здесь важный момент — нужно нажать стрелку сверху, чтобы скомпилировать скетч. После чего вы увидите надпись «Компиляция скетча» (Compiling sketch…) слева и справа процентную шкалу. В свою очередь стрелка запуска сверху поменяет свой цвет:

После этого светодиод начнет мигать.

Внимательно следите в программе за тем какие цифровые выводы вы указываете, т.к они должны соответствовать схеме подключения деталей.

Чипы CH340g, FTDI FT232, ATMEGA 16U2 / 8U2

Зачем нужен USB / UART TTL преобразователь

Когда вы подключаете Ардуино к компьютеру или любому другому устройству по USB, вы связываете между собой сразу два мира: микропроцессорный, сосредоточенный на плате Arduino и мир внешних устройств. Подходы к организации взаимодействия между элементами в этих мирах сильно отличаются. Для работы внутри платы используется особый протокол со своими правилами взаимодействия – UART. И для того, чтобы “внутреннюю” линию соединить с “внешней” нужен определенный преобразователь-посредник, который будет хорошо понимать физические сигналы, используемые как для USB, так и для платы контроллера. Вот этим посредником и являются чипы USB- UART (иногда их еще обозначают называют USB-TTL, хотя это не совсем корректно) преобразователей, самыми популярными из которых являются микросхемы FTDI, CH340G,  ATMEGA U16.

USB преобразователи в Ардуино

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

Исторически наиболее популярным вариантом чипов USB/UART конвертера была линейка микросхем от шотландского производителя  FTDI. Главным ее недостатком была стоимость и весьма странная политика в области контроля контрафакта, зачастую приводящая к тому, что легальные купленные устройства блокировались драйверами компании. Сегодня существенную конкуренцию FTDI составляют микросхемы семейства CH340, массово производимые многочисленными китайскими производителями. Они гораздо дешевле и достаточно надежны и это постепенно привело к тому, что в большинстве недорогих контроллеров Arduino и адаптеров установлены именно чипы CH340 (CH340g).

Наверное, единственной, но очень важной проблемой при использовании CH340g взамен FTDI является необходимость в некоторых случаях установки USB драйвера. “Респектабельная” FTDI давно уже тесно интегрирована в Windows и при подключении устройства с FTDI-преобразователем никаких драйвером устанавливать не нужно – они уже есть в системе

Для подключения CH340g иногда нужно скачать драйвер и установить его – только после этого система увидит наше устройство.

Процедура установки драйвера для CH340g на самом деле очень проста и почти всегда проходит без ошибок на самых популярных операционных системах Windows7, Windows10. Именно поэтому никаких проблем с использованием недорогих ардуино плат, несущих на себе чип CH340, почти никогда не возникает.

Остается только вопрос – а зачем вообще нужен какой-то USB драйвер для подключения ардуино  к компьютеру? Давайте разберемся.

USB драйвер для ардуино

Мы не будем уходить в теоретические дебри, разбирая многочисленные коммуникационные протоколы, поддерживаемые современными компьютерными системами. Главное, что нужно понимать: когда мы присоединяем какое-то устройство к компьютеру, оно может передавать или получать данные только если его “поймут” с другой стороны. На стороне компьютера таким переводчиком является специальная программа, называемая драйвером. Драйвер USB работает в режиме эмуляции последовательного, COM-порта. Это означает, что при подключении операционная система создает виртуальные, программные COM-порты, с которыми и работает драйвер. В Windows их можно посмотреть в диспетчере устройств.

Если мы подключаем Ардуино к компьютеру, то чип с помощью драйвера попросит систему открыть порт и начнет взаимодействие . И для чипов разных  производителей потребуются разные драйвера. Проблемы возникают, когда драйвера нет. Система пытается найти его для подключенного устройства, не находит и мы никогда не  увидим его в списке устройств. Для решения проблемы надо найти и скачать соответствующие драйвера, а затем установить их на компьютер. Ниже мы рассмотрим, как это делается на примере USB драйвера CH340.

Загрузка скетча

Программатор Arduino ISP также можно использовать для загрузки скетчей на AVR-платы или на другие AVR-микроконтроллеры, которые поддерживаются IDE Arduino.

Стандартная загрузка скетча осуществляется через загрузчик. Однако если воспользоваться вместо этого внешним загрузчиком, то для скетча будет предоставлен весь объем имеющейся у микроконтроллера flash-памяти, т.к. освободится память, которая иначе отошла бы загрузчику. Таким образом, если вы хотите записать на плату какой-то особо «увесистый» скетч, то имеет смысл воспользоваться именно внешним программатором, а не загрузчиком.

Примечание: Имейте в виду, что если вы запишите скетч поверх загрузчика, то загружать скетчи нажатием на кнопку «Загрузка» в IDE Arduino уже не получится. Таким образом, если вы хотите использовать свою Arduino как прежде, то на нее нужно сначала записать загрузчик.

Теперь открываем скетч, редактируем его, если нужно, а затем кликаем Скетч > Загрузить через программатор (Sketch > Upload Using Programmer). Или можно воспользоваться комбинацией клавиш  Ctrl + ⇧ Shift + U .

Arduino Pro Mini 5 В

Эта версия снабжена микроконтроллером ATmega328. В отличии от своего младшего собрата, он имеет вдвое большие объемы энергонезависимой и flash памяти. И может похвастаться тактовой частотой в 16 МГц. Узнать о способах прошивки этого микроконтроллера вы можете в моей статье:

Купить Arduino Pro Mini

  • Качество практически не отличается от оригинальных плат, произведенных в Италии.
  • Цена в разы ниже. Итальянская ардуино про мини стоит около 7$, а в Китае этот микроконтроллер обойдется в 1,5$
  • В российских магазинах наценка составляет 100-500%. При этом очень часто под видом оригинальной платы могут продавать китайские, да еще и очень низкого качества.
  • На алиэкспрессе вы легко можете найти надежных продавцов с хорошими отзывами.
  • Вы можете воспользоваться скидочными купонами и кэшбэк сервисами.

Характеристики

  • Микроконтроллер: ATmega168 или ATmega328
  • Предельное напряжение питания: 3,3-12 В и 5-12 В
  • Цифровых вводов/выводов: 14
  • ШИМ: 6 цифровых пинов могут быть использованы как выводы ШИМ
  • Аналоговые выводы: 8
  • Максимальная сила тока: 40 mAh с одного вывода и 400 mAh со всех выводов.
  • Flash память: 16 кб
  • SRAM: 1 кб
  • EEPROM: 512 байт
  • Тактовая частота: 8 МГц и 16 МГц

Подключение питания к Arduino Pro Mini

Этот микроконтроллер можно питать тремя способами:

  • Переходником FTDI, подключенному к 6 соответствующим пинам.
  • Подавая стабилизированное напряжение на вывод Vcc. 3,3 В или 5 В в зависимости от версии
  • Подавая напряжение на вывод RAW. 3,3-12 В или 5-12 В в зависимости от версии

Заключение

В этой статье мы рассмотрели различные аспекты загрузки скетчей в Arduino Uno и Nano. Прошивка плат на базе микроконтроллеров ATmega328 и ATmega256, как правило, не сложна и может выполняться одним нажатием кнопки в Arduino IDE. За эту простоту мы должны благодарить встроенную программу-загрузчик, выполняющую за нас все основные действия на низком уровне.

Еще одним вариантом перепрошивки контроллера является использование другой платы адуино или специальных программаторов, использующих микросхемы CP2102 CH340, FTDI и другие. Этот метод требует дополнительных усилий и затрат, но позволяет гибко изменять параметры прошивки. Какой из двух вариантов выбрать – решать вам. Для новичков, безусловно, первым шагом станет использование Arduino IDE, благо, ее создатели сделали все, чтобы упростить этот процесс.

Выводы

Благодаря своей невыносимой популярности, прошить AVR от Atmel можно тысячью и одним способом. И приведенные выше «адаптеры», и программные продукты — лишь маленькая часть всего многообразия систем и средств по прошивке. В обзор не попал интересный ISP-программатор USBasp. Хотя его с успехом заменяет TinyISP. Однако, в последних ревизиях, от 2011 года в USBasp вроде бы как была задекламирована функция совмещения в одном устройстве и ISP-программатора, и Serial интерфейса. На некоторых картинках в сети даже попадаются подписи с выведенными Rx/Tx на десятипиновую колодку, но похоже, что кроме железной поддержки требуется еще и программная реализация. А так хотелось бы иметь в одной устройстве программатор вместе с последовательным интерфейсом. Хотя, некоторые производители, например, Pololu выпускают подобные устройства, да и программатор на FTDI-чипе не исключение, хотя его и не удалось запустить под Windows.

За время испытания, у меня не вышло разобраться с проблемой с не отпусканием «кнопки» сброса при программировании через загрузчик и USB2TTL адаптер. Причины сего так и остались покрытыми мраком. Приходилось вручную отключать пин DTR, и только после этого происходила загрузка в штатном режиме.

Рейтинг автора
5
Материал подготовил
Максим Иванов
Наш эксперт
Написано статей
129
Ссылка на основную публикацию
Похожие публикации