Принцип работы и основы программирования ПЛК
До появления твердотельных логических схем разработка систем логического управления основывались на электромеханических реле. По сей день реле не устарели в своем предназначении, но все же в некоторых своих прежних функциях они заменены контроллером.
В современной промышленности существует большое количество различных систем и процессов, требующих автоматизации, но теперь такие системы редко проектируются из реле. Современные производственные процессы нуждаются в устройстве, которое запрограммировано на выполнение различных логических функций.
В конце 1960-х годов американская компания «Bedford Associates» разработала компьютерное устройство, названное MODICON (Modular Digital Controller). Позже название устройства стало названием подразделения компании, спроектировавшей, сделавшей и продавшей его.
Другие компании разработали собственные версии этого устройства, и, в конце концов, оно стало известно как ПЛК, или программируемый логический контроллер. Целью программируемого контроллера, способного имитировать работу большого количества реле, была замена электромеханических реле на логические элементы.
ПЛК имеет набор входных клемм, с помощью которых можно контролировать состояние датчиков и выключателей. Также имеются выходные клеммы, которые сообщают «высокий» или «низкий» сигнал индикаторам питания, электромагнитным клапанам, контакторам, небольшим двигателям и другим самоконтролируемым устройствам.
ПЛК легки в программировании, так как их программный язык напоминает логику работы реле. Так обычный промышленный электрик или инженер-электрик, привыкший читать схемы релейной логики, будет чувствовать себя комфортно и при программировании ПЛК на выполнение тех же функций.
Подключение сигналов и стандартное программирование несколько отличаются у разных моделей ПЛК, но они достаточно схожи, что позволяет разместить здесь «общее» введение в программирование этого устройства.
Следующая иллюстрация показывает простой ПЛК, а точнее то, как он может выглядеть спереди. Две винтовые клеммы, обеспечивающие подключение для внутренних цепей ПЛК напряженим до 120 В переменного тока, помечены L1 и L2.
Шесть винтовых клемм, расположенных с левой стороны, обеспечивают подключение для входных устройств. Каждая клемма представляет свой входной канал (Х). Винтовая клемма («общее» подключение ) расположенная в левом нижнем углу обычно подключается к L2 (нейтральная) источника тока напряжением 120 В переменного тока.

Внутри корпуса ПЛК, связывающего каждую входную клемму с общей клеммой, находится оптоизолятор устройства (светодиод), который обеспечивает электрически изолированный «высокий» сигнал для схемы компьютера ( фототранзистор интерпретирует свет светодиода), когда 120-тивольтный переменный ток устанавливается между соответствующей входной клеммой и общей клеммой. Светодиод на передней панели ПЛК дает возможность понять, какой вход находится под напряжением:

Выходные сигналы генерируются компьютерной схемотехникой ПЛК, активируя переключающее устройство (транзистор, тиристор или даже электромеханическое реле) и связывая клемму «Источник» (правый нижний угол) с любым помеченным буквой Y выходом. Клемма «Источник» обычно связывается с L1. Так же, как и каждый вход, каждый выход, находящий под напряжением, отмечается с помощью светодиода:

Таким образом, ПЛК может подключаться к любым устройствам, таким как переключатели и электромагниты.
Основы программирования ПЛК
Современная логика системы управления установлена в ПЛК посредством компьютерной программы. Эта программа определяет, какие выходы находятся под напряжением и при каких входных условиях. Хотя сама программа напоминают схему логики реле, в ней не существует никаких контактов переключателя или катушек реле, действующих внутри ПЛК для создания связей между входом и выходом. Эти контакты и катушки мнимые. Программа пишется и просматривается с помощью персонального компьютера, подключенного к порту программирования ПЛК.
Рассмотрим следующую схему и программу ПЛК:

Когда кнопочный переключатель не задействован (находится в не нажатом состоянии), сигнал не посылается на вход Х1. В соответствие с программой, которая показывает «открытый» вход Х1, сигнал не будет посылаться и на выход Y1. Таким образом, выход Y1 останется обесточенным, а индикатор, подключенный к нему, погасшим.
Если кнопочный переключатель нажат, сигнал будет отправлен к входу Х1. Все контакты Х1 в программе примут активированное состояние, как будто они являются контактами реле, активированными посредством подачи напряжения катушке реле, названной Х1. В этом случае открытый контакт Х1 будет «закрыт» и отправит сигнал к катушке Y1. Когда катушка Y1 будет находиться под напряжением, выход Y1 осветится лампочкой, подключенной к нему.

