51

Re: Вольтамперметр для блока питания (Arduino)

Больше похоже на наводку, замкните вход, будет ли ток равен 0?

52

Re: Вольтамперметр для блока питания (Arduino)

поменял А2 А3, проказания 0.16А

53 (2022-01-30 13:07:25 отредактировано sanj76a)

Re: Вольтамперметр для блока питания (Arduino)

что нужно поменять в скетче при шунте 0.05

54

Re: Вольтамперметр для блока питания (Arduino)

Коэффициент 0,200 вместо 1,000

55

Re: Вольтамперметр для блока питания (Arduino)

почему-то А3 не работает, Вернул на А2 работает
Вот тест:
http://forum.rcl-radio.ru/uploads/images/2022/01/6b341d8ebf690949c33e8878d2e3be81.png

56

Re: Вольтамперметр для блока питания (Arduino)

А3 в схеме просто изменяет напряжение GND, это сделано для устранения погрешности нуля, при измерении тока.

57

Re: Вольтамперметр для блока питания (Arduino)

liman324 пишет:

А3 в схеме просто изменяет напряжение GND, это сделано для устранения погрешности нуля, при измерении тока.

ясделал: А2-GND, А3-вход измерения
тек не работает

58

Re: Вольтамперметр для блока питания (Arduino)

Возможно А3 неисправен, это можно проверить только тестовым скетчем, подав на него напряжение 1,5 В

59 (2022-01-30 16:03:11 отредактировано sanj76a)

Re: Вольтамперметр для блока питания (Arduino)

liman324 пишет:

Возможно А3 неисправен, это можно проверить только тестовым скетчем, подав на него напряжение 1,5 В

А1 А2 А3 монитор порта выдает при подаче 1.5в  -24298

60

Re: Вольтамперметр для блока питания (Arduino)

Значит А3 исправен

ясделал: А2-GND, А3-вход измерения
тек не работает

А скетч меняли?

61

Re: Вольтамперметр для блока питания (Arduino)

sanj76a пишет:

что нужно поменять в скетче при шунте 0.05

62 (2022-01-30 16:29:49 отредактировано sanj76a)

Re: Вольтамперметр для блока питания (Arduino)

liman324 пишет:

Коэффициент 0,200 вместо 1,000

вы наверно не поняли я поменял входа и шунт 0.05

больше ничего не менял

63

Re: Вольтамперметр для блока питания (Arduino)

Когда меняете А2 на А3 скетч тоже нужно менять

64

Re: Вольтамперметр для блока питания (Arduino)

a2 = ads.readADC_SingleEnded(2);a_2 = a2*0.03125*kalib2/10;
   if(a_2>=i_reg){digitalWrite(10,LOW);stop=1;break;}else{digitalWrite(10,HIGH);}delay(20);
   a3 = ads.readADC_SingleEnded(3);a_3 = a3*0.03125*kalib2/10;delay(5);
   a_ob2=a_ob2+a_2;a_ob3=a_ob3+a_3;}
   a_3=a_ob3/10;a_ob3=0;a_2=a_ob2/10;a_ob2=0;i=0;a_2=a_2-a_3;

менять сдесь   а2 , а3

65

Re: Вольтамперметр для блока питания (Arduino)

да

66

Re: Вольтамперметр для блока питания (Arduino)

sanj76a пишет:

a2 = ads.readADC_SingleEnded(2);a_2 = a2*0.03125*kalib2/10;
   if(a_2>=i_reg){digitalWrite(10,LOW);stop=1;break;}else{digitalWrite(10,HIGH);}delay(20);
   a3 = ads.readADC_SingleEnded(3);a_3 = a3*0.03125*kalib2/10;delay(5);
   a_ob2=a_ob2+a_2;a_ob3=a_ob3+a_3;}
   a_3=a_ob3/10;a_ob3=0;a_2=a_ob2/10;a_ob2=0;i=0;a_2=a_2-a_3;

менять сдесь   а2 , а3

как? не совсем понятно еще

67

Re: Вольтамперметр для блока питания (Arduino)

a2 = ads.readADC_SingleEnded(3);a_2 = a2*0.03125*kalib2/10;
   if(a_2>=i_reg){digitalWrite(10,LOW);stop=1;break;}else{digitalWrite(10,HIGH);}delay(20);
   a3 = ads.readADC_SingleEnded(2);a_3 = a3*0.03125*kalib2/10;delay(5);
   a_ob2=a_ob2+a_2;a_ob3=a_ob3+a_3;}
   a_3=a_ob3/10;a_ob3=0;a_2=a_ob2/10;a_ob2=0;i=0;a_2=a_2-a_3;

68 (2022-01-30 17:30:02 отредактировано sanj76a)

Re: Вольтамперметр для блока питания (Arduino)

все хорошо работает и не плохо !
Окончательную  настройку когда  соберется устройство на плате!
Но еще попробую перенести на Мегу8

