ShIoTiny e o mundo ao redor: conectando sensores a entradas binárias, rejeição de contato e outros problemas


Pontos principais ou sobre o que é este artigo


Outro artigo sobre o ShIoTiny - um controlador visualmente programável baseado no chip ESP8266 . O artigo descreve os recursos de conexão de sensores de vários tipos às entradas binárias do controlador ShIoTiny . Além disso, há respostas para várias perguntas populares de leitores de artigos anteriores da série.


Artigos anteriores da série


ShIoTiny: pequena automação, a Internet das coisas ou "seis meses antes das férias"


ShIoTiny: nós, links e eventos ou recursos de programas de desenho


ShIoTiny: ventilação em salas úmidas (exemplo de projeto)


Site do projeto


Firmware binário, circuitos do controlador e documentação


Introdução ou respostas a perguntas


Todos os meus artigos sobre o ShIoTiny , exceto o primeiro, nasceram de perguntas de leitores que se arriscaram a experimentar o meu firmware.


O fato é que, para responder em detalhes e de uma só vez - eu não tenho a oportunidade. Um hobby é um hobby e é raro alguém dedicar tanto tempo a ele como trabalho, tarefas domésticas ou crianças. Nem eu. E as perguntas das cartas podem ser essencialmente reduzidas a várias. Portanto, é mais fácil escrever um artigo que cobre várias questões em detalhes do que escrever uma dúzia de cartas.


Muitas perguntas dizem respeito a como conectar sensores de vários tipos e como trabalhar com eles. Isso não é surpreendente: trabalhar com relés de saída é bastante simples. E o que eles simplesmente não querem se conectar às entradas! Existem muitas opções. Este artigo é dedicado a este artigo e provavelmente será dedicado ao seguinte: um tópico muito amplo - a conexão de sensores.


Mas, antes de passar à biografia do maravilhoso mundo dos sensores, permitirei que eu use o Habr como uma mídia para responder às perguntas mais populares que eles me fazem em cartas.


Respostas às perguntas mais populares dos leitores


Provavelmente, a pergunta mais popular é " por que você não suporta PWM / DS1821 / RTC ... e assim por diante? " Eu respondo. Porque quando eu projetei o ShIoTiny, não precisava. Quanto ao PWM, simplesmente não há lugar para colocá-lo na placa ShIoTiny . Não há pernas para conectar o RTC . E assim por diante Mas se o projeto se desenvolver com sucesso o suficiente - farei outro dispositivo com a mesma ideologia de programação, mas com um conjunto diferente de periféricos. Obviamente, suportarei alguns chips adicionais no ShIoTiny, como apoiei, por exemplo, ontem o sensor de temperatura DS1820 / 22 . Mas você não pode abraçar a imensidão e empurrar os inéditos. A memória do controlador, como o meu tempo, não é ilimitada.


A próxima pergunta mais popular é: “ Você planeja produzir em massa ShIoTiny? " Eu responderei em detalhes. No momento eu tenho mais algumas placas e se alguém estiver interessado - escreva, eu enviarei. Se eles permanecerem até lá, é claro. Em série (ou seja, 50 a 100 peças), novamente, no momento não pretendo liberá-lo. Simplesmente não existe essa demanda, e deixar dizer que 50 placas não é tão fácil para um hobby e vai me custar muito. Muitos vão querer receber uma taxa pronta - a situação pode mudar. Então, se não tudo, depende muito da opinião e desejo da sociedade.


Outra pergunta feita com muita frequência: “ onde conseguir a fonte? " Eu respondo. Em nenhum outro lugar. Por alguma razão, ainda não posso publicá-las e não sei se posso no futuro próximo.


E, finalmente, perguntas sobre multicast MQTT e UDP . Espero fazer um artigo separado sobre essas questões, porque há muitos recursos. Algo sobre o MQTT está no artigo anterior sobre o sistema de ventilação, mas tudo é descrito lá em termos gerais. E ainda - leia as instruções. Existem muitas respostas, embora este ainda seja um rascunho.


