Страница 1 из 4

ШИМ-генератор ATMega8+LCD+кнопки

Добавлено: Пт авг 26, 2022 10:39:03
forregister84
ШИМ-генератор с LCD и управлением кнопками

Изображение

Возможно кому-нибудь пригодится

LCD 8х2 WH0802A или 16х2 WH1602A
Кнопка Mode - вкл/выкл выхода.
Кнопки Freq-, Freq+ изменение частоты. Шаг 1 Гц (10, 100 Гц).
Кнопки Duty-, Duty+ изменение коэффициента заполнения ШИМ. Шаг 1% (5%).
Если долго держать кнопку, шаг увеличивается.

Частота и ШИМ сохраняются в EEPROM через 2 сек после изменения частоты или ШИМ (чтобы не записывать слишком часто)
На низкой частоте используется делитель /8, /64, /256

Версия с одним каналом PB2:
Частота: 1 Гц...1.6 МГц ((F_CPU/10)). Можно поднять до Fmax= F_CPU/4 по datasheet
Fast PWM Mode
Длительность импульса минимум 1 такт. ШИМ 1...99%

Версия с двумя каналами PB1, PB2:
Частота: 1 Гц...800 кГц ((F_CPU/20)). Fmax= F_CPU/8
Phase and Frequency Correct PWM Mode
Длительность импульса минимум 2 такта. ШИМ 1...50%

Частоту можно поднять до F_CPU/4
2-х канальный ШИМ сыроват и возможны глюки на высоких частотах
из-за особенностей ICR1.
Наверное лучше 1 канал ШИМ + схема деления на канала: 74AC74 + 74AC08.

Проекты в Atmel_Studio7:

Re: ШИМ-генератор ATMega8+LCD+кнопки

Добавлено: Пт авг 26, 2022 11:13:00
MLX90640
Молодец. А что делают резисторы на 300 Ом - R3, R4, R6?

Re: ШИМ-генератор ATMega8+LCD+кнопки

Добавлено: Пт авг 26, 2022 11:16:25
forregister84
Это правило хорошего тона. Если по ошибке вход запрограммировать как выход и замкнуть кнопку...

Re: ШИМ-генератор ATMega8+LCD+кнопки

Добавлено: Пт авг 26, 2022 11:32:22
MLX90640
А вы не ошибайтесь, вы же программист, а остальные - просто пользователи.
Кстати, на практике редко когда моментально сгорает. Ток значительно ограничивается внутренней структурой выхода.

Re: ШИМ-генератор ATMega8+LCD+кнопки

Добавлено: Пт авг 26, 2022 13:21:36
roman.com
forregister84 писал(а):Если по ошибке вход запрограммировать как выход и замкнуть кнопку...
то ничего страшного не будет))

каждый день замыкаю выводы ATmega8... ни разу ничего не сгорело))
ATmega8_AES_256.jpg
(121.31 КБ) 182 скачивания
главное чтоб не замкнуть выводы ATmega8 на +12 вольт... тогда выводы ATmega8 сгорают сразу...

Re: ШИМ-генератор ATMega8+LCD+кнопки

Добавлено: Сб авг 27, 2022 00:48:16
ДядяВован
[uquote="forregister84",url="/forum/viewtopic.php?p=4278525#p4278525"]Это правило хорошего тона.[/uquote]
Либо Вы что-то путаете в тонах, либо дайте ссылку на источник, где этим "тонам" учат.

Re: ШИМ-генератор ATMega8+LCD+кнопки

Добавлено: Сб авг 27, 2022 09:16:13
OKF
Это просто перестраховщики. Типа, монашка и огурец.)
Ещё можно КС156 по питанию поставить.)

Re: ШИМ-генератор ATMega8+LCD+кнопки

Добавлено: Сб авг 27, 2022 15:07:08
codenamehawk
forregister84 писал(а):Это правило хорошего тона.
Это правильно, мало ли к чему могут дотронутся кнопки во время отладки.
Я бы понял, что не ставят резисторы в массовом производстве из за экономии, но для себя несколько центов погоды не сделают.
Да и если надо поменять местами выводы, дорожки не придется резать.

