Обсуждаем контроллеры компании Atmel.
Ответить

Re: Atmega8 регулировка частоты и амплитуды

Ср апр 24, 2024 20:33:04

Starichok51, ступеньки похоже не причём, вернул без деления, остались "сдвоенные". Наверно это повлияло for (float i = 1 - k; i <= 1 + k; i += 1.0 / descr1) {
t = sin(1.5708 * i) * Amp;
PWM1(t);
}

Добавлено after 20 minutes 46 seconds:
Блин..., с устатку внимательность никакая. Я и в нарастание и в спад воткнул объединенную формулу

Re: Atmega8 регулировка частоты и амплитуды

Ср апр 24, 2024 20:50:10

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

Re: Atmega8 регулировка частоты и амплитуды

Ср апр 24, 2024 21:01:39

Пока оставил обе формулы. Проверил деление- классно. Провал исчез.

Re: Atmega8 регулировка частоты и амплитуды

Ср апр 24, 2024 21:25:08

не понял тебя.
деление - это сокращение числа ступенек?
а по синусу - теперь должна быть одна формула синуса для PWM1(t) и одна формула синуса для PWM2(t).
а поменять крайние выводы резистора еще не пробовал, чтобы при вращении по часовой стрелке было увеличение частоты?

Re: Atmega8 регулировка частоты и амплитуды

Ср апр 24, 2024 21:52:12

Да, деление - сокращение числа ступенек.
С синусом двоит. Может напутал чего, но ошибки не выдаёт. Глаза уже слипаются, завтра с свежей головой буду смотреть. В принципе уже то что и хотелось))). Ура))
Выводы резистора и так были запаяны на увеличение по часовой.

Re: Atmega8 регулировка частоты и амплитуды

Чт апр 25, 2024 11:18:32

опять я тебя не понял, всегда рассказывай подробно, что происходит, чтобы понимать тебя без дополнительных вопросов.
то "сдвоенные", то "двоит" - какой "ребус" будет следующим?
скопируй и вставь сюда функцию hand_work, чтобы мне видеть, а не догадываться, что ты там сделал.
в функции hand_avtomat следует повторить всё в точности, как это сделано в hand_work.
а с функцией automat я пока не разобрался, со всей той кучей переменных.
там половинки полуволны синуса считаются раздельно. но ничего не мешает считать полуволны по частям, а не всю полуволну сразу.

Re: Atmega8 регулировка частоты и амплитуды

Пт апр 26, 2024 11:02:23

Приветствую. В качестве пятничной развлекухи. Попробовал на tiny2313a вывести синус частотой 0,5...10Гц
-работа от таймера Т1 режим 14 с выводом парафазных импульсов
-таблица нормированного синуса 256 точек
Для каждого значения частоты определяется значение периода дискретизации ICP1. Текущее значение нормированного синуса преобразуется в значение OC1A и OC1B.
Вложения
UDOCHKA.zip
(4.28 KiB) Скачиваний: 28

Re: Atmega8 регулировка частоты и амплитуды

Пт апр 26, 2024 12:21:18

Starichok51, нарисовал как выглядит "сдвоенные"- "двоит".
"скопируй и вставь сюда функцию hand_work" это для меня заклинание на магическом языке. Нужна инструкция.
Изображение

Re: Atmega8 регулировка частоты и амплитуды

Пт апр 26, 2024 13:58:51

ты что, до сих пор не знаешь, как копировать и вставлять?
выделяешь нужный фрагмент текста, потом по правой кнопке мыши выбираешь "Копировать", а здесь в окне ответа выбираешь "Вставить".
очередной ребус. моя просьба о подробном рассказе тебе пофигу?
как понимать твои картинки? сверху - первый ШИМ, а снизу - второй ШИМ?
слева - правильно, как должно быть?
справа - один ШИМ двойной, а второй - правильный?
или тебе лень "клаву топтать", и я должен клещами из тебя вытягивать подробности?

Добавлено after 10 minutes 32 seconds:
а для выделения фрагмента текста в начале фрагмента нажимаешь левую кнопку мыши и ведешь мышь до конца фрагмента. фрагмент будет закрашенным.
потом внутри фрагмента нажимаешь правую кнопку.
есть еще "горячие" клавиши. Ctrl+C - копировать и Ctrl+V - вставить.

Re: Atmega8 регулировка частоты и амплитуды

Пт апр 26, 2024 14:52:22

Слева как должно быть, справа типа что получилось после объединенной формулы. ""Сдвоенное колебание". Возможно и вниз так-же, но я его визуально не вижу.
Как копировать и вставить знаю, а вот "скопируй и вставь сюда функцию hand_work" мне не понятно.