Следует понимать, что контакт Х1 и катушка Y1 соединены с помощью проводов, а «сигнал», появляющийся на мониторе компьютера, виртуальный. Они не существуют как реальные электрические компоненты. Они присутствуют только в компьютерной программе — часть программного обеспечения — и всего лишь напоминают то, что происходит в схеме реле.
Не менее важно понять, что компьютер, используемый для написания и редактирования программы, не нужен для дальнейшего использования ПЛК. После того, как программа была загружена в программируемый контроллер, компьютер можно отключить, и ПЛК самостоятельно будет выполнять программные команды. Мы включаем монитор персонального компьютера в иллюстрации для того, чтобы вы поняли связь между реальными условиями (замыкание переключателя и статусы лампы) и статусы программы (сигналы через виртуальные контакты и виртуальные катушки).
Истинная мощь и универсальность ПЛК раскрывается, когда мы хотим изменить поведение системы управления. Поскольку ПЛК является программируемым устройством, мы можем изменить, команды, которые мы задали, без перенастройки компонентов, подключенных к нему. Предположим, что мы решили функцию «переключатель – лампочка» перепрограммировать наоборот: нажать кнопку, чтобы выключить лампочку, и отпустить ее, чтобы включить.
Решение такой задачи в реальных условиях заключается в том, что выключатель, «открытый» при нормальных условиях, заменяется на «закрытый». Программное ее решение – это изменение программы так, чтобы контакт Х1 при нормальных условиях был «закрыт», а не «открыт».
На следующем изображении вы увидите уже измененную программу, при не активизированном переключателе:

А здесь переключатель активизирован:

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

Чтобы построить аналогичную схему, используя реле, потребуются три реле с двумя открытыми контактами при нормальных условиях, каждый из которых должен быть использован. Однако используя ПЛК, мы можем без добавления дополнительного оборудования запрограммировать столько контактов для каждого «Х» входа, сколько нам хотелось бы (каждый вход и выход должен занимать не больше, чем 1 бит в цифровой памяти ПЛК) и вызывать их столько раз, сколько необходимо.
Кроме того, так как каждый выход ПЛК занимает не более одного бита в его памяти, мы можем вносить контакты в программу, приводя Y выход в не активизированное состояние. Для примера возьмем схему двигателя с системой контроля начала движения и остановки:

Переключатель, подключенный к входу Х1, служит кнопкой «Старт», в то время как переключатель, подключенный к входу Х2 — кнопкой «Стоп». Другой контакт, названный Y1, подобно печати в контакте, позволяет контактору двигателя оставаться под напряжением, даже если отпустить кнопку «Старт». При этом вы можете увидеть, как контакт Х2, «закрытый» при нормальных условиях, появится в цветном блоке, показывая тем самым, что он находится в «закрытом» («электропроводящем») состоянии.
Если нажать кнопку «Старт», то по «закрытому» контакту Х1 пройдет ток ток и он отправит 120 В переменного токак к контактору двигателя. Параллельный контакт Y1 также «закроется», тем самым замкнув цепь:

Если мы теперь нажмем кнопку «Старт», контакт Х1 перейдет в «открытое» состояние, но двигатель будет продолжать работать, потому что замкнутый контакт Y1 все еще будет держать катушку под напряжением:

Чтобы остановить двигатель, нужно быстро нажать кнопку «Стоп», которая сообщит напряжение входу Х1 и «открытому» контакту, что приведет к прекращению подачи напряжения к катушке Y1:

Когда вы нажали кнопку «Стоп», вход Х1 остался без напряжения, вернув тем самым контакт Х1 в его нормальное «закрытое» состояние. Двигатель ни при каких условиях не станет работать снова, пока вы снова не нажмете кнопку «Старт», потому что печать в контакте Y1 была потеряна:

Очень важна отказоустойчивая модель устройств контроля ПЛК, так же, как и в устройствах контроля электромеханического реле. Нужно всегда учитывать влияние ошибочно «открытого» контакта на работу системы. Так, например, в нашем случае, если контакт Х2 будет ошибочно «открыт», то не будет никакой возможности остановить двигатель!
Решением этой проблемы является перепрограммирование контакта Х2 внутри ПЛК и фактическое нажатие кнопки «Стоп»:

