Pitkien prosessien, kuten virroissa ja jännitteissä ilmaistujen, kuten paristojen ja akkujen varauksen purkaminen, mittaamiseksi ja ajallisen kiinnittämiseksi flash-muistiin. Lämpötila on mahdollista vahvistaa samanaikaisesti.
Tulosignaalin parametrit:
virta I = 25mka - 2a
jännite U = 0 - 5V
lämpötila t = -30 - + 120gС
ajan asettaa sisäinen sisäänrakennettu kvartsikello
Virtalähde:
lähteestä 12v / 0,3a
Kulutin <70 m
rakentaminen:
Mittari on koottu kahteen moduuliin Työläs Nano kytketty ModBus-protokollan kautta, katso kaavio. Yksi Arduino on asennettu nousuputkelle riviliittimillä. Moduulit on kytketty liittimien kautta. Itse johdot ja moduulit on eristetty lämpökammiovirheiltä.
Tulosignaalit syötetään ruuviliittimien kautta
Etupaneelissa on nestekideindikaattori mitattavista parametreista ja LEDit, jotka osoittavat alueen vaihtamisen tai alueen ulkopuolella.
Mittari on koottu koteloon 145x85x40.
Lämpötila-anturi suoritetaan liittimen kautta. Signaalin siirto on järjestetty kaksijohtoisella linjalla. Syöttövastus liittimeen.
Ohjelmoinnin helpottamiseksi Arduino USB-liittimet ovat ulkoisia.
ohjelma
Kaavio voidaan ladata tiedostosta Izmeritel.rar
Kaksi Arduinoa valittiin kahdesta syystä: Arduino Nanoa oli saatavana eikä niitä riitä yhdelle muistille, ja antureita on tarkoitus lisätä edelleen. Lisäksi halusin hallita Arduino-yhdistystä, sille valittiin ModBus-verkkoprotokolla. ModBus määrittelee yhden isäntäprosessorin - isäntä ja useita orjia - orjan. Tässä työssä on yksi orja, joka on lämpötilan, jännitteen ja virran mittaus. On Master - kello ja tallenne tiedostoon. Lihan muistin on oltava vähemmän kuin 4 Gt ja se on alustettu FAT-muodossa.
Koska virrat oli tarkoitus mitata μA: sta A: seen, virrat mitataan 4 alueella (katso alueiden taulukko), Arduino-orja tarkkailee siirtymistä alueelta toiselle muodostaen vastaavan sekoituskoodin M1-2: lle mitatulle virralle. Kun lähestyt etäisyyden rajaa, seuraava alue kytketään päälle, ts. Nykyinen näppäin T1-1 --- T2-2 kytketään pois päältä ja seuraava kytketään päälle. Tässä tapauksessa maksimisuntti = 100ohm on jatkuvasti päällä. Jos alueella on yli arvon, LEDit D8, D9 palaa.
Virranmittauksen jakaminen alueisiin
Uout_max = 5v KusOU = 20 A = Ish / 1024
Operaatiovahvistimen M1-2 vahvistus asetetaan = 20 eikä sitten muutu. (Etupaneeliin se on asennettu virheellisesti).
Jännite mitataan OU M1-1: n seuraajan kautta.Op-amp: n ja Arduinon tulopiirit ovat diodien suojaamia (zener-diodit ovat Arduinossa, mutta en tiedä parametreja, siksi on parempi liioitella sitä).
LCD1602 on valittu indikaattoriksi. Se on kytketty Arduino-mestariin. Lisäksi osoitin voidaan kytkeä molempiin Arduinoihin yksinkertaisesti vaihtamalla Arduino-liittimet. (Kun virta on katkaistu.) Yhteys Arduino-orjaan näkyy katkoviivalla (jota käytettiin ohjelmien kirjoittamisessa). LCD1602: n pääyhteyden (isäntä) kanssa voit näyttää 4 näyttöä kääntämällä liukukytkimen liukusäädintä p1-p2.
Näyttö 1: Ylhäältä Arduinon välisen vaihdon palvelutiedot: C on Arduinon välisten keskuksien lukumäärä, E on virheiden lukumäärä vaihtosuunnan Sh-nrovaihdon aikana;
pohjapäivä - kuukausi.
Näyttö 2: U1, I1, šuntinumero, (0,00 alhaalla oikealla-varaus)
Näyttö3: U2, lämpötila, (ui- valmiustila)
Näyttö 4: SD-tallennus käytössä, tallennusaika tunneissa, rivinumero tiedostossa,
00- virta-alueen1 tila 0-normaali 1 alueen ulkopuolella, jännitealueen1 tila, ulkoisen lähteen kiinteä teho
Kun se on kytketty Slave - 2 -näyttöihin. Kytkin p3 mahdollistaa tallentamisen Micro Flesh -muistiin.
Virtalähde valitaan 12v, jotta saadaan op-amp: n lineaariset ominaisuudet (tukosten välttämiseksi alueen reunoilla). Samasta syystä käytettiin muotoilijan negatiivista jännitettä KR1006VI1. Arduino-generaattorin käyttö tuottaa vähemmän vakaan jännitteen. 5 voltin virran tuottamiseksi käytettiin vaiheittaista muunninta, mutta voit tehdä sen myös ilman, että syötät +12 V VIN Arduino Nanon sisääntuloihin.
Yhteinen ohjelmointi Arduinolla on ominaisuuksia, koska viestintä tietokoneen kanssa on kiireinen ModBus-protokollan kanssa. Jos haluat ladata luonnoksen yhteen Arduinon, toisessa sinun on otettava käyttöön RST-nollaussignaali. Voit tehdä tämän käyttämällä hyppyjohtimia Lohko S, Lohko M. Tai paina ja pidä painettuna Arduino-moduulien palautuspainikkeita, kunnes lataus on valmis, mikä on vähemmän kätevää ja lataus on mahdollista vaurioittaa. Koska aion laajentaa USB Arduino -laitetta, vein kotelon ulos.
Transistori T5 (FR024N) on tarkoitettu käytettäväksi prosessin, esimerkiksi akun varauksen purkamisen, kytkemiseksi päälle / pois päältä. Vaikka se ei ole mukana.
Ohjelmisto.
On maksimaalisesti pureskeltavaa, että aloittelijat (ja minäkin) ei vahingoita ja voivat toimia vertailumateriaalina, mutta eivät väitä olevansa optimaalisia.
Kirjastot ja ohjelmakoodit sijaitsevat Izmeritel PRO.rar-tiedostossa.
Luonnos Master ModBus_Master10_SD_T_10_2-isäntään. Luonnos ModBus-Slave10_T_UI_10_2 orjalle. Loput kirjastosta.
Ohjelmoitu Arduino1.6.0: n ympäristöön. Se sisältää kirjastoja SD, LiquidCrystal ja Wire, joita ei tarvitse ladata.
Aika tunneissa asetetaan asennuksessa seuraavasti. Aseta reaaliaika ja lataa luonnos. Kommentoi sitten päivämäärän ja ajan asettamisrivit ja lataa luonnos uudelleen.
Ohjelman tuloksena on kellonajan ja päivämäärän (tunneissa), virran, jännitteen, lämpötilan ilmoittaminen LCD1602: lla ja näiden parametrien tallennus IZMER1.TXT-tiedostoon Micro Flesh -muistiin. Tiedosto sisältää tällaisen taulukon:
0; 13.4.2019; 00:11:10; Zap (h) = 0,05; tc = 29,31; U1 = 1,71; I1 = 0,00; Pl = 0,00; U2 = 0,14; DiaI norma; DiaU norma; C = 762
1; 13.4.2019; 00:11:16; Zap (h) = 0,05; tc = 29,38; U1 = 1,79; I1 = 0,00; Pl = 0,00; U2 = 0,19; DiaI norma; DiaU norma; C = 788
2; 13.4.2019; 00:11:22; Zap (h) = 0,05; tc = 29,38; U1 = 1,54; I1 = 0,00; Pl = 0,00; U2 = 0,16; DiaI norma; DiaU norma; C = 813
3; 13.4.2019; 00:11:28; Zap (h) = 0,05; tc = 29,31; U1 = 1,30; I1 = 0,00; Pl = 0,00; U2 = 0,17; DiaI norma; DiaU norma; C = 839
4; 13.4.2019; 00:11:34; Zap (h) = 0,05; tc = 29,31; U1 = 1,90; I1 = 0,00; Pl = 0,00; U2 = 0,17; DiaI norma; DiaU norma; C = 864
5; 13.4.2019; 00:11:40; Zap (h) = 0,05; tc = 29,25; U1 = 1,53; I1 = 0,00; Pl = 0,00; U2 = 0,16; DiaI norma; DiaU norma; C = 890
6; 13.4.2019; 00:11:46; Zap (h) = 0,05; tc = 29,19; U1 = 2,03; I1 = 0,00; Pl = 0,00; U2 = 0,18; DiaI norma; DiaU norma; C = 915
7; 13.4.2019; 00:11:52; Zap (h) = 0,05; tc = 29,13; U1 = 1,81; I1 = 0,00; Pl = 0,00; U2 = 0,18; DiaI norma; DiaU norma; C = 941
8; 13.4.2019; 00:11:58; Zap (h) = 0,05; tc = 29,00; U1 = 1,30; I1 = 0,00; Pl = 0,00; U2 = 0,16; DiaI norma; DiaU norma; C = 966
9; 13.4.2019; 00:12:04; Zap (h) = 0,07; tc = 28,94; U1 = 1,25; I1 = 0,00; Pl = 0,00; U2 = 0,17; DiaI norma; DiaU norma; C = 992
10; 13.4.2019; 00:12:10; Zap (h) = 0,07; tc = 29,00; U1 = 1,85; I1 = 0,00; Pl = 0,00; U2 = 0,16; DiaI norma; DiaU norma; C = 1017
11; 13.4.2019; 00:12:16; Zap (h) = 0,07; tc = 29,00; U1 = 1,21; I1 = 0,00; Pl = 0,00; U2 = 0,18; DiaI norma; DiaU norma; C = 1043
12; 13.4.2019; 00:12:23; Zap (h) = 0,07; tc = 28,94; U1 = 1,55; I1 = 0,00; Pl = 0,00; U2 = 0,18; DiaI norma; DiaU norma; C = 1068
13; 13.4.2019; 00:12:29; Zap (h) = 0,07; tc = 28,88; U1 = 1,82; I1 = 0,00; Pl = 0,00; U2 = 0,16; DiaI norma; DiaU norma; C = 1094
14; 13.4.2019; 00:12:35; Zap (h) = 0,07; tc = 28,88; U1 = 1,30; I1 = 0,00; Pl = 0,00; U2 = 0,18; DiaI norma; DiaU norma; C = 1119
missä pylväät sijaitsevat n / a; mennessä; aika; tallennusaika tunneissa; lämpötila; mitattu jännite U1; mitattu virta I1; toinen mitattu jännite U2; tiedot mittausalueen poistumisesta / poissaolosta; palvelun tiedot vaihtojen määrästä Arduinon välillä.
Mittauksen tallennusväli valittiin 6 sekunniksi, on helppo muuttaa sitä korvaamalla #define CYCLE_TIME_F 3000 -vakion arvo toisella kaavalla Tsec = Vakio (ms) * 2/1000 Masterissä.
Lisäksi tämä taulukko voidaan esittää mukavien kaavioiden muodossa.
Ohjelmia kirjoittaessani käytin materiaaleja. Ilmaisen kiitokseni kirjoittajalle.