Per misurare e fissare nel tempo la memoria flash di processi lunghi espressi in corrente e tensione, come carica - scarica di batterie e batterie. È possibile fissare contemporaneamente la temperatura.
Parametri del segnale di ingresso:
corrente I = 25mka - 2a
tensione U = 0 - 5 V.
temperatura t = -30 - + 120gС
l'ora è impostata dall'orologio al quarzo interno incorporato
Alimentazione:
dalla fonte 12v / 0.3a
Consumo <70ma
costruzione:
Il misuratore è assemblato su due moduli Arduino Nano collegato tramite protocollo ModBus, vedi diagramma. Un Arduino è montato su un riser con morsettiere. I moduli sono collegati tramite connettori. I fili e i moduli stessi sono isolati da guasti termocambrici.
I segnali di ingresso vengono inviati attraverso terminali a vite
Sul pannello frontale è presente un indicatore a cristalli liquidi dei parametri misurati e dei LED che indicano la commutazione di un intervallo o fuori intervallo.
Il misuratore è assemblato in un alloggiamento 145x85x40.
Il sensore di temperatura viene eseguito attraverso il connettore. La trasmissione del segnale è organizzata su una linea a due fili. Inserire la resistenza nel connettore.
Per facilitare la programmazione, i connettori USB Arduino sono esterni.
schema
Lo schema può essere scaricato dal file Izmeritel.rar
Sono stati scelti due Arduino per due motivi: Arduino Nano era disponibile e non abbastanza su una memoria, e si prevede di aggiungere ulteriori sensori. Inoltre, volevo dominare l'associazione Arduino, per questo è stato selezionato il protocollo di rete ModBus. ModBus definisce un processore master - Master e diversi slave - Slave. In questo lavoro, c'è uno Slave, su di esso c'è una misurazione di temperatura, tensione e corrente. Su Master: un orologio e un record in un file. La memoria Flesh deve essere inferiore a 4 GB e formattata in FAT.
Poiché è stato pianificato di misurare correnti da μA ad A, le correnti vengono misurate in 4 intervalli (vedere la tabella Range), Arduino Slave monitora la transizione da un intervallo all'altro, formando il corrispondente codice shunt per la corrente misurata corrente da M1-2. Quando ci si avvicina al bordo dell'intervallo, l'intervallo successivo viene attivato, ovvero il tasto corrente da T1-1 --- T2-2 viene disattivato e viene attivato quello successivo. In questo caso, lo shunt massimo = 100ohm è costantemente attivo. Se c'è un eccesso del valore nell'intervallo, i LED D8, D9 si illuminano.
Dividere la misurazione della corrente in intervalli
Uout_max = 5v KusOU = 20 Δ = Ish / 1024
Il guadagno dell'amplificatore operazionale M1-2 è impostato = 20 e quindi non cambia. (Sul pannello frontale è montato erroneamente).
La tensione viene misurata tramite un follower sull'unità organizzativa M1-1.I circuiti di ingresso dell'op-amp e di Arduino sono protetti da diodi (i diodi zener sono in Arduino, ma non conosco i parametri, quindi è meglio esagerare).
LCD1602 è selezionato come indicatore. È collegato al Master Arduino. Inoltre, l'indicatore può essere collegato ad entrambi Arduino semplicemente cambiando i connettori Arduino. (Quando l'alimentazione è spenta.) La connessione allo Arduino Slave è mostrata con una linea tratteggiata (che è stata usata durante la scrittura dei programmi). Con la connessione principale (al Master) sull'LCD1602, è possibile visualizzare 4 schermate commutando il cursore dell'interruttore a scorrimento p1-p2.
Screen1: dall'alto le informazioni di servizio dello scambio tra Arduino: C è il numero di scambi tra Arduino, E è il numero di errori durante lo scambio di Sh-No. dello shunt;
giorno inferiore - tempo del mese.
Screen2: U1, I1, Shunt No., (0.00 in basso a destra)
Screen3: U2, temperatura, (u-standby)
Screen4: registrazione SD abilitata, tempo di registrazione in ore, numero di riga nel file,
00- stato dell'intervallo di corrente1 0-normale 1 fuori intervallo, stato dell'intervallo di tensione1, potenza fissa di una fonte esterna
Quando collegato a Slave - 2 schermi. Switch p3 consente la registrazione nella memoria Micro Flesh.
L'alimentatore è selezionato 12v per ottenere caratteristiche lineari dell'amplificatore operazionale (per evitare blocchi ai bordi della gamma). Per lo stesso motivo, è stata utilizzata la tensione negativa dallo shaper a KR1006VI1. L'uso di un generatore Arduino produce una tensione meno stabile. Per generare energia a 5 v, è stato utilizzato un convertitore step-down, ma puoi farne a meno fornendo + 12V agli ingressi VIN Arduino Nano.
Programmazione congiunta Arduino ha funzionalità, poiché la comunicazione con il computer è impegnata con il protocollo ModBus. Per caricare uno schizzo in uno di Arduino, dall'altro è necessario abilitare il segnale di ripristino RST. Per fare ciò, usa i jumper Block S, Block M. Oppure premi e tieni premuti i pulsanti di reset sui moduli Arduino fino al termine del download, il che è meno conveniente e c'è la possibilità di danneggiare il download. Dal momento che ho intenzione di espandere il mio dispositivo USB Arduino, ho estratto la custodia.
Il transistor T5 (FR024N) dovrebbe essere usato per accendere / spegnere un processo, ad esempio una scarica-scarica di una batteria. Mentre non è coinvolto.
Software.
È masticato al massimo che i principianti (e io stesso) non facciano male e possano servire da materiale di riferimento, ma non pretendono di essere ottimalità.
Librerie e codici di programma si trovano nel file Izmeritel PRO.rar.
Schizzo per il master ModBus_Master10_SD_T_10_2. Bozzetto per slave ModBus-Slave10_T_UI_10_2. Il resto della biblioteca.
Programmato nell'ambiente di Arduino1.6.0. Contiene librerie SD, LiquidCrystal, Wire non è necessario scaricare.
Il tempo in ore è impostato nel Setup come segue. Imposta il tempo reale e carica lo schizzo. Quindi commentare le righe per impostare la data e l'ora e ricaricare lo schizzo.
Il risultato del programma sarà l'indicazione di ora e data (ore), corrente, tensione, temperatura sull'LCD1602 e la registrazione di questi parametri nel file IZMER1.TXT nella memoria di Micro Flesh. Il file conterrà una tabella di questo tipo:
0; 2019/04/13; 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; 2019/04/13; 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; 2019/04/13; 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; 2019/04/13; 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; 2019/04/13; 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; 2019/04/13; 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; 2019/04/13; 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; 2019/04/13; 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; 2019/04/13; 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; 2019/04/13; 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; 2019/04/13; 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; 2019/04/13; 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; 2019/04/13; 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; 2019/04/13; 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; 2019/04/13; 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
dove si trovano le colonne n / a; data; tempo; tempo di registrazione in ore; temperatura; tensione misurata U1; corrente misurata I1; la seconda tensione misurata U2; informazioni sull'uscita / assenza del campo di misura; informazioni di servizio sul numero di scambi tra Arduino.
L'intervallo di registrazione della misurazione è stato selezionato per 6 secondi, è facile modificarlo sostituendo il valore della costante #define CYCLE_TIME_F 3000 con un'altra con la formula Tsec = Costante (ms) * 2/1000 in Master.
Inoltre questa tabella può essere presentata sotto forma di bei grafici.
Durante la scrittura di programmi ho usato materiali. Esprimo la mia gratitudine all'autore.