Когда кнопка «Стоп» не нажата, вход ПЛК Х2 находится под напряжением, т.е. контакт Х2 «закрыт». Это позволяет двигателю начать работу, когда контакту Х1 сообщается ток, и продолжать работу, когда кнопка «Старт» отпущена. Когда вы нажимаете кнопку «Стоп», контакт Х2 переходит в «открытое» состояние и двигатель прекращает работу. Таким образом, вы можете увидеть, что функциональной разницы между этой и предыдущей моделью нет.
Тем не менее, если входной контакт Х2 был ошибочно «открыт», вход Х2 может быть остановлен нажатием кнопки «Стоп». В результате двигатель немедленно отключается. Эта модель безопаснее, чем предыдущая, где нажатие кнопки «Стоп» сделает невозможным остановку двигателя.
В дополнение к входам (Х) и выходам (Y) в ПЛК есть возможность использовать «внутренние контакты и катушки. Они используются так же, как и промежуточные реле, применяемые в стандартных релейных схемах.
Чтобы понять принцип работы «внутренних» схем и контактов, рассмотрим следующую схему и программу, разработанную по принципу трех входов логической функции AND:

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

В этой статье, посвященной программируемым логическим контроллерам, иллюстрирована лишь небольшая выборка их возможностей. Как компьютер ПЛК может выполнять и другие расширенные функции с гораздо большей точностью и надежностью, чем при использовании электромеханических логических устройств. Большинство ПЛК имеют больше шести входов и выходов. Следующая иллюстрация показывает один из ПЛК компании Allen-Bradley:

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

