Em um projeto anterior, discuti opções para usar Transformadores de Corrente e construí um amplificador de canal único/retificador de precisão para um. Neste projeto, estamos levando essa ideia a novos níveis.
A casa que alugo tem apenas 240V/16A para a garagem. Isso é infeliz, porque, como um Maker, tenho alguns brinquedos bem divertidos na minha garagem, como uma fresadora CNC e um cortador a laser. Tenho alguns moldes para usinar para um grande projeto que vem por aí, no qual estarei construindo algumas peças de plástico reforçado com fibra de carbono. Meu antigo compressor desarma o disjuntor da garagem instantaneamente quando ligado, então tive que reavaliar minhas opções para operar a fresadora CNC — ela precisa de mais do que os 16A disponíveis em carga total. Por causa disso, comprei um compressor relativamente pequeno e de baixo ruído para reduzir o consumo de corrente, mas preciso de uma maneira de garantir que ele não será ligado quando o fuso da CNC estiver sob alta carga, ou quando o chiller do fuso estiver funcionando.
Minha solução é construir um monitor de corrente de múltiplos canais, o que me permitirá monitorar o consumo de corrente do roteador e dos equipamentos associados. Isso deve me permitir determinar quando é seguro ligar o pequeno compressor, dependendo das outras cargas do sistema. Preciso ter um fluxo de ar constante para o fuso de troca de ferramentas, pois os rolamentos precisam ter ar fluindo através deles para mantê-los limpos, e o pistão no trocador precisa aplicar pressão constante à ferramenta para garantir que ela não escorregue, então a pressão do ar é vital.
Terei 6 canais de saída para a placa controladora para corresponder aos 6 canais de detecção de corrente. Não preciso de tantos canais para o meu projeto, mas como um design genérico de código aberto, você pode querer fazer algo diferente com a placa do que eu. Planejo ter um display na placa também, para mostrar a corrente em tempo real.
Este projeto não é um medidor de energia. Ele não possui nenhuma capacidade de monitorar a tensão. Portanto, também não pode monitorar o fator de potência da carga. Meu requisito é puramente tentar garantir que eu não dispare meu disjuntor de 16A. Se você precisa dessa funcionalidade, este projeto pode ser um bom ponto de partida, pois estarei adicionando um pequeno transformador para isolar a tensão AC e reduzi-la para um nível mais gerenciável.
Como de costume em meus projetos, você pode encontrar os arquivos de design no GitHub; eles estão livres para uso sob a licença muito permissiva do MIT. Isso permite que você use o projeto livremente, como desejar. Se você está procurando pelos componentes usados para construir este projeto, você pode encontrá-los todos na minha biblioteca gratuita e de código aberto Altium Designer Library®.
Acima está o design de PCB sobre o qual você estará lendo no Altium 365 Viewer; uma maneira gratuita de se conectar com seus colegas de trabalho, clientes e amigos com a capacidade de visualizar o design ou fazer o download com um único clique! Faça o upload do seu design em questão de segundos e tenha uma maneira interativa de examinar em profundidade sem nenhum software pesado ou poder de computação.
Apesar do número de componentes no PCB para este projeto, os esquemáticos para este monitor de corrente são relativamente simples.
Os sensores de corrente são exatamente os mesmos que eu construí anteriormente, utilizando os transformadores de corrente Talema. Tenho cinco sensores de 10A com uma amplificação de 2:1 do sinal, que, com retificação, proporciona quatro vezes a amplitude do sinal da corrente alternada. O sexto sensor é de 15A com amplificação de 1:1, o que deve permitir o monitoramento da amplitude total do fuso de troca de ferramentas de 1800W. Este é um circuito retificador de precisão básico e padrão. Existem circuitos retificadores de precisão mais avançados que adicionam alguns componentes extras (como um diodo em paralelo com o resistor de feedback). Para os propósitos deste projeto, o circuito básico oferece mais do que eu necessito em termos de precisão e tolerância.
O coração deste projeto é o microcontrolador, que irá captar todas as leituras dos sensores e determinar quais saídas devem ser ativadas. Eu estava considerando seriamente a nova série STM32G de microcontroladores, mas acabei optando por um NXP LPC11U35. O principal atrativo do LPC para mim é a funcionalidade de bootloading via USB, permitindo-me implantar rapidamente novos firmwares na placa uma vez que ela esteja instalada no gabinete do meu roteador CNC. Quase toda a série LPC permite que o dispositivo inicie como um dispositivo de armazenamento em massa USB com o bootloader ROM integrado, o que permite que novos firmwares sejam copiados para o drive USB que aparece em um computador conectado, sem a necessidade de qualquer hardware ou software adicional. Esta funcionalidade me permitirá desenvolver firmware no meu escritório e facilmente transferi-lo para a placa instalada.
O principal inconveniente do LPC11U35 é que ele é um ARM Cortex mais antigo e possui apenas ADCs de 10 bits. Preciso verificar se o ADC me dará resolução suficiente para este projeto.
No artigo anterior sobre transformador de corrente, esqueci de obter a tensão RMS do sinal após o amplificador, e só capturei a tensão RMS do sinal vindo do transformador de corrente.
Reconstruí o circuito do transformador de corrente em uma protoboard para obter algumas novas leituras de osciloscópio. Estou usando um relé de estado sólido acionado pela minha fonte de alimentação de bancada para ligar o aquecedor cerâmico de 1.1kW que está em cima de uma forma de bolo virada para baixo para isolamento térmico da minha bancada.
O traço azul (canal 2) é a saída do retificador de precisão, e o traço amarelo (canal 1) é a saída AC do sensor de corrente antes do opamp.
Com o amplificador do sensor de corrente construído conforme o circuito deste projeto, tenho 1.299v RMS com um teórico 4.429A fluindo através dele. Isso me dá uma resolução de cerca de 293mV por ampere. Com um ADC de 10 bits (1024 valores) e uma faixa de 3300mv (resolução de 3.2mv), isso me dá uma resolução legível de cerca de 0.01A, o que não é incrível comparado aos ADCs de 14 ou 16 bits em microcontroladores mais modernos, mas ainda suficiente para este projeto, e muitas outras aplicações também.
Há muita coisa acontecendo nesta única folha de esquemático! Vale a pena notar imediatamente que o MOSFET P-Channel de pull-up na linha USB não é necessário para as últimas revisões de silício da série LPC11U, mas vou deixá-lo porque tenho alguns MCUs antigos em mãos que eu poderia usar para montar esta placa e não quero ser pego sem minha conexão USB funcionando. Se você está comprando um estoque novo do LPC11U35, pode dispensar tudo associado ao IC3.
Enquanto estamos no tópico de USB, eu também tenho um diodo TVS que é projetado para proteger linhas USB 2.0 de eventos de ESD. Conectores USB são um ótimo local para uma descarga ESD diretamente no microcontrolador, então eles são minha principal prioridade para proteção.
À medida que continuamos pelo lado esquerdo do esquemático, eu tenho um circuito integrado supervisor de reset para garantir que a alimentação de 3.3V esteja estável antes de iniciar o MCU, com um botão para resetar manualmente a placa. Eu também tenho o botão de habilitação do bootloader junto a ele, pois gosto de manter as coisas logicamente agrupadas. Para levar a placa ao modo bootloader de armazenamento em massa USB, é simples: basta segurar pressionado o botão de programação S2 e, em seguida, pressionar o botão de reset S1. Manter o botão de programação pressionado por um segundo ou mais após a inicialização fará com que o dispositivo inicie como um dispositivo cliente de armazenamento em massa USB, se o cabo USB estiver conectado.
No canto superior direito do esquemático, eu também tenho um conector padrão de depuração de fio único de 10 pinos (SWD) para permitir que a placa seja depurada em um IDE.
Finalmente, a filtragem de entrada para o microcontrolador. Chegaremos aos conectores de IO em uma seção posterior do artigo, então não se preocupe que eu tenha pulado as duas barras e como configurá-las! A filtragem de energia para esta placa é bastante crítica, pois será instalada em - e alimentada por - uma máquina industrial que gera uma grande quantidade de ruído elétrico (tanto conduzido quanto irradiado). Há mais de 2000W de fornecimento AC-DC, um Acionamento de Frequência Variável de 2200W rodando um fuso, servos DC, um chiller industrial e um coletor de pó, todos funcionando a partir da mesma fonte AC. Devido à quantidade de ruído, estou colocando uma conta de ferrite perto de cada pino de alimentação com dois capacitores de desacoplamento - normalmente, em um design de microcontrolador, eu teria apenas uma conta de ferrite e talvez um par de capacitores de grande porte, mas para este design quero ter os traços mais curtos possíveis entre o microcontrolador e o filtro. Como os pinos de alimentação do microcontrolador estão em lados opostos do dispositivo, optei por construir um filtro para cada pino para manter as trilhas curtas.
O ferrite para cada pino de alimentação foi escolhido para ter a maior resistência possível a 100MHz, enquanto apresentava a menor resistência DC possível. Basicamente, tentei determinar quanto de resistência DC eu estava disposto a aceitar e, então, maximizei a resistência na frequência para essa resistência DC.
Meu roteador CNC já possui múltiplas fontes das quais posso escolher, a linha de 5V é a mais limpa e menos utilizada, então faz sentido alimentar a placa a partir desta fonte. Como bônus, isso também me permitirá alimentar a placa a partir de um cabo USB na minha bancada. Como só espero que uma dessas fontes esteja alimentando a placa, adicionei um simples diodo a cada entrada para atuar como proteção contra polaridade reversa e proteção básica contra ambas as fontes serem conectadas ao mesmo tempo.
O diodo de proteção foi escolhido por ter uma baixa queda de tensão direta para garantir que um regulador linear de muito baixo custo pudesse ser utilizado sem que a queda de tensão combinada de ambos os dispositivos reduzisse a saída abaixo dos 3,3 volts de que necessito.
Entre o regulador linear e o diodo de proteção, adicionei um filtro pi. Não sei exatamente com quais frequências estarei lidando na entrada, então optei pela maior indutância possível dentro dos indutores disponíveis de 4-5mm. Estou usando um indutor de núcleo de ferrite blindado enrolado para obter a menor resistência DC possível, já que esta placa poderia potencialmente puxar até 1 ampere com todos os LEDs e Optoisoladores alimentados. Com o requisito de corrente e tamanho conhecidos, era apenas uma questão de procurar um valor de alta indutância com um indutor de baixa resistência DC que também atendesse aos requisitos de tamanho e corrente. Coloquei um capacitor de 10uF de cada lado do indutor para completar o filtro pi, sendo este um valor de baixo custo que ainda possui uma quantidade decente de capacitância.
Provavelmente não preciso optoisolar cada saída, já que os relés de estado sólido que uso têm optoisoladores embutidos, mas, sendo um design de código aberto, não sei se talvez alguém conecte um relé ou o IO de um controlador industrial diretamente à placa. Como um bônus adicional, o isolador me dá paz de espírito. A corrente para o LED no isolador é maior do que o ARM Cortex pode fornecer, então eu tenho um MOSFET N-Channel muito barato para acionar o LED no optoisolador e um externo que pode ser visto para indicar que a saída está habilitada.
Também só preciso de fato de duas saídas para o meu uso neste design de placa, mas pensei que, como um projeto de código aberto, provavelmente seria bom ter um design mais genérico. Estou adicionando 6 canais de saída para corresponder aos 6 canais de detecção de corrente, então, se isso fosse usado em uma máquina industrial diferente, permitiria que o controlador habilitasse ou desabilitasse cada carga para a qual há um sensor de corrente.
Também tenho um diodo TVS que é o mais próximo de 5V que consegui para proteger a placa contra ESD nos conectores de entrada. Estou planejando usar alguns conectores JST KH pré-crimpados da DigiKey para conectar meus relés de estado sólido a esta placa, que são compatíveis com JST PH. Também adicionei um bloco de terminais de fio-para-placa com passo de 2,54mm à placa, para proporcionar flexibilidade adicional para outras aplicações. Os fios pré-crimpados são ótimos para mim, pois posso cortar um ao meio e acabar com dois cabos, prontos para usar com o relé de estado sólido, evitando ter que cortar comprimentos de fio e desencapar duas extremidades - potencialmente me poupando segundos na instalação! Mas falando sério, os conectores crimpados vão ser mais seguros e menos propensos a soltar ou sofrer fadiga em uma máquina que tenha muitos trancos e vibrações.
O último bloco esquemático deste projeto é o display LCD. Decidi usar um display gráfico da Newhaven relativamente barato e robusto, pois eles têm uma interface SPI simples. Eu realmente esperava usar um display de 128x64 pixels, mas a placa simplesmente não tinha espaço, então voltei ao esquemático durante o layout da placa e mudei o design para usar um display de 128x32 pixels. Ele precisa de muitos capacitores de desacoplamento, mas, de outra forma, tem muito pouco em termos de requisitos de conectividade.
Um dos aspectos chave deste projeto é que tenho cinco canais de sensores de corrente idênticos e seis canais de saída idênticos, tornando o design multicanal ideal para este projeto. Na minha opinião, isso é algo em que o Altium se destaca muito em comparação com outros softwares ECAD que usei. Suas funcionalidades permitem o roteamento rápido e o layout da placa e esquemáticos fáceis de ler.
Em vez de duplicar blocos de folhas esquemáticas na sua folha de nível superior, como mostrado abaixo, posso tornar o esquemático muito mais limpo apenas adicionando um bloco de folha esquemática e usando a função REPEAT nele.
Isso pega todos aqueles blocos esquemáticos e os transforma em uma pilha virtual de componentes. Para este projeto, permite uma única conexão do microcontrolador a todos os sensores de corrente. Se eu precisar mudar os portos no bloco do símbolo esquemático, as alterações serão aplicadas a todos os canais de uma vez, economizando tempo se meu projeto precisar de mudanças durante a fase de design.
Ao usar a função de repetição, agora tenho todos os nossos canais de sensor agrupados, tornando o esquemático mais fácil de ler, e isso facilitará muito o layout da PCB quando eu chegar a esse ponto do projeto.
Vamos ver como tirar vantagem dessa funcionalidade e usá-la em seu design.
Para que as ferramentas multicanal funcionem, você precisa usar barramentos para juntar suas conexões para os canais. No nosso esquemático do microcontrolador, em vez de ter um porto para cada conexão ADC, teremos um único porto para todas as conexões.
Isso torna seu esquemático mais limpo, não exigindo que você tenha todos os 6 portos separados.
Você pode usar Colocar -> Ônibus no menu principal para colocar um ônibus em vez de um fio. Você pode pensar em um ônibus como um conjunto de fios juntos. Para fazer o ônibus funcionar, você precisa informar ao Altium quantas conexões estão sendo executadas no ônibus. Isso é feito colocando um rótulo de rede (Colocar -> Rótulo de Rede) no ônibus e dando a ele um nome como ADC[0..5]. Isso significa que o ônibus transportará ADC0, ADC1, ADC2, ADC3, ADC4 e ADC5, os dois pontos dentro dos colchetes significam “de 0 a 5”.
Ao usar a função de repetição, você precisará que a numeração da sua rede comece em 1 em vez de 0. No entanto, para os ADCs, eu também tenho o sensor de corrente de 15A, que não faz parte do bloco repetido, e por isso estou começando com 0. O canal ADC 0 será para o sensor de 15A, com 1 a 5 para os canais de 10A. O ônibus OUT é numerado de 1 a 6, já que cada um deles será um bloco repetido no esquemático e na placa.
Após nomear o seu barramento, você também precisará adicionar um rótulo de rede a cada fio que está indo para o barramento. Os fios devem ter o mesmo nome do barramento, com o número da conexão no final. Por exemplo, OUT1 e OUT3 são conectados ao barramento OUT[1..6]. Esses fios se conectam ao barramento com uma Entrada de Barramento (Colocar -> Entrada de Barramento), que é a conexão em ângulo de 45 graus que você vê. Você também pode notar que OUT4, OUT5 e OUT6 na verdade não estão se conectando graficamente ao fio do barramento - o nome da rede é suficiente para o Altium saber que esses fios estarão correndo no barramento. Isso é muito conveniente e evita que o esquemático fique ilegível onde todos os fios precisariam se cruzar.
Agora que a folha do microcontrolador está configurada com as portas relevantes, podemos adicioná-la a uma folha esquemática de nível superior. A maneira mais fácil de fazer isso não é usar Colocar -> Símbolo de Folha, mas sim clicar com o botão direito do mouse no seu esquemático e ir para Ações de Folha -> Criar Símbolo de Folha a partir da Folha. Isso criará um símbolo para o esquemático, além de adicionar todas as portas que você tem no esquemático, economizando tempo.
Faça o mesmo para a sua folha de canal, assim você agora tem ambos os símbolos de folha no esquemático. A folha do canal de saída agora precisa ser renomeada, o formato é:
REPEAT(nome, início, fim)
Por padrão, cada componente no canal será nomeado ‘designador_nomedaFolha’. Pessoalmente, eu prefiro ter o designador primeiro para poder ler rapidamente a lista de materiais e ver para que tipo de componente a linha se destina — mas se você preferir um formato diferente, há várias opções disponíveis em Projeto -> Opções -> Janela Multi-Canal. Se ainda assim você não estiver satisfeito com o formato, pode até inserir seu próprio formato de designador usando as variáveis das opções padrão.
É muito importante que você também envolva o nome do seu porto em REPEAT( ) também, ou o fio conectará apenas a primeira entrada do barramento a cada porto, em vez de gerar um novo porto para cada canal. Geralmente, a exceção a isso é para protocolos de comunicação, onde você pode querer o mesmo Relógio SPI/MISO/MOSI ou I2C SCL/SDA indo para cada folha. Isso oferece muita flexibilidade sobre como as folhas multi-canal podem ser usadas.
Agora é simplesmente uma questão de ter um barramento nomeado vindo do porto de barramento do microcontrolador e, em seguida, conectá-lo diretamente a um fio com o mesmo nome do barramento. Pode parecer um pouco estranho, mas isso indica ao Altium que você deseja distribuir o barramento para cada uma das folhas do esquemático. O Altium adicionará automaticamente o número do canal ao final do nome da rede do barramento à medida que gera cada canal. O nome do barramento não precisa corresponder ao nome do porto, ou ao nome do barramento na folha do esquemático para a qual o bloco é destinado. Pode ser o mesmo ou diferente — a única nomeação que importa é a do barramento e do fio.
Apliquei a mesma configuração aos sensores de corrente, como mencionei anteriormente no artigo, numerei o barramento ADC de 0 a 5, pois estou distribuindo o ADC0 para o sensor de 15A com uma Entrada de Barramento.
Agora que o esquemático multicanal está completo, posso começar o layout da placa. É tão simples quanto o esquemático de nível superior parece, pois só preciso rotear o primeiro canal para cada um dos canais repetidos.
Uma vez que eu execute a ordem de mudança de engenharia para adicionar todos os componentes à PCB, você verá todos os blocos de folha de nível superior em seus quartos. Vale ressaltar aqui as múltiplas redes não roteadas se estendendo até os canais a partir do microcontrolador, mostrando que toda a minha nomeação de barramento funcionou bem, já que cada canal está conectado corretamente. Se eu não tivesse adicionado o comando REPEAT( ) ao ADC e aos potenciômetros de saída, veríamos apenas um fio subindo e então se conectando em paralelo. O mesmo vale para as conexões de energia.
Você também pode notar que a pegada para o display parece bastante grande. Este é o display de 128x64 pixels que mencionei anteriormente e que esperava usar. Após rotear a placa e não conseguir encaixá-lo na PCB, mudei para o display de 128x32 pixels visto nos esquemáticos.
Estou começando com a conexão de saída. Vou rotear o primeiro canal dentro do seu quarto com tudo o que é necessário, exceto as conexões externas. Também reduzi o quarto para um tamanho mais prático para os componentes arranjados.
Agora posso economizar uma enorme quantidade de tempo usando a ferramenta Copiar Formatos de Quarto. Há duas maneiras principais de acessar esta ferramenta, primeiramente, se você tem a barra de ferramentas Utilidades ativada; está sob o ícone de quartos.
Você pode ativar a barra de ferramentas Utilitários clicando com o botão direito em qualquer lugar no topo da janela do designer e marcando Utilitários.
O caminho ‘longo’ para alcançar a ferramenta é através do menu superior, indo em Design -> Salas -> Copiar Formatos de Sala.
Uma vez que a ferramenta está ativa, é simplesmente uma questão de clicar na primeira sala que você já roteou (seu modelo), e então clicar na próxima sala que você quer que tenha o mesmo layout e roteamento.
Você pode continuar clicando em salas adicionais para aplicar as mesmas configurações a essas salas também. A ferramenta só funciona para salas que estão no mesmo conjunto multi-canal. Isso significa que não posso aplicar o formato de uma sala ADC multi-canal para o ADC de 15A. Embora o ADC de 15A seja quase o mesmo esquemático e varie apenas em um valor de resistor, não é compatível pois não estava no mesmo conjunto multi-canal que os outros.
Depois de terminar de copiar os formatos dos ambientes para os canais de saída, tenho 6 canais de saída roteados de forma idêntica. Os esquemáticos e o roteamento para cada canal neste design são muito simples, mas tenho certeza de que você pode imaginar quanto tempo isso economizará com um produto de áudio multicanal complexo ou um sensor multicanal avançado.
Apliquei a mesma técnica aos canais ADC, resultando na grande maioria do roteamento da minha placa já estar completo.
Estou planejando usar um fornecedor chinês de PCB de baixo custo, pois eles oferecem o melhor preço para uma placa de 100mm x 100mm. Com essa limitação de tamanho para trabalhar, posso organizar todos os canais. Consegui encaixar todas as saídas em um lado da placa, mas os sensores de corrente, apesar de seu pequeno tamanho, ainda são grandes demais e, portanto, coloquei-os em forma de U ao redor de um lado da placa.
Coloquei meu conector USB e a entrada de 5V próximos um do outro em uma borda da placa também para manter a roteirização de energia organizada. Dado que esta é uma PCB de duas camadas e 1,6mm de espessura, decidi não executar trilhas com impedância casada para as linhas USB até o microcontrolador. Dada a taxa de dados que o carregamento via USB ou a porta serial utilizarão, a integridade do sinal não será excessivamente crítica. Conectei este microcontrolador a uma porta USB com fios soldados aos pinos do microcontrolador, e depois diretamente a um conector USB, então sei que ele lidará bem com esse mau trato. Para uma PCB de 2 camadas e 1,6mm de espessura, minhas trilhas USB teriam que ter cerca de 1,5mm de largura para serem casadas em impedância, e isso é um pouco complicado para roteamento.
Finalmente, montei a tela em um lugar que, espero, não terá muitos cabos bloqueando a visão do que é exibido.
Adicionei alguns furos de montagem à placa, bem como fiduciais. Os furos de montagem são vitais para esta placa, pois ela será montada verticalmente em um local estranho dentro do meu armário de controle.
Com um pouco de diversão para algumas artes, a placa está com uma aparência bastante boa. A fonte ‘AlternateGothic2 BT’, que eu tenho no meu computador por algum motivo, parece realmente ótima para rotular os conectores. É legível e muito compacta, o que é ótimo para os blocos terminais.
Na parte inferior da placa, adicionei um bloco bastante padrão para os designs que trabalho para clientes, tendo um código de barras para rastreamento ou carregamento de programas de teste para um dispositivo genérico, data de montagem, seção de QA e uma área para um número de série. Gosto da maneira como esse bloco finaliza a parte inferior de uma placa e a faz parecer um pouco mais elegante.
A placa para este monitor de corrente foi construída para ser uma placa de detecção e controle de corrente bastante genérica, apesar dos meus requisitos bastante específicos. Os arquivos de design são licenciados sob a licença MIT, então você pode fazer o seu próprio ou basear uma seção do seu próprio projeto no design, se desejar. Como sempre, você pode encontrar os arquivos de design do projeto no GitHub.
Altium Designer no Altium 365 oferece um nível de integração sem precedentes para a indústria eletrônica, até então relegado ao mundo do desenvolvimento de software, permitindo que os designers trabalhem de casa e alcancem níveis de eficiência sem precedentes.
Apenas começamos a explorar o que é possível fazer com Altium Designer no Altium 365. Você pode verificar a página do produto para uma descrição mais detalhada das funcionalidades ou um dos Webinars Sob Demanda.