Например TDA7294

Форум РадиоКот :: Просмотр темы - Странное поведение шим на atmel 32u4
Форум РадиоКот
https://radiokot.ru/forum/

Странное поведение шим на atmel 32u4
https://radiokot.ru/forum/viewtopic.php?f=57&t=141350
Страница 1 из 1

Автор:  Illay [ Пн янв 30, 2017 17:18:57 ]
Заголовок сообщения:  Странное поведение шим на atmel 32u4

Есть ардуина леонардо на 32u4 от китайского бренда.

На 3 (9, 10 всякие пробовал) пин вешаю проводок до другого прибора, у которого есть аналоговый вход (просто замеряет вольтаж)

Вешаю полуторовольтовую батарейку на прибор - он сообщает что намерил 50 попугаев (все отлично).

Делаю простой RC фильтр из конденсатора и резистора на питании.

Вешаю ардуину и пишу простейший код

Код:
void setup() {
}
void loop() {
   analogWrite(3,100);
}


Прибор насчитал 147 попугаев. Все отлично.

Проходит 15 минут попугаев 67.

Еще через 5 минут 102

Еще через 5 минут 87.

как не крутил как не вертел не могу понять причины такого поведения. Гугл тоже молчит.

При этом замеры тестером на шиме показывают что действительно на выходе скачки.

Прошу гуру помочь с разгадкой такого поведения )

Автор:  Enigm [ Пн янв 30, 2017 17:40:15 ]
Заголовок сообщения:  Re: Странное поведение шим на atmel 32u4

Что значит analogWrite(3,100); ?

Автор:  Illay [ Пн янв 30, 2017 17:46:43 ]
Заголовок сообщения:  Re: Странное поведение шим на atmel 32u4

Это отголоски буратины (ардуины), проще будет прямо скопипастить
Цитата:
Выдает аналоговую величину (ШИМ волну) на порт вход/выхода. Функция может быть полезна для управления яркостью подключенного светодиода или скоростью электродвигателя. После вызова analogWrite() на выходе будет генерироваться постоянная прямоугольная волна с заданной шириной импульса до следующего вызова analogWrite (или вызова digitalWrite или digitalRead на том же порту вход/выхода).

я пишу 100, т.е. скважность чуть меньше 50%. Напряжение около 2,3 вольта. И оно таким и является, пока вдруг не начинает гулять как кошка, само по себе

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

Автор:  sporeon [ Пн янв 30, 2017 17:55:38 ]
Заголовок сообщения:  Re: Странное поведение шим на atmel 32u4

А с каких пор ШИМ стал аналоговым сигналом?

Автор:  Illay [ Пн янв 30, 2017 18:01:32 ]
Заголовок сообщения:  Re: Странное поведение шим на atmel 32u4

sporeon писал(а):
А с каких пор ШИМ стал аналоговым сигналом?

Я же написал в теме, что с ардуины идет простейший RC фильтр который выпрямляет волну. Ну а постоянное напряжение, чем не аналоговый сигнал?
Проблема не в выпрямлении, а в том что меняется заполнение причем по случайно сгенерированному алгоритму по прошествии нескольких минут. и вот тут встает вопрос, а как такое возможно?

Автор:  sporeon [ Пн янв 30, 2017 20:04:25 ]
Заголовок сообщения:  Re: Странное поведение шим на atmel 32u4

Пардон, не увидел про фильтр. Осциллографом смотрели что на выходе?

Автор:  krash_artem [ Пн янв 30, 2017 20:25:57 ]
Заголовок сообщения:  Re: Странное поведение шим на atmel 32u4

это весь код или контроллер делает что-то ещё?

Автор:  Illay [ Вт янв 31, 2017 07:10:09 ]
Заголовок сообщения:  Re: Странное поведение шим на atmel 32u4

sporeon писал(а):
Пардон, не увидел про фильтр. Осциллографом смотрели что на выходе?

Я станцую у нашего руководства полгода выпрашивал, а такую вещь - так лет 10 ждать буду. Один вариант самому собрать, но пока не брался.
Цитата:
это весь код или контроллер делает что-то ещё?

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

Добавлено after 4 hours 49 minutes 44 seconds:
Проблема решена и скрывалась не в аппаратной части а в программной.
Стандартные библиотеки буратины используют для генерации шима нулевой таймер, скорее всего для совместимости, плюсом устанавливают низкую частоту, которая к тому же и не регулируется (для 32u4). Нулевой таймер так же используется и в других целях (delay, delayMicroseconds) и подключение любого заголовочного файла может привести к вызову этих функций из инклюдов. Вот и привет рандомным глюкам.
Если писать в регистры напрямик то можно задействовать все таймеры, мне потребовался 4 таймер (см даташит) и соответственно указать частоту (мне чем выше тем лучше)
Очень помогла вот эта статья
http://r6500.blogspot.nl/2014/12/fast-pwm-on-arduino-leonardo.html
Сверху еще дописав функцию самопроверки через чтение регистров удалось не только нейтрализовать скачки полностью, но и достигнуть погрешности в 5 тысячных попугая. Что просто идеальная точность при данной схеме и попдподает под допуски погрешности резистора и конденсатора :)) .
Всем ответившим Большое спасибо!

PS одно остается загадкой, почему глюки были и на 9 и 10 пине, когда за них отвечает первый таймер. Но есть подозрение в жутком хардкоре от ардуинщиков, которые могли сэмулировать шим с использованием первого таймера на всех пинах. Тогда все плохо с буратиной.
PPS лично я в следующем проекте буду использовать STM32 без всяких буратиноподобных лоадеров и прочего. Путь сложнее дольше, но предсказуемие ибо ну его такие шутки ))))

Автор:  Enigm [ Вт янв 31, 2017 09:59:46 ]
Заголовок сообщения:  Re: Странное поведение шим на atmel 32u4

Я ардуинки пользую как платы, а прошивку заливаю по ISP.
Средой ардуино не пользуюсь.

Автор:  Illay [ Вт янв 31, 2017 10:18:03 ]
Заголовок сообщения:  Re: Странное поведение шим на atmel 32u4

Enigm писал(а):
Я ардуинки пользую как платы, а прошивку заливаю по ISP.
Средой ардуино не пользуюсь.

И правильно делаешь, как показал опыт )

Страница 1 из 1 Часовой пояс: UTC + 3 часа
Powered by phpBB © 2000, 2002, 2005, 2007 phpBB Group
http://www.phpbb.com/