Одно из преимуществ ПЛК, которое просто не может быть продублировано электромеханическим реле, является удаленный мониторинг и управление через цифровые сети компьютера. Поскольку ПЛК – это ничего больше, чем специализированный цифровой компьютер, он может легко «общаться» с другими компьютерами. Следующая фотография — графическое изображение процесса заполнения жидкостью (насосная станция для муниципальной очистки сточных вод), контролируемого ПЛК. При этом сама станция расположена в нескольких километрах от монитора компьютера.
Перевод с английского — Юлия Сурта.
Structured Text
Представляем книгу по Structured Text (ST) МЭК 61131-3. Автор — Сергей Романов
Книга «Изучаем Structured Text МЭК 61131-3»: Ссылка на книгу
Надеюсь, что эта статья была для вас полезной. Смотрите также другие статьи в категории Электрическая энергия в быту и на производстве » Устройства автоматики
Как научиться программировать микроконтроллеры
Я начинал с электроники. Увлекался с детства. Выписывал журналы «Радио», читал их от корки до корки. И из этих журналов узнал о микроконтроллерах (МК). Они меня сильно заинтересовали, поскольку схемы устройств на МК были значительно проще, чем на транзисторах или даже микросхемах. Но научиться использовать микроконтроллеры я тогда не смог. В журналах было недостаточно сведений, а книг тогда по этой теме не было.
Другое дело сейчас — способов научиться программировать МК много. Осталось только выбрать подходящий. А самый подходящий — это
Переходите по ссылке выше — там вас ждёт лучший видеокурс о микроконтроллерах, который мне приходилось когда-либо видеть. Ну а я пока для тех, кто вообще не в теме, расскажу немного о микроконтроллерах.
Что такое микроконтроллер
Микроконтроллер — это микросхема, которую можно программировать. Это если кратко. Далее будет чуть подробнее, а пока небольшая предыстория появления микроконтроллеров на свет божий.
Когда-то давно кто-то умный понял, что на существующей элементной базе (транзисторах и обычных микросхемах) уже невозможно создавать устройства, которые удовлетворяли бы современным требованиям по размерам и массе.
Кроме того, требования к электронному оборудованию всё возрастали, и для их выполнения приходилось создавать всё больше и больше новых микросхем — каждая под свою задачу.
Тогда этот кто-то умный решил — а почему бы не сделать программируемую микросхему, и использовать её для всех устройств. Ведь в большинстве случаев задачи являются типовыми, и отличается лишь логика управления. И почему бы эту логику не прописать в программе, а не использовать для каждой операции отдельную микросхему?
Так появились микропроцессоры. Микропроцессор — это тоже программируемая микросхема. Но в микропроцессоре, как правило, была только управляющая программа. А память, модули ввода-вывода и т.п. реализовывались в других микросхемах.
Это было лучше, чем применение обычных транзисторов или микросхем. Но всё равно не очень удобно. Потому что даже для очень простых устройств приходилось использовать несколько микросхем: микропроцессор, микросхемы памяти, микросхемы ввода-вывода, тактовые генераторы и т.п.
Поэтому создание микроконтроллера было неизбежным этапом эволюции микропроцессорных систем.
Микроконтроллер — это программируемая микросхема, которая объединяет в одном корпусе все (или почти все) части микропроцессорной системы.
То есть сегодня можно создать достаточно сложное устройство, например, новогоднюю гирлянду с разными режимами работы, имея лишь одну микросхему — простенький микроконтроллер, к тому же очень недорогой (стоимость простых микроконтроллеров начинается примерно от 50 рублей).
Так что микроконтроллеры очень быстро завоевали популярность среди электронщиков, причём как любителей, так и профессионалов. И сегодня применяются практически везде.
Применение микроконтроллеров
Как уже было сказано выше, сегодня микроконтроллеры применяются почти во всех электронных устройствах: игрушках, утюгах, стиральных машинах, автомобилях, да вообще везде.
Даже в основе таких приборов для промышленной автоматизации, как ПЛК, используются микроконтроллеры.
Микроконтроллеры используются в оборонной промышленности. К таким микроконтроллерам очень высокие требования. И цена их соответствующая. МК для оборонки, которые производятся в России, стоят от 15000 рублей за штуку и выше. Сравните с простейшими МК для гражданки — от 50 рублей.
В космической технике МК также используются. К ним требования ещё выше. Например, они должны быть устойчивы к радиации и низким температурам. Про их стоимость я ничего не знаю. Но, думаю, что она самая что ни на есть “космическая”.
В общем, если вы выберите профессию, связанную с микроконтроллерами, то сможете работать практически в любой области: от фриланса и машиностроения до оборонки и космической отрасли.
Язык программирования микроконтроллеров
Я уже говорил, что микроконтроллер — это программируемая микросхема. Из этого следует, что для создания устройств на микроконтроллерах необходимо научиться их программировать.
А для программирования, как известно, используются языки программирования. Языков программирования сегодня существует огромное количество. И для многих из них имеются средства разработки для микроконтроллеров (средства для написания программ).
Однако я советую использовать стандартные средства разработки, которые предоставляют сами разработчики и производители МК. Во всяком случае на начальном этапе обучения. А стандартные средства разработки, как правило, поддерживают только два языка программирования: ассемблер и Си.
Несмотря на то, что ассемблер сложнее, я советую начинать обучение именно с него. Потому что так вы лучше разберётесь с тем, как работает МК и будете понимать, что и зачем вы делаете. А изучить Си можно будет потом.
Что нужно для программирования МК
Программы для программирования микроконтроллеров
Как я уже говорил, для создания программ потребуется среда разработки — это специальная программа, которая устанавливается на компьютер. С её помощью можно писать, отлаживать и загружать программы в микроконтроллер.
Повторюсь — лучше использовать стандартные средства разработки от производителей. Они, как правило, бесплатны, и их можно скачать с официального сайта производителя микроконтроллеров.
Имеются и другие полезные программы, которые по большей части используются для отладки и для эмуляции работы микроконтроллера. Это позволяет как следует отладить и проверить программу на компьютере без загрузки в микроконтроллер. Но на начальном этапе обучения вполне достаточно стандартных программ и стандартных отладочных средств.
Программы для прошивки микроконтроллеров
Загрузку готовой программы в микроконтроллер в простонародье называют “прошивкой”.
Когда вы написали программу, вам надо загрузить её в МК (прошить микроконтроллер). Для этого вам, кроме программы, потребуется специальное устройство — программатор, а также соединительные кабели.
Всё это можно купить в магазинах электроники или у производителя микроконтроллеров.
Для прошивки микроконтроллера обычно используется та же программа, что и для создания программы.
ВАЖНО! Некоторые микроконтроллеры допускают только одну прошивку, или количество перепрошивок может быть ограничено. Поэтому, прежде чем загружать программу в МК, постарайтесь её как следует проверить и отладить на компьютере.
Как работает микроконтроллер
Ну вообще вы можете об этом узнать, если внимательно прочитаете руководство на конкретный микроконтроллер. Но если сказать упрощённо, то микроконтроллер работает примерно так:
- При включении питания выполняется сброс всех модулей микроконтроллера в исходное состояние, а программа загружается в оперативную память и начинает выполняться. Обычно программа выполняется в цикле. То есть все команды выполняются последовательно одна за одной. После выполнения последней команды вновь выполняется первая и так до бесконечности — пока не будет отключено питания или выполнен сброс.
- Тактовый генератор задаёт тактовую частоту. Это позволяет синхронизировать по времени все процессы, происходящие внутри микроконтроллера. Например, если тактовая частота 1000 Гц, то это означает, что за одну секунду генератор выдаёт 1000 тактовых сигналов.
- Каждый микроконтроллер имеет определённый набор команд (инструкций), из которых и состоит программа. Например, есть команда для чтения входа, есть команда для установки выхода, есть команды для выполнения арифметических операций и т.е.
- Выполнение каждой команды программы занимает один или несколько тактов. Например, если команда занимает 2 такта, то это означает, что при тактовой частоте 1000 Гц она выполняется за 1 / (1000 / 2) = 0,002 с. Если в нашей программе будет 100 таких команд, то это будет означать, что вся программа будет выполнена за 0,002 * 100 = 0,2 секунды. Это, конечно, упрошённо. Но суть, я думаю, вы уловили.
- Программа, как правило, считывает какие-то входные значения, обрабатывает их, и выдаёт на выходы сигналы в соответствии с логикой программы. Например, у нас есть новогодняя гирлянда с двумя режимами работы (пусть это будут “бегущий огонь” и “бегущая тень”), которые устанавливаются переключателем. Тогда микроконтроллер, в зависимости от того, на какой вход замкнут переключатель (какой режим выбран), будет через определённые промежутки времени поочерёдно подавать сигнал на выходы (зажигать светодиод — бегущий огонь), или снимать сигнал с выхода (гасить светодиод — бегущая тень). Временные промежутки также программируются при создании программы.
То есть упрощённый принцип работы МК такой:
- Прочитать входы
- Обработать полученные данные
- Установить выходы
Практическое программирование микроконтроллеров
Пока всё кажется несложным. Но на самом деле, конечно, всё НАМНОГО сложнее. Я привёл лишь некоторые общие сведения для тех, кто совсем не в теме.
Но любым, даже самым сложным вещам, можно научиться. Было бы желание. Но, кроме обучения, требуется, конечно, практика. Без практики любое обучение не имеет ни смысла, ни результата.
Поэтому очень советую в ходе обучения как можно больше создавать программ. Пусть даже без реального микроконтроллера. Хотя бы просто на компьютере.
А вот что делать потом, когда вы уже чему-то научитесь? Где приложить полученные навыки на практике?
К счастью, сегодня и для этого есть множество путей — выбирайте любой из этих или придумайте свой:
- Устроиться на работу, связанную с программированием микроконтроллеров
- Разрабатывать, создавать и продавать свои устройства на МК
- Преподавать уроки по микроконтроллерам в техническом училище или ВУЗе, ну или в области дополнительного образования — задач по микроконтроллерам на биржах фриланса довольно много
- Создать свой канал про МК на Ютубе или в соцсетях, и зарабатывать на рекламе
- Написать свою книгу или видеокурс по микроконтроллерам и также зарабатывать на их продаже
- В конце концов, просто создавать свои устройства для удовольствия, то есть превратить это в увлекательное хобби, дарить эти устройства друзьям и родственникам, увлекать этим своих детей и т.п.
Основы программирования микроконтроллеров
Конечно, я не расскажу вам в одной статье даже основы. Узнать их вы можете здесь. А я лишь покажу, как примерно выглядит программа для микроконтроллера (точнее, исходный текст программы):
Это пример программы для микроконтроллера на языке Си. Эта программа бесполезная, потому что она просто устанавливает высокий уровень на одном выходе. Но для понимания структуры программы этого достаточно. Ну а чтобы создавать полезные программы — надо учиться.
И, как я говорил выше, начать лучше всё таки с ассемблера. А потом, если будет желание, можно перейти на Си. Как можно всему этому научиться — см. ниже.
Видеокурсы по программированию микроконтроллеров
В рунете я знаю только одного автора, который создал уже несколько видеокурсов по микроконтроллерам. Но это очень крутой автор. Прям очень-очень. Уж поверьте — мне есть с чем и с кем сравнивать, потому что я за свою программистскую жизнь прочитал огромное количество книг и просмотрел немало видеокурсов.
Если вы новичок, то советую пока изучить первый видеокурс. Изучить тщательно, с практической проработкой всех примеров. Ну а если у вас уже есть какой-то опыт, то выбирайте то, что вам наиболее интересно.
Программирование микроконтроллеров для начинающих
Программирование микроконтроллеров на языке Си
Создание устройств на микроконтроллерах
Программирование дисплеев Nextion
Три курса со скидкой
|
Если вы уже фанатично полюбили микроконтроллеры, и окончательно решили их досконально изучить, то вы можете получить три первых курса со скидкой. Как говорится: оптом — дешевле. Описания курсов вы можете найти по ссылкам выше, а получить их все вместе можно здесь. Экономия по сравнению с покупкой курсов по отдельности составит 780 рублей. |
Все четыре курса со скидкой
|
Вы также можете купить все четыре курса. В этом случае экономия будет ещё больше. По сравнению с покупкой курсов по отдельности она составит 1880 рублей. Ссылка на оформление заказа. |
Инженер умных устройств
Ну вот и всё, на этом краткое знакомство с МК можно закончить. Надеюсь, вам было интересно. Также советую подписаться на рассылку об МК, в которой я рассказываю чуть подробнее о микроконтроллерах для начинающих, и из которой вы будете узнавать о выходе новых статей, книг и обучающих курсов:
Что нужно для программирования микроконтроллеров?

