Sistema de proteção contra vazamentos



Quero compartilhar minha experiência na criação de um dispositivo que não foi apenas interessante de implementar, mas também pode ser benéfico. Talvez alguém diga que foi possível fazer algo mais simples, mas esse não é o nosso caminho ...

Tudo começou com o fato de que, após o reparo do apartamento, um problema em potencial foi descoberto. Em caso de vazamento em algum lugar, não funcionará para os guindastes entrarem no apartamento sem um certo esforço físico e destreza, pois a escotilha que fecha os guindastes não está muito bem instalada. Portanto, em caso de necessidade urgente (acidente) de fechar as torneiras rapidamente, não funcionará. Era necessário fazer algo com isso, e uma solução apareceu - para realizar a oportunidade remotamente, ou seja, sem abrir a escotilha, interrompa o fornecimento de água. E, como bônus, implementar tudo o mais que possa ser confiável com a eletrônica.

É assim que o dispositivo fica.



Características principais:
  • Desligue o abastecimento de água de forma independente em caso de vazamento
  • Desligue o abastecimento de água "no modo manual" - no painel frontal há um "botão vermelho" e um interruptor de duas posições
  • Exibir leituras do medidor no próprio visor
  • Exibir outras informações úteis no visor

Não pode, mas planeja:
  • Trabalhe a partir de uma fonte de energia de backup. Agora, no caso de falta de energia - o dispositivo é inútil
  • Trabalhar com sensores de vazamento sem fio
  • Limpe torneiras você mesmo. Para não se tornar ácido, é aconselhável abrir / fechá-las uma vez por mês
  • Notificar sobre eventos em um smartphone e ser controlado por "ar"

Não pode (e não importa o quão necessário):
  • Possui vários canais para leitura de diferentes sensores de vazamento com fio, agora todos os sensores (5 unid.) Estão conectados em paralelo
  • Gerencie guindastes individualmente. Existem dois deles (um na água quente, o segundo na água fria), e eles são conectados em paralelo
  • Controle de quebra de sensores

A seguir, é apresentada uma descrição dos componentes e sua finalidade (preços em julho de 2015).

Claro, eu também precisava de um programador / emulador, usei este: Emulador de ARM, suporta ARM7, ARM9, ARM11, núcleo Cortex-M3, ADS, IAR, STM32, interface JTAG, versão V8 com buffer duplo . Entre os recursos, é possível mencionar que, além dos fios padrão para a programação SW , eu tive que aplicar a tensão de alimentação atual do chip programável a ele, 3,3 volts no meu caso. É necessário que o programador entenda os níveis de tensão dos valores lógicos. Sem isso, o chip programável não queria ser detectado. Além disso, este programador tem a capacidade de alimentar um dispositivo programável, um pino é fornecido para isso, a tensão é ativada / desativada pelo utilitário JLink.exe.

Mais sobre ferro


Microcontrolador


O cérebro de todo o sistema é um microcontrolador de 32 bits da ST, cuidadosamente soldado por trabalhadores chineses em fábricas chinesas a uma placa que é "compatível" com o Leaf Maple Mini .
Sobre o Leaf Maple Mini
Como notado eta4ever
,
«» , …

Tem 48 conclusões. O núcleo é executado em 72MHz, integrou SRAM - 20KB e Flash - 128KB. Mais detalhes aqui . Esses parâmetros definitivamente encorajam o uso de ferramentas e ferramentas de alto nível, ou seja, são FreeRTOS , display gráfico colorido, C ++, etc. (e não dois LEDs e montador). Em geral, não se negue nada ... exceto C ++, mas isso não é um problema de chip.
Por quê?
C++ , , , . , C++ , , , , .. STM32CubeMX , FreeRTOS. , .

Usando as conclusões do microcontrolador. A partir daqui, você pode adivinhar o que está conectado.


Exibição




O módulo com uma tela TFT de 320x240 pixels construída em um controlador compatível com ILI9341 é responsável pela exibição de informações; ele funciona pela SPI na frequência máxima possível para este pacote (18MHz). O SPI é conectado ao microcontrolador apenas em uma direção, a saída para leitura de dados do módulo de exibição permanece suspensa no ar, porque Não criei essa funcionalidade, mas salvei-a nas pernas livres do microcontrolador. A transferência de dados funciona em DMA .

Um conector para conectar um cartão SD é soldado ao módulo na parte traseira, não testei o trabalho com um cartão SD e o conector não está envolvido neste projeto.

Módulo RTC e EEPROM




O relógio no módulo é implementado com um chip DS3231. Não causei problemas especiais, o único inconveniente foi que todos os valores (data, hora) são armazenados em registradores no formato BCD , quando dois dígitos decimais são refletidos em um byte (nos quatro bits superiores - o dígito mais significativo, no mais baixo - o dígito menos significativo) . Por exemplo, o valor "38 minutos" é armazenado como o valor decimal 56 (este é "38" na notação hexadecimal). Não foi possível descobrir se é possível mudar para o formato binário.

