12-битный ЦАП на ATMega8: дружим MITSUBISHI с KEB

Feb 26, 2023 10:31


Сегодняшняя заметка будет посвящена разработке довольно простого устройства - цифро-аналогового преобразователя на 12-бит. Ну, на первый взгляд, на уровне концепта простого. Реальность же внесла свои коррективы.

Постановка задачи

ТЗ на устройство было таким: на двенадцать дискретных входов подается двоичный код, который нужно преобразовать в напряжение 0..10 В, потребное для подачи на аналоговый вход привода KEB в качестве задания скорости. KEB должен будет заменить умирающий привод MITSUBISHI серии FR-A5Ax, на модуль входов которого и приходил этот цифровой сигнал задания. Стоит разобраться в том, откуда он приходил. Сигнал формируется программируемым контроллером MITSUBISHI QY-81P, в соответствии с программой и состоянием его входов.
Перед тем, как начать проектировать железку, стоит разобраться в том, какого типа входы у нее должны быть и какого типа выход. В этом мне помогут мануалы на соответствующие железки. Чтобы определиться с типом входов, я заглянул в "MITSUBISHI Programmable Controller MELSEC Q-series I/O Module Type Building Block User's Manual", в котором есть схема выходов контроллера QY81P.



По схеме видно, что выходы не относятся ни к стандартному типу, ни к типу "открытый коллектор", представляя собой обратный от последнего вариант. Т.е. через выход на прижатую к земле нагрузку подается высокий уровень (+24 В) - "1", либо не подается, оставляя нагрузку наедине с землей - "0". Вроде бы, все ясно. Однако, мне пришло в голову посмотреть, что из себя представляли входы изначально установленного здесь привода MITSUBISHI. Для этого я заглянул в документ "TRANSISTORIZED INVERTER FR-A5AX INSTRUCTION MANUAL 12-BIT DIGITAL INPUT".



Все сразу стало сложнее - мануал говорит, что на входы должен подаваться сигнал от выходов типа "открытый коллектор". А еще - что входов не двенадцать, а тринадцать. Добавился вход DY, определяющий разрешенный интервал времени для чтения значения с остальных входов. Т.е. привод видит изменение задания, только если на входе DY висит "1". Но это мелочь - добавить такой функционал в железку не сложно. А вот указанные в документации на контроллер QY81P и на привод FR-A5Ax исключающие друг друга типы выходов могут стать проблемой. Разрешить это противоречие можно только походом на станок с осциллографом. Вариантов может быть два - либо это "открытый коллектор", либо нет (тогда может быть еще как минимум три типа выходов, но различия между ними не важны в данном случае). Выглядит это так:



Отключаю нагрузку (т.е. откидыват клемму со входа привода) и меряю напряжение на проводе и освободившейся клемме. Когда на выходе контроллера "1", на проводе - 24 В, на клемме - 0 В. Когда на выходе контроллера "0", на проводе - 0 В и на клемме - 0 В. Это говорит о том, что здесь выходы второго типа (не "открытый коллектор"). Под это я и буду проектировать входы своей железки.
Теперь посмотрим на то, к чему будет подключен ее выход - это аналоговый вход привода KEB. Подробнее о нем можно узнать из документа "KEB COMBIVERT F5- A,- E,- H 4.2. Руководство по использованию".



Здесь все проще. Нужная мне информация - 55 кОм внутреннего сопротивления аналоговых входов, на которое и буду ориентироваться при проектировании выходной цепи железки.

Железо

После некоторых размышлений, устройство приобрело следующий вид:



Пунктиром отмечено содержимое будущей железки, а все, что вне его уже есть на станке. В качестве мозгов я решил использовать 8-битный AVR-микроконтроллер Atmega8A. Специализированная микросхема ЦАП тут тоже вполне бы подошла, но вот только под рукой не нашлось таковой. Зато имелось достаточно указанных Атмег, что и предопределило выбор именно этого контроллера, хотя по аппаратным возможностям хватило бы и какой-нибудь Attiny2313. Логика работы МК проста: смотрим входы и, если есть разрешение от DY, то считываем 12 бит задания и выводим его на 12-битный же ШИМ, получая импульсы со скважностью от 0 до 100%.
Импульсы это хорошо, но где же требуемое напряжение 0..10 В? Для этого придется задействовать еще кое-какие аппаратные средства. Для начала, я поставил на выход ШИМ МК фильтр низких частот в виде RC-цепочки. При правильном подборе параметров (о чем я расскажу дальше), он позволит получить интеграл от выдаваемого МК сигнала. Т.е. пятивольтовые импульсы со скважность 0..100% превратятся в постоянное напряжение 0..5 В.