69

Re: Вольтамперметр для блока питания (Arduino)

чем вы рисуете свои схемы которые размещаеете на сайте, ссылку дайте, иногда надо бывает

70

Re: Вольтамперметр для блока питания (Arduino)

sPlan

71

Re: Вольтамперметр для блока питания (Arduino)

пишет: ошибка для компиляции атмега8.
Вы писали что скетч большой. Как уменьшить?

72

Re: Вольтамперметр для блока питания (Arduino)

Опубликуйте Ваш скетч

73

Re: Вольтамперметр для блока питания (Arduino)

#include <Wire.h>
#include <Adafruit_ADS1015.h> // Adafruit_ADS1X15-master.zip
#include <EEPROM.h>//#include <EEPROMex.h>
Adafruit_ADS1115 ads;
#include <LiquidCrystal.h>
  LiquidCrystal lcd(7, 6, 2, 3, 4, 5);// RS,E,D4,D5,D6,D7

  int u0,u1,a2,a3,i;
  byte w,stop;
  float u_0,u_1,u_ob0,u_ob1,a_2,a_3,a_ob2,a_ob3,i_reg;
  unsigned long time=millis();
  const float kalib0=7.650;// калибровка вольтметра А0 по максимальному напряжению 30V I=0
  const float kalib2=0.200;// калибровка амперметра А2 по максимальному току 10 А
void setup(void){
  Serial.begin(9600);
  lcd.begin(16, 2);
  pinMode(12,INPUT);
  pinMode(11,INPUT);
  pinMode(9,INPUT);
  pinMode(8,INPUT);
  pinMode(10,OUTPUT);
  i_reg = EEPROM.read(0)+(float)EEPROM.read(1)/100;// reg eeprom
  ads.begin();delay(100);
}

void loop()
{
  if(digitalRead(12)==HIGH){i_reg=i_reg+0.01;if(i_reg>=9.99){i_reg=9.99;}time=millis();delay(200);w=1;}
  if(digitalRead(11)==HIGH){i_reg=i_reg-0.01;if(i_reg<0){i_reg=0.01;}time=millis();delay(200);w=1;}
  if(digitalRead(9)==HIGH){i_reg=i_reg+1.00;if(i_reg>=9.99){i_reg=9.99;}time=millis();delay(200);w=1;}
  if(digitalRead(8)==HIGH){i_reg=i_reg-1.00;if(i_reg<0){i_reg=0.01;}time=millis();delay(200);w=1;}
  if(millis()-time>3000){
////////////////////////////////// вольтметр ////////////////////////////////////////////
while(i<10){i++;ads.setGain(GAIN_ONE);
   u0 = ads.readADC_SingleEnded(1);u_0 = u0*0.125*kalib0/1000;delay(20);
   u1 = 0;u_1 = u1*0.125*kalib0/1000;delay(5);
   u_ob0=u_ob0+u_0;u_ob1=u_ob1+u_1;}
   u_0=u_ob0/10;u_ob0=0;u_1=u_ob1/10;u_ob1=0;i=0;  u_0=u_0-u_1;
  ///////////////////////////////// амперметр /////////////////////////////////////////////
while(i<10){i++;ads.setGain(GAIN_FOUR);
   a2 = ads.readADC_SingleEnded(3);a_2 = a2*0.03125*kalib2/10;
   if(a_2>=i_reg){digitalWrite(10,LOW);stop=1;break;}else{digitalWrite(10,HIGH);}delay(20);
   a3 = ads.readADC_SingleEnded(2 );a_3 = a3*0.03125*kalib2/10;delay(5);
   a_ob2=a_ob2+a_2;a_ob3=a_ob3+a_3;}
   a_3=a_ob3/10;a_ob3=0;a_2=a_ob2/10;a_ob2=0;i=0;a_2=a_2-a_3;
    ///////////////////////////////// вывод на экран ///////////////////////////////////////
   if(a_2<0.005){a_2=0;}if(u_0<0.005){u_0=0;}// измерения начинаются с 0,005 В и с 0,005 А
   u_0=u_0-(a_2/100);// компенсация напряжения шунта
  }
   lcd.setCursor(0,0);if(u_0<=9.999){lcd.print(" ");}lcd.print(abs(u_0),2);lcd.print(" B");
   if(millis()-time<3000){lcd.print("  REG    ");}
   lcd.setCursor(0,1);lcd.print(" ");lcd.print(abs(a_2),2);lcd.print(" A  ");lcd.print(i_reg,2);lcd.print(" A ");
   if(stop==1){lcd.setCursor(9,0);lcd.print(" 5s OFF ");stop=0;delay(5000);}
   if(stop==0&&millis()-time>3000){lcd.setCursor(9,0);lcd.print(" ON    ");}

   if(w==1){EEPROM.update(0,(int)i_reg);EEPROM.update(1,i_reg*100-(int)i_reg*100);w=0;}
}

74

