Para medir e fixar no tempo, na memória flash, processos longos expressos em corrente e tensão, como descarga de carga de baterias e baterias. É possível fixar simultaneamente a temperatura.
Parâmetros do sinal de entrada:
corrente I = 25mka - 2a
tensão U = 0 - 5V
temperatura t = -30 - + 120gС
o tempo é definido pelo relógio interno de quartzo
Nutrição:
da fonte 12v / 0.3a
Eu consumo <70ma
Construção:
O medidor é montado em dois módulos Arduino Nano conectado via protocolo ModBus, veja o diagrama. Um Arduino é montado em um riser com blocos de terminais. Os módulos são conectados via conectores. Os fios e os próprios módulos são isolados de falhas termo-cambiais.
Os sinais de entrada são alimentados através de terminais de parafuso
No painel frontal, há um indicador de cristal líquido dos parâmetros medidos e LEDs indicando a alternância de uma faixa ou fora da faixa.
O medidor é montado em um compartimento 145x85x40.
O sensor de temperatura é realizado através do conector. A transmissão do sinal é organizada em uma linha de dois fios. Resistor de alimentação no conector.
Para facilitar a programação, os conectores USB do Arduino são externos.
Esquema
O esquema pode ser baixado do arquivo Meter.rar
Dois Arduino foram escolhidos por dois motivos: o Arduino Nano estava disponível e não era suficiente em uma memória, e está planejado adicionar mais sensores. Além disso, eu queria dominar a associação Arduino, para isso o protocolo de rede ModBus foi selecionado. O ModBus define um processador mestre - Mestre e vários escravos - Escravo. Neste trabalho, há um escravo, nele é uma medida de temperatura, tensão e corrente. No Master - um relógio e um registro em um arquivo. A memória da carne deve ter menos de 4 GB e formatada em FAT.
Como foi planejado medir correntes de μA a A, as correntes são medidas em 4 faixas (consulte a tabela Ranges), o Escravo do Arduino monitora a transição de uma faixa para outra, formando o código de derivação correspondente para a corrente medida atual de M1-2. Ao se aproximar da borda do intervalo, o próximo intervalo é ativado, ou seja, a chave atual de T1-1 --- T2-2 é desativada e a próxima é ativada. Nesse caso, a derivação máxima = 100ohm está constantemente ativada. Se houver um excesso de valor na faixa, os LEDs D8, D9 acenderão.
Dividindo a medição de corrente em faixas
Uout_max = 5v KusOU = 20 Δ = Ish / 1024
O ganho do amplificador operacional M1-2 é ajustado = 20 e depois não muda. (No painel frontal, ele é montado incorretamente).
A tensão é medida através de um seguidor na OU M1-1.Os circuitos de entrada do op-amp e do Arduino são protegidos por diodos (os diodos zener estão no Arduino, mas eu não conheço os parâmetros, portanto, é melhor exagerar).
LCD1602 é selecionado como um indicador. Está conectado ao Arduino Master. Além disso, o indicador pode ser conectado ao Arduino simplesmente trocando os conectores do Arduino. (Quando a energia está desligada.) A conexão com o escravo do Arduino é mostrada com uma linha tracejada (que foi usada ao gravar programas). Com a conexão principal (ao mestre) no LCD1602, 4 telas podem ser exibidas alternando o controle deslizante da chave deslizante p1-p2.
Tela 1: acima das informações de serviço da troca entre o Arduino: C é o número de trocas entre o Arduino, E é o número de erros durante a troca do número Sh do shunt;
dia inferior - hora do mês.
Tela2: U1, I1, número da derivação, (0,00 reserva inferior direita)
Tela3: U2, temperatura, (espera)
Tela 4: gravação SD ativada, tempo de gravação em horas, número da linha no arquivo,
00- estado da faixa de corrente1 0-normal 1-fora da faixa, estado da faixa de tensão1, potência fixa de uma fonte externa
Quando conectado a escravo - 2 telas. O interruptor p3 permite a gravação na memória Micro Flesh.
A fonte de alimentação é selecionada 12v para obter características lineares do amplificador operacional (para evitar bloqueios nas bordas da faixa). Pelo mesmo motivo, foi usada tensão negativa do shaper no KR1006VI1. O uso de um gerador Arduino produz uma tensão menos estável. Para gerar energia de 5V, um conversor de redução foi usado, mas você pode ficar sem ele fornecendo + 12V às entradas do VIN Arduino Nano.
Programação conjunta O Arduino possui recursos, pois a comunicação com o computador está ocupada com o protocolo ModBus. Para carregar um esboço em um dos Arduino, por outro, você precisa ativar o sinal de redefinição do RST. Para fazer isso, use os jumpers Bloco S, Bloco M. Ou pressione e mantenha pressionados os botões de reset nos módulos do Arduino até o término do download, o que é menos conveniente e há uma chance de danificá-lo. Como pretendo expandir meu dispositivo USB Arduino, retirei o estojo.
O transistor T5 (FR024N) deve ser usado para ativar / desativar um processo, por exemplo, uma descarga de carga de uma bateria. Enquanto não estiver envolvido.
Software.
É mastigado ao máximo que os iniciantes (e eu próprio) não machucamos e podem servir como material de referência, mas não afirmam ser otimizados.
Bibliotecas e códigos de programa estão localizados no arquivo Izmeritel PRO.rar.
Esboço para o mestre ModBus_Master10_SD_T_10_2. Esboço para o escravo ModBus-Slave10_T_UI_10_2. O resto da biblioteca.
Programado no ambiente do Arduino1.6.0. Ele contém as bibliotecas SD, LiquidCrystal, Wire e não precisa fazer o download.
A hora em horas é definida na Instalação da seguinte maneira. Defina o tempo real e carregue o esboço. Em seguida, comente as linhas para definir a data e a hora e recarregue o esboço.
O resultado do programa será a indicação de hora e data (horas), corrente, tensão, temperatura no LCD1602 e o registro desses parâmetros no arquivo IZMER1.TXT na memória Micro Flesh. O arquivo conterá uma tabela desse tipo:
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; Norma DiaU; 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; Norma DiaU; 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; Norma DiaU; 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; Norma DiaU; 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; Norma DiaU; 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; Norma DiaU; 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; Norma DiaU; 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; Norma DiaU; 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; Norma DiaU; 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; Norma DiaU; 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; Norma DiaU; 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; Norma DiaU; 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; Norma DiaU; 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; Norma DiaU; 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; Norma DiaU; C = 1119
onde as colunas estão localizadas n / a; Data tempo tempo de gravação em horas; temperatura tensão medida U1; corrente medida I1; a segunda tensão medida U2; informações sobre a saída / ausência da faixa de medição; informações de serviço sobre o número de trocas entre o Arduino.
O intervalo de gravação da medição foi selecionado por 6 segundos; é fácil alterá-lo, substituindo o valor da constante #define CYCLE_TIME_F 3000 por outra pela fórmula Tsec = Constante (ms) * 2/1000 no Master.
Além disso, esta tabela pode ser apresentada na forma de bons gráficos.
Ao escrever programas, usei materiais. Expresso minha gratidão ao autor.