Следующий этап - превратить 0..5 В в 0..10 В. В этом мне помог операционный усилитель, включенный по схеме неинвертирующего усилителя. Его работа состоит в умножении полученного сигнала на заданный резисторами в его обвязке коэффициент. В качестве операционного усилителя был задействован сдвоенный LM358. Почему именно он? Во-первых - он был под рукой, во-вторых - он умеет работать от однополярного питания, в-третьих - в сети нашлась готовая схема ФНЧ+ОУ именно с этим операционником.
Вроде бы, все готово, однако есть еще две взаимосвязанных проблемы - МК питается от 5 В и понимает на входах пятивольтовые сигналы, а на станке имеются только 24 В и на выходах контроллера уровень "1" - те же 24 В. Для решения первой проблемы придется добавить в железку блок питания на 5 В. Я сделал его на линейном стабилизаторе L7805 с простейшей обвязкой. Вход этой микросхемы выдерживает до 35 В, чего достаточно при имеющихся 24 В. Ток выхода микросхемы - до 1,2 А, но тут вопрос не столько в токе, сколько в температурном режиме. На микросхеме будет падать 19 В (24 В - 5 В), что, при токе 100 мА даст примерно 2 Вт тепла (19 В * 0,1 А). Вполне приемлемо, потребление пятивольтовой части схемы (МК с обвязкой) заведомо меньше 100 мА. Вторую проблему я решил простейшим делителем напряжения на паре резисторов. Единственный минус такого решения - пришлось добавить 26 элементов (этих самых резисторов по паре на каждый вход) в схему, что усложнило монтаж на макетке.
В принципе, все необходимое для работы уже есть, но перед этим предстоит процесс наладки и тестирования, для чего очень хорошо бы иметь возможность выдавать на МК задание на столе, не подключая железку к контроллеру. Для этого я добавил в схему тестовый задатчик, состоящий из кучи джамперов, позволяющих перемычками подавать 24 В на соответствующие резисторы делителя напряжения. При подключенном контроллере перемычки будут сняты и никак не повлияют на работу схемы.
После реализации всех задуманных решений, схема устройства приобрела такой вид:



Клемники CON1 и CON2 - соответственно, входы (13 входов, +24 В и 0 В) и выход (сигнал задания Uref и 0 В). Джамперы X0-X11 и DY - тестовый задатчик. В такой схеме соединения джамперов и клемника CON1 есть изъян, способный, при определенных обстоятельствах, спалить выходы контроллера. Это случиться, если подключить контроллер к клемнику не убирая джамперы. При подаче на выход нуля, 24 В соединиться накоротко с нулем через цепь джампер - контакт CON1 - транзистор выхода контроллера. Чтобы этого избежать, стоило бы поставить диоды между контактами клемника и джамперами, анодами к клемнику. По возможности, доработаю этот момент.
Микросхема VR1 и конденсаторы C1-C4 - это мой вариант блока питания 5 В. В обвязке там только четыре конденсатора. Электролиты на 10 мкФ и 47 мкФ призваны предотвратить просадки напряжения при резких изменениях нагрузки. Первый из них компенсирует просадку на линии от станочного БП на 24 В до моей железки. Второй - сглаживает просадки при включении мощной нагрузки по 5 В. В этой схеме, в принципе, его можно убрать, т.к. таковой нагрузки просто нет. Пики потребления будут при изменении состояния выхода ШИМ МК, но ток там мизерный, около 0,5 мА (5 В / 11 кОм). Конденсаторы на 100 нФ, установленные непосредственно на выводах микросхемы L7805, должны улучшить качество стабилизации напряжения. По датащиту конденсатор С2 (на входе) должен иметь емкость 330 нФ, но под рукой оказался только 100 нФ. Учитывая, что его рекомендуют ставить, если сглаживающие конденсаторы находятся далеко, в моем случае, когда близко стоит выполняющий ту же функцию С1, это не важно. Конденсатор С4 (на выходе) необходим для улучшения быстродействия микросхемы. Наглядная цитата из датащита:



Продолжая тему блока питания, стоит упомянуть и конденсаторы С7, С11, С14. Они так же нивелируют просадки напряжения. С7 установлен на дальнем от точки ввода 24 В крае платы и минимизирует влияние сопротивления линии питания (провод на макетке). С11 установлен параллельно выводам питания микросхемы OP1 (непосредственно к ним припаян) и сглаживает просадки напряжения при ее пиках потребления. С14 выполняет ту же функцию, но для микросхемы IC1 и установлен, соответственно, параллельно ее выводам питания.
Софт

Программа для микроконтроллера писалась на С в AVR Studio 4. Файл есть по ссылке, внутри все более-менее откомментировано и указаны выставленные фьюзы. В общих чертах, суть работы программы состоит в следующем:
• задействован аппаратный сторожевой таймер с периодом 1 с для предотвращения зависания устройства;
• в основном цикле опрашиваем вход разрешения задания;
• если разрешение есть - снимаем информацию со входов задания;
• суммируем 8 раз снимаемую информацию и среднеарифметическое выдаем в регистр сравнения (примитивный фильтр помех);
• аппаратный ШИМ на таймер/счетчике 1 дает на выход ШИМ-сигнал согласно записанному в регистр сравнения заданию.
На этом работа программной части заканчивается, дальше сигнал аппаратно преобразуется в аналоговый в диапазоне 0..10 В благодаря операционному усилителю с обвязкой.
Заключение

Задача была интересной и я многому научился в процессе ее решения. К сожалению, малая доля полученных знаний попала в эту заметку по простой причине - она пишется спустя два года после окончанию работ по описанной в ней железке. Каким-то странным образом черновик заметки затерялся у меня в компе и я совершенно про нее забыл. Случайно обнаружив материал при разгребании завала на винте, решил дописать и выложить - чего добру пропадать. Но в памяти давно стерлись детали, а черновик был мягко говоря не полон. Даже фото получившейся конструкции не сохранилось. Сначала я собрал этот схематический ужас на макетке, а после успешной работы в течении нескольких месяцев запилил нормальную плату в пластиковом корпусе из-под старого реле. В процессе, была еще борьба с ВЧ-помехами, которыми сигнал с контроллера был мягко говоря полон. Увы, подробностей я уж не помню. Но, в конце концев, все заработало как надо, так что в основе своей девайс все же сделан правильно и сей многобуквенный труд может кому то пригодиться.
Ссылки

Неполный список материалов, которыми я пользовался в процессе работ над устройством:
1. Делитель напряжения на резисторах. Формула расчета, онлайн калькулятор
2. DMX Demultiplexer
3. Расчёт фильтров для ШИМ
4. Тема "Аналоговая техника" на форуме "Радиокот"

электроника

Previous post Next post
Up