Hoy en día, los entusiastas están muy interesados en controlar el motor DC sin escobillas (BLDC).
En comparación con el motor DC tradicional, el rendimiento del motor ha mejorado y la eficiencia energética también ha mejorado, pero es más difícil de usar. Existen muchos productos disponibles
para este propósito.
Por ejemplo, hay muchos controladores BLDC pequeños que funcionan muy bien para aviones RC.
Para aquellos que quieran profundizar en el control del BLDC, también existen muchos microcontroladores diferentes y otro hardware electrónico para usuarios industriales, que suelen tener muy buena documentación.
Hasta ahora no he encontrado ninguna descripción completa de cómo utilizar el microcontrolador Arduino para el control BLDC.
Además, si está interesado en realizar frenado regenerativo o utilizar un BLDC para generar energía, no he encontrado muchos productos adecuados para usar con motores pequeños, ni he descubierto cómo controlar un generador trifásico.
Esta estructura apareció originalmente en una historia sobre
cálculo en tiempo real; sigo haciéndolo una vez finalizado el curso.
La idea del proyecto es mostrar un modelo proporcional de un coche híbrido con almacenamiento de energía en el volante y frenado regenerativo.
El motor utilizado en el proyecto es un pequeño BLDC limpiado del disco duro dañado de la computadora.
Este manual describe cómo utilizar el microcontrolador Arduino y
los sensores de posición Hall-Afects en los modos de conducción y frenado regenerativo.
Tenga en cuenta que visitar oscillisoft es muy útil, si no esencial, para completar este proyecto.
Si no puede acceder al alcance, agregué algunas sugerencias sobre cómo hacerlo sin el alcance (paso 5).
Una cosa que este proyecto no debería incluir en ningún controlador de motor real es ninguna función de seguridad, como la protección contra sobrecorriente.
De hecho, lo peor es que quemas el motor HD.
Sin embargo, implementar protección contra sobrecorriente con el hardware actual no es difícil y tal vez lo haga en algún momento.
Si está intentando controlar un motor más grande, agregue protección contra sobrecorriente para proteger su motor y su propia seguridad.
Quiero intentar usar este controlador con un motor más grande que pueda hacer un trabajo \'real\' pero todavía no tengo el adecuado.
Me di cuenta de que eBay vendía un coche de 86 W por unos 40 dólares.
Parece un buen candidato.
También hay un sitio web de RC llamado \'GoBrushless\' que vende kits que ensamblan su propio BLDC.
No son demasiado caros y vale la pena la experiencia de construir uno.
Tenga en cuenta que no hay ningún sensor Hall para el motor en este sitio web. ¡Uf!
Escribir esta estructura es un gran trabajo.
Espero que os resulte útil, por favor dejad vuestros comentarios y sugerencias.
Multímetro digital (DMM):
si su DMM tiene un osciloscopio medidor de frecuencia (
es mejor tener al menos 2 canales)
un controlador Torx T8 (
necesita uno de ellos para abrir cualquier disco duro).
Hay una buena ferretería.
Taller de máquinas y prototipo rápido (
son muy útiles, pero creo que este proyecto se puede realizar sin ellos).
Material Anillo magnético del motor bldc del disco duro de la computadora (
la mitad del motor)
De otro disco duro Varios (3-6)
Hay un segundo motor pequeño en el disco plateado del disco duro (DC cepillado OK)
Banda de goma o (preferiblemente)
El motor de CC sin escobillas con un mango con otro motor Placa electrónica de pan Cable sólido mes Arduino Duemilanove Resistencia de 120 k ohmios Resistencia de seis a 400 ohmios Poteniómetro lineal o giratorio Microcircuito ST de 100 k ohmios Controlador de motor trifásico L6234 IC dos capacitores de 100 uF un capacitor de 10 nF un capacitor de 220 nF un capacitor de 1 uF un capacitor de 100 uF tres diodos receptores Uno 2.
Fusible bipolar Hall-5 Amp Honeywell SS411A 1 portafusibles 3
Nota: Mike Anton diseñó y vendió un producto que reemplazará los circuitos electrónicos de potencia y sensores Hall que he mostrado en este manual (
se controla mediante inducción de potencial posterior).
Las especificaciones y la información de adquisición se pueden encontrar en estos dos enlaces: Si va a realizar este proyecto, le sugiero que se tome el tiempo para comprender a fondo cómo funciona y controla el BLDC.
Hay una gran cantidad de referencias en línea (
consulte a continuación algunas sugerencias).
Sin embargo, incluyo algunos gráficos y tablas en mi proyecto que deberían ayudarle a comprenderlo.
Aquí hay una lista de los conceptos que creo que son más importantes para entender este proyecto: Transistores MOSFET Medio puente trifásico
Reducción de sentencia de 6 a 3 pasos
Modulación de ancho de pulso de motor de fase (PWM) Hall-
Microchip AVR443: sensores-referencia general Motor DC Principios básicos para sensores de posición digitales
Control de motor DC trifásico sin escobillas basado en atmelbrusless Control de motor DC
Control de motor BLDC de fase del sensor Flying Star Hall, un buen video de limpieza Enciende el motor del disco duro, pero el autor parece estar haciendo funcionar el motor como un motor paso a paso y como un motor paso a paso. Una página web de referencia más específica para el BLDC en el CI del variador de motor l6234, que incluye hojas de datos, notas de aplicación e información de compra.
Muestra gratuita de motor sin escobillas PM para aplicaciones de vehículos eléctricos híbridos.
Este es el único artículo que encontré que describe el orden del cambio de fase de frenado regenerativo.
Este artículo, el frenado regenerativo en vehículos eléctricos es útil, tomé prestados algunos números, pero creo que describe incorrectamente cómo funciona la regeneración.
Hice este proyecto con un motor de disco reciclado porque era fácil de atravesar y me gusta usar un motor pequeño de bajo voltaje para aprender el cable controlado por BLDC y no causar ningún problema de seguridad.
Además, la configuración del imán del sensor Hall se vuelve muy sencilla al utilizar el anillo magnético (rotor)
del segundo de estos motores (Ver Paso 4).
Si no quiere tomarse la molestia de instalar y calibrar el sensor Hall (pasos 5 a 7),
sé que hay al menos algunos motores de unidad de CD/DVD integrados en el sensor Hall.
Para proporcionar algo de inercia de giro al motor y darles un poco de carga, puse 5 discos duros en el motor, los pegué suavemente con un poco de pegamento fuerte y los pegué al motor (
esto hizo el volante en mi proyecto original).
Si va a retirar el motor del disco duro, necesita una unidad Torx T8 para desatornillar la carcasa (
normalmente hay dos tornillos ocultos detrás de la palanca en la etiqueta central)
y los tornillos internos que sujetan el motor en su lugar.
También es necesario quitar el lector principal (
ejecutivo del círculo de sonido).
De esta manera puede sacar el disco de memoria para llegar al motor.
Además, necesitará un segundo motor de disco duro para quitar el rotor de ese motor (
hay un imán en el interior).
Para desmontar el motor, agarré el rotor (arriba).
Un tornillo de banco del motor y lo hice palanca en el estator (abajo).
Los dos destornilladores están separados 180 grados.
No es fácil sujetar el motor con un par lo suficientemente apretado sin deformarlo.
Es posible que desees construir un
bloque en V de madera utilizado para este propósito.
Hice un agujero en el anillo magnético del torno para que encajara cómodamente en la parte superior del motor.
Si no puede utilizar el torno, puede fijar el rotor invertido al motor con un pegamento fuerte.
Las imágenes 2 y 3 a continuación muestran el interior de uno de los motores que he desmontado.
En la primera mitad (el rotor) hay 8 polos (
imán envuelto en plástico).
En la segunda mitad (el estator)
hay 12 ranuras (devanados).
Cada una de las tres fases del motor tiene 4 ranuras en serie.
Algunos motores HD tienen tres contactos en la parte inferior, un contacto por fase y el otro es la derivación central del motor (
donde se encuentran las tres etapas).
En este proyecto, no se requiere un grifo central, pero puede resultar útil en el control sin sensores (
espero publicar una nota sobre el control sin sensores algún día).
Si tu motor tiene cuatro contactos, puedes identificar la fase con un óhmetro.
La resistencia entre la toma central y la fase es la mitad de la resistencia entre dos fases cualesquiera.
La mayor parte de la literatura sobre motores BLDC trata sobre aquellos con una forma de onda de potencial posterior en forma de escalera, pero el motor del disco duro parece tener un potencial posterior que parece un seno (ver más abajo).
Hasta donde yo sé, conducir un motor de onda sinusoidal con un PWM de onda sinusoidal funciona bien, aunque la eficiencia puede disminuir un poco.
Como todos los motores BLDC, este se compone de un puente de medio transistor trifásico
(
consulte la segunda foto a continuación).
Utilizo el IC fabricado por ST Micro (L6234)
para el puente, también conocido como controlador de motor.
La conexión eléctrica de L6234 se muestra en el paso 8.
La tercera foto a continuación muestra un diagrama esquemático del controlador del motor y las tres fases del motor.
Para que el motor funcione en el sentido de las agujas del reloj, el cambio se realizará en el siguiente orden (
la primera letra es el transistor superior y la segunda letra es el transistor inferior)
: Paso 1 2 3 4 5 6 en el sentido de las agujas del reloj: CB, AB, AC, BC, BA, CA en el sentido contrario a las agujas del reloj: BC, BA, CA, CB, AB, AC estos 6-
La secuencia de pasos requiere un \'grado eléctrico\' de 360, pero solo un grado físico de 90 para estos motores.
Por tanto, la velocidad de rotación de cada motor se produce cuatro veces.
Las dos secuencias parecen ser iguales, pero no son iguales porque para
la secuencia de 6 pasos, para CW, la dirección actual a través de la fase es una dirección, y para CCW, la dirección actual es opuesta.
Puedes comprobarlo tú mismo aplicando el voltaje de la batería o de la fuente de alimentación a cualquiera de las fases del motor.
Si aplica el voltaje, el motor se moverá un poco en una dirección y se detendrá.
Si puede cambiar rápidamente el voltaje en la fase en una de las secuencias anteriores, puede girar el motor manualmente.
Los transistores y microcontroladores completan todos estos cambios muy rápidamente, conmutando cientos de veces por segundo cuando el motor funciona a alta velocidad.
Además, tenga en cuenta que si se aplica voltaje a ambas fases, el motor se mueve un poco y luego se detiene.
Esto se debe a que el par es cero.
Puede ver esto en la cuarta foto a continuación, que muestra el potencial posterior de un par de fases del motor.
Esta es una onda sinusoidal.
Cuando la onda pasa por
el eje x, el par proporcionado por esta fase es cero. En la
secuencia de cambio de fase BLDC de seis pasos eso nunca sucedió.
Antes de que el par en una fase particular disminuya, la potencia se cambia a otra combinación de fases.
Los motores BLDC más grandes suelen fabricarse con sensores Hall dentro del motor.
Si tiene un motor de este tipo, puede omitir este paso.
Además, sé que hay al menos algunos motores de unidad de CD/DVD integrados en un sensor Hall.
Cuando el motor gira, se utilizan tres sensores Hall para detectar la posición, de modo que el cambio de fase se realiza en el momento adecuado.
Mi motor HD funciona hasta 9000 RPM (150 Hz).
Como hay 24 cambios por rueda, a 9000 RPM, la máquina se cambia cada 280 microsegundos.
El microcontrolador Arduino funciona a 16 MHz, por lo que cada ciclo de reloj es de 0, 06 microsegundos.
No sé cuántos ciclos de reloj se requieren para realizar una reducción de oración, pero incluso si se requieren 100 ciclos de reloj, es decir, se necesitan 5 microsegundos para cada reducción de oración.
Los motores HD no cuentan con sensores Hall, por lo que es necesario instalarlos en el exterior del motor.
El sensor debe fijarse con respecto a la rotación del motor y exponerse a una serie de polos que sean consistentes con la rotación del motor.
Mi solución es quitar el anillo magnético del mismo motor e instalarlo boca abajo sobre el motor a controlar.
Luego instalé tres sensores Hall encima de este anillo magnético, a 30 grados de distancia entre sí en el eje del motor (
rotación del motor eléctrico de 120 grados).
Mi soporte para sensor Hall consta de un soporte sencillo que consta de tres piezas de aluminio procesadas por mí y tres piezas de plástico fabricadas según un prototipo rápido.
Si no cuentas con estas herramientas, no debería ser difícil encontrar otra manera de indicar la posición.
Crear soportes para sensores Hall será más complicado.
Esta es una posible forma de trabajar: 1.
Encuentre una bandeja de plástico del tamaño correcto y podrá aplicar epoxi con cuidado al sensor Hall. 2.
Se imprime una plantilla en el papel, que tiene el mismo círculo que el radio del anillo magnético y las tres marcas están separadas 15 grados 3.
Pegue la plantilla al disco y luego use la plantilla como guía para colocar con cuidado el sensor hall epóxico en su lugar.
Ahora que los sensores Hall están instalados en el motor, conéctelos al circuito que se muestra a continuación y pruébelos usando un DMM u osciloscopio para asegurarse de que la salida suba y baje a medida que gira el motor.
Utilizo estos sensores a menos de 5 v usando la salida de 5 v de Arduino.
El sensor Hall tiene salida alta o baja (1 o 0).
Depende de si sienten la Antártida o el Ártico.
Como están separados por 15 grados, los imanes giran debajo de ellos y cambian la polaridad cada 45 grados, estos tres sensores nunca estarán altos o bajos al mismo tiempo.
Cuando el motor gira, la salida del sensor es de 6:
el patrón de pasos que se muestra en la siguiente tabla.
El sensor debe estar alineado con el movimiento del motor para que uno de los tres sensores cambie exactamente en la posición de cambio de fase del motor.
En este caso, el flanco ascendente del primer sensor Hall (H1)
debe ser consistente con la apertura de la combinación C (alto) y B (bajo).
Esto equivale a encender los transistores 3 y 5 en el circuito puente.
Alineo el sensor con el imán con un osciloscopio.
Para hacer esto, tengo que usar tres canales de alcance.
Giro el motor conectándolo a la correa del segundo motor y mido el potencial posterior entre las dos combinaciones de fases (
A y B, A y C).
Estos son dos senos.
Como las ondas en la imagen de abajo.
Luego observe la señal del sensor Hall 2 en el canal 3 del osciloscopio.
El soporte del sensor Hall se gira hasta que el borde ascendente del sensor Hall esté completamente alineado con el punto donde se debe realizar el cambio de fase (consulte a continuación).
Ahora me doy cuenta de que sólo hay dos canales para realizar la misma calibración.
Si el BEMF de la combinación de fases B-
Usa C, el flanco ascendente de H2 estará relacionado con la curva BC.
La razón por la que se debe realizar el cambio de fase aquí es para mantener siempre el par del motor lo más alto posible.
El potencial de retorno es proporcional al torque y notará que cada cambio de fase ocurre cuando el potencial de retorno pasa por debajo de la curva de la siguiente etapa.
Por lo tanto, el par real consiste en la parte más alta de cada combinación de fases.
Si no puede acceder al alcance, esta es mi idea de alineación.
En realidad, este es un ejercicio interesante para cualquiera que quiera saber cómo funciona el motor BLDC.
Si la fase A del motor está conectada (positiva) y B (negativa)
a la fuente de alimentación y enciende la fuente de alimentación, el motor girará un poco y se detendrá.
Luego, si el cable de alimentación negativo se mueve a la fase C y se enciende la alimentación, el motor girará más y se detendrá.
La siguiente parte de la secuencia será mover el cable positivo a la Fase B, etc.
Cuando hace esto, el motor siempre se detiene donde el par es cero, lo que corresponde a un lugar donde el gráfico pasa por el eje x del gráfico.
Tenga en cuenta que el punto cero de la combinación de tercera fase corresponde a la posición de cambio de fase de las dos primeras combinaciones.
Por lo tanto, la posición de par cero de
la combinación B-C es donde desea colocar el flanco ascendente de h2.
Marque esta posición con marcas finas o cuchillas afiladas y luego ajuste el soporte del sensor Hall usando el DMM hasta que la salida de H2 sea exactamente superior a esta marca.
Incluso si te desvías un poco de tu horario escolar, el motor debería funcionar bien.
Las tres fases del motor recibirán energía del controlador del motor trifásico L6234.
Descubrí que este es un buen producto que puede resistir la prueba del tiempo.
Hay muchas formas de freír accidentalmente tus componentes cuando usas electrónica de potencia. No soy ingeniero eléctrico y no siempre sé qué está pasando.
En mi programa escolar, hicimos nuestra propia
salida de medio puente trifásico de 6 transistores MOSFET y 6 diodos.
Usamos esto en el HIP4086 del otro controlador Intersil, pero tenemos muchos problemas con esta configuración.
Quemamos un montón de transistores y chips.
Ejecuto L6234 (
entonces el motor) a 12V.
El L6234 tiene un conjunto inusual de entradas para controlar un medio puente de 6 transistores.
No todos los transistores tienen una entrada, sino una
entrada de habilitación (EN) para cada una de las tres etapas, y luego otra entrada (IN)
Seleccione qué transistor está en la fase abierta (superior o inferior).
Por ejemplo, encienda el transistor 1 (superior) y 6 (inferior).
Tanto EN1 como EN3 están altos (
EN2 bajo para mantener la etapa cerrada)
IN1 alto, IN3 bajo.
Esto hace que la combinación de fases sea C.
Si bien la nota de aplicación L6234 sugería aplicar el PWM utilizado para controlar la velocidad del motor al pin IN, decidí hacerlo en el pin EN porque, en ese momento, creo que sería \'extraño\' encender los transistores superior e inferior de la fase alternativamente \'.
De hecho, parece que no hay nada de malo en encender los transistores bajos de ambas fases al mismo tiempo, porque tienen el mismo potencial, por lo que ninguno de ellos pasa por la corriente.
Con mi método, la fase alta se habilita y deshabilita alternativamente en la frecuencia PWM, mientras que la fase baja permanece encendida durante todo el cambio de fase.
A continuación se muestra un esquema del accionamiento del motor. He agregado la conexión de clavija a la placa Arduino. También agrego un
fusible de 2,5 amperios entre el cable positivo de la batería y el circuito, fusible de 100 uF entre la fuente de alimentación y tierra para reducir la ondulación en la corriente regenerativa.
Esta cifra es un poco pequeña, por lo que para versiones más grandes, consulte la documentación de L6234.
Nota: Mike Anton hizo el PCB para L6234, que ( creo
) reemplazará esta pista y le ahorrará el trabajo de ensamblarla.
Consulte estos enlaces para obtener especificaciones e información de compra: No he encontrado mucho sobre 3.
Describiré mi comprensión de cómo funciona.
Tenga en cuenta que no soy ingeniero eléctrico y agradeceríamos cualquier corrección a mi explicación.
Al conducir, el sistema de control envía la corriente
a tres fases del motor de una manera que maximiza el par. maximiza el par, pero esta vez es un
del Laboratorio Nacional Oakridge en los Estados Unidos.
Un laboratorio
El siguiente cuadro proviene de otro artículo que ayuda a ilustrar cómo funciona (sin embargo, creo que la explicación dada en este segundo artículo es parcialmente incorrecta
par negativo que hace que el motor se desacelere mientras envía la corriente de regreso a la batería. El método de frenado regenerativo que utilicé proviene de un artículo
que realiza muchas investigaciones sobre motores automotrices.
es alto en la etapa B y bajo en la etapa. En este caso
, es posible que la corriente fluya de B a. Cuando el transistor
BEMF
). En la figura, se muestra el momento en que
de baja potencia
está encendido, la corriente fluye como se muestra en la primera imagen.
donde la energía se almacena en la fase del motor (
Wikipedia tiene un buen artículo que explica cómo funciona el convertidor elevador).
Esta energía se libera cuando se apaga el transistor de gama baja, pero a un voltaje más alto, la corriente fluye instantáneamente a través del diodo \'antiexcitación\' al lado de cada transistor y luego regresa a la batería.
El diodo evita que la corriente fluya desde la batería al motor.
Al mismo tiempo, la corriente en esta dirección (
a diferencia de la conducción)
interactúa con el anillo magnético para producir un par negativo. eso ralentiza el motor.
El transistor del lado bajo usa un interruptor PWM, y el ciclo de trabajo de PWM controla la cantidad de frenado. Al
, la conmutación del motor cambia de una combinación a la siguiente a su debido tiempo para mantener el par más alto posible.
La conmutación del freno regenerativo es muy similar porque algún modo de conmutación hace que el motor produzca tanto par negativo como sea posible.
conducir
La razón principal es que el motor del disco duro que uso es un motor de torque muy bajo, por lo que no produce mucho BEMF excepto a la velocidad más baja
, hay muy poco frenado regenerativo (si lo hay).
Además, mi sistema funciona con un voltaje relativamente bajo (12 V).
Además, dado que cada ruta a través del diodo antiexcitación reduce el voltaje en varios voltios, esto también reduce en gran medida la eficiencia.
caída de voltaje más baja
A continuación se muestra una lista de entradas y salidas en arduino.
También incluye gráficos y fotografías de mi placa 2-
Entrada digital :
resistencia de 120 K de Gnd 3
Entrada
Resistencia de 120 K de Gnd 4
digital de Hall 3:
resistencia de 120 K de Gnd 5
1 Salida digital en serie con resistencia de 400 ohmios 6
2 Salidas digitales
en serie con resistencia de 400 ohmios. 7 3
Salidas digitales en serie con resistencia de 400 ohmios 9-
Salida digital de EN 1 en serie con resistencia de 400 ohmios 10-
Salida digital de EN 2 en serie con resistencia de 400 ohmios 11- La salida digital EN 3 está en serie con una resistencia de 400 ohmios, potenciómetro de 100 k Ohmios, con 5 v y tierra conectados en ambos extremos y el pin analógico 0 conectado en el medio
. El potenciómetro se usa para controlar la velocidad del motor y el volumen de frenado.
5).
Aquí está el programa
completo que escribí para Ardjuino, que incluye comentarios:/* bldc_congroller 3.
La fuente de alimentación de 5 V también se usa para ejecutar sensores Hall
Glazer. La serie X es el controlador de motor trifásico ST L6234 * motor de accionamiento de disco
(consulte el paso
tres sensores de efecto Hall *
1. 1*3 de David
en el sentido de las agujas del reloj * con frenado regenerativo * velocidad del motor y frenado controlados por un solo potenciómetro * posición del motor.
10, 11 a
32 kHz * Salida PWM (correspondiente a EN 1,2, 3*3 DO en los pines 5,6, 7,
6 pasos diferentes de cambio de fase en los pines 9,
Arduino
recibe salida de 3 sensores Hall (pines 2,3,4) * Y convierte su combinación en
respectivamente (IN 1,2,3 )
* Conecte la simulación en 0 al potenciómetro para cambiar el ciclo de trabajo PWM y cambiar * entre conducción
499: freno * 500- 523: Taxi * 524- 1023: motorización *
y frenado regenerativo *. * 0-
comenta muchas líneas para
depurar imprimiendo varios valores en una conexión en serie */Int allstate1;
Variables de los 3 sensores hall int; MSPs = 0; /Nivel de velocidad
para motor;
/Nivel de freno del
int bSpeed = 0
acelerador = 0; /Esta variable
,
INPUT
); /Hall 1 pinMode (4,INPUT);
se usa junto con el analógico para medir la posición del ajuste del espacio
del potenciómetro del acelerador () {pinMode(2
pinMode motor driver (5,OUTPUT); /In 1 pinMode (6,OUTPUT); /In 2 pinMode (7,OUTPUT); /In 3 pinMode (9,OUTPUT);
/EN 1 pinMode (10,OUTPUT); /EN 2 pinMode (11,OUTPUT); /EN 3/serial. begin(
9600); If you will be using a serial connection, please uncomment this line. The flush command al final del programa /* Establezca
la frecuencia PWM en los pines 9,
/Cree una variable llamada prescalerVal y configúrela para que sea igual al número binario \'00000111\' TCCR1B
10 y 11/establezca PWM a 32 kHz para los pines 9, 10 /primero borre los tres bits previos al divisor: int prescalerVal = 0x07
& = ~ Prescaler
/Y el valor en. TCCR0B con un número binario de \'11111000\'/ahora establezca el bit de precodificación apropiado: int pre-codificación bit 2 = 1;
/Establezca prescalerVal para que sea igual al número binario \'00000001\' TCCR1B
binario de
= prescalerVal2 /O valor en TCCR0B con un número
\'00000001\'/establezca PWM en 32 kHz para el pin 3,11 (este programa solo usa el pin
11)
/Primero borre los tres bits de precalerval: TCCR2B & = ~ Pre-calerval
;
/Y el valor en TCCR0B con un número binario de \'
11111000\'
/ahora establezca el bit de precodificación apropiado:
TCCR2B | = Bit de precodificación 2 /O
el valor en TCCR0B con un número binario de; \'00000001\'
/primero borre los tres bits precodificados :} El bucle principal del bucle vacío /PRGROM (){ /Time = millis ()
; Tiempo
/La conducción se asigna a la mitad superior del potenciómetro
después de que se inicia el programa de impresión. println(time); //Serial
bSpeed = map ( Throttle, 0,511,255, 0); /Freno regenerativo de media parte en la parte inferior del potenciómetro/MSP ed = 100; /
. print(\'\') ;
Para depurar HallState1 = lectura digital (2); /Leer valor de entrada de Hall 1 2 = Lectura digital (3); desde Hall 3 (8, HallState1); /Cuando el sensor correspondiente esté en alta potencia, el LED se encenderá. Originalmente usado para depurar digitalWrite (9, HallState2)
; //digitalWrite(10, HallState3);
debugging serial port. println(HallState1);
Serial. print(\'H 2: \'); Serial. println
(HallState2); Serial.
print(\'H 3: \'); Serial. println(HallState3); Serial. println(\' \'); */ //Serial. println(mSpeed); //Serial. println(HallVal); //Serial. print(\'\'); /Retraso de salida del transistor (1000); //T3 = ~T3; Serial. print(\'\t\'); Serial. print(T3); Serial. print(\'\'); Serial. print(\'\'); Serial. print(digitalRead(3)); Serial. print(\'\t\'); Serial. print(
digitalRead(9)); Serial. print(\'\t\'); Serial. println(digitalRead(10)); Serial. print(\'\'); Serial. print(\'\');
//delay(500); */Cambio de fase de conducción/cada número binario tiene
un caso correspondiente a los diferentes transistores activados/matemática de bits utilizada para cambiar el valor de la salida arduino: /PORTD
salida del pin IN en el controlador L6234/la salida utilizada para
contiene la
determinar si
9,
/pin EN para cada fase está controlado por la analogía del comando Arduino, establezca el ciclo de trabajo de PWM
el transistor superior o el transistor inferior
(0 = APAGADO, 255 = ENCENDIDO o valor del acelerador controlado por el potenciómetro). /Analowrite (
transistor de gama alta)analogWrite(10,0); cierre de fase B (servicio = 0)analogWrite(11,255); // Fase C en servicio = 100% (transistor de gama
)
Caso
baja
; | = B00100000; /Analowrite (9,mSpeed); PWM en la fase A (transistor de gama alta
mSpeed );
PWM en fase A (
1
:
/PORTD = B001xxx00
encendida (transistor
) analogWrite(10,255); //Fase B
de gama baja)analogWrite(11,0); //Fase B apagada (servicio = 0)
caso 5:/PORTD = B101xxx00; B00011111;
/
| = B10100000;
PORTD
analogWrite(9,0); analogWrite(11,mSpeed);
caso 4:/PORTD = bym000; (9,255);
of pin 0- 7 PORTD & = B00011111; PORTD b11. 000
analogWrite(10,0);
analogWrite(11,mSpeed); break;
/PORTD = B110xxx00; /Expected output
Case 6:
Salida esperada del pin 0-
7 PORTD & =
=;
/Analowrite (9,255); analogWrite(10,mSpeed); analogWrite(11,0); break; Case 2:
/PORTD = B010xxx00; /
B00011111; B0201700 PORTD =; /Analowrite (9,0); analogWrite(10,mSpeed); analogWrite(11,255);
siempre bajo, por lo que solo se utilizan transistores bajos en cada fase durante el frenado. else{
/PORTD = B000xxx00;
/Salida esperada del pin 0-
7 PORTD & = B00011111;
analogWrite
(10,0); analogWrite(11,0); break;
Case 1: analogy writing (9,bSpeed); analogWrite(10,0); analogWrite(11,0); break;
Case 5: analogy writing (9,0); analogWrite(10,0); analogWrite(11,bSpeed); break;
Case 4: analogy writing (9,0); analogWrite(10,0);
analogWrite(11,bSpeed); break; Case 6: analogy writing (9,0);
analogWrite(10,bSpeed); analogWrite(11,0); break; Case 2: analogy writing (9,0); analogWrite
(10,bSpeed
); analogWrite(11,0); break; }} /Time = millis (); Time after the printing program starts. println(time); //Serial. print(\'\'); //Serial. flush(); /
If you want to debug using a serial port, please descomentar
} Creo que la operación que hace Arduino en este proyecto es tan simple que parece un desperdicio realizar esta tarea con un microprocesador .
De hecho, las notas de aplicación de L6234 recomiendan una matriz de puertas programables simple (
para realizar este trabajo.
Lattice Semiconductor)
GAL16V8 hecha de
Otra opción es. Junte las puertas lógicas discretas.
Se me ocurrieron algunas secuencias lógicas relativamente simples que podrían impulsar el IC L6234 desde la salida de los tres sensores Hall.
El diagrama para la etapa A se muestra a continuación y la tabla de verdad para las tres etapas (
para que el circuito lógico de las fases B y C, la puerta \'no\' se debe cambiar al otro lado del \'o.
El problema con este enfoque es que hay casi 20 conexiones en cada etapa, por lo que lleva bastante tiempo). Un poco de trabajo para armarlo.
Lo mejor es programarlo como una puerta lógica programable.