Почему точность аналогового входа так низка? (Изм.зар.батареи)
- Войдите на сайт для отправки комментариев
Пнд, 03/10/2016 - 19:56
Итак имеется следующий кодинг:
void setup() { pinMode(Analog, INPUT); pinMode(Button, INPUT); pinMode(Alarm, OUTPUT); pinMode(Grled, OUTPUT); pinMode(Redled, OUTPUT); pinMode(Led, OUTPUT); if (analogRead(Analog) < 640) { digitalWrite(Alarm, HIGH); digitalWrite(Redled, HIGH); } if (analogRead(Analog) > 850) { digitalWrite(Grled, HIGH); } delay(3000); digitalWrite(Alarm, LOW); digitalWrite(Grled, LOW); digitalWrite(Redled, LOW); }
Думаю дальше понятно в цикле. Не буду угубляться. Почему сигналные (красный, зеленый) лампы. Можно сказать брешут? Если посчитать 640 из 1023 это примерно 3.0 вольта должна сигналиция и красный светодиод горет должен. А при 4.2 вольта должна горет зеленый светодиод. Но, аналоговый сигнал бредит по полной. Как повысить точность аналогового значение?!
прекратить бредить и описать ситуацию внятно.
>> Как повысить точность
1. дайте полный (компилируемый) код иллюстрирующий проблему
2. дайте подробное описание схемы
3. добавьте отладочный принты.
4. какой блок питания?
5. очень мощные светики?
6. измерить мультиметром, сравнить
Было все собрано навесном монтажом. Блок питания 5 вольт-1 ампер. Светодиод сам на 0,7 Ампер. Вместо самой платы используется прошитая микросхема Атмега328. Читал что ардуино не может мерит самого себя. Насколько правдиво не знаю
Итак имеется следующий кодинг:
Блин, типичный proger: кодинг, прога, сервак и полный ноль знаний.
Думаю дальше понятно в цикле.
Напрасно думаете. Ни хрена не понятно. Непонятно, нахрена аналоговый вход ставить в какой-то pinMode, непонятно, что там за пину используется. Вообще нихрена не понятно.
1. Приведите свой
бредкод полностью, как есть, тупым копипастом.2. Внятно объясните чего Вы хотите получить и что получается на деле.
Читал что ардуино не может мерит самого себя. Насколько правдиво не знаю
Что значит самого себя? Линейные размеры? Температуру? Или что?
Если Вам надо изамерять температуру чипа или напряжение питания (Vcc), то 328-ая не только может это - у неё есть специальная функция для этого, прямо в самой микросхеме.
Так, неитересно навесным там или ещё каким, пожалуйста, полный скетч и схему подключения.
Если Вам лень выложить схему и полный скетч - помогайте себе сами.
1
Нет, уж дорогой, рисуйте схему. например, куда именно у Вас подключён аналоговый сигнал. К какому пину? Откуда мне знать? Что-то мне подсказывет, что к цифоровому. Так что давайте схему - не ленитесь. А то я буду тратть уйму времени на то, чтобы обсуждать код, когда у Вас к одному пину подключено, а на другом замеряется.
http://pixs.ru/showimage/Atmegajpg_2816169_23535313.jpg
вот пожалуйста.Только что загрузил. Все точно так подкдючена. +5 вольт идет сразу в три направления. 1-само питания, 2-аналог.питания, 3-измерения на аналог.вход А1
Т.е. сигнал Вы подаёте на PС1. А для чего Вы в строке 12 PD1 дёргаете?
И что Вы намерены таким образом намерять?
Если Вы не напаяли соплей, то Вы с такой схемой и таким скетчем ВСЕГДА будете получать значение 1023 и никогда никакого длругого. Просто потому, что Вы аналоговый ход даёт Вам ВСЕГДА 0 для GND, 1023 для Vcc и промежуточные значение для промежуточных напряжений.
Т.е. ничего, кроме 1023 (т.е. того факта, что напряжение на пине равно напряжению питанния, Вы таким образом не измерите!
Скажите толком, что Вам нужно? Измерить напряжение питания? Или что?
Да, и ещё, в догонку, я могу Вам рассказасть как измеряется напряжение питания, но, я хочу увидеть схему. То, что Вы мне дали - ничего не говорит о пинах 2, 3, 4 и 5, которые задействованы в программе. Какие там нагрузки, что они делают, куда землю притягивают - откуда мне знать?
Почему Вы не даёте схему? Лень рисовать? Как хотите. Вам было сказано:
Если Вам лень выложить схему и полный скетч - помогайте себе сами.
Да да именно. Необходимо измерить аккумуляторную батарею. Когда получается ниже 3.0 вольта сработает сигнализация и красный светодиод if (analogRead(Analog) < 640). А когда полная батарея 4.2 вольта то должна загорется зеленая лампа (if (analogRead(Analog) > 850)
Как измерять напряжение питания написано вот здесь, начиная с заголовка "Detecting low voltage".
Разбирайтесь.
Если будут вопросы ко мне, пожалуйста, но сначала полная схема и полный скетч, а потом вопросы.
интересные статьи по теме на русском языке: http://tim4dev.com/arduino-secret-true-voltmeter/ http://we.easyelectronics.ru/AVR/izmerenie-napryazheniya-pitaniya.html