Який найпростіший спосіб генерувати ШІМ без мікроконтролера?


15

Який швидкий та елегантний спосіб генерувати ШІМ без мікроконтролера для управління сервоприводом? За допомогою потенціометра або інших способів контролю робочого циклу з фіксованим періодом.

  • вибачте за безлад, я хочу контролювати сервісне хобі.

Ви дійсно маєте на увазі керування двигуном як частиною системи управління сервоприводом, або ви питаєте про управління «сервісом хобі»? Дивіться доповнення до моєї відповіді.
Олін Латроп

1
Чому ви хочете отримати ШІМ? ШІМ часто є лише способом мікроелемента наблизити аналогову функцію управління. Якщо ви дійсно хочете - це аналогова напруга або струм, можливо, є набагато кращі способи зробити це.
The Photon

2
@ThePhoton Якщо він керує сервісом хобі, PWM - це те, що потрібно як контрольний сигнал.
Нік Джонсон

Якщо ви скасуєте вимогу фіксованого періоду, дельта-сигма-генератор буде дуже простим рішенням. Я бачив реалізацію з одним операційним підсилювачем та кількома резисторами / конденсаторами. Це передбачає, що ви не говорите про RC-сервоприводи.
джиппі

1
@jippie - Що таке дельта-сигма-генератор? Я знаю, що дельта-сигма ADC потребує генератора, але я завжди вважав, що це звичайна річ, оскільки це насправді не є частиною самого перетворювача.
stevenvh

Відповіді:


25

Рекомендую таймер (GASP!) 555 в режимі "astasta" . Ви знайдете все необхідне за посиланням, але я скопіював їх тут тільки для вас!

Режим Astable дає змінну частоту ШІМ, а також дозволяє регулювати робочий цикл (також рівняння високого та низького часу за посиланням).

Схема:

555 Timer, astable mode

Примітка: я додав би електролітичну кришку через Vcc (позитивний відвід) та GND (негативний відвід), щоб зменшити вплив погіршень напруги живлення.

ШІМ частота:

Output frequency of 555 Timer in astable mode

Деякий захист моєї відповіді порівняно з іншими в цій публікації. Більшість інших відповідей потребують проміжної форми хвилі для генерації змінного ШІМ-сигналу, такого як загальна трикутна хвиля / метод порівняння. Я не бачу великого сенсу в створенні генератора трикутних хвиль (значної схеми всередині себе) лише як проміжний крок для вирішення вашої проблеми.

555 - чудовий аналоговий чіп і робить саме те, що вам потрібно. Я б хотів, щоб люди не ненавиділи їх так сильно.


2
Мені подобаються 555, але я думаю, що @supercat має рацію в тому, що жоден 555 не зможе надати вам сигнал фіксованої частоти зі змінним коефіцієнтом корисної дії. C заряджається через R1 + R2, а розряджається через R2. Якщо ви збільшите R2, ви збільшите і час увімкнення, і вимкнення, а отже, і періоду. Якщо ви збільшуєте R1, ви збільшуєте не лише час, але й період. Якщо ви збільшите C, ви збільшите всі часи, включаючи період. Вам потрібно два 555. Один, у стабільному режимі, який визначатиме період, запускаючи другий, у моностабільному режимі, що визначатиме коефіцієнт мита.
Телаклаво

5
"Ви знайдете все необхідне за посиланням". Ні. Це не правильний спосіб відповісти. Надайте тут деталі.
stevenvh

1
Я не ненавиджу 555, я просто хочу, щоб люди не вважали їх найкращим рішенням для всього . Один 555 - це не найкращий спосіб керувати сервісом хобі.
stevenvh

1
@Telaclavo - Ви маєте рацію; ви не можете змінювати робочий цикл і підтримувати частоту постійною. Однак, як згадує WoutervanOoijen, для запуску сервоприводу вам не потрібна жорстко фіксована частота. Варіювання робочого циклу, ймовірно, створює приблизно 10-20% (приблизну оцінку) коливання частоти пульсу, що має бути досить точним для більшості сервоприводів. І знову ж таки, вам не потрібно в будь-якому разі налаштовувати робочий цикл, щоб керувати сервоприводом.
kevlar1818

2
@stevenvh Ти дай мені знати, коли помирає Вікіпедія. Навіть якщо це станеться, як показав Дін своїм коментарем вище, 555 є (був) настільки всюдисущим, що важко було б не знайти старої книги, невеликого блогу чи веб-сайту хобі з інформацією про них.
kevlar1818

8

