Плавный старт ардуино

Плавный пуск двигателя постоянного тока с использованием таймеров

Серия статей: Arduino, использование двигателей постоянного тока #2

При управлении двигателями постоянного тока иногда возникает необходимость резкого изменения скорости (на пример пуск c 0% на 100% мощности или изменение скорости на протвоположную). Но такой режим работы двигателя требует очень высоких токов – в несколько раз больше, чем простое движение. Если, например, при вращении с постоянной скоростью двигатель потребляет ток порядка 500мА, то в момент пуска это значение может достигать 2-3 А. Из за этого приходится применять более мощное подсистему питания и контроллер.

Решить проблему пусковых токов можно плавным повышением скорости. Т.е. вместо мгновенного разгона двигатель будет разгоняться постепенно, при этом сглаживая пик потребления тока в момент пуска.

Подключим двигатель к motor-shield на безе L298P, как и в предыдущем примере:

Не забываем, что двигатель не имеет обатной связи, поэтому для контроля текущей скорости воспользуемя дополнительной переменной motorPower

Теперь двигатель разгоняется более плавно. Разгон от 0 до 255 займет почти пол секунды, а установить интервал изменения в 1 мс – то вообще за четверть секунды. Невооруженным глазом разница не очень заметна. Но такое разгон намного более щадящий для силовой части. К тому-же скорость разгона мы можем регулировать, добиваясь нужного ускорения.

Вот только использование delay() не дает использовать параллельно

никаких других действий, поэтому реализуем плавный пуск с помощью таймеров, как при плавном движеним сервоприводов.

Теперь двигатель разгоняется плавно, причем параллельно с разгоном можно выполнять любые другие действия

Источник

AlexGyver/Smooth_start

Use Git or checkout with SVN using the web URL.

Work fast with our official CLI. Learn more.

Launching GitHub Desktop

If nothing happens, download GitHub Desktop and try again.

Launching GitHub Desktop

If nothing happens, download GitHub Desktop and try again.

Launching Xcode

If nothing happens, download Xcode and try again.

Launching Visual Studio Code

Your codespace will open once ready.

There was a problem preparing your codespace, please try again.

Latest commit

Git stats

Files

Failed to load latest commit information.

README.md

Плавный пуск станков на Arduino

Система плавного пуска и регулирования мощности для станков и электроинструмента Особенности:

  • Плавный пуск двигателя
  • Время разгона настраивается
  • Разгон до установленного значения
  • Настройка оборотов во время работы
  • Пуск с логической кнопки (5 Вольт)
  • Пуск по УДЕРЖИВАНИЮ кнопки
  • Проект «Диммер переменки» https://github.com/AlexGyver/AC_Dimmer
  • Видос «диммер переменки» https://www.youtube.com/watch?v=jPbptVGZisc
  • Подробности в видео: https://youtu.be/RL3j-3fyWM8

ВНИМАНИЕ! Если это твой первый опыт работы с Arduino, читай инструкцию

  • libraries — библиотеки проекта. Заменить имеющиеся версии
  • firmware — прошивки
  • schemes — схемы подключения

Материалы и компоненты

Ссылки оставлены на магазины, с которых я закупаюсь уже не один год

Почти все компоненты можно взять в магазине WAVGAT по первым ссылкам

  • Arduino NANO 328p – искать
  • https://ali.ski/_mWzgw
  • https://ali.ski/1VbGc
  • https://ali.ski/DPJM4
  • https://ali.ski/VmzRH
  • Digispark искать
  • БП AC-DC 5V
  • https://ali.ski/8pc7gL
  • https://ali.ski/UuzdyZ
  • Потенциометры 10 кОм https://ali.ski/SC7b1
  • Кнопки https://ali.ski/3xB4dN
  • Диммер модуль https://ali.ski/cr3yAF
  • Диммер с крутилкой 2 кВт https://ali.ski/enTZ4R
  • Диммер с крутилкой 10 кВт https://ali.ski/CmXgnz

Вам скорее всего пригодится

Как скачать и прошить

  • Первые шаги с Arduino — ультра подробная статья по началу работы с Ардуино, ознакомиться первым делом!
  • Скачать архив с проектом