Re: ШИМ-генератор ATMega8+LCD+кнопки

Добавлено: Сб авг 27, 2022 18:20:44
Up2805
Да ну. Это ж насколько нужно быть невнимательным и бестолковым погромистом, чтобы "случайно" входы (inputs) настроить как выходы (outputs). И даже если программист совсем дундук тупоголовый и наляпал такой хрени и запрогал железный МК, то кратковременное нажатие посаженной на выход кнопки обычно к сгоранию не приводит. А если и сгорит - то это урок для погромиста - будь внимателен, смотри че творишь.
И тем более, отладка в Протеусе настолько безопасна, что даже в мониторе пиксели не сгорят от прямого кз в виртуальной схеме.

Re: ШИМ-генератор ATMega8+LCD+кнопки

Добавлено: Сб авг 27, 2022 19:47:42
Dimon456
Что вы пристали к человеку с какими-то резисторами, хотите ставьте, хотите нет, что это изменит?
Меня больше такой вопрос интересует: Шаг 1Гц в диапазоне 1Гц...1.6МГц ?

Re: ШИМ-генератор ATMega8+LCD+кнопки

Добавлено: Сб авг 27, 2022 20:31:54
forregister84
ДядяВован. Если делаешь на макетке для себя то можно лепить что угодно. С этим я не спорю. Если занимаешься чем то более серьёзным,
то вот почитать:
https://www.ivtechno.ru/articles-one?id=37
https://www.ivtechno.ru/articles-one?id=13
http://www.elart.narod.ru/articles/arti ... bility.pdf

P.S. В связи с наличием дешевых ШИМ модулей на Али полезность моего проекта не высока, но если кому-то надо, он начнет не с нуля.
Тот же DDS на ATMega16 тоже вещь так-себе.

Добавлено after 10 minutes 31 second:
Dimon456. Забыл отправить

Re: ШИМ-генератор ATMega8+LCD+кнопки

Добавлено: Сб авг 27, 2022 20:33:50
Up2805
Ну раз уж так обсыкаться от возможности невозможного, тогда расскажите, почему не поставили конденсаторы параллельно кнопкам? По всем правилам они должны присутствовать для подавления случайных наводимых импульсов и для минимизации эффекта дребезга контактов кнопок. Чо уж там, делать так делать! ШИМ-дегенератор - настолько ответственный узел, что надо приложить максимум серьезности и перестраховочности.

Еще бы и схему питания с кучей защит привели. Или хотябы указали, что питать от USB компа. А то поди догадайся, чем кормить сию приблуду.
Ну а надежность и сбоебезопасность кода проверяли на соответствие MISRA? Юнит-тесты проводили?

Re: ШИМ-генератор ATMega8+LCD+кнопки

Добавлено: Сб авг 27, 2022 20:39:52
forregister84
Первое сообщение (шапку) уже не дополнить ?

Добавлено after 5 minutes 42 seconds:
Up2805. Давайте закрывать уже тему с резисторами :) . Возможно не стоило их рисовать в протеусе. И ежу понятно, что это не полная схема.
Все дальнейшие апгрейды и полную схему не обещаю.

Re: ШИМ-генератор ATMega8+LCD+кнопки

Добавлено: Сб авг 27, 2022 20:44:27
Up2805
Да забыли уже про резисторы. Расскажите теперь про питание схемы. От "Кроны" можна? А от Li-Ion акума? А от батарейки пальчиковой? Три или четыре их ставить? Или только в USB компа? А напрямую можна или надо чето там мутить еще?

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

Re: ШИМ-генератор ATMega8+LCD+кнопки

Добавлено: Сб авг 27, 2022 22:28:43
Dimon456
При чем тут ШИМ модули на Али, при чем тут DDS на ATMega16, я было подумал что вам удалось, но ...

Re: ШИМ-генератор ATMega8+LCD+кнопки

Добавлено: Пн авг 29, 2022 17:04:56
forregister84
Исправления:
ATMega8_PWM_LCD
Версия 0.8 - исправлено в conv_period_freq(): не было перерасчета T1_OCR (OCR1B) при F>F_CPU/100
Из-за этого коэффициент заполнения ШИМ сильно изменялся при изменении частоты и можно было получить даже 100 %.
(а должен слабо менятся, с учетом ограничений дискретности)

