Перейти к содержанию

Шим


nightt

Рекомендуемые сообщения

Здравствуйте!

Подскажите, пожалуйста, вот я на ATtiny13 пытаюсь освоить ШИМ.

Регистры:

управления - TCCR0B, TCCR0A

таймер - TCNT0

совпадения - OCR0A, OCR0B

Частота МК 1Мгц.

На какой максимальной частоте может работать ШИМ и как выставлять частоту в зависимости от той, которая мне нужна? И как плавно ее менять? Кнопкой или програмно.

Мы можем с помощью разрядов CSn0, CSn1, CSn2, тактового делителя регистра TCCRn, выставить разные частоты CLK/8, CLK/32, CLK/64, CLK/128, CLK/256 и CLK/1024. А как выставить частоту, если она нужна мне произвольная? Которую не возможно выставить с помощью CLK/8, ... ?

ДШ у меня на английском. Я не разберусь все не как.

Подскажите, пожалуйста.

Курс AVR123 читал. Не понял. Задача 8.

Пишу в CodeVisionAVR.

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

  • Ответов 53
  • Создана
  • Последний ответ

Топ авторов темы

Топ авторов темы

Изображения в теме

Попробуй объяснить исходную задачу подробней.

Не совсем понятно, вернее совсем не понятно, зачем менять частоту ШИМ?

Потом проблемы с фильтрацией будут.

Может тебе надо менять частоту сигнала, который ты с помощью ШИМ формируешь?

Изменено пользователем Migray

Как советовать, так все чатлане ...

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

зачем менять частоту ШИМ?

Я хочу сделать сирену на Шим сигнале. Чтоб вначале была низкой, а потом увеличивалась до невыносимого писка. Вот и незнаю, как програмно менять частоту. Как програмно менять скважность, я знаю.

Для изменения частоты шим есть такая формула:

post-38584-1192186676.jpg

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

Кстати, написал програмку, которая помогает расчитать значения TCNT0 и TCCR0B которые необходимо выставлять для получения той или иной частоты таймера. Кому интересно, скачайте, и скажите мне, как она вам. Только для ATtiny13. Потому что в других контроллерах другое управление.

FrequencOutput.rar

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

Сравнительное тестирование аккумуляторов EVE Energy и Samsung типоразмера 18650

Инженеры КОМПЭЛ провели сравнительное тестирование аккумуляторов EVE и Samsung популярного для бытовых и индустриальных применений типоразмера 18650. 

Для теста были выбраны аккумуляторы литий-никельмарганцевой системы: по два образца одного наименования каждого производителя – и протестированы на двух значениях тока разряда: 0,5 А и 2,5 А. Испытания проводились в нормальных условиях на электронной нагрузке EBD-USB от ZKEtech, а зарядка осуществлялась от лабораторного источника питания в режиме CC+CV в соответствии с рекомендациями в даташите на определенную модель. Подробнее>>

Реклама: АО КОМПЭЛ, ИНН: 7713005406, ОГРН: 1027700032161

Так загони ШИМ на максимально возможную частоту, и формируй любой нужный тебе сигнал.

Ты-же ШИМом можешь выдать любое напряжение, и менять его в течении времени, по синусоиде или еще как ...

Кстати на сирену ШИМ не обязателен, она вместо синусоиды и меандр схавает.

Как советовать, так все чатлане ...

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

Новый аккумулятор EVE серии PLM для GSM-трекеров, работающих в жёстких условиях (до -40°С)

Компания EVE выпустила новый аккумулятор серии PLM, сочетающий в себе высокую безопасность, длительный срок службы, широкий температурный диапазон и высокую токоотдачу даже при отрицательной температуре. 

Эти аккумуляторы поддерживают заряд при температуре от -40/-20°С (сниженным значением тока), безопасны (не воспламеняются и не взрываются) при механическом повреждении (протыкание и сдавливание), устойчивы к вибрации. Они могут применяться как для автотранспорта (трекеры, маячки, сигнализация), так и для промышленных устройств мониторинга, IoT-устройств. Подробнее параметры и результаты тестов новой серии PLM по ссылке.

Реклама: АО КОМПЭЛ, ИНН: 7713005406, ОГРН: 1027700032161

Так загони ШИМ на максимально возможную частоту

В коде, как это сделать?

формируй любой нужный тебе сигнал

Напиши пожалуйста пример.

ШИМом можешь выдать любое напряжение, и менять его в течении времени