Теперь, когда мы уже ознакомлены с некоторыми возможностями и функциями микроконтроллеров, естественно, возникает логичный вопрос: что нужно для программирования микроконтроллеров? Какие необходимы программы и устройства, где их взять?

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

Мы будем писать программы на Си, который относится к языку высокого уровня. Программы на Си пишутся гораздо быстрее по сравнению с аналогичными на Ассемблере. К тому же все сложные программы пишутся преимущественно на Си.
Здесь мы не будем сравнивать преимущества и недостатки написания программ на Ассемблере и Си. Со временем, приобретя некоторый опыт в программировании МК, вы сами для себя сделаете полезные выводы.
Сам код программы можно писать в любом стандартном текстовом редакторе, например в Блокноте. Однако на практике пользуются более удобными редакторами, о которых будет сказано далее.
Компиляция программы
Написанный нами код на Си еще вовсе не понятен микроконтроллеру, поскольку МК понимает команды только в двоичной (или шестнадцатеричной) системе, которая представляет собой набор нулей и единиц. Поэтому Си-шный код нужно преобразовать в нули и единицы. Для этого применяется специальная программа, называемая компилятор, а сам процесс преобразования кода называется компиляция.
Далее откомпилированный готовый код нужно поместить в микроконтроллер, а точнее записать его в память микроконтроллера или, проще говоря, прошить микроконтроллер.
Для прошивки МК применяется устройство, называемое программатор. В зависимости от типа программатора вход его подключается к COM или USB порту, а выход к определенным выводам микроконтроллера.

