"O destino tem muitas formas ..." ou automatizamos o controle de uma lâmpada usando CANNY 3 tiny e um fotorresistor

No último artigo sobre Habr, falei sobre como recebi o pequeno controlador Canny3 como presente. Nós "piscamos" o LED, apertamos um botão. Sobre isso, em princípio, foi possível finalizar os experimentos.

No entanto, durante as últimas duas semanas, tenho ouvido livros de áudio sobre The Witcher e, portanto, tornaram-se muito mais sérios sobre Destination . De acordo com as informações indicadas no site do fabricante, a família de controladores CANNY se destina principalmente à automação de vários sistemas automotivos e equipamentos especiais.

O problema é que ninguém me deixa dar uma espiada em um carro real com minhas “mãos de ouro” e, em geral, tenho medo de carros. Portanto, tive que comprar uma pequena lâmpada de carro e um fotorresistor especialmente para este artigo. O que você não fará para não irritar o Destino.

Hoje, conectaremos o controlador e a lâmpada do carro a uma fonte de alimentação de 12V, enviaremos uma mensagem à porta COM, automatizaremos a inclusão da lâmpada dependendo da luz e tentaremos o controlador PWM de alta frequência.

Você também acredita no poder do destino? Então você é bem-vindo sob gato.





Parte I: Introdução


Parte I: Introdução
Parte II: Componentes e precauções
Parte III: Como gravar dados na porta COM
Parte IV: Conecte e programe o autolamp e o fotorresistor
Parte V: Tentando diminuir o brilho da lâmpada usando o PWM
Parte VI: Conclusão

No início do artigo, lembro-lhe Não tenho muita experiência em eletrônicos de bricolage. Muitos anos atrás, me envolvi com o CraftDuino - o clone doméstico do Arduino. E além daqueles "artesanatos" que ele fez por mimDrzugrikesta é realmente a minha experiência em eletrônica DIY é limitada.

Aparentemente, conhecendo meu amor pelos desenvolvimentos domésticos, eles decidiram me dar o Canny 3.

Mesmo no processo de preparação do último artigo, fiquei surpreso que o controlador possa ser alimentado não apenas a 5V, mas também a 12V, enquanto a tensão nas saídas será a mesma que em entrada e a corrente máxima por canal é de até 100mA. Pareceu-me interessante, porque meu velho CraftDuino não podia.

Por cálculos simples usando a fórmulaP=UIPercebi que a potência máxima por saída do controlador será de cerca de 1,2 watts. Decidiu-se pegar uma lâmpada com uma reserva de energia, por precaução. A escolha caiu em uma lâmpada LED de 0,9 W.

No entanto, eu ainda não queria gravar ingloriamente o presente de Ano Novo e, antes de conectá-lo, decidi perguntar aos desenvolvedores se entendia tudo corretamente.
Para minha grande surpresa, eles não apenas me responderam, mas também sugeriram que, se você combinar várias saídas, a potência aumentará proporcionalmente. Depois disso, decidiu-se comprar algo mais poderoso que a lâmpada e a escolha caiu no ventilador do carro, que é inserido no isqueiro. No entanto, para não fazer “vinagrete” do artigo, decidi adiar as manipulações com o ventilador do automóvel até a próxima vez.


Parte II: Equipamento e Precauções


Então, no início dos experimentos, eu tinha o seguinte:

  • Dispositivo de carregamento e lançamento "Orion Vympel-55". Eu já o tinha e, felizmente, ele pode não apenas carregar as baterias, mas também ser uma fonte de energia em uma ampla faixa (incluindo 12 V);



  • Autolamp LED "Skyway H3. SH3-9SMD-5050 W. " Pelo que entendi, a lâmpada pode ser usada em vários faróis, mas como não tenho onde fixá-la, escolhi a potência e a facilidade da conexão sem solda;



    A propósito, voltando à fórmula de cálculo de potência, decidi medir as correntes e garantir que caiba nos 100 mA permitidos. Em teoria, a corrente da lâmpada deve serI=P/U=0.9/12=0,075A.
    Mas, a julgar pela medida, ficou um pouco menos. Embora talvez eu tenha feito algo errado.



  • Fotoresistor FR-765. Eu o escolhi simplesmente porque não havia mais nada na loja.



Bem, é claro que eu tinha: um controlador, uma tábua de pão, fios, crocodilos etc.

