Представленный в статье ШИМ контроллер подходит для очень широкого спектра применения. Основным элементом управления, используемым для настройки контроллера является поворотный энкодер. Также есть переключатель для выбора режимов работы: «Выключено», «ШИМ» и «Полная мощность». Текущие настройки системы отображаются на стандартном ЖК-дисплее(HD44780) с двумя рядами из шестнадцати символов.
Основа схемы это микроконтроллер PIC16F628 (также может быть использован PIC16F628A). Выходной каскад, состоящий из двух силовых полевых транзисторов IRF9540 которые соединены параллельно, и сдвоенных диодов BYW32, позволяет легко управлять двигателями постоянного тока с напряжением до 24В и номинальными токами до 10А. Схема способна работать при более высоких токах, но тогда особое внимание должно быть уделено площади поперечного сечения проводников и дорожкам на плате, к которым можно припаять провода параллельно с ними.
Полезная функция в данном приборе является - «Функция повышения» (Boost), которая помогает надежно запускать двигателя постоянного тока. При запуске выход включен на полную мощность на определенный промежуток времени, независимо от настроек ШИМ.
По соображениям безопасности, при включении контроллера необходимо установить переключатель в положение "Выключено", а затем в положение "ШИМ" или "Полная мощность". Это означает, что подключенный к контроллеру двигатель не запустится при восстановлении подачи питания.
В рабочем режиме на дисплее отображаются частота ШИМ(kHz) и коэффициент заполнения импульса ШИМ (Скважность) в процентах. Скважность можно регулировать поворачивая ручку энкодера.
Режим "Выключено" - переключатель в положении "B", режим "Полная мощность" - положение "А", режим "ШИМ" - переключатель не установлен. Основные параметры могут быть установлены в меню настроек. В это меню можно войти путем установки переключателя режимов в положение "Выключено", и удержания в нажатом состоянии кнопки энкодера в течение нескольких секунд.
Меню включает в себя следующие опции:
Boost: вкл/выкл
Boosttime: 1 секунда / 2 секунды / 5 секунд
Частота ШИМ: 1кHz / 2kHz / 5 кHz
Шаг регулировки ШИМ: 1% / 2% / 5% / 10%
Для выхода из меню выбрать "Выход". Параметр "Шаг регулировки ШИМ" определяет на сколько процентов будет увеличиваться или уменьшаться скважность ШИМ в рабочем режиме. Все настройки сохраняются в EEPROM и не теряются при выключении питания.
Вариант печатной платы
Фото готового устройства. Автор Rozario
Архив для статьи "Универсальный ШИМ контроллер на PIC16F628 + LCD" | |
Описание: Прошивки микроконтроллера pic16f628/628A/rus, макет печатной платы в формате Eagle | |
Размер файла: 74.09 KB Количество загрузок: 4 882 | Скачать |
Комментарии
Запустил, частотомер показал 128Гц 256Гц
640Гц.
Вместо 125Гц 250Гц и 625Гц
Это наверно через такой кварц.
Ну , а так всё в норме.Только никак не могу понять какие биты конфигурации выставлять? Пользуюсь IC-Prog там после загрузки ( hex )файла показывает только
конфигурацию осциллятора (XT ),а биты конфигурации пустые. В исходнике прописано:
#fuses XT, NOWDT, PROTECT, MCLR
Што означает PROTECT и NOWDT? в IC-Prog такого нету.
Какие галочки мне поставить в IC-Prog ?
Если надо править в прощивке, то подскажите где?
Также к выводам А и В энкодера необходимо подключить кондеры по 10nF на общий минус
admin. Огромное спасиба вам за ваши труды!!!
Прошивку вашу протестил и она стала получше , только скорости немного не хватает. Я щитаю нужным исправить все версии прошивок под энкодер (24-импульсный ) ,потому как, это самые распростанённые . Сколько я облазил точек с радио компонентами, ни у кого не нашёл ничего подобного на 12-импульсов.
Плата эксперементальн ая в сборе, буду ждать ваших новых решений для усовершенствова ния и доводки этого устройства.
В схему я ввёл некоторые изменения.
Избавилса от дефицитной микросхемы mc34151 и заменил этот узел двумя трнзисторами кт502 и кт503 эмиттерами на затворы IRL540. На затворах добавил стабиллитроны встречного подключения 10вольт на общий провод. Вводное отдельное питание на выходные ключи позволило в широких пределах именять питающее напряжение нагрузки. Сама плата управления запитывается от отдельного импульсного модуля питания на 12 вольт , что предотвращает сетевые пульсации и скачки напряжения от подключённой нагрузки.
По выходу полевиков добавил варистор для зглаживания пульсаций.
Ну так вроде всё.
rozario.
Принцип управления энкодером и резистором разный, вместо энкодера резистор не поставить, если только менять программу контроллера
На выход поставить 74HC00 или 74HC04
это не удобно - переключать джамперами, нужно оба варианта
scorpionlion, если ещё есть потребность, пиши, попробуй помочь разобраться. tema.koroliov
Разработчикам ещё раз спасибо, на базе этого кода собрал уже пару устройств и сейчас занимаюсь третьим.
Код:
void rotary(){
delay_us(150);
if(input(PIN_B0) == 0)
{
delay_us(150);
if(input(PIN_B1) == 0)
{
Enkoder = 0;
}
else
{
Enkoder = 2;
}
}
clear_interrupt(int_ext);
return;
}
на
Код:
void rotary(){
delay_us(150);
if(input(PIN_B0) == 0) Enkoder = 2;
delay_us(150);
if(input(PIN_B1) == 0) Enkoder = 0;
clear_interrupt(int_ext);
return;
}
И ничего не изменилось. Где ещё копать?
Извините, но не могли вы тыкнуть пальцем где именно привязка int_ext к PIN_B0? прописал к нажатиям отображение текста, при нажатии RB0 выводится сообщение RB0, при нажатии RB1 - ничего, если удерживать RB1 и нажать RB0 показывает сообщение RB0 потом RB1. Это что за бред? архитектура МК? Нигде больше в тексте нет упоминания PIN_B1 или PIN_B0... Может прописать какой то другое прерывание?