Re: Вольтамперметр для блока питания (Arduino)

В настройках платы укажите No bootloader

#include <Wire.h>
#include <Adafruit_ADS1015.h> // Adafruit_ADS1X15-master.zip
#include <EEPROM.h>//#include <EEPROMex.h>
Adafruit_ADS1115 ads;
#include <LiquidCrystal.h>
  LiquidCrystal lcd(7, 6, 2, 3, 4, 5);// RS,E,D4,D5,D6,D7

  int u0,u1,a2,a3,i;
  byte w,stop;
  float u_0,u_1,u_ob0,u_ob1,a_2,a_3,a_ob2,a_ob3,i_reg;
  unsigned long time=millis();
  const float kalib0=7.650;// калибровка вольтметра А0 по максимальному напряжению 30V I=0
  const float kalib2=0.200;// калибровка амперметра А2 по максимальному току 10 А
void setup(void){
  lcd.begin(16, 2);
  pinMode(12,INPUT);
  pinMode(11,INPUT);
  pinMode(9,INPUT);
  pinMode(8,INPUT);
  pinMode(10,OUTPUT);
  i_reg = EEPROM.read(0)+(float)EEPROM.read(1)/100;// reg eeprom
  ads.begin();delay(100);
}

void loop(){
  if(digitalRead(12)==HIGH){i_reg=i_reg+0.01;reg9_fun();;}
  if(digitalRead(11)==HIGH){i_reg=i_reg-0.01;reg0_fun();}
  if(digitalRead(9)==HIGH){i_reg=i_reg+1.00;reg9_fun();}
  if(digitalRead(8)==HIGH){i_reg=i_reg-1.00;reg0_fun();}
  if(millis()-time>3000){
////////////////////////////////// вольтметр ////////////////////////////////////////////
while(i<10){i++;ads.setGain(GAIN_ONE);
   u0 = ads.readADC_SingleEnded(1);u_0 = u0*0.125*kalib0/1000;delay(20);
   u1 = 0;u_1 = u1*0.125*kalib0/1000;delay(5);
   u_ob0=u_ob0+u_0;u_ob1=u_ob1+u_1;}
   u_0=u_ob0/10;u_ob0=0;u_1=u_ob1/10;u_ob1=0;i=0;  u_0=u_0-u_1;
  ///////////////////////////////// амперметр /////////////////////////////////////////////
while(i<10){i++;ads.setGain(GAIN_FOUR);
   a2 = ads.readADC_SingleEnded(3);a_2 = a2*0.03125*kalib2/10;
   if(a_2>=i_reg){digitalWrite(10,LOW);stop=1;break;}else{digitalWrite(10,HIGH);}delay(20);
   a3 = ads.readADC_SingleEnded(2 );a_3 = a3*0.03125*kalib2/10;delay(5);
   a_ob2=a_ob2+a_2;a_ob3=a_ob3+a_3;}
   a_3=a_ob3/10;a_ob3=0;a_2=a_ob2/10;a_ob2=0;i=0;a_2=a_2-a_3;
    ///////////////////////////////// вывод на экран ///////////////////////////////////////
   if(a_2<0.005){a_2=0;}if(u_0<0.005){u_0=0;}// измерения начинаются с 0,005 В и с 0,005 А
   u_0=u_0-(a_2/100);// компенсация напряжения шунта
  }
   lcd.setCursor(0,0);if(u_0<=9.999){lcd.print(" ");}lcd.print(abs(u_0),2);lcd.print(" B");
   if(millis()-time<3000){lcd.print("  REG    ");}
   lcd.setCursor(0,1);lcd.print(" ");lcd.print(abs(a_2),2);lcd.print(" A  ");lcd.print(i_reg,2);lcd.print(" A ");
   if(stop==1){lcd.setCursor(9,0);lcd.print(" 5s OFF ");stop=0;delay(5000);}
   if(stop==0&&millis()-time>3000){lcd.setCursor(9,0);lcd.print(" ON    ");}

   if(w==1){EEPROM.update(0,(int)i_reg);EEPROM.update(1,i_reg*100-(int)i_reg*100);w=0;}
}

void reg9_fun(){if(i_reg>=9.99){i_reg=9.99;};time=millis();delay(200);w=1;}
void reg0_fun(){if(i_reg<0){i_reg=0.01;}time=millis();delay(200);w=1;}

Скетч использует 7924 байт (96%) памяти устройства. Всего доступно 8192 байт.
Глобальные переменные используют 368 байт (35%) динамической памяти, оставляя 656 байт для локальных переменных. Максимум: 1024 байт.

75 (2022-02-01 17:15:31 отредактировано sanj76a)

Re: Вольтамперметр для блока питания (Arduino)

картинка стоит, и никаких реакций на внешние воздействия. кнопки работают


http://forum.rcl-radio.ru/uploads/images/2022/02/367d22149fbfb7cd14f46910b02e9742.jpg