Isso termina com perguntas populares e finalmente lida com o que este artigo foi escrito - o mundo incrível, bonito, assustador e misterioso dos sensores.


Sensor - o que é e por que é?


Qualquer inscrição em um idioma desconhecido é apenas um padrão complexo para alguém que nunca viu letras ou hieróglifos. Não há fotos para cegos. Para os surdos, música. Por que eu estou? E o fato de que a informação é uma exibição condicional de um objeto ou fenômeno em algum meio material. Informações sem um meio material não existe. Assim como a informação não existe sem alguém capaz de entendê-la.


Portanto, se queremos que nosso ShIoTiny não seja "cego", "surdo" e "analfabeto" - devemos ensiná-lo a " perceber " e " entender " as informações sobre o mundo ao seu redor e, com base nisso, tomar certas decisões para gerenciar o que é necessário nos equipamentos.


As informações sobre o mundo existem em uma ampla variedade de representações e em vários suportes de materiais: vibrações do ar - fluxo de som e fóton - luz; a concentração de vapor de água no ar e a temperatura da terra; a presença ou ausência de massa e sua magnitude. E assim por diante Tudo isso pode levar para nós as informações necessárias para a tomada de decisões.


Mas nosso microcontrolador ESP8266 - a base do ShIoTiny - compreende apenas dois tipos de informações - sinais binários digitais 0V - 3V e sinais analógicos na faixa de 0V a 1V .


Portanto, precisamos de " tradutores " do idioma de um fenômeno físico específico ou quantidade física para o idioma dos sinais elétricos que sejam compreensíveis para o microcontrolador ESP8266 . Esses " tradutores " são chamados sensores .


A rigor, no nosso caso, o sensor é uma ferramenta técnica que converte informações sobre o mundo circundante em sinais elétricos que são compreensíveis para os componentes eletrônicos do controlador ShIoTiny .


Sensores são diferentes. Existem milhares e trevas. Mas se você começar a entender, tudo não é tão assustador. Em primeiro lugar , estamos interessados ​​apenas em sensores que geram um sinal elétrico na saída. Em segundo lugar , nos limitaremos apenas a tipos populares de sensores. E terceiro , na prática, não existem tantos tipos de sinais gerados pelos sensores.


Desde o "primeiro" - tudo está claro. É fisicamente impossível conectar um sensor diretamente ao ShIoTiny que forneça informações na forma mecânica, hidráulica ou pneumática.


Com "em segundo lugar" - tudo também está claro. É improvável que alguém conecte detectores rápidos específicos de partículas ou medidores de pH em um lítio radioativo fundido ao ShIoTiny . Bem, se alguém tiver, acho que as qualificações dele são muito mais altas que as minhas e ele provavelmente não precisará deste artigo. Mas a temperatura da água ou do ar, a pressão do ar ou da água, a umidade, a luz, o nível do líquido ou a condição da porta (aberta / fechada) - tudo isso pode muito bem ser medido pelo controlador ShIoTiny nos sistemas de controle doméstico.


Nós vamos lidar com o "terceiro". Quais sinais elétricos são geralmente emitidos por tipos comuns de sensores? Podem ser distinguidos três tipos principais de sinais nas saídas dos sensores:


Sinais binários Ou seja, sinais que possuem apenas dois níveis - lógico 0 ou lógico 1. Os parâmetros elétricos não são importantes - eles sempre podem ser convertidos nos níveis desejados.


Sinais analógicos . Ou seja, corrente ou tensão, variando dependendo do parâmetro medido em um determinado intervalo de valores.


Sinais digitais . Estes são sensores que se comunicam com microcontroladores usando um protocolo específico.


Aqui, talvez, estejam todas as opções que podem ser conectadas ao ShIoTiny . Obviamente, também existem sensores com saída de frequência, saída de fase e sensores com todos os tipos de sinais de saída exóticos. Mas como é impossível conectá-los diretamente ao ShIoTiny, não falaremos sobre eles agora.