На главной странице проекта (где ты читаешь этот текст) вверху справа зелёная кнопка Clone or download, вот её жми, там будет Download ZIP

  • Установить библиотеки в
    C:\Program Files (x86)\Arduino\libraries\ (Windows x64)
    C:\Program Files\Arduino\libraries\ (Windows x86)
  • Подключить внешнее питание 5 Вольт
  • Подключить Ардуино к компьютеру
  • Запустить файл прошивки (который имеет расширение .ino)
  • Настроить IDE (COM порт, модель Arduino, как в статье выше)
  • Настроить что нужно по проекту
  • Нажать загрузить
  • Пользоваться

Настройки в коде

В: Как скачать с этого грёбаного сайта?
О: На главной странице проекта (где ты читаешь этот текст) вверху справа зелёная кнопка Clone or download, вот её жми, там будет Download ZIP

В: Скачался какой то файл .zip, куда его теперь?
О: Это архив. Можно открыть стандартными средствами Windows, но думаю у всех на компьютере установлен WinRAR, архив нужно правой кнопкой и извлечь.

В: Я совсем новичок! Что мне делать с Ардуиной, где взять все программы?
О: Читай и смотри видос http://alexgyver.ru/arduino-first/

В: Вылетает ошибка загрузки / компиляции! О: Читай тут: https://alexgyver.ru/arduino-first/#step-5

В: Сколько стоит?
О: Ничего не продаю.

Источник

Библиотека управления мотором для Arduino

ОБНОВЛЕНИЯ

  • v3.1: мелкие исправления
  • v3.2: улучшена стабильность плавного режима
  • v1.1 – убраны дефайны
  • v1.2 – возвращены дефайны
  • v2.0:
    • Программный deadtime
    • Отрицательные скорости
    • Поддержка двух типов драйверов и реле
    • Плавный пуск и изменение скорости
  • v2.1: небольшие фиксы и добавления
  • v2.2: оптимизация
  • v2.3: добавлена поддержка esp (исправлены ошибки)
  • v2.4: совместимость с другими библами
  • v2.5: добавлен тип DRIVER2WIRE_NO_INVERT
  • v3.0: переделана логика minDuty, добавлен режим для ШИМ любой битности

ТЕОРИЯ

Библиотека подходит для большинства драйверов, построенных по схеме H-мост, на два мотора они обычно имеют 4 входа (по 2 на каждый). Также на сайте есть отдельный подробный урок по работе с коллекторными моторами.

БИБЛИОТЕКА

GyverMotor v3.2

Библиотека для удобного управления моторчиками через драйвер полного моста для Arduino

  • Контроль скорости и направления вращения
  • Работа с 10 битным ШИМом
  • Программный deadtime
  • Отрицательные скорости
  • Поддержка двух типов драйверов и реле
  • Плавный пуск и изменение скорости

Поддерживаемые платформы: все Arduino (используются стандартные Wiring-функции).

В версии 2.2 добавлена поддержка плат на базе ESP

УСТАНОВКА

  • Библиотеку можно найти и установить через менеджер библиотек по названию GyverMotor в:
    • Arduino IDE (Инструменты/Управлять библиотеками)
    • Arduino IDE v2 (вкладка “Library Manager”)
    • PlatformIO (PIO Home, вкладка “Libraries”)
  • Про ручную установку читай здесь

ДОКУМЕНТАЦИЯ

Инициализация

Настройки

  • setDeadtime(us) — установка программного deadtime на переключение направления, us в микросекундах. По умолчанию стоит 0: deadtime отключен
  • setDirection(dir) — ГЛОБАЛЬНАЯ смена направления вращения мотора например чтобы FORWARD совпадал с направлением движения «вперёд» у машинки. dir — REVERSE или NORMAL (умолч.)
  • setLevel(level) — смена уровня драйвера (аналогично при инициализации). Если при увеличении скорости мотор наоборот тормозит — смени уровень. level — LOW или HIGH
  • setMinDuty(duty) — минимальный сигнал (по модулю), который будет подан на мотор. Автоматически сжимает диапазон регулирования мотора: например minDuty поставили 50, и при сигнале 1 будет на мотор будет подано

51, максимум останется прежним (диапазон сигнала переведётся в 50.. 255 внутри библиотеки).

Источник

Arduino.ru