O módulo possui bateria própria; portanto, toda vez que você perde energia, não precisa definir a hora e a data. Além disso, o microcircuito AT24C32 é soldado na placa do módulo, tendo 32768 bits EEPROM! Simplificando, são 4 Kbytes de memória não volátil. O relógio e a memória ficam no mesmo barramento I2C. No momento, a memória é usada apenas para armazenar as configurações do dispositivo, o valor atual das leituras dos contadores e outras coisas. eventualmente ocupado ... 25 bytes. Posteriormente, ele será usado para manter registros de vários eventos e possivelmente para manter estatísticas de consumo (não sei por que, mas haverá uma ocasião para programar a exibição de gráficos).

Além dos contatos e da alimentação do barramento I2C, há mais dois no quadro. "SQW" é o sinal do despertador que pode ser programado através dos registros e "32K" é a frequência gerada pelo DS3231 para outros dispositivos. Este projeto não se aplica.

Módulo com sensor de umidade




É usado como um buffer entre o mundo externo e o microcontrolador. Os fios que vão para as sondas no total têm um comprimento de cerca de 10 metros, sem uma tela. Fios telefônicos convencionais de dois fios. No caso de um golpe estático, espero que apenas este módulo morra, mas não o microcontrolador. É capaz de medir a resistência entre dois eletrodos e fornecer essas informações na forma analógica (tensão de 0 à tensão de alimentação) e digital (0/1, o módulo possui um resistor variável que pode ser ajustado ao limite de operação).

Houve pequenos problemas com este módulo. Ao aplicar e remover a tensão de alimentação, o módulo na saída digital sinalizou um disparo, isso pode ser visto pelo LED piscando por uma fração de segundo (na placa do módulo, um LED é instalado em paralelo com a saída digital). O microcontrolador conseguiu ler um sinal anormal quando a energia do sistema foi aplicada / reiniciada (problema nº 1). A solução foi implementada pulando pulsos de operação curtos, antecipando uma condição fixada por um tempo.

O resistor variável possui um ângulo de ajuste muito pequeno, no qual não consegui encontrar o limite entre a ausência de falsos positivos e a boa sensibilidade (problema nº 2). Mais tarde, foi implementado a leitura do sinal analógico através do microcontrolador ADC. Ao mesmo tempo, tornou-se possível definir o limite de resposta nas configurações do dispositivo como parâmetro. A capacidade de ajustar o nível de resposta agora é considerada supérflua e provavelmente é melhor codificar o valor limite.

Percebeu-se que após vários minutos de operação (aquecimento?), O módulo repentinamente começou a sinalizar operação espontânea (problema número 3, quantos deles?!).

Na fronteira das respostas anormais, a intensidade do brilho do LED (no módulo) aumenta ou diminui gradualmente, como se controlado por um gerador PWM, é claro que isso é ruído e é de alta frequência, o mesmo poderia ser esperado na saída "digital" do módulo (problema no. 4 )

Esclarecerei que todos esses problemas foram resolvidos ao implementar o sinal analógico do módulo.

As sondas (partes de sensores localizadas diretamente em locais de acumulação de água em caso de acidente) são feitas de meios improvisados. Trata-se de estanho (aço) e uma pequena caixa de derivação redonda, modificada mecanicamente para o tipo desejado e com fios soldados no interior. Quando a água entra entre os pares de eletrodos, a resistência diminui e é considerada pelo controlador como um “vazamento”.



Testes de laboratório mostraram que o produto desempenha bem sua função e não é um elo fraco do sistema.

Nutrição


Todo o sistema funciona com o carregamento do telefone - 5 volts, 2A (aqui com uma margem). Na placa Maple Mini, um regulador de tensão de 3,3 volts é instalado, a tensão de entrada pode ser de até 12 volts, as características do estabilizador permitem, mas uma voltagem tão grande não é conveniente de usar, mais sobre isso abaixo.

Com um estabilizador, 3,3 volts também vão para a potência dos módulos RTC, TFT e para o módulo de medição de umidade. Os guindastes são conectados através do conjunto do interruptor de energia ULN2003AN, diretamente da fonte de alimentação, ou seja, trabalhar a partir de 5 volts, menos a queda nas teclas. O ULN2003AN usa apenas dois dos sete canais.

Obviamente, é aconselhável substituir a fonte de alimentação por outra, com uma voltagem um pouco mais alta, porque Às vezes, ao fechar os guindastes, um deles, em uma posição quase extrema devido à operação de seu próprio reboque (duas peças são instaladas no corpo da válvula, para trabalhar nas posições extremas), pára por uma fração de segundo e ocorre uma “recuperação” (devido à folga nas engrenagens da caixa de engrenagens ), depois uma tentativa repetida de apertar a válvula de esfera e assim por diante até que o controlador remova a tensão de alimentação do servoconversor.

