Que rufem os tambores ! Finalmente, depois de longa espera, resolvi começar o Tutorial sobre o Driver L6234 controlando Motores sem escova BLDC

Tenho certeza que o tutorial será muito interessante e espero que mais colegas contribuam com as suas experiências. 

Desde o ano passado, tenho estudado os motores sem escova. Os motores sem escova são usados em Hard Disks de PCs, em Drones, em Gimbals e em Braços robóticos !

São muito interessantes. Vejam o tutorial sobre ESCs e Motores BLDC:

http://labdegaragem.com/forum/topics/tutorial-arduino-esc-motor-sem...

Coloquei esse video no início do tópico, pois um dos usos mais atuais do Driver L6234 é exatamente no mecanismo chamado de Gimbal, que é um estabilizador de camera de video muito sofisticado. 

Agradecimento especial à um grande amigo que trouxe dos Estados Unidos, o driver L6234.

Galera, infelizmente  eu não encontrei esse chip aqui no Brasil. 

Mas ele é usado nos controladores do Alex Moskalenko - o gênio que criou as controladores de motores  ALEXMOS. 

http://www.basecamelectronics.com/

Como em todos os outros tutorias que já fiz, divulgarei-o em partes. Pois nunca usei esse driver L6234. Tudo será novidade para mim também. 

Favor interagir com o tutorial, somente assuntos relacionados com o mesmo. 

Se deseja esclarecer alguma outra dúvida, favor criar um novo tópico. 

Boa sorte para nós ! Espero que gostem !

Exibições: 12770

Responder esta

Respostas a este tópico

Carinho esse L6234! procurei na china e custa quase 20 reais cada chip.

Fiz esse diagrama de uma montagem de teste para um motor sem escova BLDC usando o driver L6234. (modelo Power DIP 20 pinos) . 

Penso em testa-lo com um mini motor de Hard disk. (estou estudando essa opção). 

Não testei ainda !

No momento estou desenvolvendo o Sketch para teste. 

Informações importantes ( risco de queimar o Chip L6234 ):

- Confira todas as conexões, antes de energizar o circuito. 

- Não energize o L6234, sem antes conectar o motor.

- Não desconecte o motor, se o L6234 estiver energizado. 

- Conecte o terra (GND) do L6234 ao terra do Arduino. 

- Alimente sempre o 12V primeiro, depois o Arduino 

- Use os resistores nas entradas do L6234 ( são usados como proteção).

Penei, mas consegui fazer o motor de HD girar com o driver L6232 que é o antecessor do Driver L6234 :

http://labdegaragem.com/forum/topics/tutorial-arduino-esc-motor-sem...

Montagem Motor BLDC com Driver L6234 - preparativos 

Como já havia dito, esse driver L6234 não é encontrado no Brasil . Só tenho três. Portanto todo cuidado ao fazer as montagens de teste. Ao fazer uma montagem em Protoboard, o risco de conectar um fio ou componente errado é relativamente grande. 

Portanto fiz a montagem ( o mesmo diagrama citado no Post anterior) e depois conferi tudo antes de energizá-lo. Essa montagem eu fiz com todas as portas de entradas com um resistor de 1K ohm Pulldown, isto é conectado ao terra. É um teste estático preparatório para a montagem final, quando eu conectarei todas as portas de entrada do L6234 no Arduino. 

MUITO IMPORTANTE !

Não monte o Driver L6234 sem conectar o Motor BLDC. 

E não desconecte o Motor BLDC, se o L6234 estiver energizado. 

Isso poderá danificar o chip !

Sabendo-se que as portas EN1, EN2 e EN3 são ativadas quando o sinal é alto ( Active High) , aterrando-as as portas, desativaremos todas as três meia Pontes H . Nessa fase de teste, quero que todas as saída ( OUT1 , OUT2 e OUT3) estejam desativadas. 

