Непонятки с analogRead и analogReference
- Войдите на сайт для отправки комментариев
Здравствуйте!
В моей системе на Arduino Nano подается напряжение 7-14В через простой резистивный делитель так, что на входе на аналоговый порт A0 приходит 2.35-4.75В. Все это читается через analogRead().
Заметил интересную особенность - при выставлении:
analogReference(DEFAULT);
На выходе analogRead() приходит значение 854. Что соответствует 12.3В. Что не так - это значение постоянно колеблется в районе 0.2В, т.е. при постоянном напряжении 12.3В (постоянное - это значит полностью стабилизированное, без пульсации и скачков) при нескольких запросах приходит значение 846-857.
Решил попробовать подключить внешние стабилизированные 5В к порту AREF, чтобы попробовать улучшить ситуацию.
analogReference(EXTERNAL);
И тут столкнулся с такой вещью - максимальное значение (т.е. при полном соответствии Varef=Va0) не 1024 как при стандартных атрибутах "аналогового чтения", а 256! Но, при этом, значение с порта постоянное, без скачков и прыжков - 214.
Это какая то специфика данного метода? Ни в одной из книг об этом не написано.
Заранее спасибо!
AntonM, никакой связи. У вас в чём-то другом ошибка. Стоит привести полный скетч.
Не знаю, а каких "стандартных атрибутах" Вы говорите, но число 1024 в десять бит просто не поместится.
А прыганья результатов первого варианта скорее всего связаны с фиговой землей и на-водками... пейте даташит, помогает. :)
AntonM, никакой связи. У вас в чём-то другом ошибка. Стоит привести полный скетч.
Код примитивный - при прерывании на 2 пине в COM отправляется значение АЦП.
А прыганья результатов первого варианта скорее всего связаны с фиговой землей и на-водками... пейте даташит, помогает. :)
Это исключено - устройство разведено на плате.
Не знаю, а каких "стандартных атрибутах" Вы говорите, но число 1024 в десять бит просто не поместится
Почему же? Во всех справочниках диапазон АЦП 1024 имеет место быть.
Цитата со справочника этого же сайта (http://arduino.ru/Reference/AnalogRead):
Большинство плат Arduino имеют 6 каналов (8 каналов у платы Mini и Nano, 16 у Mega) c 10-битным аналого-цифровым преобразователем (АЦП). Напряжение поданное на аналоговый вход, обычно от 0 до 5 вольт будет преобразовано в значение от 0 до 1023, это 1024 шага с разрешением 0.0049 Вольт.
при прерывании на 2 пине
В скетче указано прерывание на 3-ем пине, а не на втором. Если Вы подключились на самом деле ко второму, то Вы вместо сигнала ловите наводки и грязь.
Антон, Вы так больше никому не говорите :))))
Во всех справочниках диапазон АЦП 1024 имеет место быть.
Перечитайте Вашу цитату внимательно. Максимально возможное значение - 1023, а 1024 - это общее количество возможных различных значений 0 - 1023.
-----------
В строке №1 не хватает атрибута volatile. Строго формально он в данном случае не нужен, но ... неспокойно на душе и как-то тревожно. Я бы поставил просто "щоб було".
Вы в прерывании столько всего развели ... как часто приходят сигналы?
Тут Евгений придрался к тому, что максимальное значеие будет 1023.
Тут Евгений придрался к тому, что максимальное значеие будет 1023.
Ну, почему придрался? ТС явно ожидает увидеть 1024 в мониторе порта. Подсказал, что не увидит.
Ой, я вообще опоздал, вы уже всё пояснили)
Если на плате - киньте плату)
AntonM, посмотрел скетч -манипуляции со стрингом -ужас, вывод в сериал из под прерывания тоже не желательно делать, хотя иногда можно. Но в целом должно работать. Ошибка не в программе. Ну и про 3й пин уже сказали.
Ошибка не в программе.
Это при условии, что обработчик прерывания успевает между сигналами. Я не зря его про частоту сигналов спросил.
ЕвгенийП, ну давайте поразмыслим. Если обработчик не успевает -то по идее ничего страшного не произойдёт, как только прерывание отработает, выйдя из прерывания уже будет ждать флажок нового прерывания. Т.е. система просто начнёт создавать прерывания с той скоростью, с которой сможет, ущерб в таких случаях обычно тем командам, что крутятся в Loop, т.к. очередь до их выполнения никогда не дойдёт. А поскольку в данном случае Loop пустой, то стало быть никаких последствий не должно быть :)
Частота прерывания - 1-3 раза в минуту по импульсу. Насчёт пина да, ошибся - 3ий пин на прерывании, с андроидофона набирал сообщение на форуме.
то стало быть никаких последствий не должно быть :)
Ну, сериал (он же асинхронный) не будет успевать выедать буфер, он переполнится, а последствия переполнения непредсказуемы, опять же собъётся миллис, временные интервалы поползут, да ладно, мы поняли друг друга и в общем-то оба всё понимаем.
Никого не смутило, что ТС говорит о десятичных значениях (1023 и т.п.), а в строке 34 преобразует значение АЦП в 16-ричный вид?
Может там и нет никакой АшиПки, только невнимательность? ;)
Никого не смутило, что ТС говорит о десятичных значениях (1023 и т.п.), а в строке 34 преобразует значение АЦП в 16-ричный вид?
вряд ли это может обьяснить, почему десятибитное целое урезается до 8ми бит
Никого не смутило
Меня смутило всё вместе: "путаница с 1023 и 1024", "путаница с номерами пинов для прерывания", "заявление о том, что на разведённой плате наводок и соплей быть не может" ... всё это вместе создаёт какой-то нехороший фон. В общем, ТС, давайте сюда схему и фото сборки. Т.к. без этого говорить трудно, а доверия к тому что Вы сделали там всё правильно, простите, невелико.
Выкладывайте схему и фото.
Никого не смутило, что ТС говорит о десятичных значениях (1023 и т.п.), а в строке 34 преобразует значение АЦП в 16-ричный вид?
Может там и нет никакой АшиПки, только невнимательность? ;)
Вы не можете перевести hex в dec?)))
Сделано это для уменьшения количества символов, т.к. заложено ещё несколько информативных значений (те, что вместо нулей) в данной посылке.
Уважаемые, что может быть проще? На Vin и Varef подано питание с dc-dc 5В, который питается от аккумуляторов. Естественно, для подавления пульсации напряжения стоят кондеры. И от этих аккумуляторов идёт аналоговый сигнал через резистивный делитель напряжения 10 кОм и 5.1 кОм, после него подключено к входу А0.
Сигнал с внешнего устройства (сухой контакт) подключен к 3 контакту, и по замыканию которого и идёт посылка в Serial. Повторяю ещё раз - меняется лишь одна строка в скетче!
Фото выложить не могу (не имею возможности), схему предоставить могу. Но и там вообще нечего изображать - все уже рассказано.
Какое примерно значение ожидается с аналогового пина? примерно 800, я так понял?
Число цифр в числе 800 в десятичной и в шестанцатиричной записи одинаковое. А если учесть. что в HEX обычно принято записывать знаки парами - то HEX даже длиннее . И где экономия числа символов?
Уважаемый, ну какое это имеет значение в данной проблеме? Проблема то не решена.
вы на AREF напрямую напряжение со стабилизированного источника подаете или через шунтирующий резистор?
Вот это работает, только проверил. я взял код ТС и выкинул из него бессмысленную херню. Более ничего не правил.
Теперь внимание! Я при опыте сжег к херам одну нанку. С ТС пиво.... ;).
Вот что написано с ДШ:
If the user has a fixed voltage source connected to the AREF pin, the user may not use the other
reference voltage options in the application, as they will be shorted to the external voltage.
--------------
То есть если на AREF что-то подано, то его нужно обязательно использовать, иначе оно коротится. Я, к стыду своему, про это забыл и использовал Vcc ref, при подключенном на aref отдельном проводе с 7805. Из нанки вышел волшебный дым, причем не сразу....
Хрен с ней, Рип Ин Пис, короче. Дело в другом: ТС тоже мог подпалить свою в аналогичной ситуации, если я забыл про это, при моем скромном опыте, то что хотеть от ТС?
Приведенный код работает как надо, при любом выборе реф. Только нужно помнить, что aref подключать только после запуска, или через очень солидный резистор ;) ;) ;) - шучу, через любой токоограничивающий - 10 К сойдет, а я - сам виноват, был уверен, что вход высокоомный.
----------------
вот кусок вывода
Теперь внимание! Я при опыте сжег к херам одну нанку. С ТС пиво.... ;).
Вот что написано с ДШ:
Вообще, я почитал ДШ еще и выяснил следующее:
- при использовании стабилизированного источника 5в как для REF. так и для VCC - (как у ТС) - нет необходимсти использовать analogReference(EXTERNAL);. Можно использовать DEFAULT и результат будет тем же. (в этом случае AREF и VCC НЕ СОЕДИНЯТЬ!!)
- при использовании внешнего референса совпадающего с VCC. рекомендуют подавть его на AREF чрез резистор 1-5к. тогда "голубой дым" маловероятен. Надо только незабыть пересчитать получаемые значения на этот резистор.
Что касается проблем у ТС - думаю он накосячил в монтаже, который не хочет показывать. Ну или уже поджарил AREF способом выше и он у него теперь врет
wdrakula, да как пить дать Т.С. тоже спалил АЦП дуни, и теперь она ему всякую фигню и показывает. Он же пишет, что "значение с порта постоянное, без скачков и прыжков" а значение без скачков с АЦП меги очень непросто получить, а с референсом, снятым с dc-dc преобразователя так и вовсе невозможно.
я, по традиции видео с этой историей на ютуб залил. Как спалил - не снял ;) сожалею.
Смотрим.
Что касается проблем у ТС - думаю он накосячил в монтаже, который не хочет показывать. Ну или уже поджарил AREF способом выше и он у него теперь врет
Вам знакомо понятие режимное предприятие? Поэтому фото не будет.
5.1 кОм по-моему на aref висит. Но и без него работало, сколько я помню.
Вам знакомо понятие режимное предприятие?
На ардуино? Можно я "отолью это в граните", по меткому выражению одного нашего (не форумного, а ...немного выше) дурачка?
Тем более, что это, как я понимю не хобби, а работа за которую нам здесь никто не платит.
И, да, кстати, мне очень хорошо знакомо понятие "режимное предприятие" и я не знаю ни одного такого, где не было бы хоть одного кудесника, который умел бы не то что, ареф подключить, а из старой швейной машинки, утюга и какой-то матери сделать игровой компьютер и резаться на нём с утра до ночи. Вот найдите в округе такого, налейте ему пива - он Вам и поможет.
5.1 кОм по-моему на aref висит. Но и без него работало, сколько я помню.
А вы поточнее вспомните - это важно. Просто если там не 5.1к, а, к примеру, 51к или больше - это бы полностью обьяснило наблюдаемую картину.
Режимное предприятие может быть еще и тюрьма и автор делает курсовую работу сокамернику или из охраны кому.
Это - попытка сделать то, что вышло из строя путем внедрения Ардуино.
Ваша позиция мне понятна. Можете не отвечать. Я здесь не с вами полемику вести пришел. А помощи попросить в непонятной мне ситуации.
5.1 кОм по-моему на aref висит. Но и без него работало, сколько я помню.
А вы поточнее вспомните - это важно. Просто если там не 5.1к, а, к примеру, 51к или больше - это бы полностью обьяснило наблюдаемую картину.
Точно не более 5.1 кОм. Либо 2, либо 5.1
Пост мой видел? Видео видел? Все работает. Если у тебя - нет, то внимательно переделай и замени плату. Какая еще помощь тебе нужна? Горшочек не нужно выносить, надеюсь, и жопку подтирать?
Точно не более 5.1 кОм. Либо 2, либо 5.1
тогда склоняюсь к выводу, что вы свой AREF уже поджарили.
Возьмите другую плату, запитайте ее стабильным источником 5в и используйте внутренний референс (DEFAULT). Для стабилизированного источника 5в это то же самое, как подача 5в на AREF в режиме внешнего референса.
А в целом, да. Знакомо. Не знакомо чтобы на режимном предприятии пользовали нечто иносранное. Там своего добра хватало в мое время .. и не сказал бы что "хуже". Позорники.. совсем скукожились. Пойду, приму на поминку.
Не знакомо чтобы на режимном предприятии пользовали нечто иносранное.
Давненько Вы на них не были :)
Идиот. Больше я на этот форум за помощью обращаться не буду
Не знакомо чтобы на режимном предприятии пользовали нечто иносранное.
Давненько Вы на них не были :)
Вспомните всрытие онлайн по телевизору "чёрного ящика" со сбитого турками штурмовика.
Незаряженные и севшие в прямом эфире аккумуляторы шуруповерта,
отвертки с разбитыми жалами, молоток,
кусачки которые не кусают и ими рвали провода соединяюшие платы
и как финал - пластиковые расколотые корпуса микросхем памяти
там где должна быть металлокерамика.
И видим не оторванные от платы корпуса с возможностью подключения к кристаллу, а расколотые в крошку кристаллы
При том что на плате стоял один в нормальном корпусе ( похоже на регистр шины)
Я был просто в шоке....
кому должна там быть металлокерамика?
как бы это спасло корпус микросхемы и кристалла от механического разрушения при ударных нагрузках?
кому должна там быть металлокерамика?
как бы это спасло корпус микросхемы и кристалла от механического разрушения при ударных нагрузках?
Дитятя, вы хотя-бы слышали про военную приемку?
Как там вообще пластмасса имела право появиться?
Снабженцы впарили, и так сойдёт.....типо аналоги....
Найдите видео про это "вскрытие"и сравните с помощью ваших глаз состояние разных корпусов после этих "ударных нагрузок"
trembo, как ты думаешь, сколько мне лет и какой у меня стаж радиомонтажника на предприятии, разрабатывающим и производящим девайсы для военных?
элементарно там пластмасса могла появиться, т.к. блок является, даже не критическим, а вообще, нахрен не нужным для выполнения боевой задачи.
но... ты ответь на мой вопрос - каким образом металлокерамика спасает от механического разрушения при ударных нагрузках?
Не знакомо чтобы на режимном предприятии пользовали нечто иносранное.
Давненько Вы на них не были :)
но... ты ответь на мой вопрос - каким образом металлокерамика спасает от механического разрушения при ударных нагрузках?
Отвечаю.
https://youtu.be/tlGsIt9fZs8?t=2322
Если точное время - то 38:42
Справа малиновый с золотом - это керамика, а слева чёрное крошево- это пластмасса.
Если-бы память была в керамике её можно было бы легко подключить даже при обрыве внешних выводов.
Кристалл в связи с его малой массой разрушить нереально.
Сам в юности работал наладчиком на зондах и на термокомпрессии....
А уж военной приёмки сколько выпускали- всё в золоте и керамике.
Когда вскрывали утром я даже на работу не поехал, смотрел до конца этот позор....
Почитайте комментарии к этому "фильму"
Да, про этот позор я как-то и забыл уже .. спасибки что напомнили. Жесть.
А уж военной приёмки сколько выпускали- всё в золоте и керамике.
снова про золото и керамику...
прекращай тупить - это не та вражеская композитная керамика, которая выдерживает ударные нагрузки и не для нагрузок она предназначена, а для работы на высоких частотах.
*заливка блока компаундом - не, не слышал, у нас всё в золоте и керамике. О_О
**просто интересно понять эту совдеповскую логику о военной приёмке и скрепном золоте/керамике - у гражданского Боинга почему чёрные ящики не разбиваются? потому, что - что, плин?.. О_О
у гражданского Боинга почему чёрные ящики не разбиваются? потому, что - что, плин?.. О_О
Как бы ракета воздух-воздух и удар о землю - это немного разные нагрузки.
Как бы ракета воздух-воздух и удар о землю - это немного разные нагрузки.
золото и керамика защищают от ракет воздух-воздух?
*алё! коматозники - вы сбили гражданский Боинг ракетой земля-воздух.
**таки, путин всем россиянам заменил мозги тампаксами.
Эт ты с кем сейчас разговаривал?