0 / 0 / 0
Регистрация: 03.10.2015
Сообщений: 25
|
||||||
1 | ||||||
СкачкИ показаний на дисплее16.09.2019, 19:14. Показов 8245. Ответов 31
Доброго времени суток!
Подходящей темы в разделе не нашел, поэтому создал новую. Если модераторы знают о существовании подходящей темы, то переместите пожалуйста мой вопрос туда. Только начал изучать Arduino, создаю скетч за скетчем, прогоняю в Uno и т.д.. В одном из скетчей по работе с дисплеем Nokia5110, измеряющего температуру, решил добавить потенциометр и поиграться... и столкнулся с интересной проблемкой.
В скетче "ТОЛЬКО для потенциомера" показания идут плавно и линейно, в оба направления: 0%...88% (если "+" снимать с пина Vin [4.4V]). И совершенно не зависит от скорости вращения ручки. Потенциометр линейный. В вышеуказанном скетче уже на 30 градусах поворота показывает 100%. Дальнейший поворот ничего для показаний потенциометра не меняет - все те же 100%. Это раз! Второе... Когда показания (по дисплею) доходят где-то до 60...80%, появляются отклонения в десятых долях температуры (+-0.3). Не просто отклонения в какую-то одну сторону, а именно скачкИ вверх-вниз. К 100% отклонения увеличиваются. После 100%, если продолжаю вращать ручку переменника, отклонения появляются сначала на единицах, а потом и на десятках градусов. И эти скачкИ продолжаются, пока не выведу потенциометр в ноль, или не спущу ниже 60%. Сначала грешил на близость аналоговых входов и какие-то фантомные помехи :-). Смена аналогового пина ситуацию не меняет. Запитка потенциометра от внешних 5V тоже ничего не меняет (ну, кроме процентов; это логично). Изменение времени задержки цикла loop() тоже не помогает. Чего в скетче не хватает? Где конфликт?
0
|
16.09.2019, 19:14 | |
Ответы с готовыми решениями:
31
Дистанционное снятие показаний с электросчетчика КАСКАД-1-МТ с дальнейшей передачей показаний в Home Assistant по BLE Разность показаний на дисплее Найти в заданной серии показаний прибора минимальное произведение двух показаний Найти минимальное произведение двух показаний из множества показаний прибора Найти в заданной серии показаний датчика минимальное чётное произведение двух показаний (из егэ) |
16.09.2019, 19:51 | 2 | ||||||||||
Что за потенциометр и как его подключали?
0
|
0 / 0 / 0
Регистрация: 03.10.2015
Сообщений: 25
|
|
16.09.2019, 19:58 [ТС] | 3 |
Как код ни обзывай - он работает! Это все, что тут заметили?
И какой смысл тут Вы ищете?
0
|
0 / 0 / 0
Регистрация: 03.10.2015
Сообщений: 25
|
|
16.09.2019, 20:43 [ТС] | 6 |
Стандартно! Крайние выводы на питание, средний - на аналоговый пин.
20к. Какое отношение вдруг номинал имеет к моей проблеме, если скетч "только потенциометр" прекрасно работает?
0
|
Модератор
8908 / 6677 / 918
Регистрация: 14.02.2011
Сообщений: 23,521
|
||||||
16.09.2019, 22:06 | 8 | |||||
Lavad, утверждать не берусь, но по моему, в AVRке которая и стоит на ардуинке всего один АЦП
на входе стоит мультиплексор который и подключает разные выводы при малом времени мультиплексирования напряжение на одном выводе влияют на другой, конденсатор внутри стоит как там написана библиотека я не знаю, может там косяки попробуй считывать не один раз а несколько например
0
|
0 / 0 / 0
Регистрация: 03.10.2015
Сообщений: 25
|
||||||
17.09.2019, 00:30 [ТС] | 9 | |||||
Уже проходил:
К сожалению, ситуацию не меняет :-( Добавлено через 21 минуту Я бы согласился с Вами по поводу емкостей (включая емкости поверхностного монтажа), которые суживают работу контроллера... Но Mega328P спроектирована для работы на частотах до 20 МГц! А тут (на китайской Arduino Uuno r3) всего 16 МГц (если не меньше). Тем более, проверял с разными аналоговыми входами, которые (на уровне кристалла чипа) отстоят друг от друга на каком-то расстоянии. Значит, и емкости меняются (и не в меньшую сторону). А библиотека... Тут я пас. Библиотека, уже встроенная в дистрибутив Arduino Uno 1.8.9, скачаный с офиц-сайта arduino.cc... Это уже выше моих пониманий.
0
|
Модератор
8908 / 6677 / 918
Регистрация: 14.02.2011
Сообщений: 23,521
|
|
17.09.2019, 06:57 | 10 |
Lavad, тут вот еще что есть
temp то float то int на проблему озвученную в теме это вряд ли влияет, но вот потеря точности и производительности есть
1
|
0 / 0 / 0
Регистрация: 03.10.2015
Сообщений: 25
|
|||||||||||
17.09.2019, 15:37 [ТС] | 11 | ||||||||||
Смешалось все - кони, люди...
Да, нестыковочка типов... Функция на целое число , а возвращает дробное .С другой стороны она все таки выдает float (не пойму, правда, почему с двумя нулями после запятой, вместо одного)Да, проблему не решило, а по поводу точности и производительности... Продублировал скетч, добавил int -переменную, которую прописал в самой функции измерения и вызове функции. Float осталась только в 2-ух строках:
Имеются какие-то другие критерии и способы измерения производительности? Добавлено через 58 минут Добавил еще задержки в 0.5сек, перед вызовом следующего измерения (19 строка). Без изменений (ну, кроме тормозов в работе ). Секунда цикла loop()... при тактах контроллера в микросекунды... это гигантское время. Думаю, время мультиплексирования контроллера тут "не виноватая я!" Добавлено через 1 час 46 минут Увы, причина прячется в выборе ИОН Теперь буду копаться в нем - как убить двух зайцев одним тапком - и пониженное напряжение для точности LM35, и повышенное для, например, потенциометра. Или как-то совместить пониженное 1.1V с потенциометром. Добавлено через 16 минут Проблема осталась! Подтянуть показания термометра не проблема - подкорректировать множитель в строке.
Совместить пониженное 1.1V с потенциометром (или любым другим схожим источником напряжения до 5V) тоже не проблема - делитель напряжения. Скачки показаний при повороте переменника такие же, как и в вопросе данной темы.
0
|
0 / 0 / 0
Регистрация: 03.10.2015
Сообщений: 25
|
|
17.09.2019, 21:43 [ТС] | 13 |
Всего лишь для лицезрения на дисплее 0...100%
И потом... То, что величина ИОН повязана с точностью - только сейчас увидел. Добавлено через 5 часов 57 минут Что-то упускаю, но за хвост схватить не могу Для меня было бы объяснением, если бы дерганье показаний происходили при превышении уровня ИОН (на любом из аналоговых входов). Тогда да, можно свалить на перегруз схемы контроллера, отвечающей за обработку аналоговых сигналов. Но нет! Дерганье начинается уже при 350mV на входе. Вне зависимости от источника питания на потенциометре - линейный блок питания, импульсный или с платы Arduino! Вот этого не догоняю . А с учетом разнообразия ответов большого количества участвующих в теме... совсем запутался
0
|
Тутошний я
|
|
19.09.2019, 00:32 | 14 |
Сообщение было отмечено Lavad как решение
Решение
1,1 вольта от 4,4, наверно так и будет.
настроить ИОН на 1,1 вольта, считать температуру, настроить на 5 вольт, считать потенциометр. Добавлено через 1 минуту Провода у потенциометра длинные? Может всё же внешние наводки.
1
|
Тутошний я
|
|
19.09.2019, 10:32 | 15 |
Чем больше угол поворота потенциометра, тем больше сопротивление.
По закону Ома, допустим ток от наводок постоянной велечины, а чем больше сопротивлени, тем больше напряжение наводок будет. И соответственно больше скачков. Попробовать устройство в другой комнате, с более короткими проводами на потенциометр, скрученными в жгут, ...
0
|
0 / 0 / 0
Регистрация: 03.10.2015
Сообщений: 25
|
||||||
19.09.2019, 16:08 [ТС] | 16 | |||||
Да, пробовал...
Далее..., программа, почему-то, в упор не видит запуск внутреннего ИОН. Вся работа проходит с ИОН 5В. Неверно прописал в коде? P.S. Для потенциометра все отлично, а датчик температуры, разумеется, работает с дискретностью в 0.5мВ (+-0.5град), ну и показания уменьшены в 4.5 раза. Снова менять множитель? Это сейчас я пробую с долями градусов. В конечном итоге, в конструкции будут целые числа. Но при такой дискретности показания будут прыгать уже +-1град. На кой ляд мне такой термометр? Добавлено через 11 минут Все верно! Теоретически. А практически выиграл немного . Первоначально провода к потенциометру были 15 см, скрученные (!). Сейчас укоротил до 4см, средним выводом потенциометра непосредственно в пин на Arduino. Сменил и пин - теперь А5, самый дальний от А0. Показания термометра начинают дергаться при 30% (и больше) поворота потенциометра. 4см провода, плюс корпус потенциометра, плюс плата Arduino... - все, так или иначе, работают приемными антеннами! КАК же собирать конструкции, если они такие нежные и чувствительные? Что-то тут другое... P.S. Как будет время, проверю с экранированными проводами.
0
|
Модератор
8908 / 6677 / 918
Регистрация: 14.02.2011
Сообщений: 23,521
|
||||||
19.09.2019, 17:19 | 17 | |||||
Сообщение было отмечено Lavad как решение
Решение
Grey, проблема ТС в том, если я правильно понял,что по отдельности и потенциометр и термометр работают нормально
а как он их включает вместе начинаются чудеса Добавлено через 1 минуту осциллограф что показывает, или хотя бы тестер? пробовал зашунтировать всю эту байду конденсаторами Добавлено через 25 минут Lavad, мысли в слух, как я писал на входе АЦП стоит конденсатор, и вот когда ты меряешь значение на потенциометре, то конденсатор заряжается до напряжения на движке,потом мультиплексор переключается на вход термометра а конденсатор остается заряженный, ему бы разрядится но термометр довольно неважная цепь для разряда Предлагаю такой выход, еще один выход АЦП подцепить на землю, и замеры производить через него типа
1
|
0 / 0 / 0
Регистрация: 03.10.2015
Сообщений: 25
|
|
19.09.2019, 17:41 [ТС] | 18 |
Столько времени забрал своего и чужого!!!
Грязь в питании и эфире! Вот и вся причина (надеюсь, что только это!). Снова наступил на грабли Спускался в бронированную комнату - показания успокаивались. Зашунтировал входной пин конденсатором - осцилл показал резкое уменьшение грязи и, как следовательно, стабильность показаний термометра. И это на том самом рабочем столе, с которого все началось. Комп, блоки питания, проводка и еще черт знает, что у меня тут в 2 кв.метрах творится! Теперь перепланировкой заниматься и экранировать все сетевые провода? Все на заэкранируешь! Елки палки! За этим самим столом много работал с AVR-ками (под Bascom и USBASP), но ТАКОГО каприза и нежности не наблюдал!
0
|
19.09.2019, 17:50 | 19 |
Потенциометр работает как делитель напряжение так что все размышления "о сопротивлении" в топку.
Если переменный резистор старый или выгоревший то он и так может в некоторых положениях создавать "дребезг" это нормально именно по этой причине используют энкодеры а не резисторы.
0
|
Модератор
8908 / 6677 / 918
Регистрация: 14.02.2011
Сообщений: 23,521
|
|
19.09.2019, 17:52 | 20 |
0
|
19.09.2019, 17:52 | |
19.09.2019, 17:52 | |
Помогаю со студенческими работами здесь
20
Найти в серии показаний минимальное произведение двух показаний, между которыми прошло не менее 6 минут В компонент Label вывести надпись «произведение показаний» и добавить текущее значение произведения показаний счетчиков Скачки напряжения и скачки загрузки видеокарты СМА BOSCH WFR-2441 ОТСУТСТВУЕТ ИНДИКАЦИЯ НА ДИСПЛЕЕ, При полностью работающей машине отсутствует индикация на дисплее Разница показаний Достоверность показаний температуры Искать еще темы с ответами Или воспользуйтесь поиском по форуму: |