Помогите с вольтметром.
- Войдите на сайт для отправки комментариев
Сб, 24/02/2018 - 10:30
Здравствуйте. Это я опять со своим вольтметром.Вольтметр собрал на 5 в. Работает. Собрал еще схему для замера разряжения с датчиком давления. Оба скетча работают по отдельности, но вместе не хотят. Для вольтметра использовал analogReference(INTERNAL) - 1.1 В, а для датчика разряжения 4.91 В. Мне здесь подсказали, что нужно настраивать референс перед каждым чтением,потом делать паузу в миллисекунду после смены референса. С
01 #include <LiquidCrystal.h> 02 int V1=0; // Аналоговый вход A1 для замера напряжения 03 int Dat=0; //Аналоговый вход 0 для подключения датчика разряжения 04 int C = 0; 05 float V2=0; 06 float V3=0; 07 float V4=0; 08 float C1 = 0; 09 float P = 0; 10 LiquidCrystal lcd(2,3,4,5,6,7); 11 12 13 14 void setup() { 15 lcd.begin(16,2); 16 lcd.clear(); 17 analogReference(INTERNAL); 18 19 } 20 21 void loop() { 22 V1= analogRead(A1); 23 V2= (1.1/1023.0)*V1 ; 24 V3= V2/(3.1/(11.0+3.1)); 25 V4= 1.0385*V3; 26 if (V4<0.27) { 27 V4=0.0; 28 } 29 C = analogRead(Dat); 30 C1 = ((4.91/1023)*C); 31 P = (20 * C1 + 12); 32 lcd.setCursor(0,0); 33 lcd.print("Voltmetr:"); 34 lcd.setCursor(0,10); 35 lcd.print(V4,3); 36 lcd.setCursor(0,16); 37 lcd.print("B"); 38 delay(1000); 39 40 lcd.setCursor(0,1); 41 lcd.print("DAD:"); 42 lcd.setCursor(5,1); 43 lcd.print(P); 44 lcd.setCursor(9,1); 45 lcd.print("kPa"); 46 delay(500); 47 48 49 50 51 }
мотрел разные примеры ничего похожего не нашел . Подскажите как это организовать.
может не дергать референс и просто поставить делитель 1 к 5 на датчик?
Схема уже собрана в готовом виде.Хотелось програмно этот вопрос решить.
может не дергать референс и просто поставить делитель 1 к 5 на датчик?
Если программно не получится придеться возможно так и сделать.
Перед analogRead ставить analogReference(INTERNAL) или analogReference(DEFAULT) в зависимости от того какой референс использовать для оцифровки. Ну delay(1) не забываем между ними.
Перед analogRead ставить analogReference(INTERNAL) или analogReference(DEFAULT) в зависимости от того какой референс использовать для оцифровки. Ну delay(1) не забываем между ними.
nik182, спасибо! Буду пробовать.
Здравствуйте. nik182,сделал как писали выше. Датчик разряжения заработал и вольтметр то же. Только вольтметр показывать стал неверные значения. Если нажать на кнопку резет, то в первую секунду вольтметр показывает правильное значение,потом когда загружается вторая строка с значением разряжения опять неверное показывает. Датчик разряжения работает правильно.
Может опять что не так я сделал?
Кроме запятой в 27 строке никакого криминала не вижу. Тестером ногу Aref Можете посмотреть? Напряжение на ней должно прыгать от 1.1 до 5 вольт каждые 500 мс . Попробуйте в 23 строке делей до 100 увеличить. И удалить строки 24 и 44.
nik182, да напряжение на AREF скачет от 1.1 в до 5 В. Попробую сейчас.
Так же все. Вольтметр не хочет правильно работать(.
В целях эксперимента пробовал 42 строку убирать. Вольтметр начинает работать,а датчик разряжения перестает.
а попробуйте не делей использовать, а пропускать цикл лупа
тоесть в начале чиклы делаете замер 1 (по 1.1в) - после чего меняете референс на 5в
в следующей итерации лупа делаете замер 2 по 5в и меняете референс на 1.1
Вот так тоже не работает?
Здравствуйте, nik182. Так и не хочет вольтметр работать.(
а попробуйте не делей использовать, а пропускать цикл лупа
тоесть в начале чиклы делаете замер 1 (по 1.1в) - после чего меняете референс на 5в
в следующей итерации лупа делаете замер 2 по 5в и меняете референс на 1.1
Попробовал, такая же история: неправильные показания вольтметра.
Какие-то неправильные вольты , они делает неправильный ... вольтметр.
Сделал пару замеров этим вольтметром на выводах 5 в и 3.3 В Ардуино и замерил тестером. Получается в в программе после расчета значения вольтметра придеться еще коррекцию делать :
Тогда начинает работать. Но хотелось бы конечно что бы работало как надо.
Так работает. Где то в недрах ардуины засада analogReference(DEFAULT) после первого вызова остальные вызовы не дают результата.
nik 182, так и не хочет вольтметр работать. При нажатии на кнопку резет вольтметр показывает правильно,но после загрузки строки значения разряжения, опять неправильные значения кажет. Спасибо за помощь. Достал я вас с этим вольтметром.
У меня на нано работает. У вас какая плата?
По крайней мере вот эта программа при подаче 1 В на входы А0 и А1 выдает разные коды в соответствии с референсным напряжением.
nik182, ардуино нано. Не знаю так и не работает. Поступил как в 17 посте. Запарил меня этот вольтметр...
Покажате что выводит программа из #20 в терминал при подаче на входы А0 и А1 напряжения 1 вольт. Потом в строках 12 и 20 delay(1) поменяйте на delay(20). У меня на одной плате на Uref висит конденсатор и похоже 1 мс на ней мало для изменения Vref. После увеличения задержки после переключения Uref на этой плате тоже стал нормально мерить. Поиграйте с задержками в этих строчках. Думаю и у вас всё будет мерить нормально.
P.S. Подумал над задержкой и родил вот такую конструкцию. Работает! В 9 строке только присваивается константа, в 10 она пишется в железо, в 11 строке задержка на установку Vref, в 12 собственно чтение. Ну идля второй переменной такая же конструкция.