Добавлено after 4 minutes 47 seconds:
сейчас не дома, поэтому не могу ничего сделать

Re: Atmega8 регулировка частоты и амплитуды

Пт апр 26, 2024 15:58:43

я имел в виду скопировать весь текст функции hand_work.

не нужно было вставлять ссылку на картинку в теги [img][img]. я исправил твой пост.

если двоит с объединенной формулой, тогда сделай полуволны опять частями.
для нарастания будет
for (float i = 1 - k; i <= 1; i += 1.0 / descr1),
а для спада будет
for (float i = 1; i <= 1 + k; i += 1.0 / descr1)
хотя, когда я увижу текст, будет видно, правильно ли ты всё сделал.

Re: Atmega8 регулировка частоты и амплитуды

Сб апр 27, 2024 19:48:14

Starichok51, Поставил объединённую формулу, работает нормально. Видимо где-то невнимательно менял.
Подобрал коэффициенты descr1 = 230 * exp(freq / 16.0), вроде нигде не сбоит, регулировка ровная. Погоняю ещё, ну уже понятно что и в какую сторону можно подогнать. Спасибо!!!
Хотелок конечно вагон и маленькая тележка, но совесть не позволяет напрягать людей.)))

Re: Atmega8 регулировка частоты и амплитуды

Вс апр 28, 2024 07:53:28

опять в ход клещи нужно пускать.
а сколько ступеней частоты ты сделал при делении на 16?

Re: Atmega8 регулировка частоты и амплитуды

Вс апр 28, 2024 08:23:38

Starichok51, вот эта int freq = ADCread(7) / 64;

Добавлено after 8 minutes 35 seconds:
а можешь разъяснить для чего некоторые "буковки"))) ? Те что красным

// ожидание поклевки
_delay_ms(1000);// сначала пауза 1 сек
while((millis()-T)<(Time1+Time2+Pause+1000))
{
s++; //костыль
s1=ADCread(ADC_KLEV);// слушаем аналоговый вход А1 подключен через резистивный делитель к электромагниту согласно схемы
_delay_ms(8);
s2=ADCread(ADC_KLEV);
if (((s1-s2)>Sens || (s2-s1)>Sens)&& s>15)
{
buzzer_on(40, 57);
if (rezhim==1)
{

Re: Atmega8 регулировка частоты и амплитуды

Вс апр 28, 2024 08:50:03

s тут бесполезна. Благодаря ей делается 15 парных измерений, но используется в итоге последняя пара.
Сравнение с s1-s2 и s2-s1 делается для определения выхода за пределы некоторой заданной чувствительности, притом беззнакового
И всё это делается как-то глупо, по одной, простой причине: результатом ADC является целое число, а Sens взято как float, да ещё его значение 0.2
В итоге, ((s1-s2)>Sens || (s2-s1)>Sens) не выполнится только если s2 и s1 обе равны нулю.
Если, конечно, внутри ADCread не наворочено какой-то ещё бессмысленной фигни, которая ну прям никак без float обойтись не может...

Re: Atmega8 регулировка частоты и амплитуды

Вс апр 28, 2024 09:17:31

Martian, s это измерение? а два плюсика для чего? Извините за нелепые вопросы.

Re: Atmega8 регулировка частоты и амплитуды

Вс апр 28, 2024 09:29:16

++ это инкремент, s++ аналогично s += 1 аналогично s = s + 1
аналогия лишь смысловая (операции разные, с разным приоритетом)

Добавлено after 6 minutes 12 seconds:
s это измерение?
здесь это счётчик, притом с неизвестно где устанавливающимся начальным значением. И совершенно бесполезный.

Re: Atmega8 регулировка частоты и амплитуды

Вс апр 28, 2024 09:40:00

Martian, uint8_t s=0;// "КОСТЫЛЬ" для исключения наводки ЭДС в электромагните во время затуханий колебаний кивка

Re: Atmega8 регулировка частоты и амплитуды

Вс апр 28, 2024 09:45:46

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

Re: Atmega8 регулировка частоты и амплитуды

Вс апр 28, 2024 10:43:12

тут уже были всякие удочки, кстати. например viewtopic.php?f=3&t=43224&start=380

Добавлено after 3 minutes:
"КОСТЫЛЬ" для исключения наводки ЭДС в электромагните
это странный костыль. Чтобы просто паузу не увеличить?
Да и вообще, чтобы определить поклёвку, нужно анализировать в любой момент, а не когда затихли колебания.
Ответить