Как менять, в коде?

сирену ШИМ не обязателен, она вместо синусоиды и меандр схавает

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

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

Литиевые батарейки и аккумуляторы от мирового лидера  EVE в Компэл

Компания Компэл, официальный дистрибьютор EVE Energy, бренда №1 по производству химических источников тока (ХИТ) в мире, предлагает продукцию EVE как со склада, так и под заказ. Компания EVE широко известна в странах Европы, Америки и Юго-Восточной Азии уже более 20 лет. Недавно EVE была объявлена поставщиком новых аккумуляторных элементов круглого формата для электрических моделей «нового класса» компании BMW.

Продукция EVE предназначена для самого широкого спектра применений – от бытового до промышленного. Подробнее>>

Реклама: АО КОМПЭЛ, ИНН: 7713005406, ОГРН: 1027700032161

Ты, наверное, не понимаешь как формируют звук из ШИМа.

Интеграл за период ШИМа это есть мгновенное значение синтезируемого сигнала. Т.е. сигналом является СКВАЖНОСТЬ, а не частота. А частота должна быть выше сигнала на столько, что бы не лезть через ФНЧ на выходе.

Смысл алгоритма прост. Меняешь дьюти_цикл по синусоиде и получаешь ее после ФНЧ.

Изменено пользователем my504

戦う前に相手のベルトの色に注目

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

Я хочу сделать сирену на Шим сигнале. Чтоб вначале была низкой, а потом увеличивалась до невыносимого писка. Вот и незнаю, как програмно менять частоту. Как програмно менять скважность, я знаю.

Если я правильно понял задачу, то тебе не нужен ШИМ, а вполне сойдет меандр с изменяемой частотой. Для этого можно использовать таймер в режиме CTC (сброс при совпадении), т.е. WGM02:WGM01:WGM00=101.

Режим выхода надо выставить в "переключение", т.е. COM0A1:COM0A0=01 (это в регистре TCCR0A)

Частоту будешь менять записывая рарзные значения в OCR0A. Регистры указаны для Т0. Можно то-же делать и на старшем таймере.

Частота считается по формуле

post-31916-1192258461_thumb.jpg

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

меандр с изменяемой частотой. Для этого можно использовать таймер в режиме CTC (сброс при совпадении), т.е. WGM02:WGM01:WGM00=101.

Режим выхода надо выставить в "переключение", т.е. COM0A1:COM0A0=01 (это в регистре TCCR0A)

Частоту будешь менять записывая рарзные значения в OCR0A

Делаю:

#include <delay.h>

PORTB=0x00;

DDRB=0x02;//Pinb.1 out

TCCR0A=0x41;//COM0A0:WGM00 = 11

TCCR0B=0x08;//WGM02 = 1

while (1)

{

// Place your code here

OCR0A++;//новое значение частоты

if(OCR0A == 255)

OCR0A = 0;

delay_ms(100);

};