As Portas IN1, IN2 e IN3 definem o estado dos FETs das pontes.

       IN1 - sinal alto (High) - ativa o FET DMOS superior ( UPPER) 

       IN1 - sinal baixo (Low) - ativa o FET DMOS inferior (LOWER) 

O mesmo se aplica para as portas IN2 e IN3 . 

Montei os diodos e capacitores responsáveis pela alimentação do L6234. 

Como resistor R Sense usei um resistor de 0,22 ohms (de potência) . 

Na saída do Driver, eu conectei um motor BLDC de Hard Disk (três fios) .

Conectei 12V nos pínos de alimentação VS ( Pinos 4 e 7 ). Usei uma  Fonte de 12V com 2 ampéres. 

  VSS = + 12,05 V (medido) 

 

Essas medições são muito importantes. Se algo estiver diferente, é porque existe alguma falha na montagem. 

Lembrando que esse teste é estático, mas é o pré-requisito para o funcionamento do Driver. 

Meu Driver L6234 é do modelo DIP ( a pinagem do modelo SO20 é diferente) .

Medições ( com Voltímetro Fluke) :

VREF (Pino 11) = 9,19 V ( o ideal seria 10V , mas não sei porque o  meu valor esta menor) 

VBOOT (Pino13) = 19,68 V ( esta correto - esse tensão é usada na polarização dos FETs superiores) 

VCP (Pino12) = 4,59 V rms ( com osciloscópio - 10Vpp e a frequencia 1,087 MHz)  Correto ! 

Veja a forma de onda do pino 12 - VCP :

Se sua montagem passou no teste de verificação, poderemos prosseguir. 

Montagem Motor BLDC com Driver L6234  e Arduino Nano - Modo Linear 

Bom dia para todos. Não sou político, mas estou cumprindo o prometido - consegui fazer girar o Motor BLDC usando o Driver L6234 com um Arduino Nano. 

Nesse teste, usei o modo Linear (sem PWM) pois é o modo mais simples. Pretendo fazer o modo PWM, mas com certeza vai dar mais trabalho. Tenho feito estudos sobre isso. No modo linear, a corrente usada no motor é maior, portanto ao fazer seus testes, meça a corrente e sinta a temperatura no motor. O meu motor de HD que estou testando tem esquentado um bocado, por isso não tenho ligado o motor por muito tempo. 

Repetindo o mesmo diagrama da montagem de teste , tenho algumas observações para fazer :

Durantes os testes iniciais não conectei resistores de 1K em série com as portas de entrada ( IN X e EN X). E percebi porque eles são importantes. Mesmo sem alimentar a tensão VS de 12V, o motor começa a girar fraquinho. Isso é porque o Driver esta se alimentando da energia das portas do Arduino ( o datasheet informa isso) . Isso não é bom. Por isso, recomendo que  monte os resistores de 1K em série nas portas de entrada do driver. 

Em relação aos resistores de 10K de pulldown, analisando o circuito, vi que as portas IN X não precisam desses resistores. Monte os resistores de pulldown somente nas portas EN X. Pois somente elas que podem ativar as saídas do driver. 

O datashhet recomenda - alimente a tensão VS 12 V primeiro e depois no nosso caso, o Arduino. 

Anexei o Sketch de teste. L6234bldcA.INO. Segui o mesmo procedimento de Start do motor usado no driver L6232.

Comecei com baixa rotação e depois aumentei até um limite.Adicionei uma rotina de freio (Break) mas ainda não foi testada. 

Essa é carta de tempo de todas as portas de entrada do Driver L6234 ( IN X e EN X) , usando um analisador lógico. 

Baseie-me na carta de tempo desse Application Note do L6234:

http://www.st.com/content/ccc/resource/technical/document/applicati...

Essas são algumas formas de onda medidas no Driver L6234.

 L6234 - CH1 = sensor de RPM    CH2 = Porta IN 1 

(Cada rotação corresponde á quatro ciclos elétricos ) 

 L6234 - CH1 = OUT1     CH2 = OUT 2

