Необходимо тело программы для вольтметра от -5 вольт до + 5 вольт

bboykazbek
Offline
Зарегистрирован: 22.07.2015

А теперь куда это можно добавить в теле программы?

svm
Offline
Зарегистрирован: 06.11.2016

Проще туда добавить свой вывод на дисплей.

bboykazbek
Offline
Зарегистрирован: 22.07.2015

Как сделать - башка не соображает, уважаемый svm будьте добры покажите в теле программы, куда запендюрить))

svm
Offline
Зарегистрирован: 06.11.2016

1 удалить стоки 38-69

2 закомментировать 71

проверить работу без дисплея, в мониторе. Скорректировать коэффициенты под реальный делитель. Если все устраивает добавить вывод на дисплей. Но это позже.

andriano
andriano аватар
Offline
Зарегистрирован: 20.06.2015

bboykazbek пишет:

asam пишет:

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

3 знака после запятой.

Забудьте.

 

Самое главное - непонятно, зачем это все. 

А если устраивает 2 знака - купите обычный тестер и не мучайтесь.

bboykazbek
Offline
Зарегистрирован: 22.07.2015

А как можно значение аналогового нуля на входе сдедать значением 512 в цифре?

ua6em
ua6em аватар
Offline
Зарегистрирован: 17.08.2016

andriano пишет:

Самое главное - непонятно, зачем это все.

Так озвучил жеж - срубить с шефа баблосов

 

 

nik182
Offline
Зарегистрирован: 04.05.2015

Прибавить 512.

sensorValue = analogRead(sensorPin) + 512;

 

bboykazbek
Offline
Зарегистрирован: 22.07.2015

nik182 пишет:

Прибавить 512.

sensorValue = analogRead(sensorPin) + 512;

 

