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

Генератор на ATMega328p c регулируемой частотой и скважностью


Hell

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

Доброго времени суток.

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

Диапазон 0,1 - 1000 Гц,  шаг регулировки 0,1 Гц. Длительность импульсов от 10 мкс, шаг регулировки
10 мкс. Частота и длительность выводятся на дисплей, в герцах и миллисекундах. Макс. скважность 50%.

Хотел все реализовать в Atmega328, поскольку она все равно есть в устройстве, хотя и до этого я никогда
не программировал вообще.

Все, что я смог придумать - это сделать предделитель таймера на 1, установить прерывание по
совпадению на 16 (отсчитали 1 микросекунду) и в прерывании изменять переменную х+1.
Соответственно сравнивая с двумя другими переменными - подавать 1 или 0 на ножку МК.

Вроде бы худо-бедно работает, но при этом дисплей жутко тупит - секунд по 5 выводятся данные.
Если вызывать прерывание по совпадению на 126 (160-34 цикла) - тогда все приемлемо, но
длительность импульса конечно будет меняться с шагом 100 мкс. а не 10. Режим СТС не подходит,
да и шаг изменения будет 16000000\256= 62500; 1\62500=0,000016 мкс., а хочется кратно10-ти.

Собственно, вопрос: как реализовать такой генератор на МК? Поможет ли ускорить работу МК  
такие ухищрения как собственный кварц для таймера, или подключение дисплея напрямую без
регистра сдвига?

 

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

Вот кусочек моего индусского кода:

void WorkOn() {
    OCR0A=126; // Количество импульсов соответствующих 10 микросекундам. 16 МГц /160 - 34
    TIMSK0=(1<<OCIE0A);
    TCCR0B=0x01; //Предделитель тактовой частоты  - 1.
    UpdateFrequency();

}

    ISR (TIMER0_COMPA_vect){ // Генератор импульсов.
        TCNT0=0;//обнуляем регистр TCNT1
        Timer0Count=Timer0Count+1; // Счетчик таймера, 1 ед. = 10 Микросекунд.
        if (Timer0Count == DelayTime){  // Если счетчик таймера соответствует паузе между импульсами.
        PORTB |= 1<<3; // Начало импульса.} 
        if (Timer0Count == PeriodTime){ // Если счетчик таймера соответствует периоду.
        PORTB &= ~(1<<3); }// Конец импульса.
        Timer0Count=0;} // Сброс счетчика.

}

    void UpdateFrequency() {
        PeriodTime = 1000000/Frequency; // Период = 1 сек./частота(Гц).
        PulseTimeMax = PeriodTime/2; // Максимальная скважность - 50%.
        if (PulseTime > PulseTimeMax)  //  Если была увеличена частота и скважность стала более 50%
        {PulseTime = PulseTimeMax;}
        DelayTime=PeriodTime-PulseTime;
    }
Ссылка на комментарий
Поделиться на другие сайты

Реклама: ООО ТД Промэлектроника, ИНН: 6659197470, Тел: 8 (800) 1000-321

Попробую на одном таймере с собственным каарцем генерить частоту, его выход пустить на вход другого и изменчть длительность, с выхода второго снимать профит.

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

20% скидка на весь каталог электронных компонентов в ТМ Электроникс!

Акция "Лето ближе - цены ниже", успей сделать выгодные покупки!

Плюс весь апрель действует скидка 10% по промокоду APREL24 + 15% кэшбэк и бесплатная доставка!

Перейти на страницу акции

Реклама: ООО ТМ ЭЛЕКТРОНИКС, ИНН: 7806548420, info@tmelectronics.ru, +7(812)4094849

Просят - не откажи. Не просят - не навязывайся!

Простота хуже воровства.

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

Организация питания на основе надежных литиевых аккумуляторов EVE и микросхем азиатского производства

Качественное и безопасное устройство, работающее от аккумулятора, должно учитывать его физические и химические свойства, профили заряда и разряда, их изменение во времени и под влиянием различных условий, таких как температура и ток нагрузки. Мы расскажем о литий-ионных аккумуляторных батареях EVE и нескольких решениях от различных китайских компаний, рекомендуемых для разработок приложений с использованием этих АКБ. Представленные в статье китайские аналоги помогут заменить продукцию западных брендов с оптимизацией цены без потери качества. Подробнее>>

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

