From 74e269b5631d2e872c3c4baa8254819ef26ff767 Mon Sep 17 00:00:00 2001 From: Denis Denisov Date: Mon, 1 Apr 2024 22:14:23 +0300 Subject: [PATCH] =?UTF-8?q?=D0=90=D0=BA=D1=82=D1=83=D0=B0=D0=BB=D0=B8?= =?UTF-8?q?=D0=B7=D0=B8=D1=80=D0=BE=D0=B2=D0=B0=D0=BB=20=D1=81=D1=85=D0=B5?= =?UTF-8?q?=D0=BC=D1=8B.=20=D0=91=D0=BE=D0=BB=D0=B5=D0=B5=20=D0=BF=D1=80?= =?UTF-8?q?=D0=B0=D0=B2=D0=B8=D0=BB=D1=8C=D0=BD=D0=B0=D1=8F=20=D1=84=D0=B8?= =?UTF-8?q?=D0=BB=D1=8C=D1=82=D1=80=D0=B0=D1=86=D0=B8=D1=8F=20=D0=B7=D0=B0?= =?UTF-8?q?=D0=BC=D0=B5=D1=80=D1=8F=D0=B5=D0=BC=D1=8B=D1=85=20=D0=B7=D0=BD?= =?UTF-8?q?=D0=B0=D1=87=D0=B5=D0=BD=D0=B8=D0=B9?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- charger.fzz | Bin 42767 -> 42844 bytes charger/charger.ino | 98 +++++++++++++++++++++++++++++++++----------- charger_mosfet2.fzz | Bin 49054 -> 48936 bytes 3 files changed, 75 insertions(+), 23 deletions(-) diff --git a/charger.fzz b/charger.fzz index 962ed8615fec479f115a7fcffd3213061337af40..fa4c6f7538372185f1e4080e3e093c78a6b4a935 100644 GIT binary patch delta 11604 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 z�Y^!G?`7+Q&*?8Jda2L(M}=JdF~>UpLNChT#E?c9Dq$@}G1(Hpd0Sk`y;FD?3-5 zwFfsjL#NA={?EcK?Kw1O!!?V$Yb~OeiHt&kH@9(NkD`LVwH%7rRqr4H4^=z%c+rau z(f2tWZYE98W36$v8u3ec;LoOb(UBL>hn;9PdAHLHS_0keWbkFJ|C#UyS6q?31OmEh ze!^|sFAzijVX~hPLs}+S5l);tb;mI|EtFy8tg;*fcW%mb&~HaL3BDvFmHT)d&hUNn zSY^(4vgq=5`$wOy6=)Bq-cPYjVb9$%gb>~wovJ^v_H8&@Y7G%4rX|W)n$&^1m=OtmP*Imga;9B_pR>~> zTAZy8p~X>_+Os-FU#Tp=*#tu+Fmb(=}7HO)?k9W<#4V|{FsUbi#9)Z6cy1^MqnjO6@a zK3{-fDVrk{6OY3ZQ70M|6S45H#{JXSQW}6q#9^KZ$;*r!#Wc)J4DnC(s`~$$k^4@L z^UAih;Q%B3S9!!=l1)z-y!t4GVpr`viVSaZPrpesCZ?;um@OKS3d^KfLi>RM+GW}P z0(KS5Z2eOWg{Dr95(}{Ue50<5WCe8ktU_V9Um=S_t$~{d*Nf9`y1b z@pS;vw^W;~>JE9h){kQomxdV`y==EGMvzFrMCT)gUum_V1Nzlgn3Q;*wTq40^T{Hl ze3!=wk~B-JLcrV@LjbGQ^DYWNn)^>F@$oti5XM>}Ekuq`Yb89d+oTh_;wJM~2M@u* z9x&~}(WEgAj1ET2LXw5wm9^BZrE}SPvIReDmrlC_x%Z<6jB@k;DU7{ZW&&6?QKU6c z5|UP_?3b!6WD<3Sh_E&RU%m(H_MEBJ*&1n{Of$H{QxVF`f&#ShMb$k0Lj*vhb zmnqEW&fe!^`HtB6aoA#j4rjhNk|L^3+q7) zg&1vl7&5>f`&GvzjS*%BX6k?fIqjco^oRs))J6F?!;d{{Q|1ov?`RSV!d~Gp3YK)U z%p#wID(E~C8bc15!gzHF?ND&Stk$2`W_iMb-$D?5Xp9N%#c)Ba&Z0@aL9Co8&1)6# zQi3g*iXwsyg*a#J3UNG&VJ1?1hmG-}?0iz`1gU_^>Oj^)n~V-0QUbkn+|;cEXxORN zY#lTH#VTMbhO;rQNY?`-w7@1$xLLqbAkZcvBK~p+2P4s{>~9`P@3&BB4(}%P3DEy7 zrpNL4h^r8tuAy0gMHflxp{4NYz|Wl}NPjE9U6d>~g`j4p+*j(LhHN8oi#kGBlxfWg zVFH?^-5BHkXo@u8lJg`y+cE^hM#9vGjxga4rybd>DoB%Tsepuy>v+KJ4nB2#2hkPZ z9(EsrHWz1`51JX9@iXLuh6^Fjwi3tA3E}Y&S3#r-oQsnbU9+4l6mivj=A0jmXHM41 zd?tk%ufv=Uuhw_Y^ZT%0&#Hq#Mc5F@bW~9LOoC+dm;jdS|U*qHF!m$bdfXY*f3Gv zNGcJrm>Qfek+awwG#H&o8zYf;UQ7*|icQ2QF#*9OCpsjnBrcXvgWDv&m#9NY6@1P$ GgZ+Q~HASuf diff --git a/charger/charger.ino b/charger/charger.ino index 11b24f1..885dca9 100644 --- a/charger/charger.ino +++ b/charger/charger.ino @@ -1,5 +1,63 @@ #include +class Reader +{ + const static int AMOUNT = 20; + const static int FILTER_SIZE = 5; + int pin; + int reads[AMOUNT]; + int current_read; + public: + + Reader(int pin) + { + this->pin = pin; + current_read = 0; + for (int i = 0; i < AMOUNT; i++) reads[i] = 0; + } + + void Read() + { + reads[current_read] = analogRead(pin); + current_read++; + if (current_read >= AMOUNT) current_read -= AMOUNT; + } + + int sorted_reads[AMOUNT]; + + int Get() + { + for (int i = 0; i < AMOUNT; i++) + { + sorted_reads[i] = reads[i]; + } + bool f = true; + while (f) + { + f = false; + for (int i = 0; i < AMOUNT - 1; i++) + { + if (sorted_reads[i] > sorted_reads[i + 1]) + { + int t = sorted_reads[i]; + sorted_reads[i] = sorted_reads[i + 1]; + sorted_reads[i + 1] = t; + f = true; + } + } + }/* + float sum = 0; + int cnt = 0; + for (int i = FILTER_SIZE; i < AMOUNT - FILTER_SIZE; i++) + { + sum += reads[i]; + cnt++; + } + return (int)(sum / cnt + 0.5);*/ + return sorted_reads[AMOUNT / 2]; + } +}; + ModbusRTU mb; #define MODBUS_ADDRESS 1 @@ -47,6 +105,12 @@ void setup() } } +Reader R2(A2); +Reader R3(A3); +Reader R4(A4); +Reader R5(A5); +Reader R7(A7); + float I_acc; float U4; float U5; @@ -55,8 +119,8 @@ float U3; void ReadLamp() { - int a4 = analogRead(A4); - int a5 = analogRead(A5); + int a4 = R4.Get(); + int a5 = R5.Get(); // multiply by 5 as reference current, // multiply by 3 because of the divider U4 = a4 / 1023.0 * 5 * 3; @@ -65,36 +129,19 @@ void ReadLamp() void ReadAcc() { - int a2 = analogRead(A2); - int a3 = analogRead(A3); + int a2 = R2.Get(); + int a3 = R3.Get(); // multiply by 5 as reference current, // multiply by 3 because of the divider U2 = a2 / 1023.0 * 5 * 3; U3 = a3 / 1023.0 * 5 * 3; } -const float CURRENT_SENSOR_MAX = 30; +const float CURRENT_SENSOR_MAX = 5; void ReadI() { - static int reads[10]; - for (int i = 0; i < 10; i++) - { - reads[i] = analogRead(A7); - } - int imin = 0, imax = 0; - for (int i = 0; i < 10; i++) - { - if (reads[i] < reads[imin]) imin = i; - if (reads[i] < reads[imax]) imax = i; - } - int total = 0; - for (int i = 0; i < 10; i++) - { - if (i == imin || i == imax) continue; - total += reads[i]; - } - I_acc = ((total / 8.0 + 0.0) / 1023.0 - 0.5) * CURRENT_SENSOR_MAX; + I_acc = ((R7.Get() + 0.0) / 1023.0 - 0.5) * CURRENT_SENSOR_MAX; } void WriteFloatReg(int start, float val) @@ -109,6 +156,11 @@ uint16_t lamp_state = 0; void loop() { + R2.Read(); + R3.Read(); + R4.Read(); + R5.Read(); + R7.Read(); ReadLamp(); ReadAcc(); ReadI(); diff --git a/charger_mosfet2.fzz b/charger_mosfet2.fzz index 7099aac72a0f727fae285e85086dda696438f53e..51a4316924c8dbefdfbb1ca3c0c4a014fe92702d 100644 GIT binary patch delta 14413 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
    <7!23zZ16rfnT~6iSrjwZ=~E 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