Вот не сдигается как мне нужно..(((

andriano
andriano аватар
Offline
Зарегистрирован: 20.06.2015

bboykazbek пишет:

nik182 пишет:

Прибавить 512.

sensorValue = analogRead(sensorPin) + 512;

 

Вот не сдигается как мне нужно..(((

На свой вопрос ответ Вы получили, а про "сдвигается" в вопросе не было.

Кстати, а что вообще означает это "сдвигается"?

bboykazbek
Offline
Зарегистрирован: 22.07.2015

Ну я вот подумал надо аналоговый 0 сделать 512 цифровым, соответственно 1024 - будет аналоговыми 5 вольтами, а цифровой 0 - - 5 аналоговыми вольтами.

DIVGENY
Offline
Зарегистрирован: 23.08.2016

вот тебе самая простая схема

ua6em
ua6em аватар
Offline
Зарегистрирован: 17.08.2016

bboykazbek пишет:

Прибор сам будет переключать. Идея какая - с блока генератора подается регулируемое напряжение от -5 вольт до +5 вольт и необходимо чтобы вольтметр это замерял. Когда пользователь будет крутить напряжение не генераторе вольтметр должен видеть значение и сам менять знак.

Относительно чего напряжение изменяется от -5 до +5?

DIVGENY
Offline
Зарегистрирован: 23.08.2016

вот тебе самый простое тело программы

#include <LiquidCrystal.h>
LiquidCrystal lcd(7, 8, 9, 10, 11, 12);

int sensorPin = 0;
float outputValue ;
void setup(){
   pinMode(sensorPin, INPUT);
   lcd.begin(16, 2);
   lcd.print("DC VOLTMETER");
}
void loop(){

float outputValue = analogRead(sensorPin) - 5 ;
   lcd.setCursor(0, 1);
lcd.print("INPUT V= ");
lcd.print(outputValue,4); 
delay(100);
}

 

bboykazbek
Offline
Зарегистрирован: 22.07.2015

DIVGENY пишет:

вот тебе самый простое тело программы

#include <LiquidCrystal.h>
LiquidCrystal lcd(7, 8, 9, 10, 11, 12);

int sensorPin = 0;
float outputValue ;
void setup(){
   pinMode(sensorPin, INPUT);
   lcd.begin(16, 2);
   lcd.print("DC VOLTMETER");
}
void loop(){

float outputValue = analogRead(sensorPin) - 5 ;
   lcd.setCursor(0, 1);
lcd.print("INPUT V= ");
lcd.print(outputValue,4); 
delay(100);
}

 


Когда пытаюсь замерить 5 вольт показывает аж 153 вольта

svm
Offline
Зарегистрирован: 06.11.2016

Раздели на 50. Сейчас измеряется в попугаях. 1 вольт=50 попугаев. Правда непоняттно почему от результата измерения отнимается 5. Это что?

 

DIVGENY
Offline
Зарегистрирован: 23.08.2016

ошибся

 

01 #include <LiquidCrystal.h>
02 LiquidCrystal lcd(7, 8, 9, 10, 11, 12);
03  
04 int sensorPin = 0;
05 float outputValue ;
06 void setup(){
07    pinMode(sensorPin, INPUT);
08    lcd.begin(16, 2);
09    lcd.print("DC VOLTMETER");
10 }
11 void loop(){
12  
13 float outputValue = analogRead(sensorPin)/1023*5.0 - 5 ;
14    lcd.setCursor(0, 1);
15 lcd.print("INPUT V= ");
16 lcd.print(outputValue,4);
17 delay(100);
18 }

 

nik182
Offline
Зарегистрирован: 04.05.2015

14 строка - шедевр! Для картинки #63 должно быть както так:

float outputValue = 5.0*(analogRead(sensorPin) -512)/512 ;

 

bboykazbek
Offline
Зарегистрирован: 22.07.2015

nik182 пишет:

14 строка - шедевр! Для картинки #63 должно быть както так:

float outputValue = 5.0*(analogRead(sensorPin) -512)/512 ;

 

Вообще ни сдвига вправо ни сдвига влево(((

Я в печали, что если уж лучшие умы не могу жтого сделать, то куда мне...((

DIVGENY
Offline
Зарегистрирован: 23.08.2016

шедевр -= это полсотни ответов для автора темы с полным непониманием простого уравнения 

float TC = 0;

тут еже нужна рыба а не удочка....

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

DIVGENY пишет:

тут еже нужна рыба а не удочка....

За рыбой - в рыбный магазин.

Здесь раздают удочки.

nik182
Offline
Зарегистрирован: 04.05.2015

Что значит сдвиг вправо - лево? У меня работает и измеряет от -5 до + 5 вольт.   

svm
Offline
Зарегистрирован: 06.11.2016

Без бутылки не разобраться, а TС - трезвенник. Замкнутый круг.

wdrakula
wdrakula аватар
Offline
Зарегистрирован: 15.03.2016

DIVGENY пишет:

шедевр -= это полсотни ответов для автора темы с полным непониманием простого уравнения 

float TC = 0;

тут еже нужна рыба а не удочка....

;)))))

А кто сказал, что ТС изменил свою схему включения? Ты ему рисовал, да, но ответа от него, что он последовал указанию, в теме не было, вот у него ничего и не работает.

Есть еще вторая гипотеза - что нас просто троллят. Тоже вполне на правду похоже. ;)))

wdrakula
wdrakula аватар
Offline
Зарегистрирован: 15.03.2016

svm пишет:

а TС - трезвенник

Нам тока тут террористов не хватало! ;)))

qwone
qwone аватар
Offline
Зарегистрирован: 03.07.2016

ЕвгенийП пишет:
За рыбой - в рыбный магазин.

Здесь раздают удочки.

Но чаще вместо удочек приходится раздавать пенделей. Ну не держат у руках удочки всякие рукожопы.

 Уже целый день форумчане пинками ТС направляли к решению. Но ТС мужественно и упрямо подпрыгивая избегал решения своей задачи.

 

bboykazbek
Offline
Зарегистрирован: 22.07.2015

Спасибо, ребят за то, что обосрали меня, я хотел найти решения совместно, потому как не получалось сделать задуманное, а тут помои посыпались с разных мест...

bboykazbek
Offline
Зарегистрирован: 22.07.2015

Охота не только для себя, для других людей, которые ещё не совсем разбираются в программировании тоде полезно будет же!!!

Ворота
Ворота аватар
Offline
Зарегистрирован: 10.01.2016

bboykazbek пишет:

Спасибо, ребят за то, что обосрали меня, 

Не за что!

