Controlando um motor DC muito pequeno com PWM?


8

Eu tenho um motor DC muito pequeno (de um Walkman), gostaria de controlar a velocidade de um microcontrolador. Para isso, gostaria de conectar um MOSFET em série e aplicar um sinal PWM ao seu portão para alterar a velocidade do motor.

Eu medi o L & R do motor = 4.7mH, 11.5Ohm (Tao 0.41msec).

Ao executar algumas experiências com o motor usando uma fonte de alimentação de bancada, posso ver que ele funciona bem de uma voltagem de 0,2V até algo em torno de 0,4V - essa é toda a faixa que eu preciso.

A fonte de alimentação que tenho para isso é configurada em 1,8V (usada para a parte digital do circuito), o que dificulta um pouco o uso dos MOSFETs padrão, porque não posso fornecer a tensão necessária para a saturação do portão. Comprei alguns MOSFETs de canal P como este .

Portanto, embora eu achasse que essa configuração funcionaria (Vcc -> motor -> FET -> GND), parece que não consigo obter uma boa resolução sobre o controle e não recebo tanto torque do motor quanto usei para obter quando executado a partir de uma fonte de alimentação CC.

Não tenho certeza do que freq. Eu deveria estar usando e não tenho certeza de quais outros parâmetros precisam ser verificados para que isso funcione conforme o esperado. Qualquer ajuda sobre isso será apreciada.

* ATUALIZAÇÃO * Após a resposta de Olin, construí o circuito que ele sugeriu. Eu usei um transistor 2N3904, resistor de 180 Ohm paralelo a uma tampa de 4,7nF. Em anexo está a tensão do coletor ao executar a partir do código PWM 100 (de 256). Vcc é 1.8V.

insira a descrição da imagem aqui


1
por que não usar um BJT - é um motor pequeno e você receberá facilmente um sinal de 0,6V para ligá-lo.
JIm Dearden

@JImDearden Tentei alguns 2N5088 que eu tinha, mas a queda de tensão no transistor era tão grande que quase nenhuma tensão foi aplicada ao motor, por isso apenas zumbiu e não se moveu.
User34920

1
Tente um transistor de comutação como o 2N3904 com um resistor de base de 1k. Além disso, você precisará de um diodo flyback no motor com tanta indutância e sobretensão. 1kHz deve ser bom para o PWM.
29415 Jon

Respostas:


8

A solução mais simples seria usar um comutador NPN do lado inferior:

Você diz que a resistência CC do motor é 11,5 Ω, então a corrente máxima que ele pode extrair é 1,8 V / 11,5 Ω = 160 mA. Na verdade, o transistor consumirá alguns 100 mV, abaixando a corrente máxima possível, portanto esse é um máximo seguro para o projeto. Figura o transistor é bom para um ganho de 50 no mínimo, então precisamos de pelo menos 160 mA / 50 = 3,2 mA de corrente base. 5 mA é então um bom alvo para garantir que o transistor esteja solidamente saturado quando ligado. Calcule a queda de BE em 700 mV, de modo que deixe 1,1 V no resistor quando ligado. 1,1 V / 5 mA = 220 Ω.

C1 existe para acelerar a ativação e desativação. (220 Ω) (4,7 nF) = 1 µs, que é a constante de tempo C1-R1.

A frequência PWM deve ser rápida o suficiente para que a corrente através do motor mude pouco a cada fase ligada e desligada. A ondulação causada pelo PWM é uma tensão CA sobreposta à tensão CC média. Somente a tensão CC vai para mover o motor. O componente CA não causa torque, apenas calor; portanto, você deseja mantê-lo baixo em relação ao DC. Geralmente, você opera motores um pouco acima do limite de audição humana, que também costuma ser rápido o suficiente para manter o componente CA pequeno. A 25 kHz, por exemplo, o período PWM é de 40 µs, o que deve fornecer uma resolução suficiente de qualquer periférico PWM razoável em um microcontrolador.

Adicionado em resposta ao rastreamento do escopo do coletor

A forma básica da forma de onda parece boa, então parece que o transistor está alternando corretamente e a tensão está sendo aplicada corretamente no motor.