Существует широкий выбор программаторов и отладочных плат, однако нас вполне устроит самый простой программатор USBASP, который в Китае стоит не более 3 $.

После того, как микроконтроллер прошит, выполняется отладка и тестирование программы на реальном устройстве или, как еще говорят, на «железе».
Теперь давайте подытожим этапы программирования микроконтроллеров.

При написании простых программ можно обойтись без второго пункта, т. е. без составления алгоритма на бумаге, его достаточно держать в голове.
Следует заметить, что отладку и тестирование программы также выполняют до прошивки МК.
Необходимый набор программ
Существует множество полезных и удобных программ для программирования МК. Они бывают как платные, так и бесплатные. Среди них можно выделить три основных:
Все эти программы относятся к IDE – Integrated Development Environment – интегрированная среда разработки. В них можно писать код, компилировать и отлаживать его.
Следует обратить внимание на Code Vision AVR. Эта IDE позволяет упростить и ускорить написание кода. Однако программа платная.
На начальном этапе программирования все программы лучше прописывать вручную, без каких-либо упрощений. Это поможет быстро приобрести необходимые навыки, а в дальнейшем хорошо понимать и редактировать под свои нужды коды, написанные кем-то другим. Поэтому я рекомендую использовать программу Atmel Studio. Во-первых, она абсолютно бесплатна и постоянно обновляется, а во-вторых она разработана компанией, изготавливающей микроконтроллеры на которых мы будем учиться программировать.
Прошивка и отладка программы
Прошивать микроконтроллеры мы будем с помощью дополнительной программы AVRDUDE .
Если микроконтроллера в наличии нет, то его работу можно эмитировать с помощью программы Proteus. Она значительно упрощает процесс отладки программы даже при наличии МК, чтобы его часто не перепрошивать, ведь любой МК имеет конечное число перезаписей, хотя это число и достаточно большое.
При прошивке и отладке МК его удобно располагать на макетной плате, но это вовсе не обязательно. Поэтому для большего удобства пригодится и макетная плата. Существует большой выбор макетных плат, однако я вам рекомендую брать ту, которая имеет по возможности большее число отверстий. Когда мы начнем подключать семисегментные индикаторы, вы оцените преимущества «больших» макетных плат.
Еще один важный элемент, который нам пригодится – это техническая документация на МК, называемая datasheet. В общем, нужно скачать datasheet на микроконтроллер ATmega8.
Итак, полный набор для программирования МК состоит из таких элементов:
2) Datasheet на ATmega8
5) Программатор USB ASP (+ драйвер на него)
6) Макетная плата
7) Микроконтроллер ATmega8
Если микроконтроллера нет в наличии, не стоит откладывать изучение микроконтроллеров на потом, достаточно скачать и установить:
Программирование микроконтроллеров AVR для начинающих
Микроконтроллер – микросхема, предназначенная для управления электронными устройствами, или по другому – простенький компьютер (микро-ЭВМ), способный выполнять несложные задачи.