( Veja que não tem os pulsos PWM) 

 

L6234 - CH1 = Sensor RPM     CH2 = OUT 1

L6234 -   CH1 = V R Sense 1

Para entender melhor os ciclos elétricos :

http://labdegaragem.com/forum/topics/tutorial-arduino-esc-motor-sem...

Anexos

Montagem Motor BLDC com Driver L6234 - rotina de partida do Motor

Bom dia pessoal. Como já havia informado no post anterior, consegui fazer girar o motor BLDC de um Hard Disk usando o driver L6234 controlado por um Arduino Nano. Mas o sketch que eu usava , tinha um problema. Ás vezes o motor não girava, ou então o rotor ficava somente vibrando. 

Resolvi então estudar a rotina de partida do Motor , fazendo medições com o analisador lógico na placa de HD que usa um driver L6232 ( antecessor do L6234). 

http://labdegaragem.com/forum/topics/tutorial-arduino-esc-motor-sem...

Descobri que para o motor BLDC dar a partida, precisa de 13 fases. Primeiro a rotina freia o motor, e depois faz duas cadências de giro , aumentando gradativamente a velocidade. Mas o interessante mesmo, é a paradinha que ele dá de um segundo. Nessa parada, o rotor balança para frente e para trás algumas vezes e depois no embalo ele consegue girar. É como se fosse um efeito boomerangue. Muito legal. Podem ver esse efeito no vídeo. 

Sobre o Motor montei um sensor òtico TCRT5000 para mediar a rotação. Nesse vídeo, a velocidade é de aproximadamente 500 RPM.

 

Anexei o sketch L6234bldcC.ino que já tem a rotina de partida funcionando perfeitamente. 

// Zero Fase Partida - freio 250 ms - Aciona LOWER 1, LOWER 2 e LOWER 3 digitalWrite(IN1, LOW); digitalWrite(IN2, LOW); digitalWrite(IN3, LOW); digitalWrite(EN1, HIGH); digitalWrite(EN2, HIGH); digitalWrite(EN3, HIGH);
delay (250);

// 1a Fase Partida 50 ms - Aciona UPPER 1 e LOWER 2 , OUT 3 tristate
digitalWrite(IN1, HIGH); digitalWrite(IN2, LOW); digitalWrite(IN3, LOW);
digitalWrite(EN1, HIGH); digitalWrite(EN2, HIGH); digitalWrite(EN3, LOW);
delay (50);

// 2a Fase Partida 50 ms - Aciona UPPER 1 e LOWER 3 , OUT 2 tristate
digitalWrite(IN1, HIGH); digitalWrite(IN2, LOW); digitalWrite(IN3, LOW);
digitalWrite(EN1, HIGH); digitalWrite(EN2, LOW); digitalWrite(EN3, HIGH);
delay (50);

// 3a Fase Partida 1 segundo - Aciona UPPER 2 e LOWER 3 , OUT 1 tristate
digitalWrite(IN1, LOW); digitalWrite(IN2, HIGH); digitalWrite(IN3, LOW);
digitalWrite(EN1, LOW); digitalWrite(EN2, HIGH); digitalWrite(EN3, HIGH);
delay (1000);

// 4a Fase Partida 50 ms - Aciona LOWER 1 e UPPER 2 , OUT 3 tristate
digitalWrite(IN1, LOW); digitalWrite(IN2, HIGH); digitalWrite(IN3, HIGH);
digitalWrite(EN1, HIGH); digitalWrite(EN2, HIGH); digitalWrite(EN3, LOW);
delay (50);

// 5a Fase Partida 40 ms - Aciona LOWER 1 e UPPER 3 , OUT 2 tristate
digitalWrite(IN1, LOW); digitalWrite(IN2, HIGH); digitalWrite(IN3, HIGH);
digitalWrite(EN1, HIGH); digitalWrite(EN2, LOW); digitalWrite(EN3, HIGH);
delay (40);