Плавный старт электродвигателя

  • Войдите или зарегистрируйтесь, чтобы получить возможность отправлять комментарии

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

  • Войдите или зарегистрируйтесь, чтобы получить возможность отправлять комментарии

Смог сделать пид-регулятор, но не можешь плавный старт? Смешная шутка.

  • Войдите или зарегистрируйтесь, чтобы получить возможность отправлять комментарии

пид не мой. я просто его пристроил, скажем так. не могу понять как с пид-ом плавно стартануть с места.

  • Войдите или зарегистрируйтесь, чтобы получить возможность отправлять комментарии

О каком двигателе речь? Можно подробно? Они настолько разные бывают. Коллекторный постоянного тока? Переменка «от розетки»? Трёхфазный? Или какой?

  • Войдите или зарегистрируйтесь, чтобы получить возможность отправлять комментарии

От стиральной машины. Питаю выпрямленным напряжением с конденсатором

  • Войдите или зарегистрируйтесь, чтобы получить возможность отправлять комментарии

Так, давайте толком. В стиральной машине несколько двигателей. Основной — обычно на переменное напряжение, зачем там что-то выпрямлять? Скажите толком что за двигатель?

  • Войдите или зарегистрируйтесь, чтобы получить возможность отправлять комментарии

  • Войдите или зарегистрируйтесь, чтобы получить возможность отправлять комментарии

Поговаривают, что на постоянке они работают получше, поэтому выпрямил. Регулирую igbt транзистором

  • Войдите или зарегистрируйтесь, чтобы получить возможность отправлять комментарии

Тогда Вам лучше взять специализированную микросхему для управления таким двигателем (их в природе и в гугле 100500+, например ILA1185AN или U211B2/B3 или . легион им имя).

Это Вам даст и плавный пуск, и стабилизацию количества оборотов под нагрузкой и без, и защиту от перегрузок двигателя.

  • Войдите или зарегистрируйтесь, чтобы получить возможность отправлять комментарии

Дело уже сделано. Работа устраивает. Хотелось бы добавить плавный пуск для удобства.

  • Войдите или зарегистрируйтесь, чтобы получить возможность отправлять комментарии

При включении сначала с нуля(или что то около того), поднимаешь до значения задания, а потом уже включаешь пид

  • Войдите или зарегистрируйтесь, чтобы получить возможность отправлять комментарии

Как я понимаю решение данной задачи. Нужна функция, которая по нажатию кнопки, будет поднимать в течении двух секунд обороты до установленных, а только затем ручное управление с пид регулированием. И будет ли нужно при завершении набора оборотов сравнение оборотов текущих и заданных или достаточно чтобы функция просто отработала две секунды?

  • Войдите или зарегистрируйтесь, чтобы получить возможность отправлять комментарии

Дело уже сделано. Работа устраивает. Хотелось бы добавить плавный пуск для удобства.

Если «устраивает» — зачем задаете вопросы на форуме?

А если «добавить» — добавьте то, что рекомендует Евгений Петрович.

  • Войдите или зарегистрируйтесь, чтобы получить возможность отправлять комментарии

Не отрицаю, что Евгений Петрович рекомендует дело. В моем случае на контроллер возложены дополнительные задачи, кроме управления двигателем. Поэтому попросил помощи на форуме. Не прошу написать код, просто предложить алгоритм решения конкретной ситуации по коду

  • Войдите или зарегистрируйтесь, чтобы получить возможность отправлять комментарии

вы же его сами сформулировали в #11

  • Войдите или зарегистрируйтесь, чтобы получить возможность отправлять комментарии

Указанная Вами задача решается аппаратными средствами, а не программными.

  • Войдите или зарегистрируйтесь, чтобы получить возможность отправлять комментарии

Аппаратно она решается только применением специальных драйверов?

  • Войдите или зарегистрируйтесь, чтобы получить возможность отправлять комментарии

Нет. В первом приближении достаточно обычного генератора тока.

  • Войдите или зарегистрируйтесь, чтобы получить возможность отправлять комментарии

Набросал, но не проверял. Мог и накосячить.

  • Войдите или зарегистрируйтесь, чтобы получить возможность отправлять комментарии

Спасибо за помощь. Проверить получится только завтра. Что-то похожее я встречал здесь на форуме в посте по проектированию медогонки

  • Войдите или зарегистрируйтесь, чтобы получить возможность отправлять комментарии

