Как сделать вольтметр

Мишка
Offline
Зарегистрирован: 09.05.2017

maxvalin пишет:

Мишка пишет:

 На выводе 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,спасибо за инфу и ссылки . Буду курить материал.

Мишка
Offline
Зарегистрирован: 09.05.2017

Здравствуйте. Это я опять со своим вольтметром.Вольтметр собрал на 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);




}

 

trembo
trembo аватар
Offline
Зарегистрирован: 08.04.2011

«Недостатки математического образования с наибольшей отчётливостью проявляются в чрезмерной точности численных расчётов» (Карл Фридрих Гаусс)

Источник. ЕвгенийП.:
http://arduino.ru/forum/programmirovanie/vyvod-float-na-serial-monitor#c...

Мишка
Offline
Зарегистрирован: 09.05.2017

Разобрался. Ошибок не выдает, но датчик разряжения перестает работать. Показывает одно значение и не реагирует на изменение разряжения. Может из-за analogReference(INTERNAL) ? Для вольтметра использую внутр. опорное 1.1в, а для датчика разряжения 4.91в. Как сделать так, что бы функция analogReferance(INTERNAL) работала только для аналогового входа A1 ?

dimax
dimax аватар
Offline
Зарегистрирован: 25.12.2013

Мишка,  у МК аналоговый вход всего один, поэтому не возможно привязать к разным входам мультиплексора разный референс. Настраивайте его перед каждым чтением. Ну и паузу в миллисекунду после смены референса. Кстати запятая  в 23 строке так и была задумана? )

Мишка
Offline
Зарегистрирован: 09.05.2017

dimax пишет:

Мишка,  у МК аналоговый вход всего один, поэтому не возможно привязать к разным входам мультиплексора разный референс. Настраивайте его перед каждым чтением. Ну и паузу в миллисекунду после смены референса. Кстати запятая  в 23 строке так и была задумана? )

dimax, как же его настроить...для меня это пока тугова то.  Запятую исправлю)

Иван_
Offline
Зарегистрирован: 23.02.2018

Доброый день maxvalin

Интересует, как решили проблему, что показания напряжения начинаются не с 0. Я с толкнулся с такой же проблемой. Даже при не подключенном источнике напряжения у меня "ЛЕОНАРДО" показывает напряжение 1 вольт (причем аналогичная ситуация на всех аналоговых входах).  Пробовал разные версии программного обеспечения и опорного напряжения все без изменений. Буду признателен за помощь.

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

Иван_ пишет:

Доброый день maxvalin

Интересует, как решили проблему, что показания напряжения начинаются не с 0. Я с толкнулся с такой же проблемой. Даже при не подключенном источнике напряжения у меня "ЛЕОНАРДО" показывает напряжение 1 вольт (причем аналогичная ситуация на всех аналоговых входах).  Пробовал разные версии программного обеспечения и опорного напряжения все без изменений. Буду признателен за помощь.

Думаю, проблема не в показаниях, а в самом напряжении.

Посмотрите осциллографом, что реально происходит на входе.

trembo
trembo аватар
Offline
Зарегистрирован: 08.04.2011

А вы этот " 0 " туда подали чтобы его где-то там ожидать?

Иван_
Offline
Зарегистрирован: 23.02.2018

trembo пишет:
А вы этот " 0 " туда подали чтобы его где-то там ожидать?

Туда это куда и где-то там это где? Может я не понятно написал повторю еще раз. Даже если на аналоговые входы не подается напряжение монитор арбулино фиксирует на них напряжение в размере 1 вольта. Тоесть еще раз повторю 0 никуда не подается. Впрочем если напряжение подается на аналоговый вход то измеряется оно достаточно точо. Покрайней мере достаточно точно отображается на мониторе. Тоесть вопрос сводится так сказать к напряжению холостого тока. О

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

Иван_, что может быть проще!

Если хотите получить на входе 0 Вольт, нужно подать на него 0 Вольт.

Понимаете, 0 Вольт - это не "ничего", а вполне конкретное напряжение. Само собой оно на входе никак не возмется.

trembo
trembo аватар
Offline
Зарегистрирован: 08.04.2011

Подача 0 Вольт означает короткое замыкание с пином подписанным GND

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

trembo пишет:
Подача 0 Вольт означает короткое замыкание с пином подписанным GND

Не обязательно. Это может быть, например, середина делителя между -12В и +12В.

Иван_
Offline
Зарегистрирован: 23.02.2018

andriano пишет:

Иван_, что может быть проще!

Если хотите получить на входе 0 Вольт, нужно подать на него 0 Вольт.

Понимаете, 0 Вольт - это не "ничего", а вполне конкретное напряжение. Само собой оно на входе никак не возмется.

Все может быть надо проверить. Подключу построечное сопротивление и буду замерять ардулиной и контрольным вольтметром. Но всеравно наличие паразитного напряжения в 1 вольт на неподключенном контакте должно быть обосновано и разъяснено дополнительно в мануалах. 

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

Иван_ пишет:

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

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

maxvalin
Offline
Зарегистрирован: 22.02.2016

Иван_ пишет:

Доброый день maxvalin

Интересует, как решили проблему, что показания напряжения начинаются не с 0. Я с толкнулся с такой же проблемой. Даже при не подключенном источнике напряжения у меня "ЛЕОНАРДО" показывает напряжение 1 вольт (причем аналогичная ситуация на всех аналоговых входах).  Пробовал разные версии программного обеспечения и опорного напряжения все без изменений. Буду признателен за помощь.

Люди чесслово, Вы где берете эти леонардо?!))))

Ладн, ничего не имею против. Иван, по сути какое там напряжение будет в "в холостую" нет разницы. Это же МК!- как Вы ему скажете, так он и будет воспринимать "0", хоть при истинном ноле, хоть при 4,99в. Суть понятна? Главное чтоб диапазон влезал и линейность была. А вообще закоротите с нолем и "паразитное напряжение" исчезнет. Вы когда делитель будете делать там в любом случае одно плечо будет притянуто к земле, вот проблема и решится:)

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

 Кстати, Димакс что-то я и не подумал о том чтоб в самом лупе менять настройки для опорника, это реально?скорость в принципе улиточная для МК. У меня замеры ведь раз секунду (примерно) . 

maxvalin
Offline
Зарегистрирован: 22.02.2016

 Имел ввиду переключать напряжение для опрного междуINTERNAL  1.1 и 5ю вольтами.

Мишка
Offline
Зарегистрирован: 09.05.2017

dimax пишет:

Мишка,  у МК аналоговый вход всего один, поэтому не возможно привязать к разным входам мультиплексора разный референс. Настраивайте его перед каждым чтением. Ну и паузу в миллисекунду после смены референса. Кстати запятая  в 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
Offline
Зарегистрирован: 17.08.2015

Мишка пишет:

  Может опять я что то не так понял? Подскажите.

Строка 03.

Гриша
Offline
Зарегистрирован: 27.04.2014

SLKH пишет:

Мишка пишет:

  Может опять я что то не так понял? Подскажите.

Строка 03.

тогда уже и 47я до кучи

SLKH
Offline
Зарегистрирован: 17.08.2015

Гриша пишет:

SLKH пишет:

Мишка пишет:

  Может опять я что то не так понял? Подскажите.

Строка 03.

тогда уже и 47я до кучи

сама по себе стр. 47 вполне нормальна, ошибка в 03.

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

и раз уж что-то пошло не так - нужно выводить в монитор возвращаемые analogRead'ом значения, до дальнейших вычислений/преобразований.

 

 

Мишка
Offline
Зарегистрирован: 09.05.2017

Здравствуйте. Спасибо за помощь. Вольтметр правда так и не работает как нужно(

#include <LiquidCrystal.h>

int C = 0,V1;
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);


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);



C = analogRead(A0);
 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
Offline
Зарегистрирован: 17.08.2015

Мишка пишет:

Здравствуйте. Спасибо за помощь. Вольтметр правда так и не работает как нужно(

#include <LiquidCrystal.h>

int C = 0,V1;
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);


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);



C = analogRead(A0);
 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);

}

 

а как он работает? и как должен ?

если учесть, что он у тя давление на индикатор выводит...

Мишка
Offline
Зарегистрирован: 09.05.2017

SLKH, есть два разных скетча : вольтметр и датчик разряжения. По отдельности они оба работают. Я хотел их объединить и что бы выводилось значение напряжения и значение разряжения на ЛСД 1602. При их объединении в один скетч вольтметр показывает неправильное значение напряжения,датчик разряжения показывает верно. Если нажать кнопку резет, то вольтметр показывает верно, пока не загрузится строка разряжения.  Я об этом писал выше.

SLKH
Offline
Зарегистрирован: 17.08.2015

Мишка пишет:

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.

 

 

 

morfius
morfius аватар
Offline
Зарегистрирован: 06.01.2017