Фазовим способом виготовлення ШІМ з аналоговим робочим циклом роботи є порівняння аналогового керуючого сигналу з трикутною хвилею. Ви робите генератор трикутних хвиль, який працює на потрібній частоті ШІМ. Це подається на негативний вхід компаратора і аналоговий керуючий сигнал на позитивний вхід. Результат - або повний високий, або повний низький, але робочий цикл лінійно пропорційний керуючому сигналу. Наприклад, аудіо підсилювачі раннього класу D працювали за цим принципом.

У багатьох випадках ШІМ не потрібно було бути лінійними, тому хвиля трикутника не повинна мати ідеально прямі ребра. Дозволяючи їм бути трохи експоненціальними, можна спростити схему.

Додано:

Марк Рагес зазначив, що, говорячи про "сервомотор", ти можеш мати на увазі маленькі хобі-керовані мотори, що використовуються на модельних літаках тощо. Моя відповідь стосується управління двигуном, якщо у вас є аналогова напруга, пропорційна тому, наскільки важко ви хочете керувати мотором. Це не стосується цих "хобі сервоприводів". Вони не контролюються ШІМ у загальноприйнятому розумінні цього терміна, а шириною імпульсів, які зазвичай мають бути від 1 до 2 мс, повторюваних кожні 20–50 мс або близько того. Якщо це питання дійсно стосується сервісів хобі, то його слід виправити, щоб зробити це зрозумілим.


Хоча це і виконує завдання, важливо зазначити, що @pstan хоче керувати сервоприводом, і тому, маючи функціональний генератор у своїй реалізації, напевно, не буде дуже портативним.
kevlar1818

1
Цикли роботи сервомоторних двигунів, як правило, досить низькі, як 10% або менше. А сервоприймач використовує ширину імпульсу безпосередньо, а не середнє значення, тому краще використовувати схему, яка відриває ширину імпульсу від частоти повторення.
маррагери

1
@kevlar: Я повторно перевірив свою відповідь і досі не бачу згадки про генератор функцій. Все, що я сказав, - тобі потрібна хвиля трикутника або щось досить близько. Вам, звичайно, не потрібен генератор функцій, щоб зробити один із них.
Олін Латроп

@Markrages: А? Мотори бачать середнє значення імпульсного поїзда, якщо він досить швидкий. Кілька 100 Гц є досить хорошими в цьому плані для більшості двигунів. Серво-частина виконується за схемою управління, про яку ОП не запитувала. Здається, у нього вже є аналоговий рівень, пропорційний тому, наскільки важко керувати мотором.
Олін Латроп

@Markrages: Щойно у мене вийшло, що ви говорите про хобі-сервоприводи, які хочуть 1-2 мс пульсу кожні 20 мс чи так? Ваш коментар має певний сенс у цьому світлі, але ОП взагалі не згадує сервіси хобі.
Олін Латроп

7

Трикутна хвиля. Компаратор Поріг контролю. Це основний спосіб зробити це.

Якщо ви хочете керувати сервісом хобі, однак, це не найкращий спосіб. Робочий цикл коливається від 5% до 10% (ширина імпульсу від 1 мс до 2 мс за 20 мс), що є коротким, і, швидше за все, ви хочете контролювати його з деякою точністю. На 5ВPP

enter image description here

Спочатку генерують 50 Гц квадратної хвилі. Найпростіший спосіб:

enter image description here

Ω

REXTCEXT

T=REXT×CEXT

мкΩ

Для отримання ширини імпульсу, що змінюється від 1 мс до 2 мс, ви використовуєте C = 100nF і R = 10kΩ в серії з 10kΩ горщик.

Я міг би зробити це з двома LM555, але мені знадобиться більше зовнішніх компонентів.

редагувати (про мікроконтролери)
Я погоджуюся з Оліном (див. коментарі), що виключення мікроконтролера є недалекоглядим (Олін сказав "нерозумно"). Був час, коли розробка мікроконтролера була складною, але сьогодні це вже не так. Також ви можете мати інтерфейс програмування за кілька євро. Тоді рішення виглядатиме так просто, що жодне рішення, що не має контролера, не може конкурувати з ним: ви берете ATTiny5 (Олін бере PIC10F220) в SOT23-6. Підключіть конденсатор роз'єднання до силових з'єднань і потметр до входу АЦП. Це воно! 3 (три) компоненти. Перетворити зчитування АЦП у вихідний імпульс настільки просто, що це майже смішно, навіть для початківця програміста.

