Controle do Motor BLDC com Arduino, Motor HD recuperado e sensores de salão
Lar » Blog » Controle do motor BLDC com Arduino, Motor HD recuperado e sensores de salão

Controle do Motor BLDC com Arduino, Motor HD recuperado e sensores de salão

Visualizações: 0     Autor: Editor de sites Publicar Tempo: 2020-09-02 Origem: Site

Pergunte

Botão de compartilhamento do Facebook
Botão de compartilhamento do Twitter
Botão de compartilhamento de linha
Botão de compartilhamento do WeChat
Botão de compartilhamento do LinkedIn
Botão de compartilhamento do Pinterest
Botão de compartilhamento do WhatsApp
Botão de compartilhamento de kakao
Botão de compartilhamento do Snapchat
Botão de compartilhamento de telegrama
Botão de compartilhamento de sharethis

Atualmente, os entusiastas estão muito interessados ​​em controlar o DC sem escova (BLDC)
em comparação com o motor DC tradicional, o desempenho do motor melhorou, a eficiência energética também melhorou, mas é mais difícil de usar. Muitos produtos fora do
prateleira existem para esse fim.
Por exemplo, existem muitos pequenos controladores BLDCs que funcionam muito bem para aeronaves RC.
Para aqueles que desejam analisar o controle do BLDC em mais profundidade, também existem muitos microcontroladores diferentes e outros hardware eletrônico para usuários industriais, que geralmente têm documentação muito boa.
Até agora, não encontrei nenhuma descrição abrangente de como usar o Microcontrolador Arduino para controle BLDC.
Além disso, se você estiver interessado em fazer frenagem regenerativa ou usar um BLDC para geração de energia, não encontrei muitos produtos adequados para uso com motores pequenos, nem descobri como controlar o gerador trifásico.
Essa estrutura estava originalmente em uma história sobre
o cálculo do tempo real, continuo fazendo isso após o término do curso.
A idéia do projeto é mostrar um modelo proporcional de um carro híbrido com armazenamento de energia do volante e frenagem regenerativa.
O motor usado no projeto é um pequeno BLDCS limpo do disco rígido do computador danificado.
Este manual descreve como usar o microcontrolador Arduino e o salão
afeta os sensores de posição nos modos de frenagem de direção e regenerativa.
Observe que a visita a Oscillisoft é muito útil, se não essencial, para concluir este projeto.
Se você não conseguir acessar o escopo, adicionei algumas sugestões sobre como fazê -lo sem o escopo (etapa 5).
Uma coisa que este projeto não deve incluir em nenhum controlador de motor real é qualquer função de segurança, como a proteção de corrente.
De fato, o pior é que você queima o motor HD.
No entanto, a implementação de proteção excessiva com hardware atual não é difícil, e talvez eu faça isso em algum momento.
Se você estiver tentando controlar um motor maior, adicione a proteção atual para proteger seu motor e sua própria segurança.
Quero tentar usar este controlador com um motor maior que possa fazer algum trabalho 'real' ', mas ainda não tenho o certo.
Percebi que o eBay vendeu um carro de 86 W por cerca de US $ 40.
Parece um bom candidato.
Há também um site da RC chamado \ 'GOBRUSHLESS \' que vende kits que montam seu próprio BLDC.
Isso não é muito caro e vale a pena construir um.
Observe que não há sensor de salão para o motor neste site. Ufa!
Escrever essa estrutura é um grande trabalho.
Espero que você ache útil, faça seus comentários e sugestões.
Multímetro digital (DMM)-
Se o seu DMM tiver um osciloscópio do medidor de frequência (
é melhor ter pelo menos 2 canais)
T8 Torx Driver (
você precisa de um deles para abrir qualquer disco rígido).
Existe uma boa loja de ferragens.
Oficina de máquinas e protótipo rápido (
estes são muito úteis, mas acho que esse projeto pode ser feito sem eles).
Material Bldc Motor Magnetic Ring a partir do disco rígido do computador (
metade do motor)
de outro driveseveral rígido (3-6)
Há um segundo motor pequeno no disco prateado no disco rígido (DC escovado ok)
Bandada de borracha ou (preferencialmente)
o motor de pó de pão de pão de pão de pão de pão de 3 mato com mais uma placa de pão de pão até o arduino-duemilove 120 k Ohm, ohm, com um monte de pão de pão de pão até o arduino, o povoado de 120 k, ohm, com um poço de pão de pão de pão de pão até o arduino, o powm de 120 k, ohm, com um poço de pão de pão de pão até o arduino. micro circuit L6234 three phase motor driver IC two 100 uF capacitors one 10 nF capacitor one 220 nF capacitor one 1 uF capacitor one 100 uF capacitor three receiving diodes One 2.
Honeywell SS411A bipolar Hall-5 Amp Fuse 1 fuse holder 3
Note: Mike Anton designed and sold a product that will replace the power electronics and Hall sensor circuits I have shown in this manual (
It is controlado usando indução potencial de volta).
Especificações e informações de compras podem ser encontradas nesses dois links: se você for fazer este projeto, sugiro que você dedique um tempo para entender completamente como o BLDC funciona e controla.
Há um grande número de referências on -line (
veja abaixo algumas sugestões).
No entanto, incluo alguns gráficos e tabelas no meu projeto que devem ajudá -lo a entender.
Aqui está uma lista dos conceitos que eu acho mais importantes para entender este projeto: transistores MOSFET de meia ponte de meia ponte em 3 a
3 etapas da
modulação da largura do pulso de sentença do motor de fase (pwm)
Microchip Avr443: Sensores-geral Referência DC Motor
DC Básico Principal para a posição Digital Sensores Controle de três finsese
de três fases Hall Sensor, um bom vídeo de limpeza do motor do disco rígido, mas o autor parece estar executando o motor como um motor de trampolim e como um motor de trampolim. Uma página da Web de referência mais específica para o BLDC no IC de acionamento de motor L6234, incluindo folhas de dados, notas de aplicativos e informações de compra.
Amostra grátis para acionamento de motor sem escova de PM para aplicações híbridas de veículos elétricos.
Este é o único artigo que descobri que descreve a ordem da mudança de fase de frenagem regenerativa.
Este artigo, a frenagem regenerativa em veículos elétricos é útil, emprestei alguns números, mas acho que descreve incorretamente como a regeneração funciona.
Fiz esse projeto com o motor de unidade de disco reciclado porque era fácil de passar e gosto de usar um pequeno motor de baixa tensão para aprender o cordão controlado pelo BLDC e não causar problemas de segurança.
Além disso, a configuração do ímã do sensor de salão se torna muito simples usando o anel magnético (rotor)
do segundo desses motores (consulte a etapa 4).
Se você não quiser ir a todo o incômodo de instalar e calibrar o sensor Hall (etapas 5-7),
sei que existem pelo menos alguns motores de acionamento de CD/DVD.
Para fornecer alguma inércia de torneamento ao motor e dar uma pequena carga, coloquei 5 discos rígidos no motor, colamos suavemente com um pouco de cola forte e colamos no motor (
isso fez o volante no meu projeto original).
Se você for remover o motor do disco rígido, precisará de uma unidade T8 Torx para desaparafusar o alojamento (
geralmente existem dois parafusos escondidos atrás do bastão na etiqueta Centen)
e parafusos internos que mantêm o motor no lugar.
Você também precisa remover o leitor principal (
executivo do círculo de som)
dessa maneira, pode retirar o disco da memória para alcançar o motor.
Além disso, você precisará de um segundo motor de disco rígido para remover o rotor desse motor (
há um ímã dentro).
Para desmontar o motor, peguei o rotor (em cima)
um torno do motor e o retire no estator (inferior),
as duas chaves de fenda estão separadas por 180 graus.
Não é fácil segurar o motor em um par apertado o suficiente sem deformação.
Você pode querer construir um
bloco de madeira V- usado para esse fim.
Eu perfurei um buraco no anel magnético no torno para que ele se encaixe confortavelmente na parte superior do motor.
Se você não puder usar o torno, poderá consertar o rotor invertido no motor com uma cola forte.
As fotos 2 e 3 abaixo mostram o interior de um dos motores que desmontei.
Na primeira metade lá (o rotor) são 8 pólos (
ímã embrulhado em plástico).
No segundo tempo (o estator),
existem 12 slots (enrolamentos).
Cada uma das três fases motoras tem 4 slots em série.
Alguns motores HD têm três contatos na parte inferior, um contato por fase, e o outro é a torneira central do motor (
onde três estágios encontram).
Neste projeto, nenhuma torneira central é necessária, mas pode ser útil no controle sem sensor (
espero lançar uma nota sobre o controle sem sensor um dia).
Se o seu motor tiver quatro contatos, você poderá identificar a fase com ohímetro.
A resistência entre a torneira central e a fase é metade da resistência entre duas fases.
A maior parte da literatura sobre os motores BLDC lida com aqueles com uma forma de onda em forma de traseira em forma de escada, mas o motor do disco rígido parece ter um potencial de costas que parece um seno (veja abaixo).
Até onde eu sei, dirigir um motor de onda senoidal com um PWM de onda senoidal está funcionando bem, embora a eficiência possa cair um pouco.
Como todos os motores BLDC, este é composto por
ponte semi-transistor trifásica (
veja a segunda fotos abaixo).
Eu uso o IC fabricado por ST Micro (L6234)
para a ponte, também conhecido como motorista do motor.
A conexão elétrica de L6234 é mostrada na etapa 8.
A terceira foto abaixo mostra um diagrama esquemático do motorista do motor e as três fases do motor.
Para que o motor opere no sentido horário, o interruptor será feito na seguinte ordem (
a primeira letra é o transistor superior e a segunda letra é o transistor inferior)
: Etapa 1 2 3 4 5 6 No sentido horário: CB, AB, AC, BC, BA, CA Requer um cockwise: BC, BA, Ca, Cb, AB, 36- ACENCIONAIS
ACENDENTE, ACENDOUTE DO GRAVE DO GRESENTE ACENDENTE ACENCIOMENTO DE ACENCIOMENTO: esses motores.
Portanto, a velocidade de rotação de cada motor ocorre quatro vezes.
As duas seqüências parecem ser as mesmas, mas não são as mesmas porque, para
a sequência de 6 etapas, para CW, a direção atual através da fase é uma direção e, para o CCW, a direção atual é oposta.
Você pode ver isso você mesmo aplicando a tensão da bateria ou fonte de alimentação na fase do motor.
Se você aplicar a tensão, o motor se moverá um pouco em uma direção e parará.
Se você puder alterar rapidamente a tensão na fase em uma das seqüências acima, poderá girar o motor manualmente.
Transistores e microcontroladores completam todos esses comutadores muito rapidamente, alternando centenas de vezes por segundo quando o motor está em alta velocidade.
Além disso, observe que, se a tensão for aplicada às duas fases, o motor se moverá um pouco e depois parar.
Isso ocorre porque o torque é zero.
Você pode ver isso na quarta foto abaixo, que mostra o potencial traseiro de um par de fases de motor.
Esta é uma onda senoidal.
Quando a onda passa pelo
eixo x, o torque fornecido por esta fase é zero. Na
sequência de mudança de fase BLDC de seis etapas que nunca aconteceu.
Antes que o torque em uma fase específica se torne baixa, a energia é alterada para outra combinação de fase.
Motores BLDC maiores são geralmente fabricados por sensores de salão dentro do motor.
Se você tiver um motor desses, poderá pular esta etapa.
Além disso, eu sei que existem pelo menos alguns motores de acionamento de CD/DVD construídos no sensor já-hall.
Quando o motor gira, três sensores de salão são usados ​​para detecção de posição; portanto, a mudança de fase é realizada no momento certo.
Meu motor HD é executado até 9000 rpm (150 Hz).
Como existem 24 alterações por roda, a 9000 rpm, a máquina é alterada a cada 280 microssegundos.
O microcontrolador Arduino funciona a 16 MHz, então cada ciclo de relógio é 0. 06 Microssegundos.
Não sei quantos ciclos de relógio são necessários para realizar uma redução da frase, mas mesmo que 100 ciclos de relógio sejam necessários, ou seja, são necessários 5 microssegundos para cada redução da frase.
Os motores HD não têm sensores de salão, por isso é necessário instalá -los na parte externa do motor.
O sensor precisa ser fixado em relação à rotação do motor e exposto a uma série de pólos que são consistentes com a rotação do motor.
Minha solução é remover o anel magnético do mesmo motor e instalá -lo de cabeça para baixo no motor para ser controlado.
Em seguida, instalei três sensores de salão acima deste anel magnético, a 30 graus de distância um do outro no eixo do motor (
rotação do motor elétrico de 120 graus).
Meu suporte do sensor de salão consiste em um suporte simples composto por três peças de alumínio processadas por mim e três peças de plástico feitas em um protótipo rápido.
Se você não possui essas ferramentas, não deve ser difícil encontrar outra maneira de indicar a posição.
Criar colchetes para sensores de salão será mais desafiador.
Essa é uma maneira possível de trabalhar: 1.
Encontre uma bandeja de plástico do tamanho certo e você pode epóxi cuidadosamente o sensor do salão. 2.
Um modelo é impresso no papel, que possui o mesmo círculo que o raio do anel magnético, e as três marcas estão separadas a 15 graus 3.
Cole o modelo no disco e use o modelo como um guia para colocar cuidadosamente o epóxi do sensor Hall.
Agora que os sensores do salão estão instalados no motor, conecte -os ao circuito mostrado abaixo e teste -os usando um DMM ou osciloscópio para garantir que a saída fique cada vez mais baixa à medida que o motor gira.
Eu executo esses sensores abaixo de 5 V usando a saída de 5 V Arduino.
O sensor do salão é alto ou baixo na produção (1 ou 0),
depende se eles sentem o Antártico ou o Ártico.
Como estão a 15 graus, os ímãs giram sob eles e mudam a polaridade a cada 45 graus, esses três sensores nunca serão altos ou baixos ao mesmo tempo.
Quando o motor gira, a saída do sensor é 6-
o padrão de etapa mostrado na tabela a seguir.
O sensor deve estar alinhado com o movimento do motor, para que um dos três sensores mude com precisão na posição de mudança de fase do motor.
Nesse caso, a borda ascendente do primeiro sensor de salão (H1)
deve ser consistente com a abertura da combinação C (alta) e B (baixa).
Isso é equivalente a ativar os transistores 3 e 5 no circuito da ponte.
Alinhei o sensor com o ímã com um osciloscópio.
Para fazer isso, tenho que usar três canais de escopo.
Eu giro o motor conectando -me à correia do segundo motor e medro o potencial traseiro entre as combinações de duas fases (
A e B, A e C),
são duas.
Como as ondas na figura abaixo,
olhe para o sinal do sensor Hall 2 no canal 3 do osciloscópio.
O suporte do sensor do salão é girado até que a borda ascendente do sensor do salão esteja totalmente alinhada com o ponto em que a mudança de fase deve ser realizada (veja abaixo).
Agora percebo que existem apenas dois canais para fazer a mesma calibração.
Se o bem da combinação de fase B-
usando C, a borda ascendente do H2 estará relacionada à curva BC.
A razão pela qual a mudança de fase deve ser realizada aqui é sempre manter o torque do motor o mais alto possível.
O potencial traseiro é proporcional ao torque e você notará que cada alteração de fase ocorre quando o potencial traseiro passa abaixo da curva do próximo estágio.
Portanto, o torque real consiste na parte mais alta de cada combinação de fase.
Se você pode acessar o escopo, aqui está minha ideia de alinhamento.
Este é realmente um exercício interessante para quem quer saber como o motor BLDC funciona.
Se a fase do motor A estiver conectada (positiva) e B (negativa)
à fonte de alimentação e ativar a fonte de alimentação, o motor girará um pouco e parará.
Então, se o chumbo de energia negativo for movido para a fase C e a energia for ligada, o motor girará mais e parará.
A próxima parte da sequência será mover o chumbo positivo para a fase B, etc.
Quando você fizer isso, o motor sempre para onde o torque é zero, o que corresponde a um local onde o gráfico passa pelo eixo x no gráfico.
Observe que o ponto zero da combinação da terceira fase corresponde à posição de mudança de fase das duas primeiras combinações.
Portanto, a posição de torque zero da
combinação B é onde você deseja posicionar a borda ascendente do H2.
Marque esta posição com marcas finas ou lâminas afiadas e ajuste o suporte do sensor do salão usando DMM até que a saída de H2 esteja exatamente mais alta nessa marca.
Mesmo se você se desviar um pouco da programação da sua escola, o motor deve funcionar bem.
A fase de três motores receberá energia do motorista do motor trifásico L6234.
Descobri que este é um bom produto que pode resistir ao teste do tempo.
Existem muitas maneiras de fritar acidentalmente seus componentes ao usar eletrônicos de potência, eu não sou um engenheiro elétrico e eu sempre sei o que está acontecendo.
No meu programa escolar, fizemos nossa própria
produção de meia ponte de 3 fases de 6 transistores MOSFET e 6 diodos.
Usamos isso no HIP4086 do outro motorista, mas temos muitos problemas com essa configuração,
queimamos um monte de transistores e chips.
Eu corro L6234 (
então o motor) a 12v.
O L6234 possui um conjunto incomum de entradas para controlar uma meia ponte de 6 transistores.
Nem todo transistor possui uma entrada, mas uma
entrada de ativação (en) para cada um dos três estágios e depois outra entrada (in)
selecione qual transistor na fase aberta (superior ou inferior).
Por exemplo, ligue o transistor 1 (superior) e 6 (inferior)
tanto o EN1 quanto o EN3 é alto (
EN2 baixo para manter o estágio fechado)
IN1 High, IN3 baixo.
Isso faz com que o Fase Combination-C.
While the L6234 application note suggested applying the PWM used to control the speed of the motor to the IN pin, I decided to do it on the EN pin because, at that time, I think it would be \'strange\' to turn on the upper and lower transistors of the phase alternately \'.
In fact, it seems that there is nothing wrong with turning on the low transistors of both phases at the same time, because they have the same potential, so neither of them Passa
através
.
corrente
da Pequeno, portanto, para versões maiores, consulte a documentação para L6234.
Nota: Mike Anton fez o PCB para L6234, que (acredito)
substituirá essa faixa e salvará o trabalho de montá -lo.
Veja estes links para especificações e informações de compra: não encontrei muito sobre 3-
descreverei minha compreensão de como funciona.
Observe que eu não sou engenheiro elétrico e gostaríamos de qualquer correção da minha explicação.
Ao dirigir, o sistema de controle envia a corrente para três fases de motor de uma maneira que maximiza o torque.
Na frenagem regenerativa, o sistema de controle também maximiza o torque, mas desta vez é um torque negativo que faz com que o motor desacelere enquanto envia a corrente de volta à bateria.
O método de frenagem regenerativa que usei veio de um artigo do Laboratório Nacional de Oakridge nos Estados Unidos. S. Govt.
Um laboratório que faz muitas pesquisas para motores automotivos.
O gráfico abaixo vem de outro artigo que ajuda a ilustrar como ele funciona (
no entanto, acho que a explicação dada neste segundo artigo está parcialmente incorreta).
Lembre -se de que, quando o motor gira, a tensão BEMF na fase do motor flutua para cima e para baixo.
Na figura, mostra o momento em que o bem está alto no estágio B e baixo no estágio.
Nesse caso, é possível que a corrente flua de B para.
Crítico para a frenagem regenerativa, os transistores de baixo custo estão ligando e desligando rapidamente (
milhares de interruptores PWM por segundo).
Quando o interruptor do transistor de ponta é desligado;
Quando o transistor baixo é ativado, os fluxos de corrente, como mostrado na primeira figura.
Em termos de eletrônica de potência, o circuito é como um dispositivo chamado conversor de impulso, onde a energia é armazenada na fase do motor (
a Wikipedia tem um bom artigo explicando como o conversor de impulso funciona).
Essa energia é liberada quando o transistor de baixo custo é desligado, mas com uma tensão mais alta, a corrente flui instantaneamente através do diodo \ 'anti-excitação \' ao lado de cada transistor e depois retorna à bateria.
O diodo impede que a corrente flua da bateria para o motor.
Ao mesmo tempo, a corrente nessa direção (
ao contrário da condução)
interage com o anel do ímã para produzir um torque negativo que diminui o motor.
O transistor de baixo lateral usa um comutador PWM e o ciclo de trabalho do PWM controla a quantidade de frenagem.
Ao dirigir, a comutação do motor muda de uma combinação para a seguinte no devido tempo para manter o torque mais alto possível.
A comutação do freio regenerativo é muito semelhante, porque algum modo de comutação faz com que o motor produza o máximo de torque negativo possível.
Se você assistir ao vídeo na primeira etapa, poderá ver que o freio regenerativo funciona bem, mas não funciona bem.
Eu acho que o principal motivo é que o motor do disco rígido que eu uso é um motor de torque muito baixo, por isso não produz muito bem, exceto na velocidade mais alta.
Em uma velocidade mais baixa, há muito pouca frenagem regenerativa (se houver).
Além disso, meu sistema é executado a uma tensão relativamente baixa (12 V)
, uma vez que cada caminho através do diodo anti-excitação reduz a tensão em vários volts, isso também reduz bastante a eficiência.
Uso diodos retificadores normais e posso obter melhor desempenho se usar alguns diodos especiais com queda de tensão mais baixa.
Abaixo está uma lista de entradas e saídas no Arduino.
Inclua também gráficos e fotos do meu quadro. 2-
HALL DE ENTRADA DIGITAL 1
120 K Resistência do GND 3
Salão de entrada digital 2
120 K Resistência do GND 4
Hall 3 Entrada digital-
120 K Resistência de GND 5
1 saída digital em série com 400 Ohm
Resistor 6 2 Digital em série com 400 ohm
resistor 7 3 Saídas
digitais em série
com 400 ohm resistor 9- Saída digital de EN 1
A saída digital EN 3 está em série com um resistor de 400 ohm, potentiômetro de 100 K ohm, com 5 V e GND conectado nas duas extremidades e o pino analógico 0 conectado no meio.
Este potenciômetro é usado para controlar a velocidade do motor e o volume de frenagem.
A fonte de alimentação de 5 V também é usada para executar sensores de salão (consulte a etapa 5).
Aqui está todo o programa que escrevi para Ardjuino, que inclui comentários:/* BLDC_CONGROLLER 3. 1.
1* 3 de David Glazer.
A série X é ST L6234
Driver de motor de 3 fases IC * Execução do motor de unidade de disco no sentido horário * com frenagem regenerativa * Velocidade do motor e frenagem controlada por um único potenciômetro * Posição do motor por três
sensores de efeito de salão * Arduino recebe saída de fase de 3 Pins
9, 10,4) e conversam em uma combinação para a unidade de fase de 3 pessoas em fase de fase de 3 pessoas, com a unidade de fase de 3 pessoas, com uma combinação de fase de fase de 3 pessoas, de 3,4 anos, e conversam em uma combinação
para a unidade de fase de 3 pessoas. 1,2, 3 * 3 nos pinos 5,6, 7, respectivamente (em 1,2,3)
ao potenciômetro para alterar o ciclo de trabalho PWM e alterar * a frenagem regenerativa *
*
0
Conecte a simulação em
.
Variáveis ​​de três sensores de salão (
Hallstate2
)
3,2,1
;
Int
/Salão 1 pinmode (3, entrada);
/Salão 2 pinmode (4, entrada);
/L6234 salão 3/saída do motorista do motor pinmode (5, saída);
/Em 1 pinmode (6, saída);
/Em 2 pinmode (7, saída);
/Em 3 pinmode (9, saída);
/Pinmode 1 (10, saída);
/En 2 pinmode (11, saída);
/En 3/serial. começar (9600);
Se você estiver usando uma conexão serial, descomemente esta linha.
O comando Flush no final do programa.
/* Defina a frequência PWM nos pinos 9, 10 e 11/Definir PWM a 32 kHz para os pinos 9, 10/primeiro limpe todos os três bits pré-divisor: int prescalerval = 0x07;
/Crie uma variável chamada Prescalerval e defina-a para igual ao número binário \ '00000111 \' tccr1b & = ~ prescaler
/e o valor em tccr0b com um número binário de \ 11111000 \ ' /agora defina o bit pré-codificação apropriado: o bit pré-codificador 2 = 1;
/Definir pré -escala para igualar o número binário \ '00000001 \' tccr1b | = PRESCALEVAL2;
/Ou valor em tccr0b com um número binário de \ '00000001 \' /Definir PWM a 32 kHz para o pino 3,11 (
este programa usa apenas o pino 11)
/limpe os três bits pré-caler primeiro: tccr2b & = ~ pré-calval;
/E o valor em tccr0b com um número binário de \ '11111000 \'/agora define o bit de pré-codificação apropriado: tccr2b | = Bit pré-codificação 2;
/Ou o valor em tccr0b com um número binário de \ '00000001 \'/primeiro limpe todos os três bits pré-codificados:}
o loop principal do loop/void/prGrom () {
/time = millis ();
Hora após o início do programa de impressão. println (tempo); //Serial. imprimir(\'\');
Acelerador = analogread (0);
/Potenciômetro do acelerador MSPS = mapa (
acelerador, 512.1023, 0,255);
/Dirigir é mapeado para a metade superior do potenciômetro bSpeed ​​= mapa (
acelerador, 0,511.255, 0);
/Sem meia parte frenagem regenerativa na parte inferior do pote/msps ed = 100;
/Para depuração Hallstate1 = DigitalRead (2);
/Leia o valor de entrada do salão 1 2 = leitura digital (3);
/Leia o valor de entrada do salão 2 3 = leitura digital (4);
Leia o valor de entrada/gravação numérica do salão 3 (8, Hallstate1);
/Quando o sensor correspondente estiver em alta potência, o LED liga
originalmente usado para depurar o DigitalWrite (9, Hallstate2);
// DigitalWrite (10, Hallstate3); Hallval = (hallstate1)+ (2*hallstate2)+ (4*hallstate3);
/Calcule os valores binários de 3 sensores de salão/* séries. impressão (\ 'h 1: \');
Para depurar a porta serial. println (hallstate1); Serial. print (\ 'h 2: \'); Serial. println (hallstate2); Serial. impressão (\ 'h 3: \'); Serial. println (hallstate3); Serial. println (\ '\');
*/// serial. println (mspeed); //Serial. println (Hallval); //Serial. imprimir(\'\');
/Monitorar Saída/atraso do transistor (1000);
/* T1 = DigitalRead (2); // t1 = ~ t1;
T2 = DigitalRead (4); // t2 = ~ t2;
T3 = DigitalRead (5); // t3 = ~ t3; Serial. impressão (t1); Serial. print (\ '\ t \'); Serial. impressão (T2); Serial. print (\ '\ t \'); Serial. impressão (T3); Serial. imprimir(\'\'); Serial. imprimir(\'\'); Serial. print (DigitalRead (3)); Serial. print (\ '\ t \'); Serial. print (DigitalRead (9)); Serial. print (\ '\ t \'); Serial. println (DigitalRead (10)); Serial. imprimir(\'\'); Serial. imprimir(\'\'); // atraso (500);
*/Alteração da fase de acionamento/cada número binário tem um caso correspondente aos diferentes transistores ativados/matemática de bits usados ​​para alterar o valor da saída arduino:/portd contém a saída do pino in no driver L6234/a saída usada para determinar o transistor superior ou o transistor inferior/enrista para cada fase é controlado pelo comando do arduino, o comando do arduino, o comando do arduino, o comando do
arduino, o comando do arduin valor controlado pelo potenciômetro). if (acelerador> 511) {switch (hallval) {
case 3:/portd = 1111xxx00;
/Saída esperada do pino 0-
7 xxx refere-se à entrada do salão e o PORTD & = B00011111 não deve ser alterado;
PORTD | = B01100000;
/Analowrite (9, mspeed);
PWM em uma fase (
transistor de ponta) analogwrite (10,0);
Fase B de fechamento (dever = 0) analogwrite (11.255); // fase c on -duty = 100% (
transistor de baixo custo) quebra;
Caso 1:/portd = b001xxx00;
/Saída esperada do pino 0-
7 Portd & = B000111111;
/Portd | = B00100000;
/Analowrite (9, mspeed);
PWM em uma fase (
transistor de ponta) analogwrite (10.255); // fase b em
analogwrite (transistor de ponta) (11,0); // fase b desativado (dever = 0) quebra;
Caso 5:/portd = b101xxx00;
/Saída esperada do pino 0-
7 Portd & = B000111111;
/Portd | = B10100000; analogwrite (9,0); analogwrite (10.255); analogwrite (11, mspeed); quebrar;
Caso 4:/portd = b100xxx00;
/Saída esperada do pino 0-
7 Portd & = B000111111;
PORTD | = BYM000;
/Analowrite (9.255); analogwrite (10,0); analogwrite (11, mspeed); quebrar;
Caso 6:/portd = b110xxx00;
/Saída esperada do pino 0-
7 Portd & = B000111111;
Portd B11. 000 =;
/Analowrite (9.255); analogwrite (10, mspeed); analogwrite (11,0); quebrar;
Caso 2:/portd = b010xxx00;
/Saída esperada do pino 0-
7 Portd & = B000111111;
B0201700 PORTD | =;
/Analogrite (9,0); analogwrite (10, mspeed); analogwrite (11.255); quebrar; }}
/Alteração da fase do freio regenerativo /portd (
saída de in pino em L6234)
Os pinos são sempre baixos; portanto, apenas transistores baixos em cada fase são usados ​​durante o regulamento. frenagem. else {
/portd = b000xxx00;
/Saída esperada do pino 0-
7 Portd & = B000111111;
PORTD | = BYM0000; // switch (hallval) {
case 3: redação de analogia (9, bspeed); // analogwrite (9,0); analogwrite (10,0); analogwrite (11,0); quebrar;
Caso 1: Redação de analogia (9, BSpeed); analogwrite (10,0); analogwrite (11,0); quebrar;
Caso 5: Redação de analogia (9,0); analogwrite (10,0); analogwrite (11, BSpeed); quebrar;
Caso 4: Redação de analogia (9,0); analogwrite (10,0); analogwrite (11, BSpeed); quebrar;
Caso 6: Redação de analogia (9,0); analogwrite (10, BSpeed); analogwrite (11,0); quebrar;
Caso 2: Redação de analogia (9,0); analogwrite (10, BSpeed); analogwrite (11,0); quebrar; }}
/Time = millis ();
Hora após o início do programa de impressão. println (tempo); //Serial. imprimir(\'\'); //Serial. flush ();
/Se você deseja depurar usando uma porta serial, por favor, descomment},
acho que a operação que o Arduino faz neste projeto é tão simples que parece um desperdício para realizar essa tarefa com um microprocessador.
De fato, as notas de aplicação de L6234 recomendam uma matriz de portão programável simples (
Gal16v8 feita de semicondutor de treliça) para fazer esse trabalho.
Não estou familiarizado com a programação deste dispositivo, mas o custo do IC é de apenas US $ 2. 39 em Newark.
Outros circuitos integrados semelhantes também são muito baratos.
Outra opção é juntar os portões lógicos discretos.
Cheguei a algumas sequências lógicas relativamente simples que poderiam impulsionar o L6234 IC da saída dos três sensores do Hall.
O gráfico para o estágio A é mostrado abaixo, e a tabela de verdade para todos os três estágios (
para que o circuito lógico das fases B e C, a porta \ não \ 'deve ser alterada para o outro lado do \' ou.
problema é que há quase 20 conexões em cada estágio, assim como um pouco de trabalho.
O

O fabricante profissional de controladores e motores do Grupo Hopro, foi estabelecido em 2000. Sede do grupo na cidade de Changzhou, província de Jiangsu.

Links rápidos

Contate-nos

Whatsapp: +86 18921090987 
Tel: +86-18921090987 
Adicionar: No.19 Mahang South Road, distrito de alta tecnologia de Wujin, cidade de Changzhou, província de Jiangsu, China 213167
Deixe um recado
CONTATE-NOS
Copyright © 2024 Changzhou Hoprio E-Commerce Co., Ltd. Todos os direitos reservados. Sitemap | política de Privacidade