Я не понял что встречал. Если меня , то я тут везде гажу потихоньку.

  • Войдите или зарегистрируйтесь, чтобы получить возможность отправлять комментарии

Я про алгоритм разгона)

  • Войдите или зарегистрируйтесь, чтобы получить возможность отправлять комментарии

Ну и почему же гадить. Очень ценная помощь

  • Войдите или зарегистрируйтесь, чтобы получить возможность отправлять комментарии

Да какой там алгоритм. Математика. Просто ее нужно воткнуть в правильное место.

==тут была фигня написана==

  • Войдите или зарегистрируйтесь, чтобы получить возможность отправлять комментарии

Тем не менее, спасибо за потраченное время

  • Войдите или зарегистрируйтесь, чтобы получить возможность отправлять комментарии

brokly, ваш алгоритм заработал с ходу. В процессе возникла другая проблема. Повторным нажатием кнопки у меня не получается остановить двигатель. Пробовал различные условия и флаги. самое лучшее, что из этого вышло — это однократный цикл по одиночному нажатию кнопки start-work-stop. полагаю, что такая задача решается каким-то другим способом или я во флагах делаю какую-то логическую ошибку?

  • Войдите или зарегистрируйтесь, чтобы получить возможность отправлять комментарии

А раньше то это работало ?

  • Войдите или зарегистрируйтесь, чтобы получить возможность отправлять комментарии

Раньше это не использовал. Только сейчас применил

  • Войдите или зарегистрируйтесь, чтобы получить возможность отправлять комментарии

Если не применять алгоритмы остановки, то все работает хорошо. То есть по нажатию плавно разгоняется, потом регулируется.

  • Войдите или зарегистрируйтесь, чтобы получить возможность отправлять комментарии

А вот остановить повторным нажатием кнопки никак не выходит

  • Войдите или зарегистрируйтесь, чтобы получить возможность отправлять комментарии

Ну так попробуйте старый скетч, без разгона. Остановится у вас мотор или нет ? Вообще я вижу, что мотор крутится пока кнопка нажата. Отпустил — мотор встает. Точнее встает PID, а мотор возможно продолжает крутиться. Не хочется глубоко погружаться в логику вашего скетча.

Я так понимаю, что к 8 ноге у вас подключен датчик оборотов ?

  • Войдите или зарегистрируйтесь, чтобы получить возможность отправлять комментарии

Всё также. Start-work-stop однократно

  • Войдите или зарегистрируйтесь, чтобы получить возможность отправлять комментарии

Я не понял этой фразы. Можно более развернуто?

При остановленном моторе на выходе шим сигнал какого уровня должен быть ? (Фраза Йода стаил получилась:))

  • Войдите или зарегистрируйтесь, чтобы получить возможность отправлять комментарии

В чужом коде разбираться это муторно и долго. я предпологал логику такую:

1. первый раз нажал — отпустил — работаем.

2. второй раз нажал — остановились.

  • Войдите или зарегистрируйтесь, чтобы получить возможность отправлять комментарии

по второму нажатию шим к нулю опустить

  • Войдите или зарегистрируйтесь, чтобы получить возможность отправлять комментарии

по скетчу я по сути пытаюсь скинуть флаг, чтобы сломать условие работы пид, но никак не получается

  • Войдите или зарегистрируйтесь, чтобы получить возможность отправлять комментарии

по скетчу я по сути пытаюсь скинуть флаг, чтобы сломать условие работы пид, но никак не получается

флаг-то вы сбрасываете — но мотор не останавливаете, вместо этого просто перестаете регулировать обороты. Но если ШИМ не трогать, он остается на уровне «полный газ» и мотор будет крутится, пока батарейки хватит

— простой — по команде стоп резко убрать ШИМ до нуля

— сложный — встроить плавную остановку по типу плавного пуска Брокли, но в обратную сторону

  • Войдите или зарегистрируйтесь, чтобы получить возможность отправлять комментарии

мотор по второму нажатию останавливается, но в процессе не регулируется. сразу раскручивается до скольки может

  • Войдите или зарегистрируйтесь, чтобы получить возможность отправлять комментарии

Так , объясните мне вот код:

Вот первый пример не подразумевал вкл-выкл кнопкой. Нажал — получи, отпустил — один фиг крутится, потому что останова не было, но пид работать перестает. То есть крутится с настройкой которую выставил последний качек пида.

В общем смысл этого кода был такой. Держим кнопку, выставили резистором нужную скорость — поехали. Надо поменять скорость — выставили резистором, нажали кнопку — скорость поменялась. Или держим кнопку потециомметр меняет скорость мотора, отпустили — не меняет. При этом при отпущеной кнопке пид переставет работать. Похоже это неграмотно правленый скетч от чего то другого.

Источник

Плавный старт arduino

Плавный пуск двигателя постоянного тока с использованием таймеров

Серия статей: Arduino, использование двигателей постоянного тока #2

При управлении двигателями постоянного тока иногда возникает необходимость резкого изменения скорости (на пример пуск c 0% на 100% мощности или изменение скорости на протвоположную). Но такой режим работы двигателя требует очень высоких токов – в несколько раз больше, чем простое движение. Если, например, при вращении с постоянной скоростью двигатель потребляет ток порядка 500мА, то в момент пуска это значение может достигать 2-3 А. Из за этого приходится применять более мощное подсистему питания и контроллер.

Решить проблему пусковых токов можно плавным повышением скорости. Т.е. вместо мгновенного разгона двигатель будет разгоняться постепенно, при этом сглаживая пик потребления тока в момент пуска.

Подключим двигатель к motor-shield на безе L298P, как и в предыдущем примере:

Не забываем, что двигатель не имеет обатной связи, поэтому для контроля текущей скорости воспользуемя дополнительной переменной motorPower

Теперь двигатель разгоняется более плавно. Разгон от 0 до 255 займет почти пол секунды, а установить интервал изменения в 1 мс – то вообще за четверть секунды. Невооруженным глазом разница не очень заметна. Но такое разгон намного более щадящий для силовой части. К тому-же скорость разгона мы можем регулировать, добиваясь нужного ускорения.

Вот только использование delay() не дает использовать параллельно

никаких других действий, поэтому реализуем плавный пуск с помощью таймеров, как при плавном движеним сервоприводов.

Теперь двигатель разгоняется плавно, причем параллельно с разгоном можно выполнять любые другие действия

Источник

Arduino – плавное управление сервоприводом v3.8

ОБНОВЛЕНИЯ

  • v3.6 – Исправлены мелкие баги, вырезан дебаг с 3.5
  • v3.7 – Добавлено задание ускорения в градусах/сек/сек
  • v3.8 – Исправлен невозврат тика при autoDetach(false)

ТЕОРИЯ

Вы наверняка работали с сервоприводами из под Arduino и знаете, как это выглядит: сервоприводу можно приказать повернуться на угол, и он с максимальной скоростью начнёт поворачиваться на этот угол. Это очень неправильно применять в реальных устройствах, потому что создаются лишние нагрузки и растёт потребление тока (большой стартовый ток). Можно ли крутить серво плавно? Можно! Я сделал библиотеку ServoSmooth, которая в этом поможет.

Зачем это нужно? В реальных устройствах, где нужно сервой повернуть/подвинуть тяжёлый объект, стандартный подход (дать сигнал и ждать поворота) работает на уничтожение редуктора привода, потому что объекты инерционные и быстро их разогнать и остановить невозможно! Ограничив максимальную скорость серво, разгон и торможение мы продлеваем ресурс редуктора в десятки раз, а также потребляем меньший ток за счёт плавности прикладывания момента. И очевидно получаем приятный визуальный эффект – нет резких рывков всей конструкции при разгоне-остановке.

Так как ESC контроллеры используют такой же протокол связи, мы автоматически получаем плавный разгон и торможение для бесколлекторных моторов (в этом случае за ускорение мотора отвечает максимальная скорость, метод setSpeed. Подумайте, это уже производная). И это круто!

[УСТАРЕЛО] Алгоритм работы для любопытных: работает всё на экспоненциальном бегущем среднем, именно оно обеспечивает плавный разгон и торможение. Ограничение скорости делается “дроблением” поворота серво по времени: серво поворачивается на несколько градусов по таймеру.

