Entonces, ¿qué es un ESC ? Bueno, los controladores electrónicos de velocidad se utilizan para controlar motores sin escobillas, en este caso, el motor tiene una entrada de fase triple. Para controlar esta entrada, el ESC debe aplicar una secuencia especial de señales BAJA y ALTA en un orden predefinido. Tiene que conmutarse muy rápido y girando el rotor del motor. En este tutorial veremos cómo controlar la rotación, la velocidad, detectar el BEMF y saber cuándo hacer el cambio al siguiente paso de la secuencia. Por lo tanto, este es un controlador de velocidad del motor sin escobillas sin sensor, ya que no utiliza ningún sensor para detectar la posición del rotor. Aprenderemos:
- El esquema y por qué necesitamos cada parte
- Control de puente MOSFET de triple fase
- Detección BEMF y cruce 0
- Interrumprions y comparador interno de ATMEGA328
- Control PWM
Ahora el esquema puede parecer complicado pero no lo es. Lo primero es lo primero, tenemos un bloque de energía. Este es un circuito convertidor de dólar que dará 5V para todas las partes digitales. La entrada principal podría ser de 11 a 18V, pero este bloque siempre dará 5V. El siguiente bloque es el puente de triple fase. Estos son 6 MOSFET en configuraciones de puente que se utilizan para energizar las bobinas del motor. Cada uno de estos MOSFET tiene un control de controlador con el IR2101, que es un controlador dual para que pueda controlar los lados alto y bajo del puente.
Esta es la lista de piezas para este proyecto. Asegúrate de usar los mismos componentes. Verifique todas las conexiones, suelde las piezas y luego cargue el código y pruébelo.
- 1 x PCB: GERBERS aquí
- 1 x ATmega328: ENLACE eBay
- 1 x MP2307DN-LF-Z: ENLACE eBay
- 1 x CH340C: ENLACE eBay
- 3 x IR2101STRPBF: ENLACE eBay
- 6 x IRLR7843TRPBF: ENLACE eBay
- 3 x 1N4148WS: ENLACE eBay
- 1 x CON-USB-F-MICRO-B: ENLACE eBay
- 1 x 16MHz crystal 3213: ENLACE eBay
- 1 x BUZZER 5020: ENLACE eBay
- Resistencias 0603 (100R, 1K, 6.8K, 10K, 33K, 44.2K, 100K, 1M): ENLACE eBay
- 2 x 0603 LED: ENLACE eBay
- Condensadores 0603 (1 x 3.9n, 1 x 10n, 4 x 100n, 3 x 2.2u): LINK eBay
- 1206 condensadores (4 x 10u, 6 x 22u,): LINK eBay
- 1 x 7.4x6.6 bobina 100uH: ENLACE eBay
- alambre, soldadura, soldador, etc.

La PCB que he diseñado es de 60 por 35 mm. En la foto a continuación, puede ver la primera versión de la PCB en rojo, pero también la versión final con máscara de soldadura negra. El V1.0 tenía algunos errores, como algunas conexiones GND malas, un pin incorrecto para el zumbador y también las pistas de alimentación estaban cubiertas por la máscara de soldadura. Para la versión V2.0, ahora todos los problemas están solucionados y las pistas grandes están expuestas para poder llenarlas con soldadura para obtener más corriente. Puede descargar los archivos gerber desde abajo.


La primera parte que soldamos es el bloque de alimentación. Este será un circuito convertidor reductor que reducirá el voltaje de 12 V a 5 V para el microcontrolador y otras partes digitales.¿Por qué hacemos esta parte primero? Bueno, si primero soldamos la parte digital y luego el bloque de alimentación y, por error, la salida del convertidor reductor no es de 5V sino de 12V, bueno, eso quemará toda la parte digital.

El segundo paso es soldar la configuración básica del microcontrolador. Ese es el chip ATmega328p-AU, el cristal de 16MHz, la resistencia R23 de 1M ohm, la resistencia R1 de 10K ohm, el condensador C6 de 100nF. Estos componentes son obligatorios para que el microcontrolador funcione. Una vez que haya soldado todas estas partes, podemos probar si podemos subir algo al chip.

Una vez que el voltaje es de 5V y el chip ATmega está funcionando, podemos seguir soldando piezas. La siguiente parte es el programador FTDI CH340. Este chip hará la conexión entre un conector USB desde una PC y nuestro chip ATmega. Así que suelde el CH340C, el condensador C7 y los resistores R18 y R19 de 1k. También suelde el conector USB. Asegúrese de que el chip FTDI sea el CH340C, no el CH340G, porque eso también necesitará un cristal. Una vez que suelde el chip y el conector, intente cargar el mismo código que antes pero esta vez con el conector USB en la placa. Si funciona estamos bien para ir.

