Продолжение статьи:
Исходная статья: https://kotyara12.ru/iot/xr106/
Тестирование работоспособности
В качестве тестовой нагрузки я использовал коллекторный электродвигатель, установленный на 3D-ЧПУ станочке. Станок все равно пока стоит без дела. Снимать же приводы с теплицы очень не хочется – разъемов у приводов нет, придется обрезать провода а потом вновь паять, что не очень хочется.
Этот двигатель потребляет около 1А при 12В и около 1.2А при напряжении 20В.
Конечно, этого мало для моих целей (мне нужно управлять приводами 12В суммарным током до 5~6А), но хотя бы позволяет оценить нагрев транзисторов и работоспособность самой платы H-моста. Если заблокировать вал двигателя, то ток легко может превысить 5А, но долго держать его в таком режиме нельзя.
--------------------------------------------------------------------------------------------
Первым делом я попытался запустить “логику” платы от напряжения 3,3В – а “вдруг прокатит”?… Не прокатило.
Встроенный в плату преобразователь DC-DC запустился только при напряжении около 4В. То есть подключить её напрямую к 3.3В-логике ESP32 не выйдет. Значит, нам необходим преобразователь логических уровней – ведь необходимо не “понизить” напряжение, а повысить его. Вариантов может быть несколько, например:
- С помощью оптронов, например PC817
- С помощью преобразователя уровней на основе полевых транзисторов (или даже биполярных)
Схема сопряжения уровней
В целях тестирования для согласования уровней я применил китайскую платку OP71A04 3.3 -> 5.0В – это всего лишь четыре оптрона PC817 с токо-ограничительными резисторами и светодиодами для дополнительной индикации. Само собой, оптроны будут вносить дополнительные искажения в ШИМ сигнал, в чем мы и убедимся чуть позже.
Для тестирования платы я собрал незамысловатую схему:
Два выхода микроконтроллера GPIO5 и GPIO17 через оптоизолятор подключил к входам DIR1 и PWM1 платы. На плату подано напряжение 5В с дополнительного блока питания. На выходные цепи и электродвигатель подключено напряжение 12 ~ 24 В с лабораторного блока питания.
Работа с “постоянным” управляющим сигналом категорически не рекомендуется
Производитель (продавец) заявляет, что на входы PWM1 и PWM2 необходимо обязательно подать ШИМ-сигнал с заполнением от 0 не выше 99%. Что ж, проверим это. Подаем питание, и на вход PWM1 подаем +5В – просто логическую единицу. Напряжение на DIR в общем-то не важно.
И двигатель начинает вращаться!! “А что, так можно было что-ли?”. Продавец / производитель не в курсе, что так работает? Через пару секунд об выходной транзистор можно легко обжечься.
Причем греется только один транзистор, а не два, как можно было бы предположить (я предположил, что причина этому отсутствующие диоды с обратной стороны платы). Его температура через 10 секунд легко перешагивает сотню градусов. Не порядок!
Забегая вперед, скажу, что в ШИМ-режиме ничего подобного не наблюдается. Получается, производитель заведомо знает о таком поведении платы – и это не баг, а фича. Следовательно, использовать данную плату в режиме управления постоянным напряжением нельзя.
Придется подключать к микроконтроллеру и выводить ШИМ сигнал с него.
Тестовая программа
Программа для тестирования так же не отличается особой сложностью.
Вначале мы настраиваем вывод GPIO17 в режим выхода – им мы будем управлять направлением вращения.
Затем настраиваем ШИМ-таймер и контроллер на выводе GPIO5. Частота – 4КГц, разрешение 8 бит (возможны значения duty от 0 до 255). Так как в схеме присутствует инвертирующий оптоизолятор, пришлось применять и инвертирование выходного сигнала.
Затем изменяем скважность от 0 до 255 каждую секунду, после каждого цикла меняем направление вращения двигателя.
Запускаем и вы видим самый обычный ШИМ:
На входе платы XR-106 картинка уже не такая “красивая”:
Происходит этот потому, что PC817 – довольно медленные оптроны, и они “сглаживают” фронты импульсов, а короткие и вовсе полностью “проглатывают”. В реальной схеме лучше применять более высокоскоростные диоды, либо использовать другие варианты согласования уровней.
На 4000 Гц при мотор начинает “звенеть” при duty = 12 (но не вращается), а уверенно трогается с места при duty = 15. При duty = 253 электродвигатель отключается, хотя нагрев выходных каскадов не происходит. То есть диапазон рабочего заполнения ШИМ от ~6% до 99%.
Температура MOSFET-транзисторов при этом не превышает 30 градусов при температуре в комнате 25 градусов при любом значении duty.
При частоте ШИМ 1000 Гц электродвигатель начинает вращаться уже при duty = 6 ( 2% ). Это связано с тем, что оптроны меньше искажают ШИМ-сигнал. Но вот шума от его работы больше в разы – двигатель “звенит” даже при работе на высоких оборотах (duty > 150). И, кроме того, начинают немного греться MOSFET-ы – их температура достигает уже 53 градусов:
Ради интереса я повторил опыт на частоте 10 кГц. Двигатель стронулся с места при duty = 40 ( 16% ), но зато работает без пыли и шуму звона и дерганий – почти так же как при питании от БП напрямую. Транзисторы остались холодными на всем диапазоне регулировки частоты вращения.
Делаем вывод, что низкая частот ШИМ нам не подходит. В моем случае так это вообще не важно, так как открывать и закрывать форточки лучше на максимально возможной скорости.
Если же вам нужно обязательная регулировка вращения “от нуля”, можно применить согласователь уровней на полевых транзисторах. В таком случае, я полагаю, это будет легко возможно. Но это уже совсем другая история….