Перейти к содержимому

04s.ru

Только полезные вещи…

Меню
  • Главная
  • Объявления
    • Добавить объявления
    • Мои объявления
  • Полезные ресурсы
    • Другое
  • Генератор QR
  • Карта сайта
  • Контакты
Меню

ШИМ-регулятор на Arduino

Опубликовано в 16.03.202003.06.2020 от Lis

Простой ШИМ-регулятор легко можно сделать с помощью Arduino. Для примера возьмём всем известный контроллер Arduino UNO , который построен на ATmega328.  Он имеет 14 цифровых входов/выходов ( 6 из которых могут использоваться как выходы ШИМ)  и  6 аналоговых входов.

Для наших целей понадобится один аналоговый вход — А0, который используем для подключения переменного резистора, а также один выход ШИМ — возьмём 11. Соберём простую схему : 

И напишем простую программу для управления яркостью светодиода , подключённого к 11 выходу ШИМ. Регулировать будем переменным резистором, который подключен к аналоговому входу А0.

int pwnPin = 11;      // Выход ШИМ
int analogPin = A0;   // Потенциометр подключён к входу А0
int val = 0;          // Переменная для хранения значения

void setup() 
{
    pinMode (pwnPin, OUTPUT);  // Установка пина на выход
}

void loop() {
// Считываем напряжение с переменного резистора - значения от 0 до 1023
    val = analogRead(analogPin);
// analogRead - значения от 0 до 1023, analogWrite - в диапозоне от 0 до 255
    analogWrite(pwnPin, val / 4);
}

Получаем первый результат  —  яркость светодиода изменяется с помощью переменного резистора. Для управления какой-нибудь силовой нагрузкой включённой в сеть 220 вольт такой ШИМ тоже сгодится, только желательно сделать гальваническую развязку между силовой частью и Arduino.

Провёл небольшие испытания этого ШИМ-регулятора — сначала как обычно подключил активную нагрузку ( лампочку накаливания) а затем и коллекторный двигатель. Всё работает. Снял видео — 

https://www.youtube.com/watch?v=wIS19KH9A0Q&feature=emb_logo

Далее по плану использовать обратную связь от таходатчика коллекторного двигателя для поддержания стабильных оборотов, а также увеличить частоту ШИМ. 
   Добавил обратную связь по таходатчику для регулятора оборотов . Для этого собрал простую схему обработки сигнала таходатчика 

и подал это сигнал на аналоговый вход  А1.  Для защиты входа Ардуино от перенапряжения поставил ещё стабилитрон на 5.1  вольт. Получилась такая схема

Для написания программы  управления оборотами коллекторного двигателя  использовал библиотеку PID — регулятора для Arduino.

 #include <PID_v1.h> // подключаем библиотеку PID-регулирования
double pwmSet, pwmSpeed, pwmOut; //  //переменные для пид-регулятора
PID myPID(&pwmSpeed, &pwmOut, &pwmSet, 0.2, 0.5, 0, DIRECT);
// Подобрал коэфф пид-регулятора Kp=0.2, Ki=0.5, Kd=0 .
#define PWM_PIN   11 // выход ШИМ
#define SET_PIN    0 // установка оборотов  0-5 вольт  мин-макс
#define TACHO_PIN  1 // сигнал от таходатчика 0-5 вольт  мин-макс

void setup() {
    myPID.SetMode(AUTOMATIC);
}
void loop()  {
    pwmOut = constrain ( pwmOut , 0, 250); // это необязательно - по умолчанию 0-255
    pwmSet  =  analogRead(SET_PIN); // считываем показания потенциометра регулировки скорости
    pwmSpeed = analogRead(TACHO_PIN); // считываем показания таходатчика
    myPID.Compute(); //  здесь происходят вычисления пид-регулятора - то есть pwmOut
    analogWrite(PWM_PIN, pwmOut);//  получаем выходной сигнал ШИМ
}

В результате получилось очень даже неплохо — регулируются обороты двигателя с поддержанием мощности. Снял по этому поводу видео — 

https://www.youtube.com/watch?v=13UjnjYhj8I&feature=emb_logo
4.5/5 - (2 голоса)
Просмотров: 11 965


Место для продажи

Добавить комментарий Отменить ответ

Ваш адрес email не будет опубликован. Обязательные поля помечены *

Свежие записи

  • Авто выключатель для мультиметра
  • Индикатор разряда аккумулятора
  • Схема индикатора заряда аккумулятора на светодиодах
  • Linux mint восстановление системы с помощью LiveCD/USB
  • Схема стабилизатора тока на LM358

Популярные записи

  • Металлоискатель пират своими руками подробная инструкция (67 650)
  • Авторегулировка диаметра филамента (65 942)
  • A4988 и Arduino (18 781)
  • DT9205a — ремонт мультиметра (15 568)
  • ШИМ-регулятор 220 В ( IGBT ) (14 065)
  • Пробник для проверки оптопар (13 556)
  • ШИМ-регулятор на Arduino (11 965)
  • Шим регулятор на NE555 (11 015)
  • Схема стабилизатора тока на LM358 (10 680)
  • Linux mint восстановление системы с помощью LiveCD/USB (10 336)

Разделы

3D (1) Android (1) Arduino (14) CCleaner (1) Controller (1) DT9205a (2) LG (1) Linux (3) LM339 (1) LM358 (1) NE555 (9) NTC 100K (2) Power Bank (2) Server (4) SSD (1) SSL (1) Ubuntu (3) USB (2) VPS (1) Windows (8) АКБ (6) Авто (18) Асинхронный (3) Вирусы (1) Датчик (2) Двигатель (5) Индикатор (2) Металлоискатель (2) Мультиметр (2) Оптопара (1) Пластик (2) Полезное (18) Примочка (1) Разное (18) Реле (1) Сабвуфер (2) Симистор (1) Система (12) Схемы (36) Телевизоры (1) Телефон (1) Термистор (2) Тиристор (1) Тюнинг (5) Электроника (57)

Коментарии

  • Lis к записи ШИМ-регулятор 220 В ( IGBT )
  • Hdns Klos к записи ШИМ-регулятор 220 В ( IGBT )
  • Lis к записи Схема индикатора заряда аккумулятора на светодиодах
  • Lis к записи Индикатор разряда аккумулятора
  • Lis к записи Авто выключатель для мультиметра

Форма подписки

Подпишитесь на блог и получайте новые статьи!



QR код

QR код

Telegram канал

И смех и Грех — Тут весело и Интересно))
Красиво, но не факт… — Поделки на лазерном гравёре.