Hoy en día, los entusiastas están muy interesados en controlar DC sin escobillas (BLDC)
en comparación con el motor de CC tradicional, el rendimiento del motor ha mejorado, la eficiencia energética también ha mejorado, pero es más difícil de usar. Existen muchos
productos en el estante para este propósito.
Por ejemplo, hay muchos controladores BLDCS pequeños que funcionan muy bien para los aviones RC.
Para aquellos que desean analizar el control del BLDC con más profundidad, también hay muchos microcontroladores diferentes y otro hardware electrónico para usuarios industriales, que generalmente tienen muy buena documentación.
Hasta ahora no he encontrado una descripción completa de cómo usar el microcontrolador Arduino para el control BLDC.
Además, si está interesado en hacer frenado regenerativo o en usar un BLDC para la generación de energía, no he encontrado muchos productos adecuados para su uso con motores pequeños, ni he descubierto cómo controlar el generador trifásico.
Esta estructura fue originalmente en una historia sobre
el cálculo de tiempo real, sigo haciéndolo después de que termina el curso.
La idea del proyecto es mostrar un modelo proporcional de un automóvil híbrido con almacenamiento de energía del volante y frenado regenerativo.
El motor utilizado en el proyecto es un pequeño BLDCS limpiado del disco duro de la computadora dañado.
Este manual describe cómo usar el microcontrolador Arduino y el salón
afecta los sensores de posición 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, he agregado algunas sugerencias sobre cómo hacerlo sin el alcance (paso 5).
Una cosa que este proyecto no debe incluir en ningún controlador de motor real es cualquier función de seguridad, como la protección de la corriente.
De hecho, lo peor es que quema el motor HD.
Sin embargo, implementar la protección de la corriente de corriente con el hardware actual no es difícil, y tal vez lo haga en algún momento.
Si está tratando de controlar un motor más grande, agregue sobre la protección actual 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 correcto.
Noté que eBay vendió un automóvil de 86 W por alrededor de $ 40.
Parece un buen candidato.
También hay un sitio web de RC llamado \ 'Gobrushless \' que vende kits que ensamblan su propio BLDC.
Estos no son demasiado caros y vale la pena la experiencia para construir uno.
Tenga en cuenta que no hay sensor de salón para el motor en este sitio web. ¡Uf!
Escribir esta estructura es un gran trabajo.
Espero que lo encuentre útil, por favor haga sus comentarios y sugerencias.
Multímetro digital (DMM):
si su DMM tiene un osciloscopio de medidor de frecuencia (
es mejor tener al menos 2 canales)
T8 Torx Driver (
necesita uno de ellos para abrir cualquier disco duro).
Hay una buena ferretería.
Taller de máquinas y prototipo rápido (
estos son muy útiles, pero creo que este proyecto se puede hacer sin ellos).
Material Anillo magnético del motor BLDC del disco duro de la computadora (
la mitad del motor)
de otro drivesveral duro (3-6)
Hay un segundo motor pequeño en el disco de plata en el disco duro (DC cepillado OK) la
banda de goma o (preferiblemente)
el motor de CC sin cepillo con un mango de alambre de placa electrónica de pan del motor. OHMST Micro Circuit L6234 Motor del motor trifásico IC Dos condensadores de 100 UF un condensador de 10 NF Un condensador de 220 nf One 1 UF condensador One 100 UF condensador tres Diodos Recibidos One 2.
Honeywell SS411A Bipolar Hall-5 amp Fuse 1 Fuse Holder 3
Note: ManiM (
Se controla utilizando la inducción de potencial posterior).
Las especificaciones y la información de adquisición se pueden encontrar en estos dos enlaces: si va a hacer 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 (
ver más abajo para algunas sugerencias).
Sin embargo, incluyo algunos gráficos y tablas en mi proyecto que deberían ayudarlo a comprender.
Aquí hay una lista de los conceptos que creo que son más importantes para comprender este proyecto: transistores MOSFET Media puente de 3 puentes 6-
3 pasos de 3 pasos de la
modulación de ancho de pulso del pulso de oración del motor de fase (PWM) Hall-
Microchip AVR443:
Control del motor del motor DC del motor DC del motor DC del motor DC del motor DC del motor DC del motor DC del motor DC de los sensores DC de los sensores del Motor DC de los Sensores
DC de los Sensores de DC. Star Hall Sensor, un buen video de la limpieza del motor del disco duro, pero el autor parece estar ejecutando el motor como motor de paso y como motor de paso. Una página web de referencia más específica para el BLDC en el IC de la unidad de motor L6234, incluidas las hojas de datos, las notas de aplicación e información de compra.
Muestra gratuita para PM sin cepillo para el motor para aplicaciones híbridas de vehículos eléctricos.
Este es el único artículo que encontré que describe el orden del cambio de fase de frenado regenerativo.
Este documento, el frenado regenerativo en vehículos eléctricos es útil, tomé prestados algunos números de él, pero creo que describe incorrectamente cómo funciona la regeneración.
Hice este proyecto con motor de accionamiento de disco reciclado porque era fácil pasar y me gusta usar un pequeño motor de bajo voltaje para aprender el cable controlado por BLDC y no causar ningún problema de seguridad.
Además, la configuración magnética del sensor de la sala se vuelve muy simple mediante el uso del anillo magnético (rotor)
del segundo de estos motores (ver paso 4).
Si no desea ir a toda la molestia de instalar y calibrar el sensor del salón (Pasos 5-7)
Sé que hay al menos algunos motores de accionamiento CD/DVD construidos en el sensor en el salón.
Para proporcionar algo de inercia giratoria al motor y darles un poco de carga, pongo 5 discos duros en el motor, pegados suavemente con un poco de pegamento fuerte y pegado al motor (
esto hizo el volante en mi proyecto original).
Si va a quitar el motor del disco duro, necesita un disco T8 Torx para desenroscar la carcasa (
generalmente hay dos tornillos ocultos detrás del palo en la etiqueta Centeron)
y tornillos internos que mantienen el motor en su lugar.
También debe eliminar el lector principal (
ejecutivo de 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 eliminar el rotor de ese motor (
hay un imán en el interior).
Para separar el motor, agarré el rotor (arriba)
una prensa del motor y lo metí en el estator (abajo)
Los dos destornilladores están separados a 180 grados.
No es fácil sostener el motor en un par lo suficientemente apretado sin deformación.
Es posible que desee construir un
bloque V de madera utilizado para este propósito.
Personé un agujero en el anillo magnético en el torno para que se ajuste cómodamente en la parte superior del motor.
Si no puede usar el torno, puede arreglar el rotor invertido en el 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 allí (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 motoras tiene 4 ranuras en serie.
Algunos motores HD tienen tres contactos en la parte inferior, un contacto por fase, y el otro es el grifo central del motor (
donde se encuentran tres etapas).
En este proyecto, no se requiere un toque central, pero puede ser útil en el control sin sensores (
espero lanzar una nota sobre el control sin sensores algún día).
Si su motor tiene cuatro contactos, puede identificar la fase con Ohmeter.
La resistencia entre el grifo central y la fase es la mitad de la resistencia entre dos fases.
La mayor parte de la literatura sobre los motores BLDC trata con aquellos con una forma de onda potencial de espalda en forma de escalera, pero el motor del disco duro parece tener un potencial de respaldo que parece un seno (ver más abajo).
Hasta donde yo sé, conducir un motor de onda sinusoidal con una onda sinusoidal PWM funciona bien, aunque la eficiencia puede disminuir un poco.
Al igual que todos los motores BLDC, este está compuesto por el puente medio transistor trifásico
(
ver la segunda foto a continuación).
Utilizo el IC realizado por St Micro (L6234)
para el puente, también conocido como controlador del 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 interruptor 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 Contenedor: BC, BA, CA, CB, AB, AC, AC,
la secuencia de paso requiere un grado eléctrico \ 'de 360, pero de 360, pero solo de 360, pero solo de 360, pero solo de 360, pero solo de 360, pero un grado físico de 360, pero de 360, pero de 360, pero de 360, pero un grado físico de 360, pero de 360, solo de 360, pero de un grado motores.
Por lo tanto, la velocidad de rotación de cada motor ocurre cuatro veces.
Las dos secuencias parecen ser las mismas, pero no son las mismas 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.
Puede ver esto usted mismo aplicando el voltaje de la batería o la fuente de alimentación a cualquier fase 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 rotar el motor manualmente.
Los transistores y los microcontroladores completan todos estos interruptores muy rápidamente, cambiando cientos de veces por segundo cuando el motor funciona a alta velocidad.
Además, tenga en cuenta que si el voltaje se aplica 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 motoras.
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 de seis pasos de fase que nunca sucedió.
Antes de que el par en una fase en particular sea baja, la potencia se cambia a otra combinación de fase.
Los motores BLDC más grandes generalmente son fabricados por sensores de pasillo dentro del motor.
Si tiene un motor así, puede omitir este paso.
Además, sé que hay al menos algunos motores de accionamiento de CD/DVD incorporados en el sensor ya-hall.
Cuando el motor gira, se utilizan tres sensores de pasillo para la detección de posición, por lo que el cambio de fase se realiza en el momento correcto.
Mi motor HD corre hasta 9000 rpm (150 Hz).
Dado que hay 24 cambios por rueda, a 9000 rpm, la máquina cambia cada 280 microsegundos.
El microcontrolador Arduino funciona a 16 MHz, por lo que cada ciclo de reloj es 0. 06 microsegundos.
No sé cuántos ciclos de reloj se requieren para realizar una reducción de la oración, pero incluso si se requieren 100 ciclos de reloj, es decir, se necesitan 5 microsegundos para cada reducción de la oración.
Los motores HD no tienen sensores de pasillo, por lo que es necesario instalarlos en el exterior del motor.
El sensor debe repararse con respecto a la rotación del motor y expuesto a una serie de polos que son consistentes con la rotación del motor.
Mi solución es eliminar el anillo magnético del mismo motor e instalarlo boca abajo en el motor para controlar.
Luego instalé tres sensores de pasillo por encima de este anillo magnético, a 30 grados de distancia entre sí en el eje del motor (
rotación eléctrica del motor de 120 grados).
El soporte del sensor de la sala consta de un soporte simple que consta de tres piezas de aluminio procesadas por mí y tres piezas de plástico hechas en un prototipo rápido.
Si no tiene estas herramientas, no debería ser difícil encontrar otra forma de indicar la posición.
Crear soportes para los sensores de la sala será más desafiante.
Esta es una posible forma de trabajar: 1.
Encuentre una bandeja de plástico del tamaño correcto y puede epoxi cuidadosamente el sensor de la sala. 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 a 15 grados 3 separados.
Pegue la plantilla al disco y luego use la plantilla como guía para colocar cuidadosamente el epoxi del sensor del salón en su lugar.
Ahora que los sensores de pasillo están instalados en el motor, conéctelos al circuito que se muestra a continuación y pruebe con un DMM u osciloscopio para asegurarse de que la salida aumente y más baja a medida que el motor gira.
Ejecuto estos sensores bajo 5 V usando la salida de 5 V de Arduino.
El sensor de la sala tiene una salida alta o baja (1 o 0)
Depende de si sienten la Antártica o el Ártico.
Dado que están separados a 15 grados, los imanes giran debajo de ellos y cambian la polaridad cada 45 grados, estos tres sensores nunca serán altos o bajos al mismo tiempo.
Cuando el motor gira, la salida del sensor es 6-
El patrón de paso 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 con precisión en la posición de cambio de fase del motor.
En este caso, el borde ascendente del primer sensor de pasillo (H1)
debe ser consistente con la apertura de la combinación C (alta) y B (baja).
Esto es equivalente a encender los transistores 3 y 5 en el circuito del puente.
Alineo el sensor con el imán con un osciloscopio.
Para hacer esto, tengo que usar tres canales de alcance.
Gire el motor conectando a la correa del segundo motor y mido el potencial de respaldo entre las combinaciones de dos fases (
A y B, A y C)
Estos son dos sinuso.
Al igual que las ondas en la imagen a continuación,
luego mire la señal del sensor de Hall 2 en el canal 3 del osciloscopio.
El soporte del sensor del salón se gira hasta que el borde ascendente del sensor del salón está completamente alineado con el punto donde se debe realizar el cambio de fase (ver más abajo).
Ahora me doy cuenta de que solo hay dos canales para hacer la misma calibración.
Si el BEMF de la combinación de fase b-
Usando C, el borde ascendente de H2 estará relacionado con la curva BC.
La razón por la cual el cambio de fase debe llevarse a cabo aquí es mantener siempre el par motor lo más alto posible.
El potencial posterior es proporcional al par y notará que cada cambio de fase ocurre cuando el potencial posterior 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 fase.
Si no puede acceder al alcance, aquí está mi idea de alineación.
Este es en realidad un ejercicio interesante para cualquiera que quiera saber cómo funciona el motor BLDC.
Si la fase del motor A 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 plomo de potencia negativo se mueve a la fase C y la potencia se enciende, el motor girará más y se detendrá.
La siguiente parte de la secuencia será mover el plomo positivo a la fase B, etc.
Cuando haga esto, el motor siempre se detiene donde el par es cero, que corresponde a un lugar donde el gráfico pasa a través del eje X en el 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 torque cero de B-
La combinación C es donde desea colocar el borde ascendente de H2.
Marque esta posición con marcas finas o cuchillas afiladas, y luego ajuste el soporte del sensor del salón con DMM hasta que la salida de H2 sea exactamente más alta en esta marca.
Incluso si se desvía un poco del horario de su escuela, el motor debería funcionar bien.
La fase del motor tres recibirá energía del controlador de motor trifásico L6234.
Descubrí que este es un buen producto que puede soportar la prueba del tiempo.
Hay muchas maneras de freír accidentalmente sus componentes cuando usan electrónica de potencia, no soy un ingeniero eléctrico y no siempre sé qué está pasando.
En mi programa escolar, hicimos nuestra propia
salida de 3 fase de media puente de 6 transistores MOSFET y 6 diodos.
Usamos esto en la cadera 4086 del otro controlador Intersil, pero tenemos muchos problemas con esta configuración,
quemamos un montón de transistores y chips.
Ejecuto L6234 (
para que el motor) a 12V.
El L6234 tiene un conjunto inusual de entradas para controlar un medio puente de 6 transistores.
No todos los transistor 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 en la fase abierta (superior o inferior).
Por ejemplo, activar el transistor 1 (superior) y 6 (inferior)
tanto EN1 como EN3 son altos (
en2 bajo para mantener el escenario cerrado)
en1 altos, en 3 bajos.
Esto hace que la combinación de fase-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 Pasa a través
de
corriente
.
la Pequeño, así que para versiones más grandes, consulte la documentación para L6234.
Nota: Mike Anton hizo el PCB para L6234, que (creo)
reemplazará esta pista y le ahorrará el trabajo de ensamblarla.
Vea estos enlaces para ver 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 un ingeniero eléctrico y apreciamos cualquier corrección a mi explicación.
Al conducir, el sistema de control envía la corriente a tres fases motoras de una manera que maximiza el par.
En el frenado regenerativo, el sistema de control también maximiza el par, pero esta vez es un par negativo que hace que el motor disminuya la velocidad mientras envía la corriente a la batería.
El método de frenado regenerativo que utilicé provino de un artículo del Laboratorio Nacional de Oakridge en los Estados Unidos. S. Gobierno.
Un laboratorio que investiga mucho para los motores automotrices.
El cuadro a continuación proviene de otro artículo que ayuda a ilustrar cómo funciona (
sin embargo, creo que la explicación dada en este segundo documento es parcialmente incorrecta).
Tenga en cuenta que cuando el motor gira, el voltaje BEMF en la fase del motor fluctúa hacia arriba y hacia abajo.
En la figura, muestra el momento en que BEMF es alto en la etapa B y baja en la etapa.
En este caso, es posible que la corriente fluya de B a.
Crítico para el frenado regenerativo, los transistores de gama baja se encienden y apagan rápidamente (
miles de interruptores PWM por segundo).
Cuando el interruptor de transistor de gama alta se apaga;
Cuando se enciende el transistor bajo, la corriente fluye como se muestra en la primera imagen.
En términos de electrónica de potencia, el circuito es como un dispositivo llamado convertidor de refuerzo, donde la energía se almacena en la fase del motor (
Wikipedia tiene un buen artículo que explica cómo funciona el convertidor de refuerzo).
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 \ 'anti-Excitación \' al lado de cada transistor y luego regresa a la batería.
El diodo evita que la corriente fluya de la batería al motor.
Al mismo tiempo, la corriente en esta dirección (
contrario a la conducción)
interactúa con el anillo de imán para producir un par negativo que ralentiza el motor hacia abajo.
El transistor de lado bajo utiliza un interruptor PWM, y el ciclo de trabajo de PWM controla la cantidad de frenado.
Al conducir, la conmutación del motor cambia de una combinación a la siguiente a su debido tiempo para mantener el torque 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 la mayor cantidad de par negativo posible.
Si ve el video en el primer paso, puede ver que el freno regenerativo funciona bien, pero no funciona bien.
Creo que la razón principal es que el motor del disco duro que uso es un motor de par muy bajo, por lo que no produce mucho bemf, excepto a la velocidad más alta.
A una velocidad más baja, hay muy poco frenado regenerativo (si lo hay).
Además, mi sistema se ejecuta a un voltaje relativamente bajo (12 V)
además, ya que cada ruta a través del diodo anti-Excitación reduce el voltaje por varios voltios, esto también reduce en gran medida la eficiencia.
Utilizo diodos rectificadores normales y puedo obtener un mejor rendimiento si uso algunos diodos especiales con una caída de voltaje más baja.
A continuación se muestra una lista de entradas y salidas en Arduino.
También incluya cuadros y fotos de mi tablero. 2-
Digital entry-Hall 1
120 K resistance of Gnd 3
Digital entry hall 2
120 K resistance of Gnd 4
Hall 3 digital input-
120 K resistance of Gnd 5
1 Digital Output in series with 400 ohm resistor 6
2 Digital outputs in series with 400 ohm resistor 7
3 Digital outputs in series with 400 ohm resistor 9-
Digital Output of EN 1 in series with 400 ohm resistor 10-
Digital Output of EN 2 in series with 400 ohm resistor 11-
La salida digital EN 3 está en serie con una resistencia de 400 ohmios, un potenciómetro de 100 k ohm, con 5 V y GND conectados en ambos extremos y un pin 0 analógico conectado en el medio.
Este potenciómetro se utiliza para controlar la velocidad del motor y el volumen de frenado.
La fuente de alimentación de 5 V también se usa para ejecutar sensores de pasillo (ver Paso 5).
Aquí está todo el programa que escribí para Ardjuino, que incluye comentarios:/* BLDC_CONGROLLER 3. 1.
1* 3 por David Glazer.
The X series is ST L6234 3-
Phase motor driver IC * running disk drive motor clockwise * with regenerative braking * motor speed and braking controlled by a single potentiometer * motor position by three Hall-
Effect Sensor * Arduino receives output from 3 hall sensors (pins 2,3,4)
* And convert their combination to 6 different phase-changing steps on pins 9, 10, 11 at 32 kHz * PWM output (
Corresponding to EN 1,2, 3 * 3 Do en los pines 5,6, 7, respectivamente (en 1,2,3)
la simulación en 0 al potenciómetro para cambiar el ciclo de trabajo PWM y cambiar * entre la conducción y el frenado
*
regenerativo
Conecte
* Variables
HallState2
( 3,2,1
de tres sensores
)
;
int
/Hall 1 PinMode (3, entrada);
/Hall 2 PinMode (4, entrada);
/L6234 Hall 3/Salida del controlador del motor PinMode (5, salida);
/En 1 pinmode (6, salida);
/En 2 pines pin (7, salida);
/En 3 pines pin (9, salida);
/EN 1 PinMode (10, salida);
/EN 2 PinMode (11, salida);
/EN 3/Serial. comenzar (9600);
Si usa una conexión serie, desenchufe esta línea.
El comando FLUSH al final del programa.
/* Establezca la frecuencia PWM en los pasadores 9, 10 y 11/establece PWM a 32 kHz para los pines 9, 10/Primero borre los tres bits previos al divisor: int prescalerval = 0x07;
/Crear una variable llamada prescalerval y establecerla para igualar el número binario \ '00000111 \' tccr1b & = ~ prescaler
/y el valor en tccr0b con un número binario de \ '11111000 \' /ahora establezca el bit preenvoding apropiado: int pre-entinging bit 2 = 1;
/Establecer prescalerval para igualar el número binario \ '00000001 \' TCCR1B | = prescalerval2;
/O valor en TCCR0b con un número binario de \ '00000001 \' /Establecer PWM a 32 kHz para el PIN 3,11 (
este programa solo usa PIN 11)
/Borrar los tres bits previos al calificación primero: TCCR2B & = ~ Pre-Calerval;
/Y el valor en TCCR0B con un número binario de \ '11111000 \'/ahora establezca el bit pre-codificante apropiado: TCCR2B | = Bit de pre-codificación 2;
/O el valor en TCCR0B con un número binario de \ '00000001 \'/Primero borre los tres bits pre-codificados:}
El bucle principal del/prgrom void loop () {
/time = millis ();
Tiempo después de que comience el programa de impresión. println (tiempo); //De serie. imprimir(\'\');
Acelerador = anicoGread (0);
/Potenciómetro del acelerador MSPS = mapa (
acelerador, 512,1023, 0,255);
/La conducción se asigna a la mitad superior del potenciómetro bspeed = map (
acelerador, 0,511,255, 0);
/Frenado regenerativo de media parte en la parte inferior de la olla/msps ed = 100;
/Para la depuración HallState1 = DigitalRead (2);
/Leer el valor de entrada del Hall 1 2 = Digital Read (3);
/Leer el valor de entrada de la sala 2 3 = lectura digital (4);
Lea el valor de entrada/Escritura numérica desde Hall 3 (8, HallState1);
/Cuando el sensor correspondiente está en alta potencia, el LED se encenderá
originalmente para depurar DigitalWrite (9, HallState2);
// DigitalWrite (10, HallState3); Hallval = (HallState1)+ (2*HallState2)+ (4*HallState3);
/Calcule los valores binarios de 3 sensores Hall/* Serie. imprimir (\ 'H 1: \');
Para el puerto serie de depuración. println (HallState1); De serie. imprimir (\ 'H 2: \'); De serie. println (HallState2); De serie. imprimir (\ 'H 3: \'); De serie. println (HallState3); De serie. println (\ '\');
*/// serial. println (mspeed); //De serie. println (Hallval); //De serie. imprimir(\'\');
/Monitor de salida del transistor/retraso (1000);
/* T1 = digitalRead (2); // t1 = ~ t1;
T2 = DigitalRead (4); // t2 = ~ t2;
T3 = DigitalRead (5); // t3 = ~ t3; De serie. imprimir (T1); De serie. imprimir (\ '\ t \'); De serie. imprimir (T2); De serie. imprimir (\ '\ t \'); De serie. imprimir (T3); De serie. imprimir(\'\'); De serie. imprimir(\'\'); De serie. print (digitalread (3)); De serie. imprimir (\ '\ t \'); De serie. print (digitalread (9)); De serie. imprimir (\ '\ t \'); De serie. println (digitalRead (10)); De serie. imprimir(\'\'); De serie. imprimir(\'\'); // retraso (500);
*/Cambio de fase de conducción/Cada número binario tiene un caso correspondiente a los diferentes transistores activados/Matemáticas de bit utilizados para cambiar el valor de la salida Arduino:/PortD contiene la salida del PIN in en el controlador L6234/el resultado utilizado para determinar si el transistor superior o el transistor inferior/en Pin para cada fase está controlada por el comando arduino analogía, establece el servicio el rumbo del ciclo de PWM (
0 = Off, el transistor de la fase para cada fase. controlado por potenciómetro). if (Throttle> 511) {Switch (Hallval) {
case 3:/portd = 1111xxx00;
/La salida esperada del pin 0-
7 xxx se refiere a la entrada del pasillo y Portd & = B00011111 no debe cambiarse;
Portd | = B01100000;
/AnalowRite (9, mspeed);
PWM en una fase (
transistor de alta gama) analogWrite (10,0);
Cierre de fase B (deber = 0) AnalogWrite (11,255); // Fase C en -duty = 100% (
transistor de gama baja);
Caso 1:/Portd = B001xxx00;
/Salida esperada del pin 0-
7 Portd & = B00011111;
/Portd | = B00100000;
/AnalowRite (9, mspeed);
PWM en una fase (
transistor de alta gama) Analogwrite (10,255); // fase B en (
transistor de gama baja) Analogwrite (11,0); // Fase B OFF (deber = 0) Descanso;
Caso 5:/Portd = B101xxx00;
/Salida esperada del pin 0-
7 Portd & = B00011111;
/Portd | = B10100000; Analogwrite (9,0); Analogwrite (10,255); Analogwrite (11, mspeed); romper;
Caso 4:/Portd = B100xxx00;
/Salida esperada del pin 0-
7 Portd & = B00011111;
Portd | = BYM000;
/Analowrite (9,255); Analogwrite (10,0); Analogwrite (11, mspeed); romper;
Caso 6:/Portd = B110xxx00;
/Salida esperada del pin 0-
7 Portd & = B00011111;
Portd B11. 000 =;
/Analowrite (9,255); Analogwrite (10, mspeed); Analogwrite (11,0); romper;
Caso 2:/Portd = B010xxx00;
/Salida esperada del pin 0-
7 Portd & = B00011111;
B0201700 Portd | =;
/Analowrite (9,0); Analogwrite (10, mspeed); Analogwrite (11,255); romper; }}
/Cambio de fase de freno regenerativo /PortD (
salida de en pin en L6234)
Los pines siempre son bajos, por lo que solo se usan transistores bajos en cada fase durante la regen. frenado. else {
/portd = b000xxx00;
/Salida esperada del pin 0-
7 Portd & = B00011111;
Portd | = BYM0000; // Switch (Hallval) {
Caso 3: Escritura de analogía (9, Bspeed); // Analogwrite (9,0); Analogwrite (10,0); Analogwrite (11,0); romper;
Caso 1: Escritura de analogía (9, Bspeed); Analogwrite (10,0); Analogwrite (11,0); romper;
Caso 5: Escritura de analogía (9,0); Analogwrite (10,0); Analogwrite (11, Bspeed); romper;
Caso 4: Escritura de analogía (9,0); Analogwrite (10,0); Analogwrite (11, Bspeed); romper;
Caso 6: Escritura de analogía (9,0); Analogwrite (10, Bspeed); Analogwrite (11,0); romper;
Caso 2: Escritura de analogía (9,0); Analogwrite (10, Bspeed); Analogwrite (11,0); romper; }}
/Time = millis ();
Tiempo después de que comience el programa de impresión. println (tiempo); //De serie. imprimir(\'\'); //De serie. enjuagar();
/Si desea depurar usando un puerto serie, por favor, sin consolidad}
Creo que la operación que Arduino hace en este proyecto es tan simple que parece un desperdicio hacer esta tarea con un microprocesador.
De hecho, las notas de aplicación de L6234 recomiendan una matriz de puerta programable simple (
Gal16v8 hecha de semiconductor de red) para hacer este trabajo.
No estoy familiarizado con la programación de este dispositivo, pero el costo de IC es de solo $ 2. 39 en Newark.
Otros circuitos integrados similares también son muy baratos.
Otra opción es armar las puertas lógicas discretas.
Se me ocurrieron algunas secuencias lógicas relativamente simples que podrían conducir el IC L6234 desde la salida de los tres sensores de la sala.
El gráfico para la etapa A se muestra a continuación, y la tabla de verdad para las tres etapas (
para el circuito lógico de las fases B y C, la puerta \ 'no \' debe cambiarse al otro lado del \ 'o.
El problema con este enfoque es que hay casi 20 conexiones en cada etapa, por lo que se necesita un poco de trabajo para armarlo.
Es mejor para programarlo como una puerta de lógico programable.