Коли ви почнете працювати з ними, ви побачите, що мікроконтролери часто пропонують більш просте і гнучкіше рішення, ніж для інших ІМС або дискретних компонентів.

примітка
З вашого іншого питання я бачу, що ви робите використання мікроконтролерів. Чому ти хочеш тут їх уникати?


Який спосіб отримати хвилю трикутника?
м.Алін

1
@ m.Alin - Якщо ви хочете дуже чистий трикутник, це правильний шлях. Але вхід інвертора в моєму генераторі також наближає трикутник, хоча схили справді експоненціальні.
stevenvh

1
місцево кажучи, 555 тут дешевше, ніж 74HCT1G14. +1 BTW. \
Стандартний Сандун

3
@stevenvh "Якщо ви хочете дуже чистий трикутник, це правильний шлях". За вашою логікою це абсолютно неприпустимо. Будь ласка, включіть це у свою дуже інформативну та повну відповідь.
kevlar1818

2
@pstan - Якщо ваші характеристики не надто великі, ви, ймовірно, використовували ланцюг 555. Це далеко не ідеально: частота змінюється залежно від робочого циклу, а керування не лінійне. Трикутник генератор + Компаратор вирішує ці недоліки.
stevenvh

4

Найпростіший спосіб генерування сигналу ШІМ - це подача пилоподібної хвилі або трикутної хвилі на один вхід аналогового компаратора, а керуюча напруга в інший. Якщо не можна отримати чисту трикутну хвилю, її можна досить наблизити, пропустивши квадратну хвилю через RC-фільтр таким чином, що вихід фільтра коливається між приблизно 1 / 4VDD та 3 / 4VDD, а потім масштабує керуючу напругу, що йде в компаратор, щоб керуюча напруга, яке повинно дати 0,01% робочого циклу, буде переведено на найнижчу напругу відфільтрованої квадратної хвилі, а керуюча напруга, яка повинна дати 99,99% робочого циклу, буде переведена на найвищу напругу відфільтрованої квадратна хвиля. Це дасть ширину імпульсу, яка не зовсім лінійно пропорційна амплітуді, але досить близька для багатьох цілей.


1
І саме це робить схема NE555, як запропоновано kevlar1818 ...
Cees Meijer

2
@CeesMeijer: Плакат запитував змінний робочий цикл та фіксований період. Я не знаю жодного способу використання єдиного 555 для перетворення напруги керування в циклічну хвилю змінної напруги з фіксованою частотою. Хоча це може слугувати дуже непогано, щоб генерувати хвилю трикутника, яка подається в компаратор.
supercat

Минуло 20 років, як я побудував цю схему, тому мені довелося це переглянути. І справді ви праві. Я використовував зовнішній тригер, щоб отримати постійну частоту. Ти можеш використати другий 555 для цього.
Cees Meijer

2

Я рекомендую використовувати низьковольтний (BiCMOS) контрольний блок живлення, такий як UCC3803 . Робочу частоту можна легко встановити за допомогою простого R і C, а керування робочим циклом легко робити за допомогою потенціометра. Він буде працювати на 5V-рейці.

excerpt from TI UC3842 data sheet

UCC3803 є сумісною зі шпильками з контролерами PWM серії UCx84x. Якщо ви хочете зробити легку ШІМ, ви можете використовувати вищезазначені схеми, опускаючи R1, 2N2222 і 5k ISENSE регулюючий горщик (просто прив’яжіть штифт 3 до землі). Ви, ймовірно, також можете опустити два резистори 4,7k послідовно з горщиком регулювання підсилювача помилок і перейти безпосередньо до Vref та Gnd, або скористатися явним дільником напруги, якщо регулювання не потрібне. (Ви не вказали, чи потрібно легко змінювати робочий цикл).

СК здатний керувати струмом близько 1А. (Якщо ваш сервомотор має вхід ШІМ, це суперечка.)


"може знадобитися зовнішній драйвер, щоб реально живити мотор". Ти впевнений? Я завжди вважав, що вхід ШІМ - це лише низький рівень сигналу. За потужністю сервопривід має третє з'єднання.
stevenvh

Крім того, я просто пам’ятаю, що робочий цикл становить лише 5-10%. Це може бути правильним способом постачання енергії.
stevenvh

Це добре. Але все ж нараховує безліч зовнішніх компонентів.
Стандартний Сандун

Виглядає більше як UEMIG: непотрібний EMI генератор. :-(
stevenvh

It also seems to need a minimum 10V input. Maybe not the best choice...
stevenvh
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.