В 07.09.2016 в 18:51, Hell сказал:

Собственно, вопрос: как реализовать такой генератор на МК?

ни как, прежде чем задавать идиотские вопросы возьмите в руки калькулятор и посчитайте дискретность для шага 0,1Гц и скважности 100ед (1мс/10мкс=100)

1/1000 = 0,001с

1/999,9 = 0,001000100010001с

0,001000100010001-0,001 = 1,00010001E-7с

1/1,00010001E-7 = 9,999МГц

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

9,999МГц*100=999,9МГц - частота маш.циклов

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

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

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

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

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

10 часов назад, Falconist сказал:

То, что нужно, с оу регулировка действительно должна стать независимой.

минусы - прощай дисплей, и придется ставить как минимум 4 крутилки, но зато надежно и дешево.  Лайк!

10 часов назад, IMXO сказал:

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

"Что-то вы, профессор, воля ваша нескладное придумали. Оно, конечно, может, и умно - да больно непонятно. Над вами потешаться будут" (с).

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

во-вторых, это получается, что чем ниже частота на выходе таймера, тем выше частота кварца должна быть?

Тут скорее всего не хватит разрядности таймера а не мегагерц.

Для 100 микросекунд и 0,1 герц это по профессорской формуле 99,9 мегагерц кварца? Если изволите, в среду добавлю скриншотов или видео, что и 16 мегагерц более чем достаточно.

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

Литиевые аккумуляторы EVE Energy и решения для управления перезаряжаемыми источниками тока (материалы вебинара)

Опубликованы материалы вебинара Компэл, посвященного литиевым аккумуляторам EVE Energy и решениям для управления перезаряжаемыми источниками тока.

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

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

 

во первых формула правильная, а вот в хотелке есть несоответствие

В 07.09.2016 в 18:51, Hell сказал:

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

Диапазон 0,1 - 1000 Гц,  шаг регулировки 0,1 Гц. Длительность импульсов от 10 мкс, шаг регулировки
10 мкс. Частота и длительность выводятся на дисплей, в герцах и миллисекундах. Макс. скважность 50%.

длительность импульсов при регулировке скважности измеряется в процентах от длительности периода, для частоты 1000Гц 1% скважности будет соответствовать 10мкс, но для  частоты 999.9Гц 1% будет соответствовать 10,0010001мкс , те при изменении частоты , должна меняться длительность импульса, иначе это уже зависимая регулировка скважности , я вам привел формулу расчета частоты маш.циклов которая соответствует вашей хотелке

во-вторых чем ниже максимальная частота сигнала , больше шаг перестройки частоты и больше шаг перестройки скважности (меньше дискретность ШИМа), тем меньше требуется частота маш.циклов.

в-третьих я абсолютно не сомневаюсь, что у вас работает на 16Мгц , вопрос только в том работает "как надо" или "и так сойдет" :)

 

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

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

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

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

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

В 11 сентября 2016 г. в 09:43, IMXO сказал:

вопрос только в том работает "как надо" или "и так сойдет" :)

 

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

реально используемый пока диапазон 0,5 гц - 10 гц примерно, остальное - задел на будущее. и если я правильно понимаю, то для 10 гц хватать должно 9,9 мгц.

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

Может не совсем в тему. Делал генератор для проверки тахометра обороты

1 об/мин - 6000 об/мин, частота 0,01 Гц - 100 Гц без изменения скважности.

Хотел на AVR, но после раздумий сделал на STM32F030
 получается значительно проще. Тактовая 48 МГц, предделитель
 любой от 1 до 65535 ( в отличии от AVR), и в прерывании по пере
полнению инвертировал выход.

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

Просят - не откажи. Не просят - не навязывайся!

Простота хуже воровства.

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

Если ещё актуально и на таймерах, то я делал вот по такой схеме:

5.jpg

 

6.jpg

 

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

С уважением, Александр.

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

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

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

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

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

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

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

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

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

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

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