Рано или поздно, любой радиолюбитель (я так думаю), приходит к мысли о применении в своих разработках микроконтроллеров. Микроконтроллер позволяет существенно «облегчить» радиолюбительскую конструкцию, сделать ее проще и намного функциональнее.
Что нужно для того, чтобы начать пользоваться всеми возможностями микроконтроллеров? Я считаю, что не так уж и много. Главное в этом деле — желание. Будет желание, будет и результат.
В этом разделе (и в разделе «Устройство AVR») сайта я постараюсь помочь начинающим «микроконтроллерщикам» сделать первый, он же самый трудный шаг навстречу микроконтроллерам — попробуем разобраться в устройстве и программировании микроконтроллеров AVR семейства ATtiny и ATmega.
В сети существует множество сайтов затрагивающих так или иначе «микроконтроллерную» тематику, много также и различной литературы для начинающих. Поэтому я не собираюсь «переплюнуть» всех и вся и создать очередной шедевр мыслительных мук в виде пособия по микроконтроллерам для начинающих. Я постараюсь систематизировать, собрать в кучу все нужное на мой взгляд, для первого шага в мир микроконтроллеров, и изложить более-менее доступным языком.
В своих статьях я буду опираться на материалы из публикаций популярных авторов микроконтроллерной тематики: Рюмика С.М., Белова А.В., Ревича Ю.В., Евстифеева А.В., Гребнева В.В., Мортона Д., Трамперта В., Фрунзе А.В. и Фрунзе А.А. (и многих других), а также материалы радиолюбительских сайтов. Ну и, может быть, немного своих «умных мыслей».
Программирование микроконтроллеров AVR фирмы Atmel

1. Микроконтроллеры — первый шаг
Эта статья, как и все последующие, — маленький шажок в мир микроконтроллеров. И таких «шажков» у нас будет много, пока не дойдем до того момента, когда сможем сказать: «Микроконтроллер — последний шаг». Но и это, скорее всего, из области фантастики — нельзя объять необъятное, — мир микроконтроллеров постоянно развивается и совершенствуется. Наша задача — сделать первый шаг, логическим итогом которого должна стать первая, самостоятельно разработанная и собранная конструкция на микроконтроллере.

2. Системы счисления: десятичная, двоичная и шестнадцатиричная
Как вы наверняка знаете, существует много разных систем счисления, одними пользуются и сейчас (наша, родная, десятичная система; римская система, известная нам как «римские цифры»), другие остались в глубоком прошлом (системы счисления инков и майя, древнеегипитская система, вавилонская).
Тут, я думаю, вопросов у нас нет, что такое системы счисления нам понятно — отображение чисел символами. А вот какая связь систем счисления с микроконтроллерами.

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