ATMega8_PWM_2CH_LCD - аналогичные исправления

Re: ШИМ-генератор ATMega8+LCD+кнопки

Добавлено: Вт авг 30, 2022 04:20:05
АлександрЛ
Dimon456 писал(а):Меня больше такой вопрос интересует: Шаг 1Гц в диапазоне 1Гц...1.6МГц ?
На сколько я понял, - короткие нажатия на копку меняют "единицы", длительное удержание кнопки- сначала меняются единицы, (до десятков), потом десятки (до сотен) и потом сотни..
Up2805 писал(а):Блин, вот схему питания нужно указывать полюбасу, это куда важднее чем ваши эти резисторы для перепутывания входов/выходов. Без схемы питания перепутать питание гораздо более вероятно, чем если вдруг в готовом скомпилированном коде перепутаются байтики и перенастроится порт.
Питание каждый может сделать в силу своих знаний и возможности.
Поскольку выход в данной схеме- прямо из порта МК, то размах колебаний будет от "почти нуля" до "почти напряжения питания".

зы.. "просто рассуждения"-
Питание - 5 вольт, только учтите, что и индикатор должен быть на 5 вольт..
Простой вариант питания- трансформатор 2~4 ватта на 9 вольт, диодный мост, 7805, электролиты 1000 мкФ на входе и 470 мкф на выходе 7805, и пара керамики 0,1 мкФ параллельно электролитам.

Ещё более простой вариант: Купить на алишке маленький импульсный БП на 5 вольт, типа такого:
https://aliexpress.ru/item/4000922346849.html
https://aliexpress.ru/item/1005003399424110.html
https://aliexpress.ru/item/1005003536784001.html
https://aliexpress.ru/item/4000032354562.html

Re: ШИМ-генератор ATMega8+LCD+кнопки

Добавлено: Вт авг 30, 2022 08:42:50
forregister84
АлександрЛ. Все верно. Стоит обратить внимание на расчеты в Excel. Дискретность 1 Гц возможна на частоте F<=sqrt(F_CPU)
Т.е. С кварцем 16 МГц дискретность 1 Гц до частоты 4кГц.
С кварцем 1 МГц дискретность 1 Гц до частоты 1кГц.

Также обратите внимание на зависимость максимальной частоты от напряжения питания (datasheet ATmega8A)
Figure 26-1. Maximum Frequency vs. Vcc
11.2.3 Brown-out Detection (сброс при понижении питания)
26.5 System and Reset Characteristics

Т.е. С кварцем 16 МГц минимум 4,5 В и с кварцем 8 МГц минимум 2,7 В.
Поэтому фъюз BODEN=0, BODLEVEL=0

Re: ШИМ-генератор ATMega8+LCD+кнопки

Добавлено: Вт авг 30, 2022 13:10:47
АлександрЛ
Собрал схему в протеусе (ваша не подошла, у меня протеус старенький)
Потыкал кнопочки..

Кстати, у вас прошивки только под кварц 16 МГц, или я чего-то не нашел?

И, как предложение- а у вас не было желания, хотя бы перестройку частоты сделать энкодером?
Кнопочками, даже с учётом того, что, при длительном удержании увеличивается шаг перестройки- всё равно как-то долго, хотя, может это протеус так тормозит.. :dont_know:
В некоторых случаях- такой генератор- полезная штука, у меня "функционально-подобная" конструкция есть, только там сам генератор на 555 таймере и частотомер-
Изображение

Re: ШИМ-генератор ATMega8+LCD+кнопки

Добавлено: Вт авг 30, 2022 21:13:13
forregister84
Перекомпилировать под другую частоту не проблема.
Меняем #define F_CPU 16000000UL. Если частота <=8 МГц можно CKOPT=1 иначе CKOPT=0.
Протеус лучше работает, если частота F_CPU =1 Мгц. Частоту ШИМ лучше несколько кГц, при большей тоже тормозит:
#define F_CPU 1000000UL
#define FREQ_DEF 1000.
До энкодера руки не дошли.