O vendedor no site tem informações de que os guindastes devem funcionar a partir de 5 volts; nesse caso, a tensão é fornecida menos. O software é desenvolvido para que, para abrir e fechar as torneiras, a tensão seja fornecida apenas por um determinado período de tempo (6 segundos), período durante o qual as torneiras devem ter tempo para abrir ou fechar. Vale ressaltar que esse efeito não afeta o fechamento incompleto da torneira, pois esse momento chega depois que a torneira interrompe completamente o fluxo de água. Também se pode mencionar que muita voltagem nos servos (aplicada 9 volts no experimento) os faz avançar ainda mais por inércia (depois que o interruptor de limite é acionado) e se encostam na posição extrema com o som característico de um impacto.

Válvulas de esfera servo


As válvulas de fechamento parecem confiáveis, mas a parte eletrônica teve que ser finalizada.



Se você observar o circuito de controle do guindaste, notará que eles são controlados por tensão positiva. O geral "menos" e dois fios de potência de sinal "mais", um para fechar e outro para abrir. Mas o ULN2003AN não pode funcionar nesse modo; nele, quando a chave é aberta, a saída gerenciada é conectada ao menos. A solução é alterar a polaridade de controle do próprio guindaste. Para fazer isso, tive que trocar os sinais do "trailer", porque devido a uma mudança de polaridade, o motor elétrico girou na direção oposta (em comparação com o circuito de estoque), enquanto as posições extremas estão agora em direções opostas. Como resultado, temos um guindaste com um “plus” comum e dois “menos” de controle. Exatamente o que é necessário!

Guindastes com servos em condições de "combate".



Leituras do medidor


Obviamente, nenhum dado é armazenado no próprio contador, que pode ser lido por dois fios removidos dele. Esta é apenas uma corrente com um interruptor de palheta e um ímã localizado em um impulsor rotativo. As medições com um multímetro não mostraram a presença de nenhuma resistência ou capacitância elétrica no circuito. Nos meus contadores, o circuito (com abertura subsequente) do interruptor reed ocorre a uma vazão de um litro de água. Em algum lugar havia informações sobre os medidores, cujo sinal é formado a cada 10 litros. Essa. Eles são diferentes.

O microcontrolador é necessário para ler esses pulsos. A interface do usuário do dispositivo, é claro, fornece o valor inicial.

De problemas existentes: na ausência de eletricidade, o consumo de água não será levado em consideração. Há um defeito de hardware, é necessário consertá-lo - faça backup das baterias, isso também é necessário para as principais funções do dispositivo, caso contrário, o dispositivo não poderá desligar as torneiras, se necessário.

A partir daqui, as duas tarefas a seguir surgem:
  1. . , , « », , () / . , ( ), «», , (, ), , FreeRTOS.
  2. , , « ».
    Feche as torneiras?
    , , , , , 11 , , «» , , «» , !

Controles


Codificador


Localizado ao lado da tela e projetado para navegar no menu. Rotação - vá para o item de menu seguinte / anterior, pressione - selecione / ative um item de menu.

"Botão vermelho"


A maneira mais fácil de desligar as torneiras é pressionar o botão vermelho. Embora não deva ser útil, porque algum tempo antes, o próprio dispositivo tinha que fazer tudo. Mas por precaução, o botão existe. Pressione repetidamente, mantenha pressionado, clique duas vezes etc. não contado, apenas a primeira imprensa e é isso. O modo "emergência" está ativado, só pode ser desativado através de um item de menu especial.

Interruptor On / Off


Eles também podem ser desativados por toques, mas também podem ser abertos, é claro, se o sistema não estiver no modo "travar". Pode ser útil para o desligamento temporário do suprimento de água.

LED tricolor


Tudo aqui também é simples. Para indicar o modo atual: verde - tudo está em ordem, vermelho - nem tudo está em ordem, toques em azul são bloqueados usando a chave seletora (veja o parágrafo acima). A mistura de cores não é usada, três foram suficientes. Mas aqui surgiu um problema. O brilho é tão forte que brilha quando você olha para a tela. 470 ohms para cada cor não foram suficientes. Corrigido programaticamente. Quando o monitor está em um estado ativo (e fica ativo enquanto você usa os controles e por um tempo), esse LED está apagado.

Conclusão


O dispositivo está funcionando, testes periódicos mostram que está funcionando corretamente. Não congela, não é de buggy. Embora eu saiba onde há erros potenciais, mas não críticos, no código, isso não é discutido neste artigo.

Fontes, projeto Keil uVision 5, arquivo de projeto para STM32CubeMX

Source: https://habr.com/ru/post/pt382065/


All Articles