b707
Offline
Зарегистрирован: 26.05.2017

bboykazbek пишет:

Охота не только для себя, для других людей, которые ещё не совсем разбираются в программировании тоде полезно будет же!!!

что именно будет полезно? 80 сообщений о том, что отрицательное число не выводится на дисплей?

bboykazbek
Offline
Зарегистрирован: 22.07.2015

Вместо того, чтобы решить простую задачу с вашими умами, сидим возле компов и сремся. Я вот честно могу сказать, что программирование знаю весьма поверхностно, поэтому прошу умы, которые в этом реально понимают.

sadman41
Offline
Зарегистрирован: 19.10.2016

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

Или вы доходом поделитесь до всеми решавшими?

bboykazbek
Offline
Зарегистрирован: 22.07.2015

Давайте пока не делить шкуру неубитого медведя.

sadman41
Offline
Зарегистрирован: 19.10.2016

А потом где мы вас со шкурой искать-то будем? Нет уж, вы озвучьте перспективы совместного решения задачи. Будьте любезны.

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

bboykazbek
Offline
Зарегистрирован: 22.07.2015

Как я могу сказать про финансы, я даже не знаю пройдёт ли рацпредложение-это раз, решения проблемы - нет это два, всё что я смог написать - это три.

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

Ну, понятно, у Вас есть проблема, решить которую Вы не можете, а залатить за решение не хотите. Поэтому Вы обратились к великим умам, чтобы они решили для Вас её задарма. Только Вы не подумали, что у них есть свои проблемы, которые им немного ближе и решать которые Вы почему-то не рвётесь. Не подумали? Или считаете. что Ваша проблема им важнее своих?

sadman41
Offline
Зарегистрирован: 19.10.2016

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

Вы же, полагаю, к работе приступаете не на условиях капиталиста: "Давай копай, а потом, если дело пойдет - я расплачусь".

Но если без лирики, то кажется вам уже дали всё, что необходимо для разработки вашего рацпредложения вашему капиталисту. В том случае, если дело не двигается с мертвой точки, то следует признать, что рацпредложения не сложится.

svm
Offline
Зарегистрирован: 06.11.2016

Ну вот, наконец поправил здоровье и стал немного добрее. Удалил из скетча

 http://arduino.ru/forum/proekty/universalnyi-arduino-probnik?page=2#comment-352905

все лишнее, и добавил вывод на дисплей. Схема входных цепей из того-же поста, резисторы 33 кОм можно удалить, они не нужны. В зависимости от реальных резисторов делителя, корректирующие коэффициенты нужно уточнить.  В железе не пробовал, возможны косяки. 

Скетч:


#include <LiquidCrystal.h>
LiquidCrystal lcd(7, 8, 9, 10, 11, 12);
 
 long adc_buff,rezd;
 float u_del,u_izm,rez,u_del1;
 byte ri;// режим измерения
//***************************************************************

void setup() 
{lcd.begin(16, 2);}

void loop(){
//start:
pinMode(2, INPUT); // 2 пин высокий импеданс
pinMode(3, INPUT); // 3 пин высокий импеданс
rez=0;
//************************** вольтметр ********************************************
   ri=1; 
analogReference(INTERNAL);// включаем внутренний ИОН 1.1 В
pinMode(3, OUTPUT);        // выводим на 3 пин 0
digitalWrite(3,0);         // устанавливая его в 0(включаем нижний резистор делителя)
adc_buff=adc14BitRead(A2);//чтение с 2 аналогового входа с разрешением 14 бит
rez= (float)adc_buff/16368.0*16.138;// - реальный коэфф делителя уточнить
if (adc_buff > 100) goto vyv;   //если есть напряжения выводим

//**********************Пробуем сменить полярность**************************
 ri=2;
pinMode(3, INPUT);         // 3 пин высокий импеданс
pinMode(2, OUTPUT);        // выводим на 2 пин 0
digitalWrite(2,0);         // устанавливая его в 0(включаем нижний резистор делителя)
adc_buff=adc14BitRead(A1);//чтение с 1 аналогового входа с разрешением 14 бит
rez= (float)adc_buff/16368.0*16.138;// - реальный коэфф делителя уточнить
if (adc_buff > 100) goto vyv;   //если есть напряжения выводим 

vyv:
 lcd.setCursor(0, 1);

if (ri==1){ 
lcd.print("INPUT V= + ");
lcd.print(rez,3);}

if (ri==2){ 
lcd.print("INPUT V= - ");
lcd.print(rez,3);}
lcd.print(" B    ");

delay(500);
//goto start;
}