Os picos no desligamento são preocupantes. Eles podem ser artefatos do escopo, mas se o rastreamento do escopo for preciso, o diodo não estará funcionando ou não será conectado corretamente. Os picos não devem estar mais do que um volt acima da fonte.

D1 não apenas impede que o transistor fique frito, mas preserva grande parte da corrente do motor durante o tempo de folga. O primeiro é necessário e o segundo aumenta a eficiência.

Adicionado 2

Observando mais de perto o rastreamento do osciloscópio, vejo que a tensão do coletor quando o motor está desligado é 2,48 V. Você diz que a alimentação é de 1,8 V, de modo que a tensão de desligamento fica 680 mV acima da fonte. Isso significa que você não construiu o circuito como eu disse. Obviamente, você usou um diodo comum de silício, provavelmente um lento como um 1N400x. O tempo lento de ativação do diodo explica o pico de tensão e reduz um pouco os níveis gerais do inversor em um ciclo de trabalho PWM específico. Também causará disparo durante um tempo em que o transistor for ligado novamente, uma vez que o diodo ainda está conduzindo. Um diodo Schottky terá menor queda para frente e recuperação reversa instantaneamente eficaz no contexto deste circuito.

O sistema ainda deve geralmente funcionar, mas tente com um diodo Schottky como eu especifiquei.


Na verdade, eu montei esse circuito agora. Freq PWM. é de cerca de 31KHz. Usei um transistor 2N3904 com um resistor de 180 Ohm na base e uma tampa de aceleração de 4,7 nF. Tenho resolução PWM de 8 bits do meu MCU. Por volta do código 100 (de 256), vejo o motor começar a girar. Alguma idéia de como aumentar a resolução? Talvez adicionando algum deslocamento DC à base? Gostaria também de salientar que os motores funcionam com o código 100, no entanto, é um pouco mais rápido que o mínimo. velocidade que eu preciso. Não consigo baixar o código PWM, pois ele irá parar.
User34920

Obrigado Olin pela boa resposta. você elaboraria a escolha de C1? Você fala da constante de tempo, eu entendo que deve ser cerca de 1/10 do período de comutação, mas eu esperaria que o tamanho C1 por si só seja importante para o tempo de ativação / desativação, pois fornece uma carga "instantânea".
Vladimir Cravero 29/05

1
@ Vlad: Despejar uma taxa extra na base ao ligar e sugar algumas das transportadoras gratuitas ao desligar são eventos de curto prazo. Provavelmente duram apenas alguns 100 ns após cada borda. Você deseja que a constante de tempo seja um pouco mais longa que isso, mas também curta o suficiente para que o limite "seja redefinido" antes da próxima borda. Nos parecia um bom compromisso, mas muitos fatores podem ser difíceis de prever. Eu começaria com os valores mostrados, depois observaria as formas de onda e ajustaria, se necessário.
Olin Lathrop

@ usuário: Dê uma olhada na forma de onda do coletor. Talvez as coisas não estejam acontecendo como planejado. O que o motor faz com uma tensão DC variável? Existe uma tensão onde começa, mas depois não vai muito rápido uma vez?
Olin Lathrop 29/05

@OlinLathrop Adicionei uma foto da forma de onda do coletor (essa medição é feita no CE do transistor). Ao usar uma fonte CC, o motor começa a girar a 0,2V e essa velocidade é a que eu gostaria no mínimo (cerca de 50-60 RPM).
User34920

0

Vamos supor que você tenha experiência básica com microcontroladores e possa construir um circuito.

A maneira mais direta de acionar o motor é usando a ponte H, resistor de detecção de corrente e PWM. Basicamente, a ponte H permitirá o uso de 3,3V ou 5V, o que for mais conveniente.

De fato, dependendo da aplicação, você pode até pular o controle atual, provavelmente não causará nenhum dano, mesmo que o motor fique parado.

A propósito, você precisa de controle de velocidade ou posição?

Ao utilizar nosso site, você reconhece que leu e compreendeu nossa Política de Cookies e nossa Política de Privacidade.
Licensed under cc by-sa 3.0 with attribution required.