Entradas binárias ShIoTiny


Vamos começar com o mais simples - com as entradas binárias ShIoTiny . Eles são indicados pelas entradas1 , entrada2 e entrada3 . Como essas entradas são absolutamente idênticas, consideraremos a entrada Input1 . Tudo o que é dito sobre esta entrada é igualmente verdadeiro para as outras duas entradas binárias - Entrada2 e Entrada3 .


O circuito de entrada binária ShIoTiny é mostrado na figura. Faça imediatamente uma reserva, o circuito com uma pequena falha - era necessário conectar um resistor de 10K a um resistor de 1K . Mas isso não afeta a operação do dispositivo e é maravilhoso. Então, por que existem tantos elementos em um circuito de entrada binário? Essa pergunta também foi feita para mim. Vou tentar responder.


imagem


A entrada binária no ShIoTiny funciona em contatos " secos " e " úmidos ". Além disso, o circuito fornece proteção contra sobretensão (ou seja, se, por exemplo, 5 Volts em vez de 3 Volts chegar à Entrada1 , por exemplo).


Proteção de entrada binária


A proteção contra sobretensão , que é feita em todas as entradas binárias do ShIoTiny , obviamente não salvará o controlador do burnout, se uma tensão de ~ 220V for aplicada à sua entrada. Mas, desde as entradas Input1,2,3 + 5V ou até + 12V - essa proteção economiza completamente.


Essa proteção funciona de maneira muito simples e pode ser aplicada não apenas com o ESP8266 , mas também com outros microcontroladores.


Considere duas opções para a proteção: ao aplicar tensão de + 5V e -5V ao fio neutro ( terra ) à entrada da Entrada1 .


Quando a tensão na entrada Entrada1 é normal, os diodos de proteção D1 e D2 são fechados, pois são ligados na direção oposta.


Assim que a tensão na entrada1 exceder + 3V (por exemplo, reduzimos a entrada1 a + 5V ), o diodo D1 abre e puxa a entrada do controlador GPIO para +3V , impedindo que a tensão no GPIO ESP8266 suba acima de 3V . Na verdade, a tensão será ligeiramente superior a 3V (3,2V ou 3,3V) - mas isso não é importante. A entrada do microcontrolador não queima e isso é importante.


Assim que a tensão na Entrada1 se tornar negativa (por exemplo, colocamos a entrada em curto-circuito em -5V ), o diodo D2 se abre e puxa a Entrada1 para o terra 0V , não deixando a tensão na entrada GPIO ESP8266 cair abaixo de 0V . Na verdade, a tensão será ligeiramente menor que 0V (-0,2V ou -0,3V) - mas isso também não é importante. A entrada do microcontrolador não queima.


O resistor 1K é um limitador de corrente para que não haja curto-circuito durante a operação de proteção. As correntes através dele são pequenas. Por exemplo, em nosso exemplo, se aplicarmos Entrada1 + 5V à entrada, a corrente através do resistor de 1K será de cerca de 2mA . Com uma tensão negativa de -5V na entrada Input1, a corrente através do resistor de 1K será de cerca de 5mA .


Se alguém não entender por que os diodos abrem e fecham, recomendo a leitura do livro "Electronics Step by Step", de R. A. Svorenya . Na Internet, é, por exemplo, aqui . Aconselho especialmente os iniciantes - o idioma deste livro é simples e há muitos exemplos.


Quais são os contatos


Então, com a proteção resolvida. Vamos para outra questão fundamental - conectar a entrada binária ShIoTiny a sensores binários.


Como já dissemos, sensores binários são sensores cuja saída possui dois estados - zero e um. Mas isso é lógico. E fisicamente pode haver duas opções para as saídas binárias do sensor: " contato seco " e " contato úmido ". Considere o que é e com o que é comido.


