На выводе REF сейчас показывает 1,04 В ,тестер так же показывает. Подскажите как 3-и цифры сделать после запятой.
Вам такая точность нужна а вы хотите на делителе из неточных резисторов + 8-битным АЦП добиться? Я бы сам задал подобный вопрос несколько месяцев назад)))
Забейте)) Если и в правду хотите такой точности тогда купите соответствующие "модули" тоисть хороший источник опорного напряжения (я например начинал с малого и купил для начала LM4040, инфа по подключению и по опорникам вот: https://acdc.foxylab.com/node/49) Учтите что номинал у них разный и не берите 5-ти вольтовые а например LM4040-N-3.0 - 3,0 В; и делить проще и разброс меньше будет к 30 вольтам.
но по требованию к схеме не пошло, хотя и замеры стали ровными с использованием советских, точных резисторов(точность замеров до 2 десятых вольт, соврал )) - 4 десятых возле 70-90 вольтах) при 80-90 VDC. Сейчас взял INA226 (по совету dimax о чем сильно не жалею) вот на нем уже что-то и можно добиться болие точного.
Здравствуйте. Это я опять со своим вольтметром.Вольтметр собрал на 5 в. Работает. Собрал еще схему для замера разряжения с датчиком давления. Оба скетча работают по отдельности, новместе не хотят.При проверке скетча программа выдает ошибку:ivalue required as left operand of assignment(значения, требуемые в качестве левого оператора присваивания). Ошибку показывает в строке : C1=((4.91/1023)*C) . Подскажите,что я делаю не так? Особо не пинайте,если скетч корявый. Только начинаю осваивать.
#include <LiquidCrystal.h>
int V1=0; // Аналоговый вход A1 для замера напряжения
int Dat=0; //Аналоговый вход 0 для подключения датчика разряжения
int C = 0;
float V2=0;
float V3=0;
float V4=0;
float C1 = 0;
float P = 0;
LiquidCrystal lcd(2,3,4,5,6,7);
void setup() {
lcd.begin(16,2);
lcd.clear();
analogReference(INTERNAL);
}
void loop() {
V1= analogRead(A1);
V2= (1.1/1023.0)*V1 ;
V3= V2/(3.1/(11.0+3.1));
V4= 1.0385*V3;
if (V4<0.27) {
V4=0.0;
}
C = analogRead(Dat);
C1 = ((4.91/1023)*C);
P = (20 * C1 + 12);
lcd.setCursor(0,0);
lcd.print("Voltmetr:");
lcd.setCursor(0,10);
lcd.print(V4,3);
lcd.setCursor(0,16);
lcd.print("B");
delay(1000);
lcd.setCursor(0,1);
lcd.print("DAD:");
lcd.setCursor(5,1);
lcd.print(P);
lcd.setCursor(9,1);
lcd.print("kPa");
delay(500);
}
Разобрался. Ошибок не выдает, но датчик разряжения перестает работать. Показывает одно значение и не реагирует на изменение разряжения. Может из-за analogReference(INTERNAL) ? Для вольтметра использую внутр. опорное 1.1в, а для датчика разряжения 4.91в. Как сделать так, что бы функция analogReferance(INTERNAL) работала только для аналогового входа A1 ?
Мишка, у МК аналоговый вход всего один, поэтому не возможно привязать к разным входам мультиплексора разный референс. Настраивайте его перед каждым чтением. Ну и паузу в миллисекунду после смены референса. Кстати запятая в 23 строке так и была задумана? )
Мишка, у МК аналоговый вход всего один, поэтому не возможно привязать к разным входам мультиплексора разный референс. Настраивайте его перед каждым чтением. Ну и паузу в миллисекунду после смены референса. Кстати запятая в 23 строке так и была задумана? )
dimax, как же его настроить...для меня это пока тугова то. Запятую исправлю)
Интересует, как решили проблему, что показания напряжения начинаются не с 0. Я с толкнулся с такой же проблемой. Даже при не подключенном источнике напряжения у меня "ЛЕОНАРДО" показывает напряжение 1 вольт (причем аналогичная ситуация на всех аналоговых входах). Пробовал разные версии программного обеспечения и опорного напряжения все без изменений. Буду признателен за помощь.
Интересует, как решили проблему, что показания напряжения начинаются не с 0. Я с толкнулся с такой же проблемой. Даже при не подключенном источнике напряжения у меня "ЛЕОНАРДО" показывает напряжение 1 вольт (причем аналогичная ситуация на всех аналоговых входах). Пробовал разные версии программного обеспечения и опорного напряжения все без изменений. Буду признателен за помощь.
Думаю, проблема не в показаниях, а в самом напряжении.
Посмотрите осциллографом, что реально происходит на входе.
А вы этот " 0 " туда подали чтобы его где-то там ожидать?
Туда это куда и где-то там это где? Может я не понятно написал повторю еще раз. Даже если на аналоговые входы не подается напряжение монитор арбулино фиксирует на них напряжение в размере 1 вольта. Тоесть еще раз повторю 0 никуда не подается. Впрочем если напряжение подается на аналоговый вход то измеряется оно достаточно точо. Покрайней мере достаточно точно отображается на мониторе. Тоесть вопрос сводится так сказать к напряжению холостого тока. О
Если хотите получить на входе 0 Вольт, нужно подать на него 0 Вольт.
Понимаете, 0 Вольт - это не "ничего", а вполне конкретное напряжение. Само собой оно на входе никак не возмется.
Все может быть надо проверить. Подключу построечное сопротивление и буду замерять ардулиной и контрольным вольтметром. Но всеравно наличие паразитного напряжения в 1 вольт на неподключенном контакте должно быть обосновано и разъяснено дополнительно в мануалах.
Интересует, как решили проблему, что показания напряжения начинаются не с 0. Я с толкнулся с такой же проблемой. Даже при не подключенном источнике напряжения у меня "ЛЕОНАРДО" показывает напряжение 1 вольт (причем аналогичная ситуация на всех аналоговых входах). Пробовал разные версии программного обеспечения и опорного напряжения все без изменений. Буду признателен за помощь.
Люди чесслово, Вы где берете эти леонардо?!))))
Ладн, ничего не имею против. Иван, по сути какое там напряжение будет в "в холостую" нет разницы. Это же МК!- как Вы ему скажете, так он и будет воспринимать "0", хоть при истинном ноле, хоть при 4,99в. Суть понятна? Главное чтоб диапазон влезал и линейность была. А вообще закоротите с нолем и "паразитное напряжение" исчезнет. Вы когда делитель будете делать там в любом случае одно плечо будет притянуто к земле, вот проблема и решится:)
Не забывайте сделать вывод напряжения в ком порт, это очень поможет понять как оно все там работает ибо после каждой манипуляции будут видны все изменения.
Кстати, Димакс что-то я и не подумал о том чтоб в самом лупе менять настройки для опорника, это реально?скорость в принципе улиточная для МК. У меня замеры ведь раз секунду (примерно) .
Мишка, у МК аналоговый вход всего один, поэтому не возможно привязать к разным входам мультиплексора разный референс. Настраивайте его перед каждым чтением. Ну и паузу в миллисекунду после смены референса. Кстати запятая в 23 строке так и была задумана? )
Здравствуйте. Сделал вроде бы как советовали. Датчик разряжения заработал,вольтметр тоже ,но зараза неправильные значения кажет. Если нажать кнопку резет на ардуино,то в первую секунду вольтметр показывает правильное значение,но после загрузки второй строки (значение разряжения),вольтметр опять начинает врать. При замере тестером напряжения на выводе AREF оно скачет от 1,1 до 5В. Ну так понимаю и было задумано: происходит переключение между референсами.
#include <LiquidCrystal.h>
int V1=0; // Аналоговый вход A1 для замера напряжения
int Dat=0; //Аналоговый вход 0 для подключения датчика разряжения
int C = 0;
float V2=0;
float V3=0;
float V4=0;
float C1 = 0;
float P = 0;
LiquidCrystal lcd(2,3,4,5,6,7);
void setup() {
lcd.begin(16,2);
lcd.clear();
}
void loop() {
analogReference(INTERNAL);
delay(1);
analogRead(A1);
V1= analogRead(A1);
V2= (1,1/1023.0)*V1 ;
V3= V2/(3.1/(11.0+3.1));
V4= 1.0385*V3;
if (V4<0.27) {
V4=0.0;
}
lcd.setCursor(0,0);
lcd.print("V");
lcd.setCursor(6,0);
lcd.print(V4,3);
lcd.setCursor(12,0);
lcd.print("B");
delay(500);
analogReference(DEFAULT);
delay(1);
analogRead(A0);
C = analogRead(Dat);
C1 = ((5.0/1023)*C);
P = (20 * C1 + 12);
lcd.setCursor(0,1);
lcd.print("DAD");
lcd.setCursor(5,1);
lcd.print(P,2);
lcd.setCursor(11,1);
lcd.print("kPa");
delay(500);
}
SLKH, есть два разных скетча : вольтметр и датчик разряжения. По отдельности они оба работают. Я хотел их объединить и что бы выводилось значение напряжения и значение разряжения на ЛСД 1602. При их объединении в один скетч вольтметр показывает неправильное значение напряжения,датчик разряжения показывает верно. Если нажать кнопку резет, то вольтметр показывает верно, пока не загрузится строка разряжения. Я об этом писал выше.
SLKH, есть два разных скетча : вольтметр и датчик разряжения. По отдельности они оба работают. Я хотел их объединить и что бы выводилось значение напряжения и значение разряжения на ЛСД 1602. При их объединении в один скетч вольтметр показывает неправильное значение напряжения,датчик разряжения показывает верно. Если нажать кнопку резет, то вольтметр показывает верно, пока не загрузится строка разряжения. Я об этом писал выше.
"вольтметр показывает неправильное значение" - это вообще ни о чем.
Для скетча из #122:
1. какое напряжение на пине A1 ? (измерить внешним вольтметром)
2. чему равно значение v1 в стр. 25 (вывести в монитор!)
================
Notes and Warnings
After changing the analog reference, the first few readings from analogRead() may not be accurate.
Доброе время. Реально как-то 11 модулей INA226 прикрутить к ардуине? Я так понял, у нее до сотых точность измерения. Это очень круто. А также круто то, что модуль имеет одновременно и амперметр...
Цель мерять напряжение на 11 последовательно подключенных аккумуляторах.
maxvalin пишет:
Мишка пишет:
На выводе REF сейчас показывает 1,04 В ,тестер так же показывает. Подскажите как 3-и цифры сделать после запятой.
но по требованию к схеме не пошло, хотя и замеры стали ровными с использованием советских, точных резисторов(точность замеров до 2 десятых вольт, соврал )) - 4 десятых возле 70-90 вольтах) при 80-90 VDC. Сейчас взял INA226 (по совету dimax о чем сильно не жалею) вот на нем уже что-то и можно добиться болие точного.
UPD подсказка: "Если правую и левую часть равинства умножить на одно и тоже число, то равенство сохранится" главное из диапазона переменных не вылететь.
Да уж... Результат измерения АЦП целое число от 0 до 1023. Никаких десятых нет. Это вы для своего удобства их в десятые пересчитываете. Вам уже сказали, что глупо забивать память камня каждый раз считая то, что для функционала программы лишнее. Пересчитайте на калькуляторе ваши 13.8 и 13.5 в данные АЦП и получите как раз 310 и 300 при ваших резисторах делителя и питании 4.15 вольта. И программа уместится в камень и ещё место останется так же светодиодом превышение температуры ОЖ индицировать.
чтото туплю. получилось максимально вот это. unsigned int нельзя, так как измеряются десятые.
Это называется "не туплю, а тупо не знаю", для понимания чего Вам написали, нужно понимать как работает АЦП (до уровня пропорции, обычной математической пропорции). Знать Закон Ома и понимать его, понимать для чего используется делитель напряжения. В результате этих знаний вся математика МК сводится к коду АЦП, а сама математика делается на листочке бумаги, один раз и не МК а разработчиком.
Если контроллер трёхвольтовый, а измерения будут в диапазоне от 0 до 50 вольт подойдут такие номиналы делителя: R1: 100kOm, R2: 6.8kOm? Для защиты контроллера от высокого напряжения имеет смысл применить 3,3-вольтный стабилитрон, например 1N4728?
Если контроллер трёхвольтовый, а измерения будут в диапазоне от 0 до 50 вольт подойдут такие номиналы делителя: R1: 100kOm, R2: 6.8kOm? Для защиты контроллера от высокого напряжения имеет смысл применить 3,3-вольтный стабилитрон, например 1N4728?
можно попробовать, если упретесь в предел измерения поднимите за верхнее плече делителя.
О применении стабилитрона для защиты написано очень много информации в том числе и противоречивой. ИМХО - 2 быстрых диода Ultra Fast Switching Diodes 1N4148 - будут полезнее... и маленький конденсатор в среднюю точку. подобный вопрос пару месяцев назад обсуждали уже - не смог вспомнить в каком топике.
Собираю вольтметр на ардуино, перепробовал разные скечи, менял сами ардуинки, но у всех одна проблема-- показывает постоянно скачущее напряжение даже если ко входу ничего не подключено.
Какое напряжение измеряете? Настраивать постоянное надо на батарейке. Тогда шуметь должно не больше чем даёт мануал. Если переменное, то надо сихронизировать с нулём и считывать через 5 мс или считать RMS.
На выводе REF сейчас показывает 1,04 В ,тестер так же показывает. Подскажите как 3-и цифры сделать после запятой.
Вам такая точность нужна а вы хотите на делителе из неточных резисторов + 8-битным АЦП добиться? Я бы сам задал подобный вопрос несколько месяцев назад)))
Забейте)) Если и в правду хотите такой точности тогда купите соответствующие "модули" тоисть хороший источник опорного напряжения (я например начинал с малого и купил для начала LM4040, инфа по подключению и по опорникам вот: https://acdc.foxylab.com/node/49) Учтите что номинал у них разный и не берите 5-ти вольтовые а например LM4040-N-3.0 - 3,0 В; и делить проще и разброс меньше будет к 30 вольтам.
но по требованию к схеме не пошло, хотя и замеры стали ровными с использованием советских, точных резисторов(точность замеров до 2 десятых вольт, соврал )) - 4 десятых возле 70-90 вольтах) при 80-90 VDC. Сейчас взял INA226 (по совету dimax о чем сильно не жалею) вот на нем уже что-то и можно добиться болие точного.
а вообще- СРОЧНО прочитать https://www.dropbox.com/s/7df0u6r7pihlrfo/Boll-Analogovie-interfeisy-MK.djvu?dl=0
хотя бы саму главу о АЦП (она не большая)
maxvalin,спасибо за инфу и ссылки . Буду курить материал.
Здравствуйте. Это я опять со своим вольтметром.Вольтметр собрал на 5 в. Работает. Собрал еще схему для замера разряжения с датчиком давления. Оба скетча работают по отдельности, новместе не хотят.При проверке скетча программа выдает ошибку:ivalue required as left operand of assignment(значения, требуемые в качестве левого оператора присваивания). Ошибку показывает в строке : C1=((4.91/1023)*C) . Подскажите,что я делаю не так? Особо не пинайте,если скетч корявый. Только начинаю осваивать.
«Недостатки математического образования с наибольшей отчётливостью проявляются в чрезмерной точности численных расчётов» (Карл Фридрих Гаусс)
Источник. ЕвгенийП.:
http://arduino.ru/forum/programmirovanie/vyvod-float-na-serial-monitor#c...
Разобрался. Ошибок не выдает, но датчик разряжения перестает работать. Показывает одно значение и не реагирует на изменение разряжения. Может из-за analogReference(INTERNAL) ? Для вольтметра использую внутр. опорное 1.1в, а для датчика разряжения 4.91в. Как сделать так, что бы функция analogReferance(INTERNAL) работала только для аналогового входа A1 ?
Мишка, у МК аналоговый вход всего один, поэтому не возможно привязать к разным входам мультиплексора разный референс. Настраивайте его перед каждым чтением. Ну и паузу в миллисекунду после смены референса. Кстати запятая в 23 строке так и была задумана? )
Мишка, у МК аналоговый вход всего один, поэтому не возможно привязать к разным входам мультиплексора разный референс. Настраивайте его перед каждым чтением. Ну и паузу в миллисекунду после смены референса. Кстати запятая в 23 строке так и была задумана? )
dimax, как же его настроить...для меня это пока тугова то. Запятую исправлю)
Доброый день maxvalin
Интересует, как решили проблему, что показания напряжения начинаются не с 0. Я с толкнулся с такой же проблемой. Даже при не подключенном источнике напряжения у меня "ЛЕОНАРДО" показывает напряжение 1 вольт (причем аналогичная ситуация на всех аналоговых входах). Пробовал разные версии программного обеспечения и опорного напряжения все без изменений. Буду признателен за помощь.
Доброый день maxvalin
Интересует, как решили проблему, что показания напряжения начинаются не с 0. Я с толкнулся с такой же проблемой. Даже при не подключенном источнике напряжения у меня "ЛЕОНАРДО" показывает напряжение 1 вольт (причем аналогичная ситуация на всех аналоговых входах). Пробовал разные версии программного обеспечения и опорного напряжения все без изменений. Буду признателен за помощь.
Думаю, проблема не в показаниях, а в самом напряжении.
Посмотрите осциллографом, что реально происходит на входе.
А вы этот " 0 " туда подали чтобы его где-то там ожидать?
Туда это куда и где-то там это где? Может я не понятно написал повторю еще раз. Даже если на аналоговые входы не подается напряжение монитор арбулино фиксирует на них напряжение в размере 1 вольта. Тоесть еще раз повторю 0 никуда не подается. Впрочем если напряжение подается на аналоговый вход то измеряется оно достаточно точо. Покрайней мере достаточно точно отображается на мониторе. Тоесть вопрос сводится так сказать к напряжению холостого тока. О
Иван_, что может быть проще!
Если хотите получить на входе 0 Вольт, нужно подать на него 0 Вольт.
Понимаете, 0 Вольт - это не "ничего", а вполне конкретное напряжение. Само собой оно на входе никак не возмется.
Подача 0 Вольт означает короткое замыкание с пином подписанным GND
Не обязательно. Это может быть, например, середина делителя между -12В и +12В.
Иван_, что может быть проще!
Если хотите получить на входе 0 Вольт, нужно подать на него 0 Вольт.
Понимаете, 0 Вольт - это не "ничего", а вполне конкретное напряжение. Само собой оно на входе никак не возмется.
Все может быть надо проверить. Подключу построечное сопротивление и буду замерять ардулиной и контрольным вольтметром. Но всеравно наличие паразитного напряжения в 1 вольт на неподключенном контакте должно быть обосновано и разъяснено дополнительно в мануалах.
Но всеравно наличие паразитного напряжения в 1 вольт на неподключенном контакте должно быть обосновано и разъяснено дополнительно в мануалах.
Наличие паразитного напряжения в 0 вольт также должно быть обосновано и разъяснено в мануалах.
Доброый день maxvalin
Интересует, как решили проблему, что показания напряжения начинаются не с 0. Я с толкнулся с такой же проблемой. Даже при не подключенном источнике напряжения у меня "ЛЕОНАРДО" показывает напряжение 1 вольт (причем аналогичная ситуация на всех аналоговых входах). Пробовал разные версии программного обеспечения и опорного напряжения все без изменений. Буду признателен за помощь.
Люди чесслово, Вы где берете эти леонардо?!))))
Ладн, ничего не имею против. Иван, по сути какое там напряжение будет в "в холостую" нет разницы. Это же МК!- как Вы ему скажете, так он и будет воспринимать "0", хоть при истинном ноле, хоть при 4,99в. Суть понятна? Главное чтоб диапазон влезал и линейность была. А вообще закоротите с нолем и "паразитное напряжение" исчезнет. Вы когда делитель будете делать там в любом случае одно плечо будет притянуто к земле, вот проблема и решится:)
Не забывайте сделать вывод напряжения в ком порт, это очень поможет понять как оно все там работает ибо после каждой манипуляции будут видны все изменения.
Кстати, Димакс что-то я и не подумал о том чтоб в самом лупе менять настройки для опорника, это реально?скорость в принципе улиточная для МК. У меня замеры ведь раз секунду (примерно) .
Имел ввиду переключать напряжение для опрного междуINTERNAL 1.1 и 5ю вольтами.
Мишка, у МК аналоговый вход всего один, поэтому не возможно привязать к разным входам мультиплексора разный референс. Настраивайте его перед каждым чтением. Ну и паузу в миллисекунду после смены референса. Кстати запятая в 23 строке так и была задумана? )
Здравствуйте. Сделал вроде бы как советовали. Датчик разряжения заработал,вольтметр тоже ,но зараза неправильные значения кажет. Если нажать кнопку резет на ардуино,то в первую секунду вольтметр показывает правильное значение,но после загрузки второй строки (значение разряжения),вольтметр опять начинает врать. При замере тестером напряжения на выводе AREF оно скачет от 1,1 до 5В. Ну так понимаю и было задумано: происходит переключение между референсами.
Может опять я что то не так понял? Подскажите.
Может опять я что то не так понял? Подскажите.
Строка 03.
Может опять я что то не так понял? Подскажите.
Строка 03.
тогда уже и 47я до кучи
Может опять я что то не так понял? Подскажите.
Строка 03.
тогда уже и 47я до кучи
и ненормальна разная система обозначений пинов в разных строках.
и раз уж что-то пошло не так - нужно выводить в монитор возвращаемые analogRead'ом значения, до дальнейших вычислений/преобразований.
Здравствуйте. Спасибо за помощь. Вольтметр правда так и не работает как нужно(
Здравствуйте. Спасибо за помощь. Вольтметр правда так и не работает как нужно(
а как он работает? и как должен ?
если учесть, что он у тя давление на индикатор выводит...
SLKH, есть два разных скетча : вольтметр и датчик разряжения. По отдельности они оба работают. Я хотел их объединить и что бы выводилось значение напряжения и значение разряжения на ЛСД 1602. При их объединении в один скетч вольтметр показывает неправильное значение напряжения,датчик разряжения показывает верно. Если нажать кнопку резет, то вольтметр показывает верно, пока не загрузится строка разряжения. Я об этом писал выше.
SLKH, есть два разных скетча : вольтметр и датчик разряжения. По отдельности они оба работают. Я хотел их объединить и что бы выводилось значение напряжения и значение разряжения на ЛСД 1602. При их объединении в один скетч вольтметр показывает неправильное значение напряжения,датчик разряжения показывает верно. Если нажать кнопку резет, то вольтметр показывает верно, пока не загрузится строка разряжения. Я об этом писал выше.
"вольтметр показывает неправильное значение" - это вообще ни о чем.
Для скетча из #122:
1. какое напряжение на пине A1 ? (измерить внешним вольтметром)
2. чему равно значение v1 в стр. 25 (вывести в монитор!)
================
Notes and Warnings
After changing the analog reference, the first few readings from
analogRead()
may not be accurate.Доброе время. Реально как-то 11 модулей INA226 прикрутить к ардуине? Я так понял, у нее до сотых точность измерения. Это очень круто. А также круто то, что модуль имеет одновременно и амперметр...
Цель мерять напряжение на 11 последовательно подключенных аккумуляторах.
На выводе REF сейчас показывает 1,04 В ,тестер так же показывает. Подскажите как 3-и цифры сделать после запятой.
но по требованию к схеме не пошло, хотя и замеры стали ровными с использованием советских, точных резисторов(точность замеров до 2 десятых вольт, соврал )) - 4 десятых возле 70-90 вольтах) при 80-90 VDC. Сейчас взял INA226 (по совету dimax о чем сильно не жалею) вот на нем уже что-то и можно добиться болие точного.
morfius, нет. Все доступные варианты уже обсудили в вашей и предыдущей теме.
Ну иногда адрес i2c можно поменять. Хотя будет слишком громоздко, зато намного точнее. В спеке INA226 есть какая-то адресность, но я ее не осилил.
morfius, не в адресе дело, а в ограничении 26 вольт. Есть более высоковольтные модели, но там уже другие цены.
Ina226:
Supply voltage 2.7V- 5.5V
Max VBUS Voltage 36V
Max Current 5A
Как раз то, что мне нужно. У меня напряжение будет не более 30в.
http://s.aliexpress.com/UjaAJBRv
всех с новым годом. вопрос маленький. как в attiny13 засунуть этот код? может есть возможность его сжать до ее памяти?
всех с новым годом. вопрос маленький. как в attiny13 засунуть этот код? может есть возможность его сжать до ее памяти?
вот вы отчаяный зачем такая точность float ? да и формула просто атас - упрощайте эти вещи ... строка 16 на кой там в таком виде?
UPD подсказка: "Если правую и левую часть равинства умножить на одно и тоже число, то равенство сохранится" главное из диапазона переменных не вылететь.
У вас R1 и R2 константы.
Посчитайте чему равно 1/ (R2/(R1+R2)) ( подсказка: равно 11)
и не занимайтесь никому не нужными вычислениями.
Умножить все числа на 10 и использовать unsigned int.
сделать loop так:
чтото туплю. получилось максимально вот это. unsigned int нельзя, так как измеряются десятые.
Да уж... Результат измерения АЦП целое число от 0 до 1023. Никаких десятых нет. Это вы для своего удобства их в десятые пересчитываете. Вам уже сказали, что глупо забивать память камня каждый раз считая то, что для функционала программы лишнее. Пересчитайте на калькуляторе ваши 13.8 и 13.5 в данные АЦП и получите как раз 310 и 300 при ваших резисторах делителя и питании 4.15 вольта. И программа уместится в камень и ещё место останется так же светодиодом превышение температуры ОЖ индицировать.
чтото туплю. получилось максимально вот это. unsigned int нельзя, так как измеряются десятые.
Это называется "не туплю, а тупо не знаю", для понимания чего Вам написали, нужно понимать как работает АЦП (до уровня пропорции, обычной математической пропорции). Знать Закон Ома и понимать его, понимать для чего используется делитель напряжения. В результате этих знаний вся математика МК сводится к коду АЦП, а сама математика делается на листочке бумаги, один раз и не МК а разработчиком.
Собственно это для вас и сделал, nik182
всем спасибо, что ткнули носом в нужное направление. получилось как-то так.
val должен быть объявлен как int а не float
val должен быть объявлен как int а не float
я тоже выше писал об этом, забудьте о float вообще, нет его в ардуино для Вас.
http://radiostorage.net/4660-skhema-cifrovogo-ampermetra-0-10a-na-mikrok...
Помогиту пожалуйста написать на ардуино прошивку вольтамперметра. Мне надо сдовать на дипломную работу
aswerzod, соболезную, вы разделом ошиблись. В этом помогают, а не делают вместо. Удачи.
Если контроллер трёхвольтовый, а измерения будут в диапазоне от 0 до 50 вольт подойдут такие номиналы делителя: R1: 100kOm, R2: 6.8kOm? Для защиты контроллера от высокого напряжения имеет смысл применить 3,3-вольтный стабилитрон, например 1N4728?
Если контроллер трёхвольтовый, а измерения будут в диапазоне от 0 до 50 вольт подойдут такие номиналы делителя: R1: 100kOm, R2: 6.8kOm? Для защиты контроллера от высокого напряжения имеет смысл применить 3,3-вольтный стабилитрон, например 1N4728?
можно попробовать, если упретесь в предел измерения поднимите за верхнее плече делителя.
О применении стабилитрона для защиты написано очень много информации в том числе и противоречивой. ИМХО - 2 быстрых диода Ultra Fast Switching Diodes 1N4148 - будут полезнее... и маленький конденсатор в среднюю точку. подобный вопрос пару месяцев назад обсуждали уже - не смог вспомнить в каком топике.
Здравствуйте, помогите разобраться пожалуйста.
Собираю вольтметр на ардуино, перепробовал разные скечи, менял сами ардуинки, но у всех одна проблема-- показывает постоянно скачущее напряжение даже если ко входу ничего не подключено.
Если хотите получить что-то кроме глума, приводите скетч и схему.
Схема стандартная на делителе напряжения
Код:
value * 5.0 << вот 5.0 вообще не факт.
А если ко входу ничего не подключено, то сам бог велел скакать напряжению.
Какое напряжение измеряете? Настраивать постоянное надо на батарейке. Тогда шуметь должно не больше чем даёт мануал. Если переменное, то надо сихронизировать с нулём и считывать через 5 мс или считать RMS.