С наступающим Новым годом! Форум программистов, компьютерный форум, киберфорум
Наши страницы
Микроконтроллеры
Войти
Регистрация
Восстановить пароль
 
Рейтинг 4.92/52: Рейтинг темы: голосов - 52, средняя оценка - 4.92
worizzzok
0 / 0 / 0
Регистрация: 28.11.2012
Сообщений: 138
1

Как сделать шим 50Гц с изменяемой скважностью на АТмега8

01.06.2015, 02:32. Просмотров 9683. Ответов 6
Метки нет (Все метки)

Здравствуйте.
Мне нужно организовать управление сервомашинкой, для нее, как известно, нужно подавать управляющий сигнал с частотой около 50 герц и различной скважностью. Я могу сделать или частоту 50 Гц, или изменяемую скважность, но чтоб все вместе - как-то не пойму. Можно ли для этого использовать таймер Т2? Если да. то какой алгоритм? Или, если можно, пример на ассемблере.
Спасибо.
0
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
01.06.2015, 02:32
Ответы с готовыми решениями:

ШИМ на ATMega16 cо скважностью 3
Помогитет написать программу: Выдать последовательность прямоугольных...

ШИМ 50Гц mega8
Доброго дня! Подскажите как расчитать шим на таймере2 с частотой 50ГЦ в режиме...

шим от 50Гц с десятыми герца 50.1,50.2 и т.д.
шим от 50Гц с десятыми герца 50.1,50.2 и т.д. кто знает как реализовать сие на...

Как сделать нулевой ШИМ сигнал на avr
Здравствуйте! Написал программу, которая генерирует ШИМ в зависимости от...

Не получается сделать 36кГц шим на ATtiny13
Добрый день. Стыдно, но уже 2 день ломаю голову. Нужно с тиньки выдать сигнал...

6
imbtimdir
0 / 0 / 0
Регистрация: 06.09.2013
Сообщений: 57
01.06.2015, 02:51 2
Если совсем по-простому, то настройте прерывание от таймера на 50Гц, а скважность контролируйте циклом циклом while внутри прерывания
0
oxytt
0 / 0 / 0
Регистрация: 16.03.2013
Сообщений: 4,224
01.06.2015, 04:23 3
Цитата Сообщение от imbtimdir
Если совсем по-простому, то настройте прерывание от таймера на 50Гц, а скважность контролируйте циклом циклом while внутри прерывания
это еще зачем?

берем 1-й или 2-й таймер где есть PWM
настраиваем любой режим PWM по вкусу
скважность рулится значением OCR1A/OCR1B/OCR2 соотвественно

ну и надо позаботиться о том, чтобы частота срабатывания таймера была 50Гц
таймер 1 на это настроить проще так как у него несколько режимов FastPWM
0
BykTiho
0 / 0 / 0
Регистрация: 12.04.2010
Сообщений: 3,260
01.06.2015, 10:13 4
Вот тут написано про управление кучей серво, и в начале статьи есть ссылка на управление одной сервой. Все просто как ...
0
dimyurk1978
0 / 0 / 0
Регистрация: 07.02.2106
Сообщений: 3,047
05.06.2015, 09:33 5
Цитата Сообщение от Ответ коллеги:
Аппаратную скважность можно сделать не на всех Мегах, а только на тех, которые поддерживают "Compare Output Mode, Fast PWM". Это не перечисление двух режимов, а сам режим именно так называется. Кроме того, на таймере должно быть, как минимум два канала OC (Compare Output), но обычно это всегда так, если Мега поддерживает режим "Fast PWM".

Когда таймер работает в СТС режиме (т.е. сбрасывается в момент совпадения счетчика и величины OCR) и у него не один OCR, а больше, сброс происходит ТОЛЬКО от OCR первого канала (канал "А", OCRnA таймера n).

Пусть это 16-разрядный таймер 3. ПЕРИОД устанавливаем с помощью делителя и величины OCR3A. Тогда счетчик считает от 0 до OCR3A, а затем автоматически сбрасывается на нуль и начинает счет сначала.

Меиндр с требуемой скважностью берем с ДРУГОГО канала - канала "B"! Вот ему мы и установим скважность. Если установить OCR3B = OCR3A / 2, то меиндр получится симметричный - обе фазы (H и L одинаковой продолжительности), но можно установить для OCR3B любое другое значение (но не более чем OCR3A, т.к. иначе он его никогда не достигнет, ибо за OCR3A уже следует сброс). Скажем, если OCR3B = OCR3A / 10, но первая фаза (L) будет составлять 10% периода, а вторая (H) - 90%.

Осталось только объяснить, отчего таймеру нужен режим "Compare Output Mode, Fast PWM", а не простой СТС. Дело в том, что каналу "B" требуется установить "Clear on Compare Match, set TOP"! А такое возможно только в режиме "Fast PWM", а в простом CTC его нет. Эти слова означают, что в момент достижения счетчиком значения OCR3B, напряжение на выходе упадет до низкого уровня, но снова поднимется к высокому, когда счетчик дойдет до OCR3A и сбросится.

Таким образом, напряжение остается высоким, пока счетчик считает от 0 до OCR3B, после этого напряжение упадет до низкого, но счетчик продолжает считать дальше (!), т.к. канал "B" обнулить его не может. Поэтому низкое напряжение на выходе будет держаться до тех пор, пока счетчик не достигнет OCR3A и будет сброшен. Тут факт сброса счетчика на напряжение не влияет, а влияют события совпадения значения счетчика с OCR3B и OCR3A.
0
Fohyvis
0 / 0 / 0
Регистрация: 28.01.2012
Сообщений: 499
06.06.2015, 01:18 6
Цитата Сообщение от Ответ коллеги:
Меиндр с требуемой скважностью берем с ДРУГОГО канала ...
меиндр — периодический прямоугольный сигнал со скважностью, равной 2

Может кому-то педивикия Википедия не достаточно авторитетный источник...
Хотя там ниже есть ссылка на ГОСТ.

-> worizzzok я на 1-м таймере 8-й меги делал генератор ШИМ. Кварц 10МГц, предделитель 8, ТОП=24999.
Частота получалась ровно 50Гц, а скважность задавал в OCR1B. Результат был с точностью ок. 1%.
0
worizzzok
0 / 0 / 0
Регистрация: 28.11.2012
Сообщений: 138
06.06.2015, 03:05 7
Друзья, спасибо за помощь - все получилось. Сделал на 1 таймере и регистрах ICR1 и OCR1A.
Я долго не мог понять в чем подвох, пока не наткнулся на эту тему на коте. Симулятор 4-й студии действительно не корректно отображает работу таймера, считая в режиме FastPwm не до заданного верзхнего предела, а до заполнения регистра, как FastPWM нулевого таймера. В протеусе все работает, вроде бы. А т.к я сначала гоняю в студии - думал, что я где-то накосячил.
0
06.06.2015, 03:05
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
06.06.2015, 03:05

Сонар HC-SR04 и атмега8
Приветствую. Решил поэкспериментировать с ультразвуковым датчиком HC-SR04....

8 битный ацп атмега8
Всем куку. Такая проблема, при ADLAR 0 значение ацп в диапазоне 0-1024, при...

Проблема с прошивкой Атмега8
Здравствуйте. Собрал девайс на меге8. Пытаюсь залить программу и не выходит....


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
7
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2018, vBulletin Solutions, Inc.
Рейтинг@Mail.ru