Доброе время. Реально как-то 11 модулей INA226 прикрутить к ардуине? Я так понял, у нее до сотых точность измерения. Это очень круто. А также круто то, что модуль имеет одновременно и амперметр...

Цель мерять напряжение на 11 последовательно подключенных аккумуляторах.

maxvalin пишет:

Мишка пишет:

 На выводе REF сейчас показывает 1,04 В ,тестер так же показывает.  Подскажите как  3-и цифры сделать после запятой.

 

но по требованию к схеме не пошло, хотя и замеры стали ровными с использованием советских, точных резисторов(точность замеров до 2 десятых вольт, соврал )) - 4 десятых возле 70-90 вольтах) при 80-90 VDC. Сейчас взял INA226 (по совету dimax о чем сильно не жалею) вот на нем уже что-то и можно добиться болие точного.

dimax
dimax аватар
Offline
Зарегистрирован: 25.12.2013

morfius, нет. Все доступные варианты уже обсудили в вашей и предыдущей теме.

morfius
morfius аватар
Offline
Зарегистрирован: 06.01.2017

Ну иногда адрес i2c можно поменять. Хотя будет слишком громоздко, зато намного точнее. В спеке INA226 есть какая-то адресность, но я ее не осилил.

dimax
dimax аватар
Offline
Зарегистрирован: 25.12.2013

morfius, не в адресе дело, а в ограничении 26 вольт. Есть более высоковольтные модели, но там уже другие цены.

morfius
morfius аватар
Offline
Зарегистрирован: 06.01.2017

Ina226:

Supply voltage 2.7V- 5.5V
Max VBUS Voltage 36V
Max Current 5A

Как раз то, что мне нужно. У меня напряжение будет не более 30в.

http://s.aliexpress.com/UjaAJBRv

murash20
Offline
Зарегистрирован: 21.03.2016

всех с новым годом. вопрос маленький. как в attiny13 засунуть этот код? может есть возможность его сжать до ее памяти?

#define LEDpin 4
int analogInput = A0;
float vout = 0.0;
float vin = 0.0;
float R1 = 99000.0; // resistance of R1 (100K) -see text!
float R2 = 9900.0; // resistance of R2 (10K) - see text!
int value = 0;
void setup(){
pinMode(LEDpin, OUTPUT);
pinMode(analogInput, INPUT);
}
void loop(){
// read the value at analog input
value = analogRead(analogInput);
vout = (value * 4.15) / 1023.0; // see text
vin = vout / (R2/(R1+R2));
if (vin<0.09) {
vin=0.0;//statement to quash undesired reading !
}
if (vin>=13.8)
{
  digitalWrite(LEDpin,HIGH);
}
if (vin<13.5)
{
 digitalWrite(LEDpin,LOW); 
}
delay(500);
}

 

Гриша
Offline
Зарегистрирован: 27.04.2014

murash20 пишет:

всех с новым годом. вопрос маленький. как в attiny13 засунуть этот код? может есть возможность его сжать до ее памяти?

#define LEDpin 4
int analogInput = A0;
float vout = 0.0;
float vin = 0.0;
float R1 = 99000.0; // resistance of R1 (100K) -see text!
float R2 = 9900.0; // resistance of R2 (10K) - see text!
int value = 0;
void setup(){
pinMode(LEDpin, OUTPUT);
pinMode(analogInput, INPUT);
}
void loop(){
// read the value at analog input
value = analogRead(analogInput);
vout = (value * 4.15) / 1023.0; // see text
vin = vout / (R2/(R1+R2));
if (vin<0.09) {
vin=0.0;//statement to quash undesired reading !
}
if (vin>=13.8)
{
  digitalWrite(LEDpin,HIGH);
}
if (vin<13.5)
{
 digitalWrite(LEDpin,LOW); 
}
delay(500);
}

 

вот вы отчаяный зачем такая точность float ? да и формула просто атас - упрощайте  эти вещи ... строка 16 на кой там в таком виде?

Гриша
Offline
Зарегистрирован: 27.04.2014

UPD  подсказка: "Если правую и левую часть равинства умножить на одно и тоже число, то равенство сохранится" главное из диапазона переменных не вылететь.

trembo
trembo аватар
Offline
Зарегистрирован: 08.04.2011

У вас R1 и R2 константы.
Посчитайте чему равно 1/ (R2/(R1+R2))  ( подсказка: равно 11)
и не занимайтесь никому не нужными вычислениями.

Умножить все числа на 10 и использовать unsigned int.

