Per a mesurar i fixar el temps en la memòria flash de processos llargs expressats en corrent i tensió, com ara descàrrega de bateries i bateries. És possible fixar simultàniament la temperatura.
Paràmetres del senyal d'entrada:
corrent I = 25mka - 2a
tensió U = 0 - 5V
temperatura t = -30 - + 120gС
El temps es defineix pel rellotge intern de quars integrat
Nutrició:
des de la font 12v / 0.3a
Consumo <70ma
Construcció:
El mesurador es munta en dos mòduls Arduino Nano connectat mitjançant protocol ModBus, vegeu el diagrama. Un Arduino es munta sobre un aixecador amb blocs terminals. Els mòduls es connecten mitjançant connectors. Els cables i els mòduls en si estan aïllats de falles tèrmic-cambriques.
Els senyals d’entrada s’alimenten mitjançant terminals de cargol
Al panell frontal hi ha un indicador de cristall líquid dels paràmetres mesurats i els LED que indiquen la commutació d'un rang o un rang.
El mesurador es munta en una carcassa de 145x85x40.
El sensor de temperatura es realitza a través del connector. La transmissió del senyal s’organitza en una línia de dos fils. Resistència d’alimentació al connector.
Per facilitar la programació, els connectors USB d’Arduino són externs.
Esquema
Esquema es pot descarregar del fitxer Meter.rar
Es van triar dos Arduino per dos motius: l'Arduino Nano estava disponible i no prou en una memòria, i es preveu afegir sensors encara més. A més, volia dominar l'associació Arduino, per això s'ha seleccionat el protocol de xarxa ModBus. ModBus defineix un processador mestre: mestre i diversos esclaus: esclau. En aquest treball, hi ha un esclau, on es fa una mesura de temperatura, tensió i corrent. On Master: un rellotge i un registre d’un fitxer. La memòria carlina ha de ser inferior a 4 GB i formatada en FAT.
Com que es va planejar mesurar corrents de μA a A, els corrents es mesuren en 4 rangs (vegeu la taula Range), Arduino Slave supervisa la transició d'un rang a un altre, formant el corresponent codi de shunt per al corrent mesurat corrent de M1-2. Quan s’acosta al límit de l’interval, l’interval següent s’activa, és a dir, la clau actual de T1-1 --- T2-2 està desactivada i la següent s’activa. En aquest cas, el màxim shunt = 100ohm està constantment activat. Si hi ha un excés de valor en l’interval, els LED D8, D9 s’il·luminen.
Dividir la mesura de corrent en intervals
Uout_max = 5v KusOU = 20 Δ = Ish / 1024
El guany de l'amplificador operacional M1-2 es defineix = 20 i no canvia. (Al panell frontal es munta erròniament).
El voltatge es mesura mitjançant un seguidor a l’OU M1-1.Els circuits d’entrada de l’amperi op i Arduino estan protegits per diodes (els díodes zener són a Arduino, però no conec els paràmetres, per tant és millor que s’excedeixi).
El LCD1602 està seleccionat com a indicador. Està connectat amb el Mestre Arduino. A més, l'indicador es pot connectar a ambdós Arduino simplement commutant els connectors Arduino. (Quan s’apaga l’energia.) La connexió amb l’esclau Arduino es mostra amb una línia guionada (que s’utilitzava per escriure programes). Amb la connexió principal (al mestre) de la LCD1602, es poden visualitzar 4 pantalles commutant el control lliscant de l’interruptor lliscant p1-p2.
Pantalla1: per sobre de la informació de servei de l’intercanvi entre Arduino: C és el nombre d’intercanvis entre Arduino, E és el nombre d’errors durant l’intercanvi de Sh-No. del shunt;
dia inferior - hora del mes.
Pantalla2: U1, I1, núm. De descàrrega, (0.00 a la part inferior dreta)
Pantalla 3: temperatura U2, temperatura, (u-standby)
Screen4: gravació SD habilitada, temps de gravació en hores, número de línia al fitxer,
00- estat del rang de corrent1 0-1 fora del rang normal, estat del rang de tensió1, potència fixa d'una font externa
Quan es connecta a 2 pantalles Slave. L’interruptor p3 permet gravar a la memòria Micro Flesh.
L'alimentació es selecciona 12v per obtenir característiques lineals de l'amplificador op (per evitar bloqueigs a les vores de la gamma). Per la mateixa raó, es va utilitzar el voltatge negatiu del modelador del KR1006VI1. L'ús d'un generador Arduino produeix una tensió menys estable. Per generar energia de 5v, es va utilitzar un convertidor disminuït, però es pot prescindir de subministrar + 12 V a les entrades VIN Arduino Nano.
Programació conjunta Arduino té funcions, ja que la comunicació amb l'ordinador està ocupada amb el protocol ModBus. Per carregar un esbós a un dels Arduino, a l'altre cal activar el senyal de restabliment RST. Per fer-ho, utilitzeu els salts Block S, Block M. O manteniu premuts els botons de restabliment dels mòduls Arduino fins que s’acabi la descàrrega, que és menys convenient i hi ha la possibilitat de danyar la descàrrega. Des que penso ampliar el meu dispositiu USB Arduino, he tret la caixa.
Se suposa que el transistor T5 (FR024N) s'ha d'utilitzar per encendre / desactivar un procés, per exemple, una descàrrega de càrrega d'una bateria. Si bé no s’hi participa.
Programari.
Es mastega al màxim que els principiants (i jo mateix) no faran mal i que puguin servir com a material de referència, però no afirmen que sigui òptim.
Les biblioteques i codis de programes es troben al fitxer Izmeritel PRO.rar.
Esbossa el mestre ModBus_Master10_SD_T_10_2. Esbós per a l'esclau ModBus-Slave10_T_UI_10_2. La resta de la biblioteca.
Programat en l’entorn d’Arduino1.6.0. Conté biblioteques SD, LiquidCrystal, Wire que no cal descarregar.
El temps en hores es configura a la següent configuració. Ajusteu el temps real i carregueu l'esbós. A continuació, comenteu les línies per establir la data i l'hora i torneu a carregar l'esbós.
El resultat del programa serà la indicació d’hora i data (hores), corrent, tensió, temperatura a la pantalla LCD1602 i l’enregistrament d’aquests paràmetres al fitxer IZMER1.TXT a la memòria Micro Flesh. El fitxer contindrà una taula d’aquest tipus:
0; 13/04/2019; 00:11:10; Zap (h) = 0,05; tc = 29,31; U1 = 1,71; I1 = 0,00; P1 = 0,00; U2 = 0,14; DiaI norma; DiaU norma; C = 762
1; 13/04/2019; 00:11:16; Zap (h) = 0,05; tc = 29,38; U1 = 1,79; I1 = 0,00; P1 = 0,00; U2 = 0,19; DiaI norma; DiaU norma; C = 788
2; 13/04/2019; 00:11:22; Zap (h) = 0,05; tc = 29,38; U1 = 1,54; I1 = 0,00; P1 = 0,00; U2 = 0,16; DiaI norma; DiaU norma; C = 813
3; 13/04/2019; 00:11:28; Zap (h) = 0,05; tc = 29,31; U1 = 1,30; I1 = 0,00; P1 = 0,00; U2 = 0,17; DiaI norma; DiaU norma; C = 839
4; 13/04/2019; 00:11:34; Zap (h) = 0,05; tc = 29,31; U1 = 1,90; I1 = 0,00; P1 = 0,00; U2 = 0,17; DiaI norma; DiaU norma; C = 864
5; 13/04/2019; 00:11:40; Zap (h) = 0,05; tc = 29,25; U1 = 1,53; I1 = 0,00; P1 = 0,00; U2 = 0,16; DiaI norma; DiaU norma; C = 890
6; 13/04/2019; 00:11:46; Zap (h) = 0,05; tc = 29,19; U1 = 2,03; I1 = 0,00; P1 = 0,00; U2 = 0,18; DiaI norma; DiaU norma; C = 915
7; 13/04/2019; 00:11:52; Zap (h) = 0,05; tc = 29,13; U1 = 1,81; I1 = 0,00; P1 = 0,00; U2 = 0,18; DiaI norma; DiaU norma; C = 941
8; 13/04/2019; 00:11:58; Zap (h) = 0,05; tc = 29,00; U1 = 1,30; I1 = 0,00; P1 = 0,00; U2 = 0,16; DiaI norma; DiaU norma; C = 966
9; 13/04/2019; 00:12:04; Zap (h) = 0,07; tc = 28,94; U1 = 1,25; I1 = 0,00; P1 = 0,00; U2 = 0,17; DiaI norma; DiaU norma; C = 992
10; 13/04/2019; 00:12:10; Zap (h) = 0,07; tc = 29,00; U1 = 1,85; I1 = 0,00; P1 = 0,00; U2 = 0,16; DiaI norma; DiaU norma; C = 1017
11; 13/04/2019; 00:12:16; Zap (h) = 0,07; tc = 29,00; U1 = 1,21; I1 = 0,00; P1 = 0,00; U2 = 0,18; DiaI norma; DiaU norma; C = 1043
12; 13/04/2019; 00:12:23; Zap (h) = 0,07; tc = 28,94; U1 = 1,55; I1 = 0,00; P1 = 0,00; U2 = 0,18; DiaI norma; DiaU norma; C = 1068
13; 13/04/2019; 00:12:29; Zap (h) = 0,07; tc = 28,88; U1 = 1,82; I1 = 0,00; P1 = 0,00; U2 = 0,16; DiaI norma; DiaU norma; C = 1094
14; 13/04/2019; 00:12:35; Zap (h) = 0,07; tc = 28,88; U1 = 1,30; I1 = 0,00; P1 = 0,00; U2 = 0,18; DiaI norma; DiaU norma; C = 1119
on es troben les columnes n / a; Data el temps temps de gravació en hores; temperatura tensió mesurada U1; corrent mesurat I1; el segon voltatge mesurat U2; informació sobre la sortida / absència del rang de mesurament; informació del servei sobre el nombre d'intercanvis entre Arduino.
L’interval d’enregistrament de mesurament s’ha seleccionat durant 6 segons, és fàcil canviar-lo substituint el valor de la constant #define CYCLE_TIME_F 3000 per una altra per la fórmula Tsec = Constant (ms) * 2/1000 en Master.
A més, es pot presentar aquesta taula en forma de gràfics agradables.
A l’hora d’escriure programes vaig utilitzar materials. Expresso el meu agraïment a l’autor.