В динамике вообще даже стука нет :(

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

меандр с изменяемой частотой. Для этого можно использовать таймер в режиме CTC (сброс при совпадении), т.е. WGM02:WGM01:WGM00=101.

Режим выхода надо выставить в "переключение", т.е. COM0A1:COM0A0=01 (это в регистре TCCR0A)

Частоту будешь менять записывая рарзные значения в OCR0A

Делаю:

#include <delay.h>

PORTB=0x00;

DDRB=0x02;//Pinb.1 out

TCCR0A=0x41;//COM0A0:WGM00 = 11

TCCR0B=0x08;//WGM02 = 1

while (1)

{

// Place your code here

OCR0A++;//новое значение частоты

if(OCR0A == 255)

OCR0A = 0;

delay_ms(100);

};

В динамике вообще даже стука нет :(

Это наверно общая проблема всех новичков в том числе и меня)Кажется что пишем правильно,а на самом то деле(Нет

Мне кажется что тут OCR0A++;Значение меняется на столько быстро что ты этого не успеваеш даже заметить.

Тут скорей всего ещё переменную юзать нужно

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

Ок! Ответьте пожалуйста на один вопрос: Я МОГУ ПРОГРАМНО ИЗМЕНЯТЬ ЧАСТОТУ ПРОЦА, В УЖЕ РАБОТАЮЩЕЙ ПРОШИВКЕ? ДА ИЛИ НЕТ?

P.S. Как шимом вывести аналоговый сигнал? Например массив a[10] = 1, 2, 3, 4, 5, 6, 7, 8, 9, 10?

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

Ок! Ответьте пожалуйста на один вопрос: Я МОГУ ПРОГРАМНО ИЗМЕНЯТЬ ЧАСТОТУ ПРОЦА, В УЖЕ РАБОТАЮЩЕЙ ПРОШИВКЕ? ДА ИЛИ НЕТ?

P.S. Как шимом вывести аналоговый сигнал? Например массив a[10] = 1, 2, 3, 4, 5, 6, 7, 8, 9, 10?

В ПИКах - можно, изменяя регистр калибровки... В АВРах - не в теме...

По второму вопросу уточнение. Я так понял нужно получить пилу? ШИМ используют для получения НЕПРЕРЫВНЫХ сигналов. А что делать с обозначенным вектором - зациклить или чего еще?

戦う前に相手のベルトの色に注目

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

В ПИКах - можно, изменяя регистр калибровки... В АВРах - не в теме...

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

ПОЖАЛУЙСТА, пусть для PICов, оттобразите это (ПРОГРАМНО ИЗМЕНЯТЬ ЧАСТОТУ ПРОЦА, В УЖЕ РАБОТАЮЩЕЙ ПРОШИВКЕ) в коде, там буквально 2-3 строчки... :huh:

По второму вопросу уточнение. Я так понял нужно получить пилу? ШИМ используют для получения НЕПРЕРЫВНЫХ сигналов. А что делать с обозначенным вектором - зациклить или чего еще?

Сделай хоть как-нибудь, чтоб я оперся на что-нибудь вообще, а то плаваю как ... в проруби.

Если мне нужно вывести сигнал с пина, например, длительностью 10ms, а потом изменять длительность, как это сделать? Хотя бы в псевдокоде, с упоминанием необходимых регистров... :huh:

(Это наверно нужно делать, записывая значения в регистр сравнения? А как ко времени привязать?) :huh:

И еще, я напишу кое-что, вы прочитайте, и скажите, правильно или нет:

МК имеет генератор тактовой часоты.

Для выполнения нужного цикла действия, мы можем тактовую частоту сделать меньше.

Но только для этого действия; и она будет реально меньше.

Сама же тактовая частота (кварц проца) как работал по максимуму, так и будет работать, крутится, не имея сцепы с работой выполняемой МК.

МК имееет несколько таймеров (со всеми дополнительными приблудам: управления, совпадения, захват, сам таймер).

Таймеры могут быть 8 и 16 разрядными.

Можно заставить МК работать параллельно, то есть осуществлять параллельную деятельность, в зависимости от того, сколько таймеров задействовано. Каждое действие будет привязано к конкретному таймеру и к конкретному порту-пину. И все это описано в одной программе. Каждое параллельное действие не будет "ждать", пока исполнится пред ним идущее действие. Действие привязанное к конкретному таймеру, - самостоятельное.

Каждое действие может работать на своей частоте, раз уж оно привязано к отдельному таймеру.

Для получения конкретной частоты, нужно воспользоваться делителем и счетным регистром. В результате мы можем вывести на конкретный порт-пин импульсы с заданой частотой (число импульсов в секунду)

Делитель делит тактовую частоту на 8-, 16, 32-, 64-, 128-, 256-, 512-, 1024-.

Счетный регистр инициализируется значением, с которого нужно начинать счет.

Расчет частоты исходящего импульса производится по формуле:

нужная частота = начльная частотаМК/делитель/(счетный регистр - число начала счета)

Программно изменяя число начала счета, мы можем программно изменять частоту исходящго импульса

(число импульсов в секунду). Это изменение частоты ограничено счетным регистром 8 - 16 разрядным. Для программного изменения частоты, не вписывающегося в конкетный-задействованный счетный регистр, можно задействовать счетный регистр другого таймера, с другим делителем тактовой частоты. Как с самим таймером этого счетного регистра, так и без него.

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

А частоту подачи импульсов, как менять...? :huh:

ПОЖАЛУЙСТА, прочтите кто-нибудь знающий, и скажите, правильно или нет... :huh::huh::huh:

С позиции AVR и других МК

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

А зачем тебе все-таки частоту менять? (нарисуй лучше, что ты хочешь получить в конце, так всем понятней станет)

ЗЫ: при изменении скважности у тя будет что-то похожее на это, в случае 2 скважность меньше... разве ты не этого добиваешься?? (см. рис)

post-20910-1193136518_thumb.jpg

> Правила форума <

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

...это не дым от канифоли, нет... это души умерших транзисторов....

Первый закон Ома: никому не рассказывать про Ома!

Ну вот, а ты говорил ноль...

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

Ребят, я не создаю оружие массового поражения, не бойтесь. Я не работаю с СВЧ, так что не сварю себе мозгъ, не волнуйтесь. Я хочу освоить управление моторчиком. Так чтоб понять. Что там в нем происходит, ё моё.

Моторы делятся на две большие группы: работающие на постоянке и переменке.

Сейчас я тужусь над переменкой. Хочу видеть воочию, что будет при подаче разных частот, с разным шимом, колличеством шимов, разным напряжением.

Хочу написать прогу, которая все это сделает, в зависимости от сигналов управления. Для любого двигателя на переменке.

Ответьте Пожалуйста на вопросы :huh::huh::huh:

Я их специально так задал чтоб Вы могли кратенько ответить.

Пробегитесь по тексту, и где не так, скажите - нет. Иначе, - да. Где неточности, дополните парой предложений. Вопросы все общие! конкретики нет вобще! :huh::huh::huh:

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

Дааа!!! Много каши в голове... Попробуем разобраться. Но переделывать сказанное бессмысленно, поэтому изложу заново.

Итак. Менять тактовую частоту процессора можно только при использовании ВНУТРЕННЕГО генератора. С кварцевым это НЕВОЗМОЖНО.

Второе. Так никто не делает. Возможность изменения этой частоты сделана ИСКЛЮЧИТЕЛЬНО ДЛЯ КАЛИБРОВКИ относительно неточного внутреннего генератора.

Третье. Для формирования временных диаграмм в реальном масштабе времени служат следующие инструменты:

1. Таймеры с цифровыми компараторами.

2. Прерывания.

3. Опорные внутренние генераторы(в том числе системный).

4. Опорные внешние генераторы.

Четвертое. Формировать временную диаграмму на пустых командах программным способом - дурной тон.

Теперь с ШИМом. Я уже рассказывал, что для вывода переменных напряжений необходимо менять скважность ШИМа, а его частоту выбрать максимально выше верхней частоты ФОРМИРУЕМОГО сигнала и не менять в процессе работы, т.к. это всего лишь частота несущей и после ФНЧ она исчезнет(почти).

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

Прерывания позволяют произвести синхронизацию (временную привязку) формируемой диаграммы к внешним событиям (пуск, стоп, синхронное вращение, шаговый режим и т.п.)

Наконец о примере кода. Сегодня и сейчас не готов. Под руками нет готового. Постараюсь завтра.

戦う前に相手のベルトの色に注目

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

  • 2 недели спустя...

Ребят, еще такой вопрос, ATmega48 позволяет вывести 6 ШИМ сигналов, подтолкните, пожалуйста, хоть примерно, как это сделать, я чо-то не разберусь в даташите.

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

Ну всё как обычно... Есть три таймера 0, 1 и 2. У каждого по 2 регистра сравнения (у 1 двухбайтный) и по два выхода ШИМ: A и B у каждого. Итого 6 штук.

Настраиваешь режим в регистрах

TCCR0A и TCCR0B для Т0,

TCCR1A и TCCR1B для Т1,

TCCR2A и TCCR2B для Т2.

Собственно значение ШИМ пишешь в регистры

OCR0A и OCR0B

OCR1AH : OCR1AL (станший и младший байт) и OCR1BH : OCR1BL (старший и младший байт)

OCR2A и OCR2B

Сигнал снимаешь с выводов

OC0A (PD6) и OC0B (PD5)

OC1A (PB1) и OC1B (PB2)

OC2A (PB3) и OC2B (PD3)

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

Спасибо. Хоть прояснилось немного.

И еще хочу спросить, малость, извините, если надоел.

Вот мк работает на одном из таймеров, с определенной частотой.

Срабатывает прерывание.

Действия в прерывании на какой частоте работают?

Если мы не задействуем таймеры, на какой частоте работает мк?

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

На какой установлен на той и работает.От встроенного или от внешнего - не важно.Важно то что частота тактирования таймера получается из тактовой частоты МК(ядра), а не наоборот! Т.е. работает таймер(ы) или нет - ядру все равно.Прерывания, точнее программные обработчики оных, выполняются на частоте ядра!

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

частота тактирования таймера получается из тактовой частоты МК

Так если мы не запустили таймеры, мк на какой частоте работает то?

В СodeVisionAvr, в мастере, стоит 1000000 на все модели. С этой частотой и работает?

Если поставим максимальную, например 16 000 000, то будет работать на максимальной?

А если поставим 8 897 501, то будет строго на ней работать7

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

Какой кварц припаяешь к контроллеру, на той и будет работать (естественно в диапазоне допустимых). Ещё при программировании можно делитель на 8 включить (не у всех).

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

Какой кварц припаяешь к контроллеру, на той и будет работать

А что-то дополнительно нужно устанавливать в регистрах? При подключении внешнего кварца?

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

Надо. Только не в регистрах, а в битах конфигурации (Fuse Bits). Это делается программатором. Смотри Даташит на твой МК, раздел "System Clock and Clock Options" и раздел "Memory Programming / Fuse Bits".

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

Значит, если я подключаю кварц, то автоматически внутренний генератор перестает функционировать и все работает на частоте кварца (таймеры, ШИМ и тд.). Так?

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

Значит, если я подключаю кварц, то автоматически внутренний генератор перестает функционировать и все работает на частоте кварца (таймеры, ШИМ и тд.). Так?

Конечно нет!!! Внутренняя коммутация генераторов производится с битов конфигурации (фьюзов). Как запрограммируешь - так и будет (и только так).

戦う前に相手のベルトの色に注目

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

Присоединяйтесь к обсуждению

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

Гость
Unfortunately, your content contains terms that we do not allow. Please edit your content to remove the highlighted words below.
Ответить в этой теме...

×   Вставлено с форматированием.   Восстановить форматирование

  Разрешено использовать не более 75 эмодзи.

×   Ваша ссылка была автоматически встроена.   Отображать как обычную ссылку

×   Ваш предыдущий контент был восстановлен.   Очистить редактор

×   Вы не можете вставлять изображения напрямую. Загружайте или вставляйте изображения по ссылке.

Загрузка...
  • Последние посетители   0 пользователей онлайн

    • Ни одного зарегистрированного пользователя не просматривает данную страницу

  • Сообщения

    • Так, тогда и Си не нужен . Макросов настрогайте на асме и не надо учиться  вставки делать . В avr-gcc вставки - это жуть ... Но если честно , кмк,  вы тоже шутите )))
    • Попробуйте пропаять все контакты на плате, если не поможет то забить и забыть.
    • Тоже вот поглядываю иногда сюда, и не пойму - чего это сюда лучшие умы форума как мухи на гавно слетелись? Ну явно же - бред.
    • Соберите на микросхеме. Какая разница, что внутри этого кусочка пластика и сколько у него выводов? Считайте, что это один транзистор, только ножек у него чуть побольше.
    • Действительно, как-то пропустил этот пост. Значит, основной функционал фонарей сохранился. Предлагаю просто "забить" и пользоваться дальше, починить их вы явно не сможете. Индикаторы заряда - вещь, конечно,  прикольная и  , ну а дальше то что? Что вы будете делать с этими цифрами? Повлиять на процес заряда вы всё равно никак не можете, т.е., информация, по большому счёту, бесполезная. А выбрать оптимальное положение СП проще и быстрей визуально, сориентировав их в полдень перпендикулярно направлению на Солнце. 
    • @Егор Булкин Надо начинать с фото крупным плано , сдесь нет экстрасенсов.  Может драйвер двигателя ..........
    • Перечитал ещё раз солидные печатные работы этих специалистов. Понял, что не могу понять ход их мыслей. Включил свой мозг, немножко им пошевелил... Он мне выдал простое логическое построение: Многообмоточный трансформатор с выпрямителями можно заменить на синхронно работающие генераторы, выдающие одинаковые по форме импульсы, имеющие разную (хоть произвольно плавно устанавливаемую) амплитуду, в которой учтено падение напряжения на диодах, и идеальные диоды на выходе, с прямым напряжением ноль. Это будет абсолютно точная по всем параметрам эквивалентная схема, к которой можно подключать нагрузку через связанные дроссели. Работа дросселей от этого не изменится никак, от слова "совсем". Кроме амплитуды (и формы конечно) импульсов на входе, для расчёта дросселей других параметров со стороны входа не существует. При чём тут количество витков обмоток трансформатора?? Интересно, откуда у всего этого ноги растут?
×
×
  • Создать...