Аппаратная настройка частоты на ардуино Уно
- Войдите на сайт для отправки комментариев
Чт, 01/09/2022 - 11:55
Здравствуйте!
Хочу сделать апааратно на Ардуино Уно регулируемый по заполнению от аналогового входа А2 ШИМ на Timer0 с частотой 150Hz.Использую делитель 1024 и установил предел по регистру 0CRA=103;Использую вот такую программу:
https://arduino.ru/forum/obshchii/vstavka-programmnogo-koda-v-temukommentarii
А выход 0C0B встает в меандр и частота получается совсем не 150Гц а 490 Гц.Что не так подскажите что делать. Я уже все передумал.
для начала надо вставить код по правилам форума
Почему не 104 ?
При 103 частота 151,7Гц, а при 104 - 150,2Гц
В остальном же, кода не вижу, но, скорее всего, Вы не полностью инициализировали таймер. Не надо надеяться, что там что-то разумное "по умолчанию", это не так. Нужно инициализировать полностью.
Кстати, использование таймера 0 для своих нужд - не самая очевидная идея. Надеюсь, Вы знаете, что делаете.
И ещё, не совсем понятно, как именно при такой настройке Вы собираетесь скважностью управлять.
Почему не 104 ?
При 103 частота 151,7Гц, а при 104 - 150,2Гц
В остальном же, кода не вижу, но, скорее всего, Вы не полностью инициализировали таймер. Не надо надеяться, что там что-то разумное "по умолчанию", это не так. Нужно инициализировать полностью.
Кстати, использование таймера 0 для своих нужд - не самая очевидная идея. Надеюсь, Вы знаете, что делаете.
И ещё, не совсем понятно, как именно при такой настройке Вы собираетесь скважностью управлять.
Управлять очевидно через OC0B и OCR0B , а 103 потому, что в регистр вроде как нужно пихать на 1 период таймера меньше.
Во всяком случае у меня AVRкалькулятор считает, что 103 и частота на ослике при таком значении 150,6Гц
Для меня не очевидно. Подождём кода.
Вполне возможно, давненько я этим не занимался.
ТС, чудо ты в перьях, я тебе в ВК уже объяснил, что и где у тебя криво.
Убери оттуда нахрен analogWrite(), настрой нормально COM0B0/COM0B1
Что неясно то. ?
да уж...
ТС, вы определитесь, вы хотите ШИМ регистрами настраивать или аналогВрайтом?
Вы понимаете, что ардуино-функции все ваши настройки сносят и настраивают ШИМ по умолчанию?
Спасибо тебе большое !Большое спасибо еще раз благодарю! С твоей помощью я разобрался. Это сообщение было отправлено до твоих коментариев в ВК. Чуть позже скину видео результата.
Да уже понял.
Вот код который я загрузил для Таймер1,получил 150 Гц.
Но по непонятной причине Аналоговый вход А0 влияет на скважность обоих выходов ОС1А и ОС1В и наоборот А1 влияет на те же выходы.В чем причина? Подскажите пожалуйста!
После смены канала АЦП, результат первого чтения должен быть отброшен.
Не совсем понял,это нормально когда от одного аналогового входа работают два какнала шима?Получается что сначала один канал управляет потом после смены вмешивается второй, и это нормально?
Связь между аналоговым входом и ШИМ осуществляет Ваша программа.
Так что именно Вам судить, нормально ли то, что Вы делаете.
Я и интересуюсь у знающих людей предоставив код своей программы ,в которой я может быть ошибочно полагаюсь что каждый аналоговый вход управляет соответствующим программой ШИМ выходом т.е А0 - Pin9,А1-Pin10.А не сразу обоими выходами как это получается в моем случае.
Читай внимательно то, о чем тебе пишут.
Вход АЦП имеет некоторую свою ёмкость и он инертен.
В чем смысл бесконечного опроса аналоговых входов в цикле ?
Опрашивай по очереди с интервалом и будет тебе счастье.
Код , практически весь, за тебя уже написали. Сделай хоть что нибудь сам
Добрый день! Ещё раз спасибо за то что помогаете!Задержку опроса через delay сделать ?
Ну разделил опрос я через delay результат тот же.
Представьте что при помощи джойстика идет управление подъемом и поворотом ковша экскаватор, а нужно одновременно поднимать ковш и поворачивать в право. Как можно сменить в это время канал АЦП? Это невозможно нужно чтобы два канала работали одновременно управляя каждый своим выходом ШИМ.(каждый управляет своим гидроцилиндром )
значит за 15 миллисекунд не разряжается
Это безнадёжный случай.
Человеку уже написали, что первый результат измерения нужно отбрасывать, до него не доходит.
Не думаю , что совет пропускать сигналы через фильтр или высчитывать среднее значение, поможет в данной ситуации.
Безнадежный случай это у Вас. Вы оскорбляете легко человека которого не знаете. Видно таким образом удовлетворяете нарцисстические потребности своего эго,за счет принижения обращающегося к Вам за помощью(я не кушал мамины пирожки обучаясь на факультетах програмирования). Если это не так, то поймите я не имею образования программиста-электронщика, поэтому некоторые ваши фразы- (инертность , измерения нужно отбрасывать )мне не понятны.- Но это недостаток ума это просто пробел в знаниях.Так что уймитесь нарциссы.
Безнадежный случай это у Вас. Вы оскорбляете легко человека которого не знаете. Видно таким образом удовлетворяете нарцисстические потребности своего эго,за счет принижения обращающегося к Вам за помощью(я не кушал мамины пирожки обучаясь на факультетах програмирования). Если это не так, то поймите я не имею образования программиста-электронщика, поэтому некоторые ваши фразы- (инертность , измерения нужно отбрасывать )мне не понятны.- Но это недостаток ума это просто пробел в знаниях.Так что уймитесь нарциссы.
Представляешь, у меня тоже нет образования программиста электронщика, и вообще кроме средней школы нет образования.
И вот конкретно в твоём случае, это не пробелы в знаниях , а недостаток ума и отсутствие логики.
Понятие "инертность" и "отбрасывать" к программированию никакого отношения не имеют .
Просто кто то тупой , ленивый и не умеет пользоваться поисковиками.
Ты тупо сидишь и ждёшь готового решения.
Лесом...
Да действительно ,форум же создан чтобы новичков называть тупыми. А не чтобы они могли научиться у опытных. Да и смысл учиться у этих опытных, если они учились через поисковик. Они ответы выдают такие же как поисковик не складные. Кто еще тупой надо посмотреть.
Тут не совсем форум, скорее "клуб по интересам" (вон даже самогонщики имеются). Так что рассчитывать на халяву можно, но...
И отношение к новичкам тут как в худшей военной части - сплошная дедовщина ))))
Про дедовщину заметил.)))Пойду поисковик читать.Я буду добрым дедом.Обычно, в Армии злые были ущербные))
Началось!
Пятница!
ТС попробую объяснить тебе на пальцах.
Откроем учебник по физике за 7ой класс:
Инерция (от лат. inertia — неподвижность, бездеятельность) — явление сохранения телом скорости равномерного движения или состояние покоя при отсутствии внешнего воздействия.
Таким образом, движение тела при отсутствии действия на него других тел называют движением по инерции.
Т.е. в твоём случае, при подключении к АЦП вывода, после измерения на нем остается какое то время остается напряжение, которое постепенно снижается (помним о паразитной ёмкости ), это остаточное напряжение будет влиять на следующее измерение.
Поэтому рекомендуется первое измеренное значение "отбрасывать"(
Открываем Викисловарь и смотрим значение слова==бросать в сторону, удалять броском.).
Объясни, в каком месте нужно быть программистом , что бы это понять ?
Достаточно знаний русского языка и физики за 7класс.
Ты не знаешь ни того ни этого, "потому что ты не программист-электронщик".
Вывод: ты дебил.
Объясняй проще: миску перед повторным использованием мыть нужно, но вода после полоскания - не суп, её выливают.
Например, на каждый из аналоговых входов Ардуино поставить по шунтирующему конденсатору емкости существенно большей, чем входная емкость входа Ардуино. Тогда при переключении АЦП между входами будут переключаться и заряженные каждый до своего уровня конденсатор, нивелируя влияние входной емкости.
Но в любом случае программирование подразумевает не беспорядочное применение операторов языка - вдруг прокатит, - а составление именно того алгоритма работы, который будет решать поставленную задачу с учетом известных ограничений.
Если ТС сам для себя сформулировал задачу, кроме того, получил на форуме информацию о существующих ограничениях, но при этом вместо того, чтобы осмыслить все это и воплотить в решение, стал огрызаться, ну что ж - сам себе злобный Буратино.
Это лечение ни сколько не раскрывает суть проблемы и наступить на грабли можно даже отбросив первое значение. Если правильно рассчитана схема ничего отбрасывать не придётся. Главное, что бы постоянная времени цепи- выходное сопротивление источника и входная емкость АЦП - была меньше времени переключения мультиплексора. Если это сделать невозможно, то нужно между командой переключения канала и стартом оцифровки вставить задержку. Отбрасывание первого считывания и есть такая задержка в несколько десятков микросекунд. Но и её может не хватить, если выходное сопротивление источника высокое. Можно порекомендовать поставить на входах АЦП емкости несколько сотен пикофарад. Тогда при переключении перезаряд входной емкости АЦП будет существенно быстрее.
Можно порекомендовать поставить на входах АЦП емкости несколько сотен пикофарад.
и потерять в быстродействии, оригинально, производитель бьётся над снижением этой ёмкости, а мы туда сотню пикушек засандалим...
и потерять в быстродействии, оригинально, производитель бьётся над снижением этой ёмкости, а мы туда сотню пикушек засандалим...
Что у тебя с утра...
пятница, святой день для этого сайта )))
Можно порекомендовать поставить на входах АЦП емкости несколько сотен пикофарад.
и потерять в быстродействии, оригинально, производитель бьётся над снижением этой ёмкости, а мы туда сотню пикушек засандалим...
Если продолжительность измерения, так она вообще с этим не связана.
А если интервал между измерениями, так его в данной задаче вообще вряд ли имеет смысл делать меньше десятков мс.
А так - естественно, величина емкости должна быть согласована с частотой опроса. Но по этому параметру как раз большой зазор.
Ни тот, ни другой довод не приводит к выводу что человек дебил. У Вас есть пробел в медицинских знаниях. Во вторых в своем посыле я не имел ввиду очевидный смысл слов отбрасывать и инертность. А все таки речь шла о том как отбросить это в программе или в схеме. Уважаемые форумчане это мне кажется или у Kakmyc любое объяснение сводится к тому чтобы оскорбить? Следующий вопрос будет адресован не к Вам, так что потрудитесь на него не отвечать. Как Вы говорили выше? Идите лесом!
А за сколько миллисекунд он может разрядиться?
Ни тот, ни другой довод не приводит к выводу что человек дебил. У Вас есть пробел в медицинских знаниях. Во вторых в своем посыле я не имел ввиду очевидный смысл слов отбрасывать и инертность. А все таки речь шла о том как отбросить это в программе или в схеме. Уважаемые форумчане это мне кажется или у Kakmyc любое объяснение сводится к тому чтобы оскорбить? Следующий вопрос будет адресован не к Вам, так что потрудитесь на него не отвечать. Как Вы говорили выше? Идите лесом!
Я же не просто так сделал вывод, что ты дебил.
"Отбросить" это именно отбросить в самом очевидном смысле, сделать замер, но не использовать полученное значение, а просто следом сделать ещё один замер.
Ты что в этом скетче сам написал то ?
95% выложенного кода , написано мной.
Ты свои 5% даже до ума довести не в состоянии.
Зато можешь орать, что тебя обидели и что код работает не на заявленной частоте, лишь бы привлечь внимание автора.
У меня пробелов много, но разница между тобой и мной в том, что я , раз уж речь зашла про медицину, самолечением не занимаюсь, а когда прихожу в больницу с врачами не спорю , прохожу курс лечения, а не бухаю и потом пизжу что лечился.
Это удел дебилов.
На тот момент как мы начали переписку в контакте я даже не знал как назначение контактов в Атмега .Дорогой друг, ты уже со второго комментария в контакте стал оскорблять. И то что ты выражаешь свои мысли так что тебя не понимают окружающие это твои проблемы. Между моим и твоим кодом есть различия, но ты этого и не видишь. Тебе точно противопоказанно пить, потому что ты и без алкоголя кидаешься на людей. Как раз агрессия которую ты проявляешь, это один из признаков дебилизма. Давай до свидания!
Между моим и твоим кодом есть различия, но ты этого и не видишь.
Вижу, в моем варианте не было вывода в монитор порта.
Но это никаким образом на работоспособность программы не влияет.
Ты же тварь тупая все доступные ресурсы заспамил своими тупыми вопросами, при этом даже не читаешь того, что тебе там пишут.
Говорит о многом.
ПНХ
Брат дай знать где ты?Ты только дай знать!!!
...я не имел ввиду очевидный смысл слов отбрасывать и инертность. А все таки речь шла о том как отбросить это в программе или в схеме.
Вообще, на Вашем месте, раз уж Вы задаете вопросы, следовало бы читать ответы и хотя бы пытаться их понять, а не огрызаться в ответ. INHO.
А за сколько миллисекунд он может разрядиться?
Если так, то вопрос не в том, за сколько он может разрядиться, а в том, за сколько он может зарядиться. Зарядиться до того напряжения, которое нужно измерить.
А ответ на этот вопрос существенно зависит от выходного сопротивления источника сигнала. Если выходное сопротивление близко к нулю (единицы Ом), то емкость успеет перезарядиться до начал измерения,а если больше - может не успеть. И тогда результат измерения будет неверным.
Два разных способа борьбы с этим недостатком (программный и аппаратный) Вам уже изложили выше.
Брат дай знать где ты?Ты только дай знать!!!
И чо? Зарэжэш? Вот и помогай после этого людям!(
Спасибо буду стараться понять. А нельзя вслух рассуждать?
Рассуждать вслух и писать на форум IMHO не одно и то же.
Я не сторонник Кактуса. И видно, что он не педагог. Но и не у всех хватает психики общаться с такими "клиентами/учениками". Я один из таких психованных.(
Понимаю что это тяжело, но ведь не заставляют ни кого из под палки общаться. Можно к ученикам не заходить. Ну в конце концов если ты не альтруист и не веришь, что тебе воздастся просто не читай.
Брат дай знать где ты?Ты только дай знать!!!
Заслужил чесна.
hristo3 Особенность этого форума, что на нем активность проявляют в основном троли, и этого не изменить.
По моему. Вам имеет смысл сменить форум.
Возможно моя программа скорее всего не правильная, потому что я хотел так: Чтобы А 0 изменял ШИМ который на 9 пине,а А1 на 10 пине и они друг другу не мешали. Из предыдущих коментариев об инертности я сделал вывод что отбросить часть входных можно при помощи функции delayЯ сделал задержку 15 мс потом сделал 25 мс.Это не привело к результату раздельного управления,хорошо еще осталось повесить емкость на входа.(увидел из сообщений пкф)Я не знаю где взять эту информацию.Администратор если несу спам удали пожалуйста все мои сообщения.Заканчимваю с Ардуино.!Всем спасибо за внимание!!!
Я не сторонник Кактуса. И видно, что он не педагог. Но и не у всех хватает психики общаться с такими "клиентами/учениками". Я один из таких психованных.(
Вы просто не знаете всей истории.
Их у меня есть ...
Итак:
Смеркалось...
Это офуевшее чудо в одной небезызвестной соцсети , озвучивать название не буду
начинается на "в" , кончается на "к",
задало вопрос :" как посчитать значение регистра ICR1 для настройки работы таймера на частоте 150Гц ?"
С этого момента начинается наш рассказ...
Продолжение следует ...