Em um artigo anterior sobre o Canny 3, eu realmente elogiei o controlador, mas aconteceu que há uma mosca na pomada. Na última vez, não usei o pacote de cabos fornecido com o kit, mas desta vez não pude ficar sem ele.

Como eu uso muito pouco um ferro de soldar, eu queria reduzir seu uso a um mínimo vital. Portanto, no final, coletei todos os circuitos em conexões destacáveis. Usei fios especiais (pai-pai, mãe-mãe, pai-mãe), tábuas de pão e clipes de crocodilo.

E se os desenvolvedores do controlador não são os culpados pelo fato de que, no processo de descascar o cabo, recebi alguns cortes, então os momentos em que toda a minha estrutura caiu no chão devido ao fato de eu ter enganchado o chicote "de madeira", em parte em sua consciência.

Por um lado, um torniquete é uma coisa boa. Para instalar o controlador dentro do carro, acho que o chicote de cabos está correto. Os fios estão presos e, se estão bem torcidos, encaixam-se completamente nos conectores "mãe", na minha "tábua de pão". Por outro lado, como não é conveniente fazer experimentos com o cabo com a placa de ensaio, até mesmo uma foto bonita com o controlador virado para o rosto foi difícil de fazer por causa dos “fios de carvalho”.

Eu disse um pouco mais alto que não queria usar um ferro de soldar, mas pelo menos uma vez eles teriam que se armar.

Para medir o sinal do fotorresistor, precisamos “inseri-lo” no conversor analógico-digital (ADC) do controlador. Mas o fato é que, ao contrário, por exemplo, do meu antigo Craftduino. No caso de Canny, foi necessário colocar um jumper.

No começo, não li atentamente a documentação e pensei que as saídas 5 e 6 do controlador são as saídas de A5 e A6. Até escrevi um programa e tentei durante muito tempo fazer leituras. Naturalmente, não tive êxito porque, por padrão, sem preparação preliminar, os canais 5 e 6 funcionam como uma entrada discreta normal.

Depois de ler a documentação do controlador com uma "mente renovada", percebi que ainda precisava soldar. Você não tem ideia de como eu tinha medo de estragar tudo.
A última vez que tentei soldar algo no circuito que fiz por mim Drzugrik, Consegui preencher todos os capacitores com solda perto do local de solda.
Desta vez, o processo de soldagem foi simples. Foi o suficiente para colocar com cuidado uma gota de solda na pista.

A aparência do meu jumper de solda pode ser vista na foto abaixo:



Liguei apenas a sexta saída ao canal A6, não ousei soldar o quinto canal, para não encher acidentalmente os dois jumpers com solda.

Teoricamente, era possível ficar sem um ferro de soldar conectando o orifício e o terminal nº 6 com um fio. Mas isso seria terrivelmente inconveniente.

A foto abaixo mostra a conexão do pino nº 5 e do pino ADC nº A5 com um fio pai para pai:



a última coisa que você deve prestar atenção antes de começar a trabalhar.

Atenção!Não repita de um para um, o que descreverei mais adiante no texto. Não tenha preguiça de substituir as conexões de plug-in por solda, pegue fios mais grossos, leia a documentação. Não sou especialista nesses assuntos, por isso reuni tudo "da melhor maneira possível". Também aconselho que você monitore cuidadosamente o risco de incêndio e não deixe o equipamento sem vigilância. Consegui cheirar alguns fios fumegantes algumas vezes. Bem, mesmo na fonte de alimentação havia proteção contra curto-circuito (eu também organizei). Portanto - tenha cuidado.

Além disso, não esqueça que, apesar de as tensões e correntes que temos são pequenas, ainda tocar as partes vivas sob tensão pode ser doloroso (especialmente se você as cutucar com uma parte ferida do corpo) .


Parte III: Como gravar dados na porta COM


Para, de alguma forma, calibrar nosso sensor de luz ambiente, precisamos entender quais valores ele envia ao controlador, dependendo do nível de luz. Para fazer isso, precisamos enviar dados do ADC para o monitor. Ao trabalhar com o Arduino e seus clones para resolver esses problemas, usei um monitor de porta COM.

