Почему точность аналогового входа так низка? (Изм.зар.батареи)

Proger_xxx
Offline
Зарегистрирован: 01.03.2016

Итак имеется следующий кодинг:

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 вольта должна горет зеленый светодиод. Но, аналоговый сигнал бредит по полной. Как повысить точность аналогового значение?!

Клапауций 232
Offline
Зарегистрирован: 05.04.2016

прекратить бредить и описать ситуацию внятно.

toc
Offline
Зарегистрирован: 09.02.2013

>> Как повысить точность

1. дайте полный (компилируемый) код иллюстрирующий проблему
2. дайте подробное описание схемы
3. добавьте отладочный принты.
4. какой блок питания?
5. очень мощные светики?
6. измерить мультиметром, сравнить

Proger_xxx
Offline
Зарегистрирован: 01.03.2016

Было все собрано навесном монтажом. Блок питания 5 вольт-1 ампер. Светодиод сам на 0,7 Ампер. Вместо самой платы используется прошитая микросхема Атмега328. Читал что ардуино не может мерит самого себя. Насколько правдиво не знаю

 

ЕвгенийП
ЕвгенийП аватар
Offline
Зарегистрирован: 25.05.2015

Proger_xxx пишет:

Итак имеется следующий кодинг:

Блин, типичный proger: кодинг, прога, сервак и полный ноль знаний.

Proger_xxx пишет:

Думаю дальше понятно в цикле. 

Напрасно думаете. Ни хрена не понятно. Непонятно, нахрена аналоговый вход ставить в какой-то pinMode, непонятно, что там за пину используется. Вообще нихрена не понятно.

1. Приведите свой бред код полностью, как есть, тупым копипастом.

2. Внятно объясните чего Вы хотите получить и что получается на деле.

ЕвгенийП
ЕвгенийП аватар
Offline
Зарегистрирован: 25.05.2015

Proger_xxx пишет:

Читал что ардуино не может мерит самого себя. Насколько правдиво не знаю

Что значит самого себя? Линейные размеры? Температуру? Или что?

Если Вам надо изамерять температуру чипа или напряжение питания (Vcc), то 328-ая не только может это - у неё есть специальная функция для этого, прямо в самой микросхеме.

Так, неитересно навесным там или ещё каким, пожалуйста, полный скетч и схему подключения.

Если Вам лень выложить схему и полный скетч - помогайте себе сами.

Proger_xxx
Offline
Зарегистрирован: 01.03.2016

1

ЕвгенийП
ЕвгенийП аватар
Offline
Зарегистрирован: 25.05.2015

Нет, уж дорогой, рисуйте схему. например, куда именно у Вас подключён аналоговый сигнал. К какому пину? Откуда мне знать? Что-то мне подсказывет, что к цифоровому. Так что давайте схему - не ленитесь. А то я буду тратть уйму времени на то, чтобы обсуждать код, когда у Вас к одному пину подключено, а на другом замеряется.

Proger_xxx
Offline
Зарегистрирован: 01.03.2016

http://pixs.ru/showimage/Atmegajpg_2816169_23535313.jpg

 

вот пожалуйста.Только что загрузил. Все точно так подкдючена. +5 вольт идет сразу в три направления. 1-само питания, 2-аналог.питания, 3-измерения на аналог.вход А1

ЕвгенийП
ЕвгенийП аватар
Offline
Зарегистрирован: 25.05.2015

Т.е. сигнал Вы подаёте на PС1. А для чего Вы в строке 12 PD1 дёргаете?

И что Вы намерены таким образом намерять?

Если Вы не напаяли соплей, то Вы с такой схемой и таким скетчем ВСЕГДА будете получать значение 1023 и никогда никакого длругого. Просто потому, что Вы аналоговый ход даёт Вам ВСЕГДА 0 для GND, 1023 для Vcc и промежуточные значение для промежуточных напряжений.

Т.е. ничего, кроме 1023 (т.е. того факта, что напряжение на пине равно напряжению питанния, Вы таким образом не измерите!

Скажите толком, что Вам нужно? Измерить напряжение питания? Или что?

ЕвгенийП
ЕвгенийП аватар
Offline
Зарегистрирован: 25.05.2015

Да, и ещё, в догонку, я могу Вам рассказасть как измеряется напряжение питания, но, я хочу увидеть схему. То, что Вы мне дали - ничего не говорит о пинах 2, 3, 4 и 5, которые задействованы в программе. Какие там нагрузки, что они делают, куда землю притягивают - откуда мне знать?

Почему Вы не даёте схему? Лень рисовать? Как хотите. Вам было сказано:

ЕвгенийП пишет:

Если Вам лень выложить схему и полный скетч - помогайте себе сами.

Proger_xxx
Offline
Зарегистрирован: 01.03.2016

Да да именно. Необходимо измерить аккумуляторную батарею. Когда получается ниже 3.0 вольта сработает сигнализация и красный светодиод if  (analogRead(Analog)  <  640). А когда полная батарея 4.2 вольта то должна загорется зеленая лампа (if  (analogRead(Analog)  >  850)

ЕвгенийП
ЕвгенийП аватар
Offline
Зарегистрирован: 25.05.2015

Как измерять напряжение питания написано вот здесь, начиная с заголовка "Detecting low voltage".

Разбирайтесь.

Если будут вопросы ко мне, пожалуйста, но сначала полная схема и полный скетч, а потом вопросы.

reticular
Offline
Зарегистрирован: 09.06.2016

интересные статьи по теме на русском языке: http://tim4dev.com/arduino-secret-true-voltmeter/ http://we.easyelectronics.ru/AVR/izmerenie-napryazheniya-pitaniya.html