//функция чтения с АЦП в 14 бит 
int adc14BitRead(byte Ain){
  delay(3);
  adc_buff=0;
  for (int n=0; n<=255; n++ ) {
    adc_buff+= analogRead(Ain);  }
  return  adc_buff >>=4; // 16368 полная шкала 14bit
}

Схема:

bboykazbek
Offline
Зарегистрирован: 22.07.2015

Уважаемый svm, спасибо большое. Завтра сделаю, сегодня надо вчерашний день энергетика отметить))

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

Тваю ж мать! 

Человек скетч правил, схему рисовал, а ему: "спасибо, завтра глядну, сегодня мне бухать надо".

bboykazbek, Вы там часом ухи не объелись?

bboykazbek
Offline
Зарегистрирован: 22.07.2015

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

Тваю ж мать! 

Человек скетч правил, схему рисовал, а ему: "спасибо, завтра глядну, сегодня мне бухать надо".

bboykazbek, Вы там часом ухи не объелись?


ЕвгенийП, персонально для Вас: во-первых я не пью, во - вторых - меня пригласили, в-третьих - чтобы весело провести время необязательно бухать - хорошее позитивное настроение оно внутри человека.

b707
Offline
Зарегистрирован: 26.05.2017

Ситуация который раз подтвердила правило -

Ни одной ленивой Ж не надо давать готовых решений, чем бы она (Ж) не мотивировала.

 

Глупые и ленивые люди должны жить плохо.

 

andriano
andriano аватар
Offline
Зарегистрирован: 20.06.2015

bboykazbek пишет:
Ну я вот подумал надо аналоговый 0 сделать 512 цифровым, соответственно 1024 - будет аналоговыми 5 вольтами, а цифровой 0 - - 5 аналоговыми вольтами.
Можно и так - почему нет?

Только тут, как я уже писал, есть целая куча проблем.

DIVGENY пишет:

вот тебе самая простая схема

Тлько вместе с Ардуиной эту схему использовать не следует. Разумеется, если верить ее (т.е. Атмеги 328) дэйташиту.

sadman41
Offline
Зарегистрирован: 19.10.2016

Согласен со ЕвгениемП и b707. Второй год, для купирования человеколюбия, под Новый Год помогаю кому-нибудь с гирляндами, без которых "праздник пропадет" и эти люди непременно обещают "отплатить шампанским".

И шо ви таки думаете? Таки да - каждый раз сижу трезвым, как дурак.

Нет, я себе могу и сам налить, но это ежегодное очередное подтверждение арабской мудрости "Оказанная услуга ничего не стоит" очень помогает не размякать целый год перед словоохотливыми "бизнесменами".

bboykazbek
Offline
Зарегистрирован: 22.07.2015

Если всё заработает посмотрим!

qwone
qwone аватар
Offline
Зарегистрирован: 03.07.2016

bboykazbek пишет:
Если всё заработает посмотрим!

svm, не растраивайся. ТС приложит все навыки что бы не заработало, а значит и платить не надо. Все же маленькая, но прибыль от этого таланта.

b707
Offline
Зарегистрирован: 26.05.2017

bboykazbek пишет:
Если всё заработает посмотрим!

великолепно!

Даже если все заработает - тогда еще посмотрим...

ELITE
ELITE аватар
Offline
Зарегистрирован: 11.01.2018

Если можно пренебрегать напряжением -0.3...0.3в то диодный мост на 1 пин и диод на второй
Первый измеряет напряжение, второй определяет полярность

Ворота
Ворота аватар
Offline
Зарегистрирован: 10.01.2016

ELITE пишет:
Первый измеряет напряжение, второй определяет полярность
И скетч на 20-ти языках приложи, а то так непонятно.

bboykazbek
Offline
Зарегистрирован: 22.07.2015

svm, как можно лично поговорить?