No caso do Canny 3 tiny, o processo de leitura de dados de uma porta COM virtual não é muito mais complicado do que para o Arduino. Mas há uma diferença fundamental. O ambiente de desenvolvimento CannyLab não possui seu próprio monitor de porta COM.
Eu usei o Hterm porque é multiplataforma, leve e não requer instalação. Mas você pode usar qualquer outro.

Vou dizer ainda mais, nada nos impedirá de usar o monitor de porta COM do Arduino IDE.

Tudo funcionou imediatamente no meu sistema Windows 10 e eu não precisei instalar drivers para a porta COM virtual separadamente. Mas, por precaução, direi que o driver parece estar incluído no ambiente de desenvolvimento CannyLab (está na pasta drv \ canny3tiny_vcp).

Para não explicar melhor como funcionam os blocos do gráfico associados ao envio de dados para a porta COM virtual USB, darei um exemplo simples.

Hoje, como exercício, enviaremos a mensagem "HABR" usando o controlador. Primeiro, você precisa baixar o IDE CannyLab. Pode ser facilmente encontrado no site oficial do desenvolvedor.

A propósito, usei o CannyLab v 1.42, mas acho que nas versões anteriores não haverá problemas com o desempenho dos diagramas.

O processo de gravação de software no novo controlador e os princípios básicos do trabalho com o Cannylab I descritos no capítulo 3 do último artigo .

Crie um novo gráfico, selecione Canny 3 tiny na caixa de diálogo. E transferimos blocos, constantes e registros para o diagrama, como na imagem abaixo. Obviamente, não é necessário transferir rótulos de texto; nada depende deles durante a execução do diagrama.



Se você não gosta de mover blocos, pode fazer o download dos diagramas deste artigo usando o GitHub.

Observe que o envio de uma mensagem para a porta COM é um pouco estranho e é necessário escrever letras em um par de caracteres no espelho, mas você pode se acostumar.

Vou explicar em partes.

No bloco "Parameter Setting"definimos as configurações do driver USB VCP. Primeiro, ative o modo de transferência na porta COM virtual e defina o comprimento da mensagem transmitida. No nosso caso - 6 caracteres, incluindo feed de linha.

No bloco "Texto da mensagem", escrevemos o texto da mensagem em constantes (não esqueça de mudar para o modo "chr") e transferimos essas constantes para os registros de driver correspondentes. Mais uma vez, chamo a atenção para o fato de escrevermos a mensagem na ordem inversa, tanto nos pares de símbolos como nos registros dos condutores.

Último bloco "Transferência de mensagens"Envia com uma frequência especificada nossa mensagem para a porta COM. Para isso, usamos um bloco PWM. Não confunda com o RF PWM, que usaremos ao conectar a lâmpada. Nesse caso, o bloco gera metade do tempo "0" e a segunda metade "1". Você pode "brincar" com o tamanho do período e preencher para aumentar ou diminuir a frequência do envio de mensagens.

É necessário conectar um LED verde neste bloco PWM para verificar a operação do controlador. Se tudo estiver em ordem, o LED piscará com a frequência do envio de uma mensagem.

Como escrever um programa para o controlador, eu já disse em um artigo anterior . No entanto, nos últimos tempos, aprendi outro truque interessante.

Quando conectamos o controlador ao computador, ele entra no modo de gravação do programa. Anteriormente, para entrar no modo de tempo de execução, removi o controlador do computador e prendi o carregamento USB nele.

Descobriu-se que existe uma maneira mais fácil. Depois de conectar o controlador à porta USB do computador e clicar no botão "Conectar" no CannyLab , vá para o menu "Dispositivo" e selecione "Executar" .



O controlador começa a executar o programa gravado, recebendo energia da porta USB. Depois disso, o controlador ficará disponível no monitor da porta COM. É verdade que, para voltar ao modo de gravação de programa, o controlador precisará ser removido e reinserido na porta USB do computador.

E aqui está o nosso "HABR" no monitor de porta Hterm COM. Preste atenção à velocidade de transferência de dados e outras configurações.



E este é o monitor da porta COM do Arduino IDE:



A foto mostra como o controlador funciona após a gravação do diagrama: o



LED vermelho indica que a energia está sendo recebida pela porta USB do computador e o verde "pisca" com o ritmo das mensagens transmitidas pela porta COM USB virtual.


Parte IV: Conectamos e programamos uma lâmpada de carro e um fotorresistor.