// 6a Fase Partida 30 ms - Aciona LOWER 2 e UPPER 3 , OUT 1 tristate
digitalWrite(IN1, LOW); digitalWrite(IN2, LOW); digitalWrite(IN3, HIGH);
digitalWrite(EN1, LOW); digitalWrite(EN2, HIGH); digitalWrite(EN3, HIGH);
delay (30);

// 7a Fase Partida 23 ms - Aciona UPPER 1 e LOWER 2 , OUT 3 tristate
digitalWrite(IN1, HIGH); digitalWrite(IN2, LOW); digitalWrite(IN3, LOW);
digitalWrite(EN1, HIGH); digitalWrite(EN2, HIGH); digitalWrite(EN3, LOW);
delay (23);

// 8a Fase Partida 20 ms - Aciona UPPER 1 e LOWER 3 , OUT 2 tristate
digitalWrite(IN1, HIGH); digitalWrite(IN2, LOW); digitalWrite(IN3, LOW);
digitalWrite(EN1, HIGH); digitalWrite(EN2, LOW); digitalWrite(EN3, HIGH);
delay (20);

// 9a Fase Partida 17 ms - Aciona UPPER 2 e LOWER 3 , OUT 1 tristate
digitalWrite(IN1, HIGH); digitalWrite(IN2, HIGH); digitalWrite(IN3, LOW);
digitalWrite(EN1, LOW); digitalWrite(EN2, HIGH); digitalWrite(EN3, HIGH);
delay (17);

// 10a Fase Partida 15 ms - Aciona LOWER 1 e UPPER 2 , OUT 3 tristate
digitalWrite(IN1, LOW); digitalWrite(IN2, HIGH); digitalWrite(IN3, HIGH);
digitalWrite(EN1, HIGH); digitalWrite(EN2, HIGH); digitalWrite(EN3, LOW);
delay (15);

// 11a Fase Partida 15 ms - Aciona LOWER 1 e UPPER 3 , OUT 2 tristate
digitalWrite(IN1, LOW); digitalWrite(IN2, HIGH); digitalWrite(IN3, HIGH);
digitalWrite(EN1, HIGH); digitalWrite(EN2, LOW); digitalWrite(EN3, HIGH);
delay (15);

// 12a Fase Partida 15 ms - Aciona LOWER 2 e UPPER 3 , OUT 1 tristate
digitalWrite(IN1, LOW); digitalWrite(IN2, LOW); digitalWrite(IN3, HIGH);
digitalWrite(EN1, LOW); digitalWrite(EN2, HIGH); digitalWrite(EN3, HIGH);
delay (15);

Anexando o arquivo L6234bldcC.INO 

Anexos

Vejam que o Great Scott ainda não esta conseguindo dar partida correta no motor ESC.

Vamos ver qual a solução ele vai dar para o grande mistério da partida dos motores ESC.


A solução é descobrir qual posição esta o rotor em relação às bobinas.
O que eu já percebi nos ESCs, é que antes de dar partida eles acionam todas as bobinas. Já ouviram os apitos ?
Creio que nesse momento, o Microcontrolador faz a leitura das FEMs para descobrir quais bobinas estão próximas dos magnetos.

Parte 2 do projeto do Great Scott .

Ele ainda esta com problemas. Acho que ele esta cometendo um errro.

Ele esta usando motor BLDC de Drone DJI Phanotm 2 que usa ESC de 15A.

E quer controlar esse mesmo motor com um Driver L6234 que suporta somente 5A.

Parece que ele vai montar um outro circuito bem diferente.

Galera , boas notícias! 

Muitos tentaram e somente esse espanhol conseguiu! 

Projeto fantástico ! Recomendo que vejam.

http://electronoobs.com/eng_arduino_tut91.php

RSS

© 2024   Criado por Marcelo Rodrigues.   Ativado por

Badges  |  Relatar um incidente  |  Termos de serviço