Ahora que todo funciona, podemos soldar las resistencias BEMF, los controladores MOSFET con el diodo y los condensadores y los MOSFET en la parte posterior para el puente de triple fase. También suelde los LED y el zumbador. Finalmente, soldamos 3 cables con conectores hembra a las almohadillas GND, Vcc y PWM. Estas serán la señal de entrada del receptor de radio, como cualquier otro ESC comercial.

Ahora el código es un poco largo y difícil de entender. Es por eso que cada línea tiene un comentario. Así que descargue el código del siguiente enlace. Luego lea cada línea para comprender por qué hago cada parte. El código tendrá el main.ino pero también el código secundario para la escritura / lectura EEPROM. El código comienza definiendo las variables a usar en el código. En el bucle de configuración, primero verificamos si la primera posición de la memoria EEPROM es 1. Si no, eso significa que es la primera vez que ejecutamos el código, por lo que guardamos los valores mínimo y máximo de la señal de entrada PWM y también escribimos un "1 "en la primera dirección EEPROM.
//This will only run once after you uplaod the code
if( EEPROM.read(1) != 1)
{
EEPROM_writeAnything(PWM_IN_MIN_ADRESS, PWM_IN_MIN);
EEPROM_writeAnything(PWM_IN_MAX_ADRESS, PWM_IN_MAX);
EEPROM.write(1, 1);
}
Luego, aún en el bucle de configuración, configuramos todos los registros. Configuramos los pines como salidas / entradas, configuramos los registros PWM y también configuramos el pin digital D8 para poder crear interrupciones de cambio de estado del pin. Este pin se usa para leer el ancho de entrada PWM en microsegundos.
DDRD |= B00011100; // Configure pins 2, 3 and 4 as outputs
PORTD = B00000000; //pins 0 to 7 set to LOW
DDRB |= B00001110; // Configure pins 9, 10 and 11 as outputs
PORTB &= B00110001; //B00110001 D9, D10 and D11 to LOW
// Timer1
TCCR1A = 0;
TCCR1B = 0x01;
// Timer2
TCCR2A = 0;
TCCR2B = 0x01;
// Comparator on pin D6
ACSR = 0x10; // Clear flag comparator interrupt
//Set D8 (PWM in) to trigger interrupt (we use this to read PWM input)
PCICR |= (1 << PCIE0); //enable PCMSK0 scan
PCMSK0 |= (1 << PCINT0); //Set pin D8 trigger an interrupt on state change.
Después de la configuración del registro, hay algunos bucles que detectarán si el ESC debe ingresar al modo de configuración o no. Si la señal PWM de entrada está por encima de un cierto valor cuando se enciende el ESC, entonces debe ingresar al modo de configuración donde puede establecer el rango máximo y mínimo de la entrada PWM. Si no, saltará al bucle de rotación del motor.
//Power on mode select
if(PWM_INPUT > PWM_IN_MIN + 115) //We enter config mode to set the PWM range
{
ESC_MODE_ON = false; //Motor rotation is OFF till the config mode is done
while(!PWM_RANGE_SET)
{
.
.
.
Luego tenemos un montón de funciones e ISR para detectar el valor de entrada PWM, para cambiar los pines de los controladores MOSFET a alto o bajo o a PWM o no PWM y también para cambiar la entrada del comparador en el pin D6. Con esta entrada leemos el BEMF y en cada paso de la secuencia necesitamos cambiar esa entrada de BEMF_A a BEMF_B o BEMF_C. El Armega328 tiene este comparador en el pin D6. La entrada negativa si este comparador será la línea COM, que es la suma de todas las fuentes electromotrices posteriores de A, B y C. Luego, la entrada positiva del comparador se seleccionará en el código con la línea:
void BEMF_A_RISING(){
ADCSRA = (0 << ADEN); // Disable the ADC module
ADCSRB = (1 << ACME); // Enable MUX select for negative input of comparator
ADMUX = 2; // Select A2 as comparator negative input
ACSR |= 0x03; // Set interrupt on rising edge*/
}
.
.
.
Una vez que cargó el código y conectó la energía, el motor y la entrada PWN, podemos probar esto. Asegúrese de que el joystick PWM esté bajo y luego conecte la alimentación. Cuando aumenta la señal PWM, el motor debe girar. Si desea establecer un nuevo rango de PWM y calibrar el ESC, simplemente coloque el joystick en la posición media antes de encender el ESC. Encienda el ESC y escuchará los pitidos de configuración. Después de los pitidos, coloque el joystick en el valor máximo y luego en el valor mínimo y se almacenará en la EEPROM. Eso es.
0 Comments