nik182
Онлайн
Зарегистрирован: 04.05.2015

сделать loop так:

void loop(){
value = analogRead(analogInput);
if (value>=310)
{
  digitalWrite(LEDpin,HIGH);
};
if (value<300)
{
 digitalWrite(LEDpin,LOW); 
};
delay(500);
}

 

murash20
Offline
Зарегистрирован: 21.03.2016

чтото туплю. получилось максимально вот это. unsigned int нельзя, так как измеряются десятые. 

void setup(){
pinMode(9, OUTPUT);
analogReference(DEFAULT);
}
void loop(){
float vin = ((analogRead(A0) * 4.15) / 1023.0) / (9900.0/(99000.0+9900.0));
if (vin<0.09) {
vin=0.0;//statement to quash undesired reading !
}
if (vin>=13.8)
{
  digitalWrite(9,HIGH);
}
if (vin<13.5)
{
 digitalWrite(9,LOW); 
}
delay(500);
}

 

nik182
Онлайн
Зарегистрирован: 04.05.2015

Да уж... Результат измерения АЦП целое число от 0 до 1023. Никаких десятых нет. Это вы для своего удобства их в десятые пересчитываете. Вам уже сказали, что глупо забивать память камня каждый раз считая то, что для функционала программы лишнее. Пересчитайте на калькуляторе ваши 13.8 и 13.5 в данные АЦП и получите как раз 310 и 300 при ваших резисторах делителя и питании 4.15 вольта. И программа уместится в камень и ещё место останется так же светодиодом превышение температуры ОЖ индицировать.     

Гриша
Offline
Зарегистрирован: 27.04.2014

murash20 пишет:

чтото туплю. получилось максимально вот это. unsigned int нельзя, так как измеряются десятые. 

Это называется "не туплю, а тупо не знаю", для понимания чего Вам написали, нужно понимать как работает АЦП (до уровня пропорции, обычной математической пропорции). Знать Закон Ома и понимать его, понимать для чего используется делитель напряжения. В результате этих знаний  вся математика МК сводится к коду АЦП, а сама математика делается на листочке бумаги, один раз и не МК а разработчиком.

Собственно это для вас и сделал, nik182

murash20
Offline
Зарегистрирован: 21.03.2016

всем спасибо, что ткнули носом в нужное направление. получилось как-то так.


float val = 0;
void setup()
{
pinMode(9,OUTPUT); 
analogReference(DEFAULT);
}
void loop()
{
val =analogRead(A0);
if(val>=303)
{digitalWrite(9,HIGH);}
if(val<297)
{digitalWrite(9,LOW);}
}

 

nik182
Онлайн
Зарегистрирован: 04.05.2015

val должен быть объявлен как int а не float 

Гриша
Offline
Зарегистрирован: 27.04.2014

nik182 пишет:

val должен быть объявлен как int а не float 

я тоже выше писал об этом, забудьте о float вообще, нет его в ардуино для Вас.

aswerzod
Offline
Зарегистрирован: 24.05.2019

http://radiostorage.net/4660-skhema-cifrovogo-ampermetra-0-10a-na-mikrok...

Помогиту пожалуйста написать на ардуино прошивку вольтамперметра. Мне надо сдовать на дипломную работу

Гриша
Offline
Зарегистрирован: 27.04.2014

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

lazy-fox
Offline
Зарегистрирован: 22.08.2014

Если контроллер трёхвольтовый, а измерения будут в диапазоне от 0 до 50 вольт подойдут такие номиналы делителя: R1: 100kOm, R2: 6.8kOm? Для защиты контроллера от высокого напряжения имеет смысл применить 3,3-вольтный стабилитрон, например 1N4728?

Гриша
Offline
Зарегистрирован: 27.04.2014

lazy-fox пишет:

Если контроллер трёхвольтовый, а измерения будут в диапазоне от 0 до 50 вольт подойдут такие номиналы делителя: R1: 100kOm, R2: 6.8kOm? Для защиты контроллера от высокого напряжения имеет смысл применить 3,3-вольтный стабилитрон, например 1N4728?

можно попробовать, если упретесь в предел измерения поднимите за верхнее плече делителя. 

О применении стабилитрона для защиты написано очень много информации в том числе и противоречивой. ИМХО - 2 быстрых диода    Ultra Fast Switching Diodes 1N4148 - будут полезнее... и маленький конденсатор в среднюю точку. подобный вопрос пару месяцев назад обсуждали уже - не смог вспомнить в каком топике.