Вопросы чайника про аналоговые входы
- Войдите на сайт для отправки комментариев
Вс, 25/09/2016 - 16:37
Здравствуйте.
Прошу сильно не пинать (начинающий я).
Вопрос про AnalogRead и аналоговые входы в целом.
Как я понимаю, снять с них можно поданное на них напряжение (между конкретным аналоговым входом и любым контактом GND на плате). Причем диапазон - от 0 до 1024, где 1024 - это 5 В.
1) Все так?
2) Слышал, что для точного измерения нужно опорное напряжение (или какой-то резистор дополнительный вешать). Не могли бы пояснить?
3) Если аналоговый вход болтается в воздухе, то показывать он будет "температуру на Марсе" (т.е. не пойми что). Это нормально?
Заранее спасибо!
И ещё - можно ли использовать SVG-входы "Тройки" (Troyka Shield) для измерения напряжения также, как и обычные A-входы?
аналоговые входы...
Как я понимаю, снять с них можно поданное на них напряжение (между конкретным аналоговым входом и любым контактом GND на плате). Причем диапазон - от 0 до 1024, где 1024 - это 5 В.
1) Все так?
Нет.
Во-первых, от 0 до 1023, а во вторых - не обязательно 5 В. Полной шкале соответствует величина опорного напряжения. Если в качестве опорного используется 5 В, то - да. Но если мы будем питать Ардуину от 4.5 В, то 1023 будет соответствовать 4.5 В.
Можно также использовать внутренний либо внешний источник опорного напряжения.
2) Слышал, что для точного измерения нужно опорное напряжение (или какой-то резистор дополнительный вешать). Не могли бы пояснить?
https://www.arduino.cc/en/Reference/AnalogReference
3) Если аналоговый вход болтается в воздухе, то показывать он будет "температуру на Марсе" (т.е. не пойми что). Это нормально?
Ненормально, если вход болтается в воздухе.
А то, что в любом нештатном режиме результат непредсказуем - это нормально.
В качестве опорного идет то напряжение, которым запитана Ардуина?
А как можно использовать другое опорное напряжение (более стабильное и заранее известное)?
В качестве опорного идет то напряжение, которым запитана Ардуина?
А как можно использовать другое опорное напряжение (более стабильное и заранее известное)?
читать раздел Программирование подраздел analogReference() кто запретил?
Спасибо, буду изучать!
В качестве опорного идет то напряжение, которым запитана Ардуина?
А как можно использовать другое опорное напряжение (более стабильное и заранее известное)?
Если пользоваться напряжением питания как опорным, то можно просто измерить напряжение питания (прямо из программы) и знать чем Вас кормят. Это даёт две выгоды 1) можно более точно пересчитывать напряжения, т.к. опорное известно, и 2) это можно использовать для контроля батареи.
А как можно использовать другое опорное напряжение (более стабильное и заранее известное)?
Вы ответы читаете или только вопросы задаете? Прямо над этим Вашим вопросом ответ, в котором нужная ссылка.
Для меня например, ваша ссылка бесполезна
Для меня например, ваша ссылка бесполезна
Ну, там как бы написано каким образом переключаться между разными опорными. Вам разве не это надо? А что тогда для Вас полезно?
Там написано. Только на английском языке. Зачем давать новичку такую ссылку, (если конечно заранее не известно, что он свободно владеет техническим английским) когда есть эта информация на русском языке?
Ну, если есть, то читайте на русском.
ADR, вы хотите начать программировать не зная английский?, вам придется тогда его выучить :)
Я давно начал программировать)) Новичек в Ардуино - это необязательно пацанчик 15 лет
Зачем тогда этот сайт и форум? Достаточно родного, англоговорящего.
Там написано. Только на английском языке. Зачем давать новичку такую ссылку, (если конечно заранее не известно, что он свободно владеет техническим английским) когда есть эта информация на русском языке?
А Гугла-переводчика Роскомнадзор заблокировал? А зайти на этом же сайте в раздел "Программирование", вера не позволяет?
Вы хотите об этом поговорить?
Хочу понять, почему человек гордо заявляющий о своей зрелости, ведет себя как пятиклассник????
Ну давайте поговорим. Вы я вижу больше писатель, чем читатель, хотя в этом меня же и упрекаете. Возможно это от удаления части переписки модератором - не знаю.
Собственно в вашем вопросе и содержится на него ответ. Разумеется я могу зайти на этом сайте в раздел "Программирование" и прочитать про эту функцию. Теперь могу, когда мне добрые люди дали на него ссылку. Вы же наверное не считаете, что как только я открыл этот сайт, то тут же ко мне в память загрузилась вся структура этого сайта и сразу узнал, что где лежит и где про что можно прочитать?
Хотя наверняка все участники конкретно этой дискуссии хорошо знакомы со структурой этого сайта. Да и ответы на заданные автором темы (да вы очевидно читаете с конца и не знаете ещё, что автор темы не я) им хорошо известны. И вот тут то у меня возникает вопрос вместе с недоумением - зачем? Зачем давать человеку ссылку на англоязычный сайт, когда есть этот, и есть раздел "Программирование" на русском языке. Может человек стесняется русского? Может на английском круче? Может он думает, что "возвышается" над теми, кто не говорит на великом английском языке? А может просто дал первую попавшуюся - мне неизвестно. Да впрочем и не важно. Я просто написал, что лично мне эта ссылка - бесполезна.
Для Калапуция ещё раз (да и для других кто хочет оскорбить меня лично) - Оскорбления выслушиваю только в очной беседе. Договариваемся о встрече и я буду рад вас выслушать. Остальное - считаю лаем из глубины будки за высоким забором.
Оба как дети, честное слово.
Тут прямо на сайте такие базовые вещи на русском есть.
з.ы. А английский хотябы немного понимать не помешает. А форум для того чтобы общаться по теме ардуино, понимать техническую документацию и свободно общаться это разные вещи.
вот тут то у меня возникает вопрос вместе с недоумением - зачем? Зачем давать человеку ссылку на англоязычный сайт, когда есть этот, и есть раздел "Программирование" на русском языке.
У меня возник ответ :)))
Если сравнить русскоязычное описание на этом сайте и англоязычное на том, что Вам дали, можно заметить, что по ОЧЕНЬ МНОГИМ позициям оно разное - там более свежее и актуальное, а здесь устаревшее и неполное. Поэтому Вам дали ссылку на более релевантный ресурс. По-моему, правильно поступили. Никто ж не знал, что Вы читать не умеете. Как-то считается что ни в программировании, ни в электронике без английского делать нечего, и потому все хоть сколько-нибудь, но читают.
Я ответил на вопрос "зачем"?
Да
В качестве опорного идет то напряжение, которым запитана Ардуина?
А как можно использовать другое опорное напряжение (более стабильное и заранее известное)?
Если пользоваться напряжением питания как опорным, то можно просто измерить напряжение питания (прямо из программы) и знать чем Вас кормят. Это даёт две выгоды 1) можно более точно пересчитывать напряжения, т.к. опорное известно, и 2) это можно использовать для контроля батареи.
Евгений, при всем уважении, как узнать напряжение питания "Если пользоваться напряжением питания как опорным" ?
Я думаю речь о опорном напряжении, как о константе. Например написано на блоке питания 12В, это значение вы и забиваете в программу. А потом измеряете напряжение питания и узнаёте, что не 12В, а 11.89В.
Евгений, при всем уважении, как узнать напряжение питания "Если пользоваться напряжением питания как опорным" ?
Давайте разобьём на две части (приблизительно и более точно):
1. Измеряем напряжение питания с точностью +/- 10%
такой точности вполне достаточно, например для контроля заряда батареи. Там можно положить эти 10% как "запас" и просто считать, что напряжение равно измеренному - 10% - не ошибёмся.
В большинстве AVR'ок у которых вообще есть ADC, есть возможность измерить внутреннее опорное напряжение, которое равно, как известно 1,1В с использованием напряжения питания как опорного для измерения.
Делается это для разных чипов немного по-разному в том смысле, что для того, чтобы выбрать такое измерение, нужно писать разные биты в AMUX. Вот то, что я реально делал:
Записав такую комбинацию в регистр MUX Вы измеряете внутреннее опорное напряжение.
Но, поскольку мы и так знаем, что оно равно 1.1В, то этим измерением можно воспользоваться для расчёта напряжения питания. Пусть мы намеряли N. Тогда напряжение питания Vcc = 1,1V * 1023 / N
Здесь всё ясно?
Теперь давайте вспомним, что внутреннее опорное на самом деле не точно 1.1В, а (по даташиту) от 1.0В до 1.2В, причём индивидуально для каждого экземпляра микроконтроллера.
2. Измеряем более точно
Для начала определим точное значение внутреннего опорного для нашего экземпляра микроконтроллера.
Для этого проведём измерение как в предыдущем пункте, попутно измеряя напряжение питания лучшим вольтметром из тех, что имеем (лучше сделать это много раз и усреднить).
Допустим получили опять же N. Теперь вычисляем опорное для нашего чипа Vbg = Vcc * N / 1023 (здесь используется измеренное Vcc)
Полученное Vbg заносим в константу (или, если скетч пишется для серии устройств, то в EEPROM) и впредь, при измерении напряжения питания как в п. 1 выше, везде используем это значение Vbg, а не 1.1V. так получится более точно.
Вроде всё. Может где-то сбивчиво, так что если что-то осталось неясным, спрашивайте.
Я думаю речь о опорном напряжении, как о константе. Например написано на блоке питания 12В, это значение вы и забиваете в программу. А потом измеряете напряжение питания и узнаёте, что не 12В, а 11.89В.
Почти, но я ещё и опорное уточняю (см. мой пост чуть выше).
как узнать напряжение питания "Если пользоваться напряжением питания как опорным" ?
Код приведён в функции VCC() темы http://arduino.ru/forum/programmirovanie/sysinfo-arduino
Спасибо ребят, просветили, не знал.