Um " contato seco " é um contato que não possui sua própria fonte de tensão. Ou seja, apenas dois condutores de metal que podem ser colocados em curto e abri-los. Esta definição inclui a massa de sensores - botões, interruptores, sensores de flutuação para nível de líquido, interruptores de palheta (sensores de campo magnético) e assim por diante. Nos circuitos elétricos, os " contatos secos " normalmente abertos são geralmente indicados como mostrado na figura.


imagem


Normalmente aberto - significa aberto quando não há influência externa - o botão não é pressionado, o interruptor não está ligado, o interruptor reed não possui um ímã por perto ...


Também existem “ contatos secosnormalmente fechados . Nos circuitos elétricos, eles geralmente são indicados como mostrado na figura.


imagem


Ao contrário dos " contatos secos " normalmente abertos, normalmente fechados, na ausência de influências externas, são fechados.


Esses e outros " contatos secos " podem ser conectados com segurança às entradas Sh1oTiny do controlador Input1,2,3 . Sensores com saída do tipo contato seco são conectados às entradas binárias ShIoTiny, como mostrado na figura.


imagem


Se o " contato seco " da Entrada1 for fechado, a tensão de aproximadamente zero volt será aplicada à entrada do controlador (mais precisamente, 0,3 Volts devido a um erro no circuito), uma vez que o " contato seco " fecha a entrada do controlador para aterrar através de um divisor formado por resistências de 1K e 10K . Nesse caso, o Input1 configurará a unidade para saída.


Por outro lado, se o contato seco da Entrada1 estiver aberto, aproximadamente três volts serão fornecidos à entrada do controlador, uma vez que a entrada do controlador é puxada para a tensão de alimentação através de um resistor de 10K . Nesse caso, o nó Input1 definirá zero em sua saída.


Toda esta descrição detalhada é para os curiosos. Na linha inferior, temos o seguinte: se conectarmos um sensor com uma saída do tipo “ contato seco ” à entrada1 , quando o contato estiver aberto, a saída do nó Input1 será zero e, quando o contato for fechado, a saída do mesmo nó será uma. Da mesma forma para entradas e nós Input2 e Input3 .


Vamos para contatos molhados .


Um " contato úmido " é um contato que possui sua própria fonte de tensão em pelo menos uma de suas posições. Por exemplo, a saída de outro controlador ou circuito lógico; linha de energia da lâmpada e assim por diante. Pode haver muitas opções aqui. Mas quase todos eles diretamente ou com a ajuda de vários detalhes permitem a entrada das entradas binárias Input1,2,3 com a saída do dispositivo - “ contato molhado ”.


Vamos começar com o mais simples: combinar a entrada Input1 com a saída do sensor ou microcircuito do tipo " coletor aberto " ou " dreno aberto ".


De fato, no nosso caso , esse circuito é completamente análogo à conexão de um sensor com uma saída de contato seco . Somente a função do contato é realizada pelo transistor.


O esquema dessa conexão é mostrado na figura. A essência do conceito de “ coletor aberto ” ou “ dreno aberto ” é que o emissor (ou fonte ) do transistor de saída está conectado ao “ terra ” (geralmente dentro do microcircuito) e o coletor (ou dreno ) está conectado à “perna” do microcircuito e mais para nada.


Como esse esquema funciona é compreensível para um iniciante (não um gás imaginário, mas uma pessoa!). Assim que o transistor dentro do microcircuito é aberto, ele fecha a entrada Input1 para o aterramento e tudo funciona por analogia com um contato " seco ".



Infelizmente, nem todos os microchips e sensores têm uma saída tão maravilhosa com um coletor ou dreno aberto. Muitos, se não a maioria dos chips e sensores, têm uma saída ativa. Isso significa que, quando temos uma unidade lógica na saída, a saída é "puxada" para a tensão de alimentação e, quando um zero lógico, a saída é "puxada" para o chão. A saída desse chip é mostrada na figura abaixo. Claro, tudo é simplificado.



O que devemos fazer se o microcircuito ou sensor que queremos conectar à Entrada1 tiver uma saída tão ativa?