4. Битовые операции
В прошлой статье была рассмотрена тема логических операций и выражений. В этой статье мы рассмотрим логические битовые операции. Битовые операции очень близки к логическим операциям, можно даже сказать, что это одно и тоже. Разница только в том,что логические операции применяются к высказываниям, а битовые операции, с такими же правилами и результатами применяются к битам.
5. Прямой, обратный и дополнительный коды двоичного числа
Прямой, обратный и дополнительный коды двоичного числа — способы представления двоичных чисел с фиксированной запятой в компьютерной (микроконтроллерной) арифметике, предназначенные для записи отрицательных и неотрицательных чисел

6. USBASP программатор для микроконтроллеров AVR — идеальное решение для начинающих, и не только
Сегодня мы рассмотрим как, без особых затрат и быстро, запрограммировать любой микроконтроллер AVR поддерживающий режим последовательного программирования (интерфейс ISP) через USB-порт компьютера. В качестве программатора мы будем использовать очень простой и популярный программатор USBASP, а в качестве программы — AVRdude_Prog V3.3, которая предназначена для программирования МК AVR.

7. Программа AVRDUDE_PROG: программирование микроконтроллеров AVR ATmega и ATtiny
Популярнейшая программа AVRDUDE_PROG 3.3 предназначена для программирования микроконтроллеров AVR ATmega и ATtiny

8. Основы программирования микроконтроллеров AVR
С этой статьи мы начнем конкретно заниматься одним вопросом — программирование микроконтроллеров. Процесс будет проходить следующим образом — сначала статья по устройству микроконтроллера (к примеру, первая статья будет по портам ввода-вывода), а затем статья по программированию. Сегодняшний наш разговор вводный, и будет посвящен вопросам материального и программного обеспечения процесса изучения основ программирования микроконтроллеров.

9. Русификация программы Atmel Studio
В этой статье мы поговорим о проблемах русификации программы Atmel Studio, как перевести программу на русский (или другой) язык, и как сделать более удобной работу программы с программатором USBASP. После установки программы Atmel Studio весь интерфейс будет на английском языке. Кому-то, кто знаком с английским, или уже привык работать с программами с английским интерфейсом, это вполне устроит. Меня лично, такой подход создателей программы к великому и могучему не устраивает, мне более комфортно работать с русскими меню.

10. Введение в язык программирования С (Си) для микроконтроллеров
В этой статье будут рассмотрены основные сведение о языке С, структура программы на языке С, дано понятие о функциях, операторах и комментариях данного языка программирования.

11. Переменные и константы в языке С (Си) для микроконтроллеров AVR
В этой статье будут рассмотрены типы переменных в языке С (Си) для микроконтроллеров AVR, объявление переменных, способы задания констант, будет дан обзор арифметических операций языка С, присваивания, инкремента и декремента.
В этой статье будет рассмотрено управление портами микроконтроллеров AVR на языке программирования С (Си): установка выводов порта на вход или выход, считывание значений на входах портов, программа для управления миганием светодиода.

13. Циклы в языке С (Си) для микроконтроллеров AVR
В данной статье будут рассмотрены циклы в языке программирования Си для микроконтроллеров AVR. Будут рассмотрены циклы типа «для» (for) и циклы типа «пока» (while), будет показано как осуществить принудительное прерывание цикла и организовать бесконечный цикл.

14. Массивы в программировании микроконтроллеров AVR
В данной статье мы рассмотрим основы использования массивов в языке С для микроконтроллеров AVR и рассмотрим их практическое применение в программе для изменения цифр на семисегментном индикаторе.

15. Конечные автоматы в микроконтроллерах AVR
В данной статье мы рассмотрим применительно к микроконтроллерам AVR такой интересный стиль программирования микроконтроллеров как автоматное программирование. Точнее это даже не стиль программирования а целая концепция, благодаря которой программист микроконтроллеров может существенно облегчить свою жизнь. Благодаря ей многие задачи, поставленные перед программистом, решаются гораздо легче и проще, избавляя программиста от многих сложностей. Автоматное программирование часто также называют Switch-технологией
