Como criar um circuito para elevar / abaixar automaticamente uma mesa de altura ajustável?
fundo
Olá a todos, Estou trabalhando em um pequeno projeto em que posso controlar a altura de uma mesa com altura ajustável usando um microcontrolador, transistores MOSFET e um sensor ultrassônico. Essencialmente, quero que o usuário insira uma altura e que a mesa se ajuste automaticamente a essa altura.
Detalhes técnicos
Esta é a mesa que estou usando. Possui apenas botões para cima / para baixo e não possui recursos de "memória".
Eu estava tentando usar este tutorial, mas como não tinha um acesso fácil ao motor em si, decidi "substituir" os botões para cima / para baixo por transistores MOSFET.
Este é um MOSFET que estou usando. Ele tem uma tensão limite Vgs entre 2-4 volts, que funcionará para o meu microcontrolador de 5v.
Abri a caixa do botão e aqui está o que parece.
Existem quatro fios no conector JST.
- Vermelho: 30V
- Preto: GND
- Verde: baixo
- Branco: para cima
Este é um switch ativo-alto onde conectar o Verde ou o Branco ao Vermelho moverá a mesa para baixo e para cima, respectivamente. Veja o diagrama abaixo para saber como o switch ( Omron SS-5 ) se sai no esquema.
O que eu fiz até agora
Retirei o conector JST e conectei os fios do jumper diretamente aos pinos fêmeas para criar o seguinte circuito para elevar a mesa.
A fonte de tensão no lado esquerdo é o pino de saída digital de um microcontrolador. Consegui levantar a mesa com sucesso quando o pino estava alto e parar de levantar a mesa quando o pino estava baixo.
Editar (16 de agosto de 2020): Eu medi a corrente da fonte do transistor ao fio branco, e ela atingiu ~ 3A por um breve momento, e enquanto a mesa está subindo (ou seja, quando o motor está operando), ela gerou ~ 300mA.
Também fui capaz de fazer o mesmo para abaixar a mesa, exceto que a fonte do MOSFET foi conectada ao fio Verde.
Meu problema é:
Coloquei outro transistor para aumentar e diminuir:
Editar (15 de agosto de 2020): Desculpe pelo diagrama confuso. Este diagrama usa dois pinos de saída digital. A fonte de tensão do lado esquerdo é D2 de MCU e a da direita é D3 de MCU. Os pinos compartilham um terreno comum, que é responsável pelo seguinte problema.
Isso obviamente criou um problema porque a fonte de ambos os transistores está conectada aos fios Branco e Verde, o que significa que toda vez que um transistor está ligado, ambos os fios Branco / Verde estão ALTOS. Isso é equivalente a pressionar os dois botões ao mesmo tempo, o que não move a mesa. Tentei colocar um resistor de 10k entre as duas fontes dos transistores, mas isso não resolveu o problema.
Minha pergunta
- Como devo editar meu circuito para cumprir o que estou tentando fazer?
- Isso é algo que posso criar apenas usando transistores? ou
- Preciso abrir o motor para seguir os casos de uso típicos de transistor como chave?
Eu apreciaria muito se alguém pudesse dar conselhos sobre minha situação :)
Estou mais do que feliz em esclarecer qualquer confusão.
Obrigado!
Respostas
Os breves 3 A durante a partida do motor significam que os fios branco e verde conduzem a corrente do motor. Seus FETs devem ser adequados para essa corrente e protegidos contra o pico de tensão quando o motor é desligado.
Seu diagrama de switch original mostra uma configuração de ponte H. Com ambos os interruptores desligados, não há corrente para o motor. Quando qualquer um dos interruptores sobe, ambos conduzem corrente para o motor, um alimentando-se de 30 V, o outro afundando para 0 V. Suas sugestões de FET mostram apenas um pullup, sem pulldown, então o motor não funcionará.
Você precisa de um driver H-bridge com uma desabilitação ou de dois drivers de meia-bridge para replicar esta funcionalidade. Dada a necessidade de mudança de nível etc. e seu conhecimento de eletrônica, seria mais sensato tentar comprar módulos de entrada de nível lógico, com saídas classificadas para pelo menos 30 V e 3 A.
Em vez de FETs, também seria razoável usar um par de relés c / o para fazer exatamente o que os switches estão fazendo. Vá para seu site de comércio eletrônico favorito e pesquise por 'módulo de retransmissão Arduino' e escolha um de 2 canais. Eles podem ser acionados a partir de 5 V, são baratos como chips, não explodem como os FETs (embora os contatos se desgastem eventualmente) e têm capacidade de manuseio CC suficiente para o seu motor de 30 V.
problemas com suposições para design
- não reconheceu o propósito do SPDT.
- não entendi Vgs (th)
- o motor aumentará com 10x a corrente nominal ou muito mais do que a corrente de carga real, pois provavelmente não está usando o peso máximo da carga.
Por exemplo, digamos que o motor está classificado para 1A, mas usa apenas 0,3A, exceto 10x1 = 10A na inicialização.
- ao desligar, há um arco e volta EMF do motor atuando como gerador e comutando como freio e engrenagens como freio de fricção com bobina em curto para carga adicional.
- portanto, você precisa de uma meia ponte POWER que funcione com níveis lógicos usando saída de 30 V com diodos de energia para lidar com picos de 10 A ou 20 A se invertidos rapidamente durante o movimento.
Problemas com projetos FET
você assumiu que 2 ~ 4 V era o Vgs operacional, mas é apenas o limite e você precisa de pelo menos 2,5 a 3x limite de 100uA para chegar perto de RdsOn para lidar com> 10A, que geralmente é especificado em Vgs = 5, 10 ou 12V.
“FETs de nível lógico“ usam Vgs (th) próximo a 1V para operar a 3V para melhor desempenho, caso contrário, eles esquentam.
em vez de um driver de lado alto, você precisa de um FET de potência SPDT ou half Bridge
É necessária uma meia-ponte de alimentação que usa entrada e saída de nível lógico provavelmente classificado para 30A para ter Rdson pequeno o suficiente para manter a refrigeração durante a partida. Os diodos de energia invertidos para cada trilho para a braçadeira Flyback são ambos classificados para 10A.
- a meia ponte deve ter um pequeno tempo morto entre Fwd e Rev para evitar curto-circuito ou efeito de disparo. Isto é normal. Mas você deve garantir isso.
Recomendações
Defina a resistência da bobina do motor e escolha o IC de meia ponte de nível lógico para conduzir 30V / DCR + margem
Certifique-se de ter proteção de tempo morto com controles de entrada com retardo de diodo RC ou retardo MCU e verifique se o estado de reinicialização da inicialização está Desligado.
e quanto à proteção de fim de curso? Em caso de falha no driver ou falha de MCU? Considere Polyfuse.
Faça os cálculos de resistência térmica para dissipador de calor e isolador elétrico com graxa.
Isso é comum no design do interruptor da janela elétrica do carro, exceto mais massa, menos velocidade, mas talvez a mesma corrente (?) Resgate do cemitério do carro! Ou faça você mesmo ou compre? essas são decisões diárias de fazer / comprar de qualquer designer.
Finalmente, e quanto ao sensor de posição ou? O sensor de posição para viagens longas pode ser caro, a menos que você seja um gênio mecânico para usar o potenciômetro com CNC de 8 mm ou correia dentada menor do movimento linear para a redução da polia para o potenciômetro, então leia a tensão do potenciômetro como posição linear, calibre e use para feedback servo. Em seguida, permita que os interruptores de entrada MCU lembrem os estados inseridos para as posições e alterne para cima e para baixo próximo ou 1,2,3 +, -. Mas elimine os interruptores. Falta mais alguma coisa? Terminar interruptores? Prática STD para máquinas CNC.
Outra opção seria usar dois relés SPDT, com classificações de contato idênticas às dos microinterruptores SS-5 existentes.
Se a mesa for apenas interruptores, um motor e relés, sem componentes sensíveis à polaridade, você pode simplesmente inverter a polaridade da fonte de alimentação. Você teria então um 0v comum em vez de um trilho comum de 30v.
Você poderia então usar 2 transistores NPN ou possivelmente 2 mosfets do tipo N para mudar o 0v para os fios branco e verde. O para cima e para baixo obviamente também serão invertidos.
Você precisará adicionar alguns diodos de roda livre para proteger seus transistores da fem traseira das bobinas de relé existentes e do motor.