Para começar, consideraremos a opção mais simples. Basta conectar a lâmpada ao terminal nº 1 do controlador e o fotorresistor ao terminal nº 6 (ADC).

Tudo é bem simples, mas, para o caso, eu desenhei um diagrama:



Mas aqui parece ao vivo:



“-” e “+” da fonte de energia que conectamos aos terminais correspondentes do Canny 3 minúsculo, pino nº 1, é conectado ao alojamento da lâmpada e a “cauda” da lâmpada com uma vantagem na tábua de pão.

Com um fotorresistor, tudo também é simples. Além disso, levamos a tábua de pão do barramento para a tábua de pão e o sinal de menos vai para o pino nº 6 do controlador, que anteriormente conectamos com o jumper ao ADC.

Eu já escrevi acima que toda a minha estrutura caiu algumas vezes da tabela. Portanto, mais adiante nas fotos, pode haver pequenas diferenças em termos de cores dos condutores e pontos de entrada na tábua de pão.

Agora vamos escrever um programa.



Considere o novo dia nos blocos.

Vamos começar com o bloco "Obtendo o valor do ADC e convertendo-o em suítes" .
Neste bloco, traduzimos os valores que o ADC (0 a 1023) pode nos fornecer em iluminação (lux).

Precisamos fazer uma medida de iluminação quando está clara e uma medida em condições mais escuras.

Assim, no “valor de” registrei a leitura mínima do ADC “0” e no “resultado de” o valor zero do nível de iluminação.

No “valor para” , registrei as leituras do ADC = 20 e a iluminação correspondente igual a 300 lux, entrei no “resultado para” .

Não tenho uma descrição detalhada dos parâmetros do fotorresistor, mas suspeito que ele não tenha uma característica completamente linear, mas isso é suficiente para nós agora.

Verifique previamente como o diagrama é realizado no simulador. Em mais detalhes sobre o trabalho no simulador CannyLab que escrevi aqui .

Aqui está o que eu acabei com:



Imagine que o fotorresistor passou um valor de 10 para o ADC.O bloco "Display (MAP)"isso é essencialmente escala linear. Dez é exatamente metade da escala da nossa escala, o que significa que a saída será metade da faixa de 0 a 300, ou seja, 150. Isso está abaixo do nível especificado de 300 lux. Portanto, um é enviado para o registro de canal n ° 1 (saída n ° 1) e a lâmpada acende . Mas ele não liga imediatamente, mas apenas se estiver escuro por pelo menos um segundo (1000 milissegundos).

Para entender qual mensagem receberemos na porta COM, mudei a exibição dos valores no simulador para o formato hexadecimal.



Considere o “registro de configuração de mensagens VCP D1: D0 , o valor 3130 entra nele. Como lembramos, esse é um par de caracteres, cada parte representando um código de caracteres hexadecimal. Acontece que 31h é o código de caractere "1" em ASCII, 30 é o código zero em ASCII.

No registro de instalação da mensagem "VCP D3: D2" , teremos os caracteres "0" e "5". Coletamos os valores dos pares de caracteres na ordem de D0 a D3 e obtemos: "0", "1", "5", "0". Então, adquirimos nosso 0150 lux.

Mas como se costuma dizer "nem um único simulador ...". Vamos ver o que acontece na prática.

Medição sob a luz do candelabro e luz natural (iluminação combinada): As



leituras do medidor de luz de fábrica e do nosso caseiro coincidem quase perfeitamente.

Medição à luz do dia:



Extremamente pior.

Provavelmente, isso se deve à não linearidade das características do fotorresistor e também ao definirmos o limite inferior de escala para zero, mas não complicaremos o diagrama para aumentar a precisão da medição. No nosso exemplo, o principal era entender o princípio geral de obter valores de iluminação. E o aumento da precisão pode ser adiado até a implementação desses projetos no carro ou em casa.

Verificamos a operação do circuito, fechamos o sensor com um dedo e, em seguida, removemos o dedo.



E agora há uma opção quando está escuro na sala:



a lâmpada está acesa. Tudo funciona como deveria.


Parte V: Tentando diminuir o brilho da lâmpada usando PWM


Vamos complicar um pouco o esquema alterando o brilho da lâmpada. Para fazer isso, precisamos de um PWM de alta frequência (RF PWM), no Canny 3 tiny é implementado nas saídas 3 e 4.
Decidi usar a saída 4.