Existem duas opções aqui e elas dependem do valor da tensão de alimentação do microcircuito ou do sensor Vcc .


Se a tensão de alimentação do chip ou do sensor Vcc for a mesma do ESP8266 (ou seja, 3 Volts), você poderá simplesmente conectar essa saída à entrada Input1 , que é realmente mostrada na figura anterior.


Mas e se a fonte de alimentação do sensor ou do microcircuito for + 5V ou + 12V ? No nosso caso, você pode fazer isso simplesmente ativando o diodo Schottky, como mostra a figura abaixo.



E mais uma nuance: todos os circuitos com um contato " úmido " nos dão um sinal inverso . Ou seja, quando a unidade lógica estiver na saída do sensor ou microcircuito, o nó Input1 definirá a saída como zero. E vice-versa. Mas isso é corrigido programaticamente - basta inserir o nó do inversor no circuito. Tudo isso é mostrado na figura.


imagem


Na verdade, isso é tudo que você precisa saber sobre como conectar sensores às entradas binárias Input1,2,3 .


Obviamente, teoricamente, pode haver outras opções, mas mostrei as maneiras mais simples e comuns de conectar sensores a saídas como " contato seco " e saídas ativas de baixa tensão.


Emoção de contato


Contatos tremem. Não por medo do criador do dispositivo, mas pelo fato de serem resilientes. Quando você pressiona o botão, os contatos podem abrir de 5 a 7 vezes antes de serem fechados de forma estável. O mesmo fenômeno ocorre quando os botões são liberados. E esse fenômeno é chamado - " rejeição de contatos ".


O ressalto de contato é a maldição de todos os sensores de contato mecânicos - interruptores, botões, interruptores de palheta e assim por diante. A conversa desagradável é que causa cliques falsos ou lançamentos falsos de um botão ou contato.


Existem várias maneiras de lidar com esse fenômeno desagradável. Provavelmente, a maneira mais antiga de lutar é o gatilho . Com este método, é usado um botão com um contato de comutação e um acionador RS normal, que são ativados de acordo com o esquema, conforme mostrado na figura.


imagem


Como isso funciona? Muito simples Um gatilho tem dois estados. Enquanto o botão está fechado para a entrada R do gatilho, a saída Q do gatilho é ajustada para zero.


Pressionamos o botão - até o contato do meio tocar o fundo - nada muda, a saída do gatilho é zero. Assim que o contato do meio do botão tocou o contato inferior do mesmo botão e fechou a entrada do gatilho S no terra, um aparece na saída do gatilho. E esta unidade permanece enquanto os contatos "chocalham". De fato, para voltar a zero a saída do gatilho, é necessário que a entrada R do gatilho seja encurtada! Este esquema funciona exatamente da mesma maneira quando você solta o botão.


Podemos fazer um circuito assim no ShIoTiny ? Sim, não tem problema! Na figura, é mostrado.


imagem


Mas gaste duas de suas três entradas em um sensor ?! Além disso, nem todos os sensores têm um contato de comutação!


Não, seguiremos o outro caminho, como legado, a todos os engenhosos teóricos V.I. Ulyanov!


A segunda, e provavelmente a mais comum hoje, a maneira de lidar com o ressalto de contato é um filtro de software .


O que está por trás dessas palavras inteligentes? E novamente - nada complicado. Imagine que não responderemos a mudanças "curtas" no estado dos contatos. Por exemplo, se lermos zero a partir do botão, em breves unidades (digamos, a duração é inferior a 0,3 segundos), vamos martelar pare de reagir. E somente quando tivermos um botão por 0,3 segundos emitiremos uma unidade continuamente - responderemos a isso. A mesma coisa ao alterar o estado de um botão de um para zero.


— , . . RS-!


? ShIoTiny -, .


imagem


Delay0/1 , 0.4 .


, . , , .


Conclusão


, — , , .


.


, , , , — : shiotiny@yandex.ru

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


All Articles