Делал недавно один небольшой заказ на Arduino. По заданию нужно регулировать напряжение в диапазоне от 0 В до 4,5 В с точностью 0,01 В. Задача несложная, но есть одна проблема. ШИМ Ardiono всего 8 bit, что позволяет нам получить 256 шагов изменения выходного сигнала. Как выйти из данной ситуации рассмотрим в данной статье.
Самое простое решение данной задачи — это использовать отладочную плату на базе ESP32, которая имеет ШИМ сигнал 16 bit. Но заказчик сказал, что у него в наличии только Arduino UNO. И использовать ESP32 нет возможности. Пришлось искать варианты решения с использованием Arduino.
Поискал я в интернете с помощью чего же можно увеличить рабочий диапазон ШИМ. И в этом мне помогла статья AlexGyver «Увеличение частоты ШИМ». Также у него есть библиотека, которая позволяет управлять частотой и PWM, что упрощает работу. Скачать библиотеку «GyverPWM» можно тут.
Библиотека достаточно хорошо описана и разобраться как ей пользоваться несложно. На странице описания библиотеки есть таблица «Таблица №1 частот для расширенной генерации ШИМ (PWM_resolution)», которая позволит настроить нужную разрядность.
Я использовал 12 бит для регулирования напряжения 5 В и 16 бит для регулирования напряжения 12 В.
Для работы нужно выставить разрядность pin Arduino.
// запустить ШИМ на D10, разрядность 12 бит (0-4095), частота 3.9 кГц, режим FAST_PWM PWM_resolution(10, 12, FAST_PWM);
Затем установить выходное значение с помощью следующей функции.
PWM_set(10, 2048);
Как данные значений перевести в напряжения, я думаю, понятно.
Давайте рассмотрим, что же получилось. Для этого нужно все подключить по схеме, приведенной ниже.
Первым делом нужно замерить опорное напряжение, так как источники питания имеют погрешность, а на выходе нужно получить достаточно точное значение. Провел эксперимент и замерил напряжения различных источников питания 5 В, которые были у меня. Напряжение варьирует от 5,12 В до 4,7 В. Вот почему важно использовать опорное напряжение.
Чтобы получить на выходе напряжения не забудьте использовать RC фильтр, на частоту среза в 100 раз меньше чем частота ШИМ.
Сохраняем данное значение. Для этого у меня сделана отдельная страница настроек.
Сейчас можно приступить к регулированию напряжения. Но нужно помнить, что регулировать можно от 0 В до опорного напряжения. Если оно составляет 4,7 В, то больше значения выставлять нельзя.
Так как я понимаю, что будут вопросы о регулировании напряжения больше опорного напряжения Arduino. Рассмотрим пример регулирования 12 В. Для этого в схему добавил IRF520N MOSFET модуль 140C07.
По аналогии с предыдущим примером нужно замерить опорное напряжение и указать его в настройках. Затем можно приступать к регулированию. В данном примере я уже использовал 16 bit PWM.
Как видим при изменении, напряжения больше на 0,43 – 0,45 В установленного на дисплее управления. Это скорее всего связанно с тем, что у меня не очень точный мультиметр, и при измерении опорного напряжения показания получены не совсем верные. Для таких работ нужны более точные приборы, но в целом результат неплохой. И при необходимости можно получить нужный диапазон регулирования. Но так как 12 В я протестировал только ради эксперимента, искать в чем погрешность не стал.
Подведём итоги.
Как видим, регулировать напряжение с высокой точностью можно и с помощью 8 -битной Arduino. При этом результат получился горазда лучше, чем я ожидал.
Понравился проект Arduino напряжение на выходе с точностью до 0,01 В? Не забудь поделиться с друзьями в соц. сетях.
А также подписаться на наш канал на YouTube, вступить в группу Вконтакте.
Спасибо за внимание!
Технологии начинаются с простого!
Фотографии к статье
Виджеты для Easy HMI
Читайте также
Мы в соц сетях
Комментарии