O esquema de conexão permanecerá praticamente inalterado. Simplesmente, em vez da saída nº 1, conectamos a saída nº 4 à lâmpada, e



é assim que fica na montagem. Toda a diferença é que, em vez de um fio branco, o quadro agora é azul.



O diagrama também não mudou muito.



Não vou pintar o diagrama em detalhes. As principais mudanças na configuração da saída 4, que usamos para o PWM. Nesta seção, devemos definir o "Registro de configuração de preenchimento"leva valores de 2 a 255 microssegundos, decidi não arriscar e escolhi 254. Observe que ele é instalado para dois canais ao mesmo tempo (nº 3 e nº 4). Em seguida, escrevemos "1" no "registro de habilitação de canal PWM No. 4" , incluindo o PWM de nossa lâmpada.

No bloco “Ligando a lâmpada no modo PWM (com baixo brilho)”, o novo para nós é apenas “Registre-se para definir o canal de preenchimento n ° 4, μs” Escreveremos o valor “10”, desde que o nível de iluminação acima do fotossensor seja inferior a 250 lux, em dentro de 1 segundo.

A foto abaixo mostra que a lâmpada acende, mas brilha pouco.



Se você deseja que a lâmpada brilhe mais, é necessário alterar apenas o valor da constante "10" para qualquer número maior. Por exemplo, você pode pegar o número 127; no nosso caso, é metade do tempo necessário para preencher o período de RF PWM, o que significa cerca da metade do brilho da lâmpada.



Deve-se notar que o RF PWM com esta lâmpada funciona de maneira notável. Aqui estão três fotos: na primeira, definimos o valor em "Registre-se para preencher o número do canal 4" para 10 μs, na segunda - 110 μs, à direita - 210 μs.



Em princípio, o autolamp do nosso exemplo, como eu o entendo, é usado em sinais de posição e, às vezes, em faróis de nevoeiro de carros.
Penso que, se refinarmos o esquema e o diagrama, seria possível implementar a inclusão da luz de fundo com pouca luz em máquinas mais antigas. É verdade que você precisa considerar o efeito da iluminação artificial à noite. De modo que nas estradas, nos túneis e nos faróis dos carros que se aproximam, a lâmpada não se apaga. Ou seria possível controlar a lâmpada no compartimento de passageiros para que, por exemplo, as lâmpadas nas portas do Zhiguli ou Niva nem sempre acendessem quando abertas.


Parte VI: Conclusão


No processo de escrever este artigo, experimentei um forte senso de nostalgia.
Enquanto estudava no instituto, meu amigo e colega de classe Seryoga tinha um chique sedan azul da marca VAZ 2107. O que ele simplesmente não fez com ele: ele conectará algum tipo de mangueira (para aumentar o impulso), instalará um ventilador no compartimento de passageiros para que ele ligue com um botão separado e, em seguida, iniciará o carro com o pressionar de um botão (apenas com a chave girada ignição). Em geral, ele simplesmente não “sintonizou” sua “andorinha”. Muitos anos se passaram desde então, meu amigo mudou-se para um carro mais sólido, mas tenho medo de imaginar o que ele faria com seu Zhiguli se ele adquirisse esse controle há 10 anos.

Graças a este artigo, também me lembrei do meu destino. Afinal, estudei por muitos anos como engenheiro de automação, mas não trabalhei um dia apenas na minha especialidade.
Acontece que é tão legal mergulhar no mundo DIY. No processo de montagem dos circuitos mais de uma vez "preso", ligue e desligue a lâmpada e o LED com um botão. É uma sensação agradável quando algo funciona como pretendido. Também me peguei com a ideia de que programar um controlador usando diagramas é uma tarefa mais meditativa do que escrever código no IDE do Arduino. Uma percepção completamente diferente do programa.

Enquanto escrevia este artigo, pedi uma versão do Canny 3 tiny sem o chicote de cabos. Agora vou descansar um pouco e escrever um artigo sobre a instalação desse controlador em uma tábua de pão e, por si só, analisaremos mais alguns exemplos de automação de iluminação com sua ajuda.

, , .

UPD:
, , :


  1. «, , – !» CANNY 3 tiny.
  2. « ...» (CANNY Arduino) Raspberry PI.
  3. « ?» bluetooth Xamarin (Android).

All Articles