Новый алгоритм работает по другому, обеспечивая более плавный разгон. Ускорение осуществляется двойным интегрированием позиции: к ней прибавляется скорость, к которой прибавляется ускорение. Торможение начинается с момента, полученного из школьной формулы S=V*V/(2*a). Для любознательных прикреплю алгоритм ниже.

БИБЛИОТЕКА

ServoSmooth v3.8

Библиотека для плавного управления сервоприводами

  • Является дополнением к стандартной библиотеке Servo
  • Поддерживает работу с расширителем серво PCA9685 (начиная с v3.0)
  • Настройка максимальной скорости сервопривода
  • Настройка ускорения (разгон и торможение) сервопривода
  • Плавный пуск из любого положения при запуске программы (начиная с v3.2)
  • При использовании ESC и БК мотора получаем “плавный пуск” мотора
  • Установка целевой позиции серво по углу (0-180) и длине импульса (500-2400)
  • Автоматическое отключение привода по таймауту неактивности и включение при изменении позиции (настраивается)
  • Нативная поддержка серво с любым диапазоном по углу (180, 270, 360), см. документацию

Поддерживаемые платформы: все Arduino-совместимые платы (библиотека является дополнением к стандартной библиотеке Servo и PCA9685)

УСТАНОВКА

  • Библиотеку можно найти и установить через менеджер библиотек по названию ServoSmooth в:
      • Arduino IDE (Инструменты/Управлять библиотеками)
      • Arduino IDE v2 (вкладка “Library Manager”)
      • PlatformIO (PIO Home, вкладка “Libraries”)
  • Про ручную установку читай здесь

ДОКУМЕНТАЦИЯ

Инициализация

Плавный пуск ( new! )

Управление

500-2400)

  • setTargetDeg(угол); — устанавливает целевую позицию для серво в градусах (0-180)
  • setSpeed(скорость); — установка максимальной скорости (больше нуля) в градусах в секунду
  • setAccel(ускорение); — установка ускорения (float числа 0.01 — 1.0). Можно больше 1, будет ещё резче. Если установить ускорение 0 — оно будет отключено и серво будет двигаться по профилю постоянной скорости (с бесконечным ускорением)
    • Если передавать ускорение в целых числах (с версии 3.7 библиотеки) — ускорение будет установлено в градусах/сек/сек. Рабочий диапазон ускорений 1 — 1500 , чем больше — тем резче. При значении 0 ускорение будет отключено.
  • start(); — автоматический attach + разрешает работу tick — серво движется к заданной позиции
  • stop(); — detach + запрещает работу tick — серво останавливается
  • Полезные вспомогательные методы для различных ситуаций:

    • setDirection(напр); — принимает NORMAL (false) или REVERSE (true), меняет направление серво
    • setCurrent(длина); — установка текущей позиции в мкс (500 — 2400). Может пригодиться в ситуации, когда мы знаем реальный угол серво и хотим сообщить о нём программе, чтобы алгоритм не дёргал привод.
    • setCurrentDeg(угол); — установка текущей позиции в градусах (0-180). Зависит от min и max.
    • getCurrent(); — получение текущей позиции в мкс (500 — 2400)
    • getCurrentDeg(); — получение текущей позиции в градусах (0-180). Зависит от min и max
    • getTarget(); — получение целевой позиции в мкс (500 — 2400)
    • getTargetDeg(); — получение целевой позиции в градусах (0-180). Зависит от min и max
    • setMaxAngle(); — установка макс. угла серво, по умолчанию 180 . Позволяет удобно работать с разными сервами (на 270 и 360 градусов)

    Источник

    Arduino.ru

    Плавный старт электродвигателя

    • Войдите или зарегистрируйтесь, чтобы получить возможность отправлять комментарии

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

    • Войдите или зарегистрируйтесь, чтобы получить возможность отправлять комментарии

    Смог сделать пид-регулятор, но не можешь плавный старт? Смешная шутка.

    • Войдите или зарегистрируйтесь, чтобы получить возможность отправлять комментарии

    пид не мой. я просто его пристроил, скажем так. не могу понять как с пид-ом плавно стартануть с места.

    • Войдите или зарегистрируйтесь, чтобы получить возможность отправлять комментарии

    О каком двигателе речь? Можно подробно? Они настолько разные бывают. Коллекторный постоянного тока? Переменка «от розетки»? Трёхфазный? Или какой?

    • Войдите или зарегистрируйтесь, чтобы получить возможность отправлять комментарии

    От стиральной машины. Питаю выпрямленным напряжением с конденсатором

    • Войдите или зарегистрируйтесь, чтобы получить возможность отправлять комментарии

    Так, давайте толком. В стиральной машине несколько двигателей. Основной — обычно на переменное напряжение, зачем там что-то выпрямлять? Скажите толком что за двигатель?

    • Войдите или зарегистрируйтесь, чтобы получить возможность отправлять комментарии

    • Войдите или зарегистрируйтесь, чтобы получить возможность отправлять комментарии

    Поговаривают, что на постоянке они работают получше, поэтому выпрямил. Регулирую igbt транзистором

    • Войдите или зарегистрируйтесь, чтобы получить возможность отправлять комментарии

    Тогда Вам лучше взять специализированную микросхему для управления таким двигателем (их в природе и в гугле 100500+, например ILA1185AN или U211B2/B3 или . легион им имя).

    Это Вам даст и плавный пуск, и стабилизацию количества оборотов под нагрузкой и без, и защиту от перегрузок двигателя.

    • Войдите или зарегистрируйтесь, чтобы получить возможность отправлять комментарии

    Дело уже сделано. Работа устраивает. Хотелось бы добавить плавный пуск для удобства.

    • Войдите или зарегистрируйтесь, чтобы получить возможность отправлять комментарии

    При включении сначала с нуля(или что то около того), поднимаешь до значения задания, а потом уже включаешь пид

    • Войдите или зарегистрируйтесь, чтобы получить возможность отправлять комментарии

    Как я понимаю решение данной задачи. Нужна функция, которая по нажатию кнопки, будет поднимать в течении двух секунд обороты до установленных, а только затем ручное управление с пид регулированием. И будет ли нужно при завершении набора оборотов сравнение оборотов текущих и заданных или достаточно чтобы функция просто отработала две секунды?

    • Войдите или зарегистрируйтесь, чтобы получить возможность отправлять комментарии

    Дело уже сделано. Работа устраивает. Хотелось бы добавить плавный пуск для удобства.

    Если «устраивает» — зачем задаете вопросы на форуме?

    А если «добавить» — добавьте то, что рекомендует Евгений Петрович.

    • Войдите или зарегистрируйтесь, чтобы получить возможность отправлять комментарии

    Не отрицаю, что Евгений Петрович рекомендует дело. В моем случае на контроллер возложены дополнительные задачи, кроме управления двигателем. Поэтому попросил помощи на форуме. Не прошу написать код, просто предложить алгоритм решения конкретной ситуации по коду

    • Войдите или зарегистрируйтесь, чтобы получить возможность отправлять комментарии

    вы же его сами сформулировали в #11

    • Войдите или зарегистрируйтесь, чтобы получить возможность отправлять комментарии

    Указанная Вами задача решается аппаратными средствами, а не программными.

    • Войдите или зарегистрируйтесь, чтобы получить возможность отправлять комментарии

    Аппаратно она решается только применением специальных драйверов?

    • Войдите или зарегистрируйтесь, чтобы получить возможность отправлять комментарии

    Нет. В первом приближении достаточно обычного генератора тока.

    • Войдите или зарегистрируйтесь, чтобы получить возможность отправлять комментарии

    Набросал, но не проверял. Мог и накосячить.

    • Войдите или зарегистрируйтесь, чтобы получить возможность отправлять комментарии

    Спасибо за помощь. Проверить получится только завтра. Что-то похожее я встречал здесь на форуме в посте по проектированию медогонки

    • Войдите или зарегистрируйтесь, чтобы получить возможность отправлять комментарии

    Я не понял что встречал. Если меня , то я тут везде гажу потихоньку.

    • Войдите или зарегистрируйтесь, чтобы получить возможность отправлять комментарии

    Я про алгоритм разгона)

    • Войдите или зарегистрируйтесь, чтобы получить возможность отправлять комментарии

    Ну и почему же гадить. Очень ценная помощь

    • Войдите или зарегистрируйтесь, чтобы получить возможность отправлять комментарии

    Да какой там алгоритм. Математика. Просто ее нужно воткнуть в правильное место.

    ==тут была фигня написана==

    • Войдите или зарегистрируйтесь, чтобы получить возможность отправлять комментарии

    Тем не менее, спасибо за потраченное время

    • Войдите или зарегистрируйтесь, чтобы получить возможность отправлять комментарии

    brokly, ваш алгоритм заработал с ходу. В процессе возникла другая проблема. Повторным нажатием кнопки у меня не получается остановить двигатель. Пробовал различные условия и флаги. самое лучшее, что из этого вышло — это однократный цикл по одиночному нажатию кнопки start-work-stop. полагаю, что такая задача решается каким-то другим способом или я во флагах делаю какую-то логическую ошибку?

    • Войдите или зарегистрируйтесь, чтобы получить возможность отправлять комментарии

    А раньше то это работало ?

    • Войдите или зарегистрируйтесь, чтобы получить возможность отправлять комментарии

    Раньше это не использовал. Только сейчас применил

    • Войдите или зарегистрируйтесь, чтобы получить возможность отправлять комментарии

    Если не применять алгоритмы остановки, то все работает хорошо. То есть по нажатию плавно разгоняется, потом регулируется.

    • Войдите или зарегистрируйтесь, чтобы получить возможность отправлять комментарии

    А вот остановить повторным нажатием кнопки никак не выходит

    • Войдите или зарегистрируйтесь, чтобы получить возможность отправлять комментарии

    Ну так попробуйте старый скетч, без разгона. Остановится у вас мотор или нет ? Вообще я вижу, что мотор крутится пока кнопка нажата. Отпустил — мотор встает. Точнее встает PID, а мотор возможно продолжает крутиться. Не хочется глубоко погружаться в логику вашего скетча.

    Я так понимаю, что к 8 ноге у вас подключен датчик оборотов ?

    • Войдите или зарегистрируйтесь, чтобы получить возможность отправлять комментарии

    Всё также. Start-work-stop однократно

    • Войдите или зарегистрируйтесь, чтобы получить возможность отправлять комментарии

    Я не понял этой фразы. Можно более развернуто?

    При остановленном моторе на выходе шим сигнал какого уровня должен быть ? (Фраза Йода стаил получилась:))

    • Войдите или зарегистрируйтесь, чтобы получить возможность отправлять комментарии

    В чужом коде разбираться это муторно и долго. я предпологал логику такую:

    1. первый раз нажал — отпустил — работаем.

    2. второй раз нажал — остановились.

    • Войдите или зарегистрируйтесь, чтобы получить возможность отправлять комментарии

    по второму нажатию шим к нулю опустить

    • Войдите или зарегистрируйтесь, чтобы получить возможность отправлять комментарии

    по скетчу я по сути пытаюсь скинуть флаг, чтобы сломать условие работы пид, но никак не получается

    • Войдите или зарегистрируйтесь, чтобы получить возможность отправлять комментарии

    по скетчу я по сути пытаюсь скинуть флаг, чтобы сломать условие работы пид, но никак не получается

    флаг-то вы сбрасываете — но мотор не останавливаете, вместо этого просто перестаете регулировать обороты. Но если ШИМ не трогать, он остается на уровне «полный газ» и мотор будет крутится, пока батарейки хватит

    — простой — по команде стоп резко убрать ШИМ до нуля

    — сложный — встроить плавную остановку по типу плавного пуска Брокли, но в обратную сторону

    • Войдите или зарегистрируйтесь, чтобы получить возможность отправлять комментарии

    мотор по второму нажатию останавливается, но в процессе не регулируется. сразу раскручивается до скольки может

    • Войдите или зарегистрируйтесь, чтобы получить возможность отправлять комментарии

    Так , объясните мне вот код:

    Вот первый пример не подразумевал вкл-выкл кнопкой. Нажал — получи, отпустил — один фиг крутится, потому что останова не было, но пид работать перестает. То есть крутится с настройкой которую выставил последний качек пида.

    В общем смысл этого кода был такой. Держим кнопку, выставили резистором нужную скорость — поехали. Надо поменять скорость — выставили резистором, нажали кнопку — скорость поменялась. Или держим кнопку потециомметр меняет скорость мотора, отпустили — не меняет. При этом при отпущеной кнопке пид переставет работать. Похоже это неграмотно правленый скетч от чего то другого.

    Источник

    Adblock
    detector