Arduino Nano Quadcopter
DescargarFavorito
Introducción: Arduino Nano Quadcopter
Por MontvydasSeguir
Más del autor:
(En este momento el proyecto se está editando ya que el
modelo anterior tenía un par de fallas)
Este es un nano cuadricóptero impreso en 3D y basado en
Arduino que vuela con motores de CC con escobillas. El nombre
nano proviene del hecho de que el proyecto se basa en Arduino
nano, que creo que es una de las placas de desarrollo más
exitosas jamás creadas. Este proyecto no es solo otro Oye, mira
lo genial que hice , sino que tiene como objetivo analizar y
comprender las decisiones de diseño que deben tomarse al
diseñar un quadcopter, por lo que será un poco largo. Sin
embargo, si quieres entender los cuadricópteros de abajo hacia
arriba, ¡quédate conmigo!
Cuando comencé a trabajar en el proyecto (es una pena decirlo,
hace años ...), seguí el módulo Bluetooth 2.0, ya que era popular
en ese entonces, sin embargo, pasaron los años y se
desarrollaron muchos más módulos Arduino. Recientemente, noté
que un par de módulos nano diferentes como BLE-Nano y RF-
Nano (nRF24L01) están disponibles a bajo costo en Aliexpress,
así que decidí revivir este proyecto y finalmente
completarlo. Usaré BLE-Nano ya que las conexiones funcionaron
muy bien y también querré controlarlo usando mi teléfono
inteligente.
Un poco más, elegí específicamente piezas SMD disponibles en
la biblioteca JLCPCB Basic y proporcioné tanto Schematics como
los archivos PCB disponibles en EasyEDA para ambos, Nano
Quadcopter y posteriormente nRF52840
Quadcopter mejorado . Algunos conectores de orificio pasante y
otros elementos esenciales relacionados con los cuadricópteros
aún tendrán que obtenerse por separado; de lo contrario, se
puede preordenar una PCB ya ensamblada o pedir piezas por
separado y soldarlas a mano.
PD: el robot está dedicado al robot asesino MONTE
( neutralización omnidireccional móvil y erradicador de
terminación ) de The Big Bang Theory: D
Agregar sugerenciaPreguntaComentarioDescargar
Paso 1: marco y plástico
Elección de material
Al diseñar el marco, hay que tener en cuenta un par de
consideraciones. El marco debe ser:
Ligero: obviamente, cuanto más liviano sea, más fácil será
levantarlo.
Robusto: los cuadricópteros tienden a caerse mucho y si no
se rompe después de cada caída, ¿es una gran ventaja?
Resistente a las vibraciones; de lo contrario, podría ser
inestable ya que los motores vibran mucho. Esto también
ayuda a reducir el ruido captado por el acelerómetro.
En el pasado vi cuadricópteros cuyo marco estaba hecho de
plástico, fibra de carbono, algún tipo de metal, PCB o una
combinación de estos. Como también quería aprender sobre la
impresión 3D, decidí diseñar mi propio marco y luego imprimirlo
con plástico ABS, sin embargo, el PLA también debería ser
bueno. No hice un cuadricóptero basado solo en PCB, ya que eso
aumentaría el precio total de la impresión de PCB y, además, si
una parte se rompiera ... todo el cuadricóptero tendría que ser
desechado.
Diseño 3D
El uso de la impresora 3D me permitió diseñar el quadcopter en
cualquier forma que quisiera. El peso del marco que diseñé fue de
alrededor de 10 a 15 g, sin embargo, variará ligeramente según la
configuración de la impresora y el plástico utilizado para
imprimirlo. Para el diseño utilicé una herramienta de diseño web
gratuita TinkerCAD, que es súper fácil de usar y recomiendo
usarla para principiantes o para proyectos más pequeños. Para
diseños más profesionales, también puede usar AutoCAD
(Pagado) o Blender (Gratis), este último es de código abierto y de
uso gratuito es una gran ventaja en mi perspectiva, sin embargo,
la curva de aprendizaje es mucho más gradual en comparación
con TinkerCAD.
Agregué los archivos de diseño aquí para que pudiera imprimirlo
usted mismo de inmediato. Sin embargo, si desea ver el diseño
desde todos los ángulos, visite Thingiverse . Asimismo, puedes
visitar TinkerCAD para modificar mi diseño anterior como más te
guste.
Para un solo quadcopter, solo necesita
imprimir Quadcopter_bottom_3.stl . Otras partes son opcionales
ya que no agregan ningún valor y hay más para el
aspecto. También tenga en cuenta que los tornillos se imprimieron
muy mal y, por lo tanto, no pude colocarlos a través de los
orificios designados. Rediseñé la parte inferior para que pudiera
pegarla en la parte superior y luego simplemente pudiera usar
algunas bridas de plástico, cables o incluso cables eléctricos si
tenía la intención de usarlos; tenga en cuenta que cada parte
agrega un peso innecesario.
Archivos adjuntos
quadcopter_bottom_3.stl
Descargar Ver en 3D
Quadcopter_top_2.stl
Descargar Ver en 3D
Quadcopter_screw_2.stl
Descargar Ver en 3D
Agregar sugerenciaPreguntaComentarioDescargar
Paso 2: componentes electrónicos
Mientras investigaba algunas cosas, noté algunos proyectos muy
similares o muy interesantes, como este basado en el
proyecto MultiWii , Crazyflie 1.0 y Cracyflie 2.X u otro proyecto de
hobby . Estos se proporcionan aquí como referencia si desea
encontrar otros componentes que puedan usarse para sus
proyectos o si se queda atascado en algún lugar. Al decidir cada
parte de mi quadcopter incluiré su peso, si es mayor de 1g. De lo
contrario, simplemente lo omitiré, ya que es muy insignificante.
Microcontrolador y conectividad
Cuando comencé este proyecto, inicialmente usé un clon
de Arduino Nano , que no incluye ningún módulo de
comunicación, por lo que quería usar el módulo esclavo HC-
06 Bluetooth 2.0. Sin embargo, en estos días, las mejores
alternativas incluyen tales como:
Bluno Nano , que tiene. construido en chip CC2540 BLE. El
costo es de alrededor de £ 27.
BLE-Nano , que es un clon chino de Bluno
Nano . ¡En Aliexpress está disponible por ~ £ 4 incluida la
entrega!
RF-Nano , que está disponible por ~ £ 4
en Aliexpress, incluida la entrega.
Nano 33 BLE , que funciona mucho más rápido que el
procesador anterior nRF52840. El costo es de alrededor de
£ 17.
Nano 33 BLE Sense , que es muy similar al Arduino Nano
33 BLE pero además incluye algunos sensores más como el
acelerómetro y el giroscopio, por lo que no sería necesario
agregarlos externamente. El costo es de alrededor de £ 27.
Pensé que Beetle BLE era otra opción interesante, sin embargo,
solo tienen salida 2xPWM, por lo que controlar 4 motores no es
posible sin circuitos adicionales, por lo que no vale la pena en
este proyecto. Seguí con BLE-Nanopor su bajo precio y su
capacidad de conexión a un teléfono inteligente con BLE. Además
de eso, estos chips ya no tienen el chip CH340 que generalmente
estaba dentro de las placas de clonación y se usaba como
convertidor de USB a serie y como regulador de voltaje LDO de
5V a 3.3V, que podía suministrar hasta 25mA de corriente sin
caer. el voltaje. Esto significa que no es necesario instalar los
controladores CH340 y el nuevo LDO SP6205 usado ahora puede
suministrar hasta 500 mA. Finalmente, también usan micro-USB
en lugar del antiguo Mini-USB (¡ya era hora!) El peso de cada chip
apenas varía. También tenga en cuenta que RF-Nano utiliza los
pines 9, 10, 11, 12 y 13 para hablar con el módulo de RF, por lo
que no es posible utilizar estos pines para PWM; tendrá que
encontrar una solución alternativa, como usar un chip PWM
externo o utilizando PWM basado en software.
Si no te importa el dinero, te recomendaría ir con el Nano 33 BLE
o el Nano 33 BLE Sense (tendrás que modificar un poco mi
código ...), pero quería que esto fuera lo más barato
posible. Además, si alguna vez lo quise, simplemente puedo
reemplazar el Nano por uno diferente sin necesidad de remodelar
el PCB: ¡esa es la belleza de usar Nanos para Quadcopters!
Creo que si no elijo Nanos, otras excelentes opciones para
microcontroladores (y creo que en el futuro rediseñaré los
esquemas y los PCB para trabajar con estos) incluirían:
Particle Xenon : basado en nRF52840 con BLE incorporado,
esta es una excelente placa de desarrollo que cuesta
alrededor de £ 11. Lamentablemente, se está
descontinuando y creo que debería comprar un par de ellas,
ya que son geniales.
Adafruit Feather nRF52840 Express : esto y Particle Xenon
son bastante intercambiables. Aunque el número de pin de
conexión varía, se comportarán prácticamente de la misma
manera. Sin embargo, el precio se acerca más a £ 22.
ESP32: este es otro gran chip y tiene muchos módulos, los
más populares son las variantes de Lolin32. Ha incorporado
BLE, Bluetooth y WiFi, lo que lo convierte en una excelente
opción.
ESP8266: este chip no es compatible con BLuetooth de
ninguna manera, sin embargo, es compatible con
WiFi. Probablemente se pueda describir como un hermano
menor de ESP32 ...
Lo bueno de los módulos anteriores es que son un poco más
anchos y, debido a esto, nuestra IMU se puede colocar fácilmente
debajo, ahorrando así mucho espacio. No solo eso, sino que ya
incluyen un conector de batería (aunque necesitaría averiguar la
clasificación de corriente del conector), cargador de batería,
detector de nivel de voltaje y muchos más. Además de eso, se
pueden programar alternativamente usando Microcpython (ESP),
Circuitpython (nRF52840) y otros, por lo que creo que podrían ser
una gran opción para el futuro. No solo eso, sino que el BLE
integrado en la mayoría de estos admite algo llamado modo HID,
que permitiría conectarlos directamente a casi todos los
controladores de juegos para teléfonos o PS4, eliminando así la
necesidad del teléfono por completo. Creo que son excelentes
opciones de papas fritas.
Peso total ~ 5g
Motores
Conseguí dos juegos de motores, uno de Micro Motor
Warehouse (más tarde llamado motores MMW ) y otro era un
reemplazo para Hubsan X4 (más tarde llamado motores Hubsan )
de Ebay. Ambos tenían un tamaño de 8.5 mm x 20 mm, también
conocido como configuración 8520. El conjunto MMW no era
barato (~ £ 25), sin embargo, se supone que los motores son
mucho más rápidos y tienen más empuje que los de Hubsan. El
peso de mi quadcopter es un poco más grande, por lo que es
posible que necesite motores rápidos para levantar el peso, sin
embargo, probaré ambos motores para ver si Hubsan es
suficiente, ya que su precio es de solo ~ £ 4 por juego. Si se
requieren motores más rápidos, existe una opción desde el mismo
lugar que MMW: estosSin embargo, tenga en cuenta que el
empuje es el mismo, por lo que no verá mucha diferencia. Otra
forma es conseguirlo en la tienda TinyWhoop , sin embargo, los
motores son más pequeños. Al comprar conjuntos de motores, las
cosas más importantes (de la mayoría a las menos importantes)
que debe tener en cuenta son:
Tipo: hay motores de CC con escobillas y motores de CA sin
escobillas. Los nano cuadricópteros generalmente se basan
en motores de CC con escobillas, ya que son más pequeños
y más fáciles de controlar sin la necesidad de controladores
de CA adicionales. Sin embargo, tienen mucho menos
empuje y no se pueden usar para cuadricópteros más
grandes.
Diámetro de la lata: el diseño 3D se realizó para motores
con un diámetro de 8,5 mm. El diseño tendría que
modificarse para un diámetro diferente.
Max Static Thrust o simplemente Thrust: define cuánto peso
pueden mantener los motores en el aire o, básicamente, qué
tan pesado puede ser su quadcopter. El tipo de hélice debe
definirse y, a menudo, se proporciona la curva de empuje
frente a la corriente (a menudo llamada curva
de rendimiento ), por ejemplo, para Hubsan puede encontrar
una en línea . En comparación, los motores MMW tienen 40
g, mientras que los Hubson tienen 34 g de empuje por
motor.
Peso: el peso de un motor, que se sumará al peso total del
quadcopter. Tanto los motores MMW como los Hubson
pesan alrededor de 5 g por motor.
Corriente de carga: define qué corriente está consumiendo
un motor cuando se aplica un voltaje específico utilizando
hélices específicas. Tenga en cuenta que sin las hélices
conectadas, esta corriente bajaría a valores realmente
pequeños, por lo tanto, cuando pruebe el voltaje de caída
(más de eso más adelante), coloque siempre las
hélices. Para comparar, los motores MMW consumen 2.75A
mientras que Hubsan 1.85A de corriente por motor.
Tamaño de hélice recomendado: hace años no me
importaba esto, pero luego noté que el quadcopter no se
levanta de todos modos y me di cuenta de que las hélices
que usé eran simplemente demasiado pequeñas. Ambos
motores deben apuntar a hélices de 55 mm.
Calificación de por vida: esto define cuánto tiempo deben
funcionar los motores sin fallar. MMW especifica que esto es
5-6h, aunque no estoy seguro acerca de los de Hubsan. Por
lo tanto, siempre es una buena idea comprar dos juegos de
motores.
Velocidad: la velocidad rápida le dará vuelos más rápidos,
sin embargo, con mayores corrientes, por lo que necesita
mejores baterías. Además, es probable que sean más
difíciles de controlar debido a su velocidad ... Por lo tanto,
este no me importaría mientras los motores estén diseñados
para cuadricópteros.
El tipo de enchufe: esto es simplemente para saber qué
conectores de tipo hembra comprar para que coincidan con
estos. Los motores MMW usan conectores JST-PH 2.0 de 2
pines y le recomendaría que se adhiera a estos. Más sobre
ellos más tarde.
Peso total para todos los motores ~ 20g
Unidad de medida inercial (IMU)
Básicamente, IMU se utiliza para calcular el ángulo entre los
cuadricópteros de cada eje y el suelo. Normalmente, la IMU
utilizada dentro de los cuadricópteros debe tener al menos dos
elementos: un acelerómetro y un giroscopio. Sin entrar demasiado
en los detalles sobre cómo se fabrican las IMU, vale la pena
señalar que:
El acelerómetro (más tarde llamado aceleración) mide la
aceleración (¡obvio!). Tiene sensor de 3 ejes y por lo tanto
puede medir el componente de aceleración en 3 ejes
perpendiculares. La gravedad de la Tierra es en realidad un
componente de aceleración que apunta al centro de la Tierra
y, por lo tanto, también se puede medir. Aplicando algunas
matemáticas básicas, podemos calcular hacia dónde, con
respecto a la rotación actual de los cuadricópteros, apunta el
vector de gravedad. Sin embargo, los aceleradores no solo
recogen la gravedad, sino también cualquier otra
aceleración, como un quadcopter que acelera hacia arriba,
hacia abajo y hacia los lados. No solo eso, sino que las
vibraciones causadas por los motores también son
esencialmente aceleraciones. Este tipo de ruido de motor
introducido a menudo se reduce amortiguando el sensor, por
ejemplo, añadiendo poliestireno entre el acelerador y el
cuadricóptero. En general, no se puede confiar lo suficiente
en este sensor por sí solo.
El giroscopio (más tarde llamado giroscopio) mide la
velocidad de rotación (¿esperar, qué?). Tiene sensor de 3
ejes y por lo tanto puede medir el cambio o la tasa de
rotación en 3 ejes diferentes. Los giroscopios mecánicos
miden el ángulo real, sin embargo, la solución basada en
chips se basa en otras técnicas, lo que permite minimizar el
tamaño de los sensores y también agregar el tercer eje (a lo
largo de la superficie de la tierra) que de otra manera no se
podría medir. El inconveniente es que para evaluar el ángulo
se debe integrar el valor del sensor a lo largo del
tiempo. Esto da un valor de salida muy suave; sin embargo,
si dicho sensor se usa solo, el valor del ángulo variará con el
tiempo. Esto sucede de dos formas:
Desviación del sensor o simplemente compensación:
los giroscopios no se hacen perfectos, por lo que cada
giroscopio que sale del proceso de fabricación
agregará alguna compensación a su valor de medición
real. Este desplazamiento se puede eliminar calibrando
los giroscopios, lo que se hace colocándolos inmóviles
y luego tomando una muestra de, digamos, 100
mediciones y promediéndolas. Posteriormente, este
valor de compensación se puede restar de la medición
real, mejorando así el resultado.
Dilema de mundo continuo vs discreto: vivimos en un
mundo continuo, mientras que los microcontroladores
no. Cuando el sensor realiza una medición, los
muestrea a una frecuencia de muestreo específica, por
ejemplo, 80 Hz. Si algún cambio ocurre muy
rápidamente entre las dos mediciones de muestra, la
medición no detectará ese cambio. Este problema se
reduce aumentando la frecuencia de muestreo; sin
embargo, durante períodos más prolongados, la
desviación seguirá siendo evidente.
Esta es la razón por la que las IMU vienen equipadas no con uno
sino con dos sensores: se están realizando algunos algoritmos
inteligentes para fusionar los valores del sensor para adquirir
valores de ángulo suaves y confiables incluso durante períodos
de tiempo muy largos.
Otro factor importante es la ubicación del sensor IMU dentro de la
superficie del cuadricóptero. Esta no es una simple matemática,
pero su análisis se puede encontrar aquí . Sin embargo, en
resumen, el sensor del acelerómetro debe colocarse lo más cerca
posible del centro de masa, ya que de lo contrario se debe a la
aceleración centrí[Link] rotación del quadcopter se medirá como
aceleración aunque el quadcopter en realidad no se moverá en
absoluto. Debería utilizarse esto o cálculos matemáticos
adicionales para eliminar este componente del resultado
final. Intentaré mantener el acelerómetro lo más cerca posible de
la masa del centro, sin embargo, creo que, en nuestro caso, esto
no agregará muchas imprecisiones adicionales, ya que el
cuadricóptero, por naturaleza, intentará mantener su ángulo de
rotación alineado con la Tierra. superficie mientras no esté en
movimiento; de lo contrario, se caería. Bueno, ¡a menos que estés
realizando algunos trucos, supongo! De lo contrario, siempre
puede colocarlo en la segunda capa de la PCB, también conocida
como The Upside Down.
Para el proyecto utilicé una IMU MPU6050 muy popular y barata ,
que incluye un giroscopio de 3 ejes y un acelerómetro de 3
ejes. A uno le podría interesar. en el uso de MPU9250 , que
adicionalmente incluye un magnetómetro de 3 ejes (mide el
campo magnético), sin embargo, en interiores estos no funcionan
muy bien debido a la interferencia magnética existente del
cableado eléctrico y la construcción, además de que los motores
en funcionamiento inducirán un campo magnético adicional, por lo
que me pregunto si funcionó. De todos modos, dentro del circuito
y PCB agregué la placa MPU9250, que es retrocompatible con la
MPU6050, por lo que cualquiera de estas IMU podría usarse.
Peso total ~ 2g
Pilas
Elegir las baterías adecuadas es muy importante ya que las
baterías incorrectas no permitirán que los motores consuman
suficiente corriente para encender el quadcopter y además habrá
grandes caídas de voltaje, que seguirán interfiriendo con los
componentes electrónicos. Hay algunos puntos importantes a
tener en cuenta al comprarlos:
Tipo: hay muchos tipos de baterías, como li-po, li-on e
incluso estas vienen en tonos. Recientemente, las baterías
basadas en grafeno estuvieron disponibles, que pueden
soportar corrientes más altas y tener una mayor densidad de
capacidad. ¡Por supuesto, la desventaja es el precio!
Capacidad (medida en mAh o Wh): determinará cuánta
energía se almacena dentro de la batería. Cuanto mayor sea
la capacidad, más tiempo funcionará el quadcopter con una
sola carga. Esto será proporcional al tamaño y peso de la
batería y también determinará cuánta corriente se puede
extraer desde y hacia la batería.
Descarga máxima permitida (ráfaga) y tasa de descarga
promedio (constante) (C): la primera determina las
corrientes máximas, por ejemplo, cuando el quadcopter
comienza a acelerar, mientras que la última determina la
corriente de funcionamiento normal, por ejemplo, el
quadcopter se mantiene constante en el aire. A menudo
existe una regla de oro que dice que la multiplicación de la
capacidad y la tasa de descarga darán la corriente que
pueden suministrar las baterías. Para estar seguros,
también necesitamos agregar un 20% de margen de
seguridad; no queremos que las baterías exploten,
¿verdad? Así, por ejemplo, si tuviera una batería con 200
mAh y 20 C de descarga media / constante, entonces
200mAh * 25C * 80% = 4A. Por lo tanto, en promedio, una
batería de este tipo puede suministrar 4A sin problemas. Sin
embargo, esto es solo una regla general, cuando se trata de
corrientes muy altas, queremos que la tasa de descarga sea
mucho mayor, independientemente de la capacidad de la
batería. Por ejemplo,Turnigy nano-tech 650mAh 1S 15c (por
lo tanto, según nuestros cálculos 7.8A de corriente) sin
absolutamente ninguna suerte. Solo lograron alimentar
completamente un solo motor, lo que significaba que la tasa
de descarga era simplemente demasiado pequeña.
Peso (g): las baterías de mayor capacidad pesan más, por lo
que es necesario encontrar algunas que proporcionen
suficiente tiempo de vuelo pero que sigan proporcionando
un buen rendimiento de vuelo.
Calculemos qué baterías elegir y cuánto durarán las baterías. En
nuestro caso, los motores consumen cientos de veces menos
corriente que la electrónica, por lo que al calcular la tasa de
descarga requerida solo debemos preocuparnos por las corrientes
del motor. Corriente de carga máxima total = 2.75A * 4 =
11A. Una buena capacidad de batería debería oscilar entre 150-
350mAh y elegí una batería en algún lugar en el medio - 260mAh
(¿cómo? Intuición ..). Para simplificar los cálculos usaré
0.26Ah. Esto significa que necesito 11A / 0.26Ah = 42.3C de tasa
de descarga máxima. De esto se deduce que con una sola carga
deberían durar al menos 0,26 Ah * 60 min / 11 A = 1,4 min. No
parece mucho, ¿verdad? Probé cuando conecté el quadcopter
con los hilos al suelo y parece que los números son razonables,
realmente no pude sostener el quadcopter en el aire ni siquiera 2
minutos, sin embargo, esto supone que el quadcopter está sujeto
al suelo y, por lo tanto, no solo tiene que vencer su propio peso,
sino que también debe resistir los hilos. Los números del mundo
real deben leer al menos 3 minutos de vuelo. Sugiero comprar
baterías comoTurnigy nano-tech 300mah 1S 45 ~ 90C (9g) o
incluso Turnigy Graphene 600mAh 1S 65C (15g) que parecen ser
muy prometedores ya que su tasa de descarga es realmente alta,
pero no los he probado. Si tiene dinero extra, compre tanto
grafeno como baterías normales, las normales ya que el grafeno
son más livianas en comparación con las baterías alternativas con
la misma capacidad y proporcionan tasas de descarga mucho
más altas (al menos en el papel). No los probé yo mismo, pero
sería realmente interesante ver cómo se comparan en la realidad,
ya que creo que la batería que obtuve con una tasa de descarga
de 35C también es un poco pequeña. Al elegir la batería y las
hélices también eche un vistazo a este video, donde se están
realizando varias pruebas de baterías y hélices. Volveré a este
video cuando elija las hélices.
Peso total ~ 12g
Conectores
Los conectores más utilizados para quadcopter se
denominan JST . Son confusos porque hay muchos tipos y todos
los mezclan y, a veces, anuncian uno como otro, pero los
conectores más populares en general parecen ser:
JST PH 2.0 de 2 pines, cuyo conector hembra de PCB es de
orificio pasante, y JST PH 2.0 de 2 pines SMT RA (ángulo
recto) , que están montados en superficie (SMD). Los
primeros también vienen en forma de rotación de 90
grados. Estos son los más populares, con mucho, en mi
opinión, y los encontré siendo utilizados tanto para baterías
como para motores. Los motores MMW vienen equipados
con conectores macho de 2 pines JST-PH 2.0 . No solo eso,
sino que si observa Wemos Lolin32, todos los tableros de
partículas y todos los tableros Adafruit compatibles con
batería vienen equipados con la variante SMD de este. Lo
usaremos allí para motores y también agregaremos uno
para batería. Ambos están disponibles en Farnell , ebayo
Aliexpress. Asegúrese de comprar los conectores correctos
como se muestra en las imágenes, ya que todos se llaman
de manera muy similar y algunos proveedores incluso los
nombran de la misma manera ...
JST Micro-T MX 2.0 de 2 pines, cuyo conector hembra de
PCB viene solo en paquete SMD (no he visto otro). Este es
el segundo conector de batería más común, sin embargo, no
lo he visto antes utilizado para motores. Lo bueno de ellos
es que aunque la máscara de soldadura es ligeramente
diferente, aún se pueden soldar en la misma máscara que
JST PH 2-Pin SMT RA.
Conectores JST como estos . Son molestos ya que
normalmente no se proporciona ningún nombre, por lo que
siempre hay que inspeccionar las imágenes. Lo bueno es
que su espacio es de 0,1 pulgadas (2,54 cm), que es el
mismo que el de las placas de prueba, por lo que son
perfectos para las pruebas, ya que se pueden conectar
directamente a la línea eléctrica. Además de eso, se pueden
agregar dos orificios espaciados de 0.1 pulgadas a la PCB
para permitir conectarlos sin comprar conectores
especiales. Se deslizan más fácilmente que otros
conectores, por lo que son mejores para las pruebas, ya que
se pueden extraer en caso de que algo salga mal. La
desventaja es que, por accidente, podría enchufar el
conector incorrectamente al revés ... Por lo tanto, no beba
antes de enchufarlo, ya que podría freír las virutas que no
estaban protegidas por los circuitos especiales.
BT 2.0 de 2 pines: se utilizan en cuadricópteros grandes
debido a su menor resistencia y, por lo tanto, a su capacidad
para transportar corrientes más grandes. No los
necesitamos.
Algunas baterías pueden incluso venir con conectores
dobles. Para el diseño de mi cuadricóptero, no quería volverme
loco y usar un conector diferente para todo. Para los motores
utilicé un orificio pasante de 2 pines JST PH2.0. La batería, por
otro lado, podría venir con varios conectores y eso es más difícil
de mantener. Solía cortar los conectores existentes y soldar los
preferidos, pero eso también es un poco molesto. Por lo tanto,
agregaré dos orificios de 0.1 pulgadas para soportar el conector
JST, que será mejor para las pruebas, y luego JST PH 2.0 de 2
pines, lo mismo que para los motores, ya que ya tengo otro de
esos conectores disponibles. Por supuesto, sería bueno poder
admitir todos los conectores, por lo que agregaré las partes del
conector en el diagrama de esquema opcional si decide usar
baterías diferentes.
Tenga en cuenta que los conectores tendrán que soportar
grandes corrientes de hasta 10 A, por lo que siempre es bueno
comprobar si son capaces de hacerlo. Otras consideraciones al
diseñar la PCB serán hacer pistas más gruesas para motores sin
cables de puente / vías para no afectar el rendimiento.
Hélices
Las hélices se diferencian por su:
Longitud: que se mide como el radio multiplicado por 2.
Número de hojas: generalmente es 2, pero existen otras con
3 y más.
Forma de la hélice -
Ángulo de giro: cuanto más pronunciado es el ángulo, más
empuje puede proporcionar la hélice.
Las hélices recomendadas para MMW fueron las de 55 mm, como
las del cuadricóptero Hubsan. Luché mucho con qué hélices
correctas conseguir, ya que el quadcopter no quería levantarse,
así que también pedí los accesorios Walkera LadyBird , que
también son de 55 mm. Verifiqué esto en el video mencionado
anteriormente para descubrir que en realidad dan más empuje
que el Hubsan y, dependiendo de la batería, puede ser de
alrededor de 3 g por hélice, por lo que en total dan 12 g de
empuje adicional. Sin embargo, hay hélices incluso mejores,
como las KingKong, sin embargo, no quería usar hélices más
grandes porque proporcionan mucho más empuje, por lo que
pueden levantar el quadcopter más fácilmente, sin embargo,
consumirán más corriente, por lo que podrían sobrecalentar los
motores. , así que no estaba seguro ...
Peso total 1g
N-MOSFET (JLCPCB ensamblado)
Necesitamos transistores 4xMOSFET también conocidos como
interruptores. Se utilizarán junto con PWM para suministrar la
corriente a los motores en picos. Elegirlos puede ser complicado y
hay un par de puntos importantes a la hora de elegir uno para
nuestra aplicación:
Corriente de drenaje máxima que puede suministrar (Id
max), que en este caso debería ser de alrededor de 3A para
soportar el motor que puede consumir alrededor de 2.75A.
El voltaje de umbral Vgs, que tiene que ser bajo, tal vez
alrededor de 1V, ya que el voltaje de las baterías li-po podría
caer a 3.4V en algún momento. Si se elige un umbral
demasiado grande, Arduino no podrá encender los MOSFET
lo suficiente como para suministrar la cantidad de corriente
requerida. Siempre es mejor verificar también la
dependencia de la corriente de drenaje (Id) en el voltaje
umbral (umbral Vgs) ya que cada transistor tendrá una
respuesta diferente.
Drene para hundir la resistencia cuando el MOSFET esté
completamente encendido (Rds (encendido)). Esto se
proporciona bajo cierta puerta para hundir la polarización
Vgs. Normalmente se espera que sea de alrededor de 0,032
ohmios, sin embargo, cuanto más pequeño, mejor. Si elige
un MOSFET con Rds (encendido) igual a 0.3Ohm
aproximadamente, debido a que los motores funcionan a 3A,
la caída de voltaje sobre el MOSFET será de 0.9V, por lo
que los motores no obtendrán suficiente caída de voltaje
sobre ellos.
Tenga en cuenta que los MOSFET siempre incluyen un diodo de
rueda libre (también llamado flyback) en el paquete, se necesita
allí para funcionar y si algún esquema no los incluirá,
probablemente todavía existen, pero simplemente no se
muestran. Además, estos diodos protegen al MOSFET de las
sobrecorrientes provenientes de la bobina del motor, lo que
protegerá al MOSFET de la fritura, por lo tanto, doble plus.
En la placa inicial que hice, pedí SQ2310ES de Farnell ya que
tiene un voltaje de umbral Vgs de 0.6V y podría suministrar
6A. Esto puede ser un poco exagerado, pero bueno, si quisiera,
¡podría alimentar cualquier motor cepillado posible con ellos sin
ninguna preocupación! También hice una tabla con otros buenos
MOSFET y sus importantes características. Algunos de estos
fueron elegidos de cuadricópteros similares y otros provienen de
la misma familia de chips o los encontré en Aliexpress o
JLCPCB. Todos estos están empaquetados SOT-23 de 3 pines,
por lo que son compatibles con la PCB proporcionada
posteriormente:
Nombre // ID máx. (A) // Vgs thr (min-max) (V) // Rds
(activado) (Vgs = 3V, T = 25C) (mOhm)
SI2302DS // 2.2 - 2.8 // 0.65 - ??? // 80
SI2300DS // 2,5 - 3,0 // 0,6 - 1,5 // 60
PMV31XN // 3,75 - 5,9 // ??? - 1.8 // 35
CJ2302 // 2.1 // 0.65-1.2 // 40
CJ2304 // 3.3 // 1-2.2 // 400 ???
AO3400A // 5,9 // 0,65 - 1,45 // 22
IRLML2502 // 3.4 - 4.2 // 0.6 - 1.2 // 35
SI2314 // 5 // 0,6 - 1,1 // 50
SI2312CDS // 4 - 5 // 0,45 - 1 // 28
SQ2310ES // 3,5 - 6 // 0,4 - 1 // 32
IRLML0030TRPbF // 4.3-5.3 // 1.3-2.3 // 150
Tenga en cuenta que todos ellos tenían un umbral Vgs muy
pequeño y pueden suministrar suficiente corriente para alimentar
los motores Hubsan. Sin embargo, para hacer funcionar los
motores más rápidos, solo recomendaría los que pueden
proporcionar corrientes de más de 3 A y tienen el Rds más
pequeño (encendido), ya que entonces habrá menos caída de
voltaje sobre el MOSFET en lugar del motor. La biblioteca básica
de JLCPCB tenía AO3400A disponible, así que fui con ella. En el
momento de escribir este artículo, los MOSFET más populares en
Aliexpress de los sugeridos eran SI2300DS, SI2314, IRLML2502
y AO3400A.
Si se utilizan componentes de orificio pasante, puede utilizar
estos:
Nombre // ID máx. (A) // Vgs thr (min-max) (V) // Rds
(activado) (Vgs = 3V, T = 25C) (mOhm)
NDP6020 // 35 // 0,4 - 1 // 22
IRF3706 // 54 - 77 // 0,6 - 2,0 // 10
IRF3708 // 52 - 62 // 0,6 - 2,0 // 12
IRLB3034 // 195 // 1 - 2.5 // ???
IRLZ44 // 36 - 50 // 1 - 2 // ???
IRL540N // 26 - 36 // 1 - 2 // ???
Todos estos vienen en un paquete TO-220, por lo que será fácil
soldarlos y resistirán grandes cantidades de
corrientes. Recomendaría los que tienen los Rds más bajos
(activados), ya que entonces disiparán menos energía y los
motores podrán funcionar a velocidades más altas.
P-MOSFET (JLCPCB ensamblado)
Debido a que las baterías usadas pueden generar enormes
cantidades de corrientes, no queremos arriesgarnos a conectar el
circuito al revés, lo que sucede por accidente, por lo que es
importante diseñar algún tipo de sistema de protección de batería
inversa. En realidad, esto se puede hacer muy fácilmente usando
un solo transistor P-MOSFET como se describe aquí . Sin
embargo, hay dos formas de abordar esto:
Instale un P-MOSFET que pueda suministrar corrientes de
más de 12 A. NDP6020P encajaría para este propósito con
su muy buena Vgs, pero si nota que es un componente de
orificio pasante del paquete TO-220.
Proteja únicamente los costosos componentes electrónicos
como Nano, IMU y píxeles. En este caso, podemos usar
prácticamente cualquier P-MOSFET disponible, ya que solo
necesitaría suministrar hasta 300 mA de corriente al
máximo.
Por ahora, pensé que al menos podríamos proteger la electrónica
principal, lo que hará la vida un poco más fácil. Para lograrlo
podríamos separar la batería en dos suministros, uno
desprotegido, que servirá para hacer funcionar los motores, y el
otro protegido, que servirá para alimentar el resto de la
electrónica. Los N-MOSFET y los diodos Zener usados
probablemente morirán (ruta directa para que la electricidad fluya
a través del diodo y el diodo Zener) si conecta la batería al revés,
pero los demás componentes electrónicos y motores seguirán
funcionando. Probablemente también recomendaría instalar un
conector de batería, que permite la conexión solo de una
manera ...
Si aceptamos este diseño, algunas de las buenas opciones de P-
MOSFET
incluirían AO3401A , SI2301CDS , SI2301DS , CJ2301 o IRLML6
401 y muchas otras, ya que necesita proporcionar
hasta 300 mA de corriente como máximo con componentes
opcionales agregados. El AO3401A y SI2301DS estaban
disponibles en la biblioteca básica de JLCPCB, por lo que elegí al
azar entre los dos. Lo que también puede hacer es verificar la lista
de N-MOSFET que sugerí y encontrar sus alternativas de P-
MOSFET (la mayoría de los N-Type tendrán un número par, por
ejemplo, 2300 y la alternativa de P-Type tendrá un número impar,
por lo tanto, 2301) ya que todos ellos lo harán tienen un umbral
de Vgs bajo.
La alternativa de orificio pasante podría ser NDP6020P
Resistencias (JLCPCB ensambladas)
Los resistores regulan la cantidad de corriente que puede fluir
entre dos puntos del circuito. La corriente que fluye a través de
ellos también produce una caída de voltaje proporcional a la
corriente que fluye a través de ellos. Hay una serie de resistencias
que necesitaremos usar para este proyecto por varias razones:
Resistencias desplegables de 4x10kOhm que van desde la
puerta de cada MOSFET a tierra. Para entender por qué los
necesitamos, necesita saber un poco de teoría. Un MOSFET
tiene 3 pines llamados Drain, Source y Gate. Se dice que el
MOSFET de tipo N se enciende cuando se aplica un voltaje
lo suficientemente alto (al menos más alto que el voltaje
umbral Vgs) a la puerta. Cuando se enciende el MOSFET, la
corriente fluye desde el drenaje a la fuente y, si bien hay
cierta resistencia en serie entre los dos, será baja mientras
el voltaje de la puerta aplicado sea mucho mayor que el
umbral de Vgs. Ahora, la razón por la que el MOSFET se
enciende cuando se aplica el voltaje de la puerta es de
hecho porque la puerta no está conectada a los otros dos
canales de ninguna manera: ¡en realidad es un
condensador! El otro lado de este capacitor es
esencialmente un área entre el Drenaje y la Fuente (sí, eso
' s por qué el MOSFET se dibuja así con la puerta
desconectada y un área cuadrada grande entre el drenaje y
la fuente). Cuando se aplica voltaje de puerta, el otro lado de
la placa del condensador atrae electrones negativos y
cuando se atrae una cantidad lo suficientemente grande, se
crea un canal entre el drenaje y la fuente que permite que
fluya la corriente. Volviendo a las resistencias desplegables,
sin ellas tendríamos dos problemas 1) al apagar los
transistores debido a que la puerta es un condensador,
tiende a almacenar carga, por lo tanto, si encendemos el
MOSFET tipo N conectando un voltaje de puerta alto y luego
desconecte la alimentación: el MOSFET permanecerá
encendido durante mucho tiempo. Por supuesto, cuando
configuramos los pines de Arduino en BAJO, creará una ruta
para que fluya la corriente, sin embargo, para lograr el mejor
resultado posible es agregar una resistencia adicional de
10kOhm que va a tierra, lo que proporciona una ruta
adicional para descargar el condensador de la puerta y, en
consecuencia, apagar el transistor. 2) Antes de que Arduino
establezca cada pin de salida en BAJO, la puerta tendrá un
punto flotante, lo que significa que se desconoce el
voltaje. ¡También puede ser que los motores se enciendan
por un breve momento! Por lo tanto, proporcionar una
resistencia desplegable garantizará que cada MOSFET se
apague al principio. Para leer más sobre esto y ver algunos
gráficos interesantes, consulte Por lo tanto, proporcionar una
resistencia desplegable garantizará que cada MOSFET se
apague al principio. Para leer más sobre esto y ver algunos
gráficos interesantes, consulte Por lo tanto, proporcionar una
resistencia desplegable garantizará que cada MOSFET se
apague al principio. Para leer más sobre esto y ver algunos
gráficos interesantes, consulteeste articulo.
Resistencias de 4x100Ohm que se conectan desde la salida
del pin Arduino PWM a la puerta de cada MOSFET. Si no
incluyéramos estas resistencias, la corriente que ingresa a la
puerta del MOSFET cuando el estado del pin de salida es
ALTO sería muy grande y, por lo tanto, encendería el
MOSFET instantáneamente. Esto crearía una corriente de
irrupción muy grande debido a la naturaleza del inductor del
motor, lo que reduciría el voltaje de la batería de manera
significativa para incluso reiniciar el Arduino o la
electrónica. Necesitamos reducir esta corriente de irrupción
bajando la corriente que fluye hacia la puerta MOSFET, por
lo tanto, se agrega una resistencia muy pequeña de 100
ohmios que cargará el condensador de la puerta.
Una combinación de 33 kOhmios y 100 kOhmios formará un
par divisor de potencial utilizado para medir el voltaje de la
batería. A las baterías Li-Po no les gusta que caigan por
debajo de los 3,2 V ni les gusta que se carguen por encima
de los 4,2 V. Cada vez que superan el límite, existe el riesgo
de dañarlos o incluso provocar un incendio. Por lo tanto,
necesitamos saber cuándo apagar el cuadricóptero antes de
que el voltaje alcance niveles críticos. Sin embargo, para
que esto funcione, necesitaremos utilizar la referencia
interna de 1.1V del chip incorporado. Para que esto funcione
correctamente, debemos asegurarnos de no aplicar más de
1,1 V al pin analógico (ya que 1,1 V medirán 1023 o
simplemente pondrán 100%), que se está utilizando para
medir el voltaje de la batería. Elegí tales valores de
resistencia para que cuando se mida la batería
completamente cargada a 4.2V, dé 33k / (33k + 100k) * 4.2
= 1.04V. Esto es perfecto, porque la referencia interna en
realidad varía de un chip a otro y puede estar en el rango de
1 a 1,2 V. El valor elegido permitiría que el quadcopter
funcione con cualquier placa nano sin importar las
variaciones de referencia y, al mismo tiempo, proporcionaría
la resolución más alta disponible de cerca de 10
bits. También tenga en cuenta que estos valores de
resistencia deben ser altos para no desperdiciar la energía,
sin embargo, en nuestra aplicación esto no es una gran
preocupación sabiendo que los motores consumen miles de
veces más corriente.
Condensadores (JLCPCB ensamblados)
Los condensadores (más tarde llamados tapas) en los
cuadricópteros se utilizan para filtrar los picos de voltaje de alta
frecuencia no deseados en la fuente de alimentación, que de otro
modo harían infeliz a Arduino y otros chips. Los picos de voltaje
son causados principalmente por los motores, que además de
causar ruido debido a las escobillas también absorben mucha
corriente (¡12 A en total!). Por lo tanto, si no se tiene cuidado, el
voltaje fluctuaría significativamente, a veces en el orden de
cientos de milivoltios. Esto puede afectar la calidad del video (si
se usa la transmisión de video), la comunicación entre la base y el
quadcopter (ruido en la señal de transmisión), el MCU (los chips
pueden reiniciarse constantemente) y las lecturas de IMU (ruido
en el ADC dentro de la IMU por ejemplo).
Tenga en cuenta que los tapones vienen en diferentes tipos
según el material dieléctrico, siendo los más populares los de
cerámica, electrolíticos y de tantalio. Recomiendo
encarecidamente ver este y este video para ver qué cambio
significativo se puede lograr con la colocación correcta de las
tapas. También hay este artículo que recomiendo al revisar. A
partir de esta publicación, tendremos que solucionar el problema
del pico de voltaje de dos maneras:
1. Reducir el ruido en la fuente de la perturbación, por lo que
los motores
2. Elimine los picos de voltaje de la fuente de alimentación
cerca de los chips y otras partes sensibles, por ejemplo, el
pin de reinicio (con respecto a este último en Arduino, el pin
de reinicio parece tener un mecanismo de reinicio
automático realizado a través de otro condensador, por lo
tanto, para no meterse con eso, evitaré agregar esto
condensador por ahora)
Además de eso, debemos elegir tapas de ESR (Resistencia de
serie equivalente) bajas para el diseño, ya que los motores
funcionan con frecuencias PWM altas y los condensadores
actuarán como una resistencia de valor muy bajo para este tipo
de picos y los cortocircuitarán efectivamente a tierra. Sin
embargo, tenga en cuenta que todos los condensadores tienen
parásitos incorporados, como resistencia y conductancia, en serie
con la capacitancia. Por lo tanto, en altas frecuencias, aunque la
resistencia de capacitancia (para ser más precisos, la
impedancia) es baja, debido a los otros componentes parásitos, la
resistencia nunca puede bajar de un cierto punto y, a veces,
incluso comienza a aumentar con la frecuencia creciente,
bastante loco.
Algunos artículos recomiendan usar tapas de cerámica siempre
que sea posible, ya que no tienen polaridad y tienen menos
parásitos, por lo que tendrán una mejor eficiencia y también
filtrarán mejor la ondulación. Sin embargo, por lo general vienen
en valores más bajos, por lo que a veces se puede usar una tapa
de tantalio en paralelo con una de cerámica. Los tapones
electrolíticos se utilizan como último recurso. También tenga en
cuenta que no puede optar ciegamente por un tipo de
condensadores todo el tiempo; la elección correcta dependerá de
la aplicación, por ejemplo, en la industria de la música, se
prefieren diferentes tipos de tapas, las que pueden tener menos
ruido y la ESR podría no ser tan grande. preocupación.
Las gorras deben colocarse físicamente lo más cerca posible del
área objetivo para que sean efectivas. En este proyecto será
necesario agregar límites a estas áreas:
1 tapa de cerámica de 100nF entre VCC de IMU y GND. Sin
embargo, tenga en cuenta que, en nuestro caso, el módulo
MPU6050 ya los tiene integrados, como se muestra en
la documentación . Sin embargo, un límite adicional no va a
doler mucho.
Tapas de cerámica de 1 x 22uF y 1 x 100nF en paralelo
entre 5V de Arduino y GND. De los esquemas BLE-
Nano podemos ver que los rieles de 5V y 3.3V solo tienen
tapas de 0.1uF (ubicadas en la salida de los dos reguladores
de voltaje diferentes) y no tienen tapas grandes. No
usaremos riel de 3.3V en absoluto, por lo tanto, esta línea
está bien, sin embargo, aún necesitaríamos un tapón entre
5V y GND para proporcionar un voltaje estable.
Tapa de tantalio de 100-300uF entre las clavijas de la
batería. La tapa más grande disponible de JLCPCB es una
de tantalio de 100uF, por lo que agregaré eso, sin embargo,
su precio es bastante alto ... Además de eso, agregué
orificios para otra tapa de orificio pasante si es necesario en
el futuro.
1 tapa de cerámica de 100nF entre la entrada analógica que
mide el voltaje de la batería y GND para brindar lecturas de
batería más estables.
4 tapas de cerámica de 22 uF entre cada pin positivo del
motor y GND (o controladores de motor para motores sin
escobillas).
Tapas de cerámica de 4 x 10nF entre los conectores del
motor para eliminar el ruido del cepillo, como se
explica aquí . Están usando tapas de 100nF, sin embargo,
las tapas más grandes impondrán una carga adicional y
podrían aumentar el ruido, por lo que 10nF es más
seguro. Sin embargo, tenga en cuenta que la tapa está
destinada a colocarse entre los pines del motor, sin
embargo, esto no es posible para los motores que tenemos,
por lo que colocarlo justo al lado de los conectores del motor
tendrá que ser suficiente. Desde este enlace , puede ver que
sin esta tapa, un motor puede causar una ondulación de la
fuente de alimentación de más de 3 V, ¡mientras que al
agregar una se reduce a 0.5V!
(por ahora no) 2 tapas de cerámica de 100nF entre cada pin
Arduino RST (reinicio) y GND en caso de que no se incluyan
en la MCU utilizada.
Tenga en cuenta que todas las tapas deben instalarse lo más
cerca posible de los lugares deseados. No pueden simplemente
colocarse en algún lugar en la esquina, ya que en muchos casos
el chip puede no ser estable o no funcionar en absoluto.
Peso total 1g
Diodos ( JLCPCB ensamblados )
Necesitaremos incorporar diodos Schottky de rueda libre (flyback)
entre las patas del motor para proporcionar la ruta de corriente
cuando se apagan los motores, esto también se
denomina configuración de diodo amortiguador . Vea este video si
no conoce la diferencia entre cada tipo de diodo, pero la principal
diferencia con los diodos normales es la capacidad de alta
frecuencia de conmutación (que necesitaremos si queremos
impulsar motores a alta frecuencia) y una menor disipación de
potencia debido a un voltaje más bajo barrera.
Cada uno de los motores tiene bobinas incorporadas, que
inducen un campo eléctrico que hace girar el motor. Sin embargo,
las bobinas almacenan energía, que se opone al flujo de
corriente. Cuando la corriente se apaga usando los transistores, la
corriente opuesta necesita un camino para fluir, de lo contrario se
producirán enormes picos de voltaje debido a estas altas
corrientes. Puedes leer más aquí . Normalmente, se coloca un
diodo Schottky simple y para aplicaciones de alta frecuencia para
proporcionar esta ruta y todas las implementaciones de
cuadricópteros que vi hacer específicamente eso. Sin embargo no
parece existir mejores implementaciones en forma de T que
amortiguador Zener , lo que reduciría las corrientes abajo, incluso
más rápido que una simple configuración de diodo de
protección . Puedes leer sobre esto aquí, pero por ahora es
necesario experimentar con esto primero para ver si da un mejor
rendimiento.
Elegir el diodo correcto es un poco complicado y hay muchas
discusiones como esta en línea . Es mejor anotar estas
características de la hoja de datos:
Corriente directa promedio: en teoría, la corriente opuesta
en la bobina del motor será del mismo tamaño que la
corriente que fluye en los motores (2.75A en nuestro caso)
cuando el motor está encendido y cuando el motor está
apagado, esa corriente intentará encuentre un nuevo camino
para fluir - a través del diodo. Por lo tanto, el diodo debería
poder soportar 2.75A, sin embargo, la corriente promedio
será menor ya que la corriente se degradará
rápidamente. Sin embargo, este número aumentará con el
aumento de la frecuencia de conducción, ya que la corriente
tendrá menos tiempo para degradarse, por lo que es mejor
cuando la corriente directa promedio del diodo es lo
suficientemente alta como para satisfacer todas las
necesidades del motor. Por lo general, siempre puede elegir
un diodo de este tipo, cuya corriente promedio será la
misma que la del motor, lo que evitará cualquier tipo de
riesgo solo para estar seguro.
Voltaje inverso pico máximo repetitivo: cuando fluye la
corriente opuesta, se creará un pico de voltaje ya que la
resistencia del motor es muy pequeña. Este pico será varias
veces mayor que el voltaje utilizado para impulsar el
motor. En nuestro caso, no es un gran problema, ya que la
mayoría de los diodos pueden manejar la clasificación
fácilmente.
Recomendaría usar diodos Schottky de la familia SS SS12-
SS16 (lado más riesgoso), SS22-SS210 (adecuado) o SS32-
SS3200 (lado seguro), SS52-SS5200 (un seguro
excesivo). Tenga en cuenta que estos siguen más o menos el
formato de denominación SS XY, donde el número X se refiere a
la corriente directa promedio máxima y el número Y multiplicado
por 10 es el voltaje de bloqueo de CC máximo. Aunque si hay
más de 2 números, esto ya no se aplica. De estos SS14, SS210,
SS34, SS54 estaban disponibles en JLCPCB, por lo tanto, solo
usé SS34 como estaba en el lado seguro sin cambios en el
tamaño o precio del empaque. Hay algunos otros disponibles, por
ejemplo.1N5819 (lado más riesgoso), 1N5820-1N5822 (lado
seguro) que están disponibles en paquetes SMD y con orificio
pasante.
Cargador
Es posible que ya tenga buenos cargadores, sin embargo, en
caso de que no los tenga, siempre puede obtener algo
como esto . Utiliza conectores tipo JST, por lo que tendrás que
conseguir los conectores mencionados
anteriormente. Alternativamente, puede obtener un módulo
basado en chip TP4056 y soldar los conectores usted
mismo. ¡Incluso vienen con un conector USB-C hoy en día! Esto
también puede ser útil en proyectos posteriores, ya que el chip
puede convertirse en parte de todo el PCB en ese caso. Tenga en
cuenta que otros chips populares son TP4054 y TP4057.
Tenía muchas ganas de diseñar un cargador a bordo usando
TP4057, para que la batería pudiera cambiarse a través del
Arduino USB, sin embargo, lamentablemente, el diseño Nano no
es muy amigable con eso. Como mencioné antes, aunque Particle
Xenon, Feather nRF52840 Express y ESP Los módulos de la
serie ya incluyen cargadores de batería, por lo que podrían ser
una mejor opción para esto. Los dos primeros incluyen además
un circuito de medición de nivel de batería que también ahorra un
poco de espacio.
Agregar sugerenciaPreguntaComentarioDescargar
Paso 3: componentes opcionales
Tenga en cuenta que no tiene que soldar los siguientes
componentes para que el quadcopter funcione correctamente. Sin
embargo, estos se pueden agregar si desea agregar alguna
funcionalidad adicional, como poder apagar el quadcopter usando
un interruptor deslizante o agregar algunos LED Neopixel. El
esquema del circuito y la PCB se diseñaron de tal manera que no
impediría el funcionamiento del quadcopter si estos componentes
no estuvieran instalados, por lo que siempre puede dejar los
componentes sin soldar.
Neopixels (soldadura opcional)
Pensé que sería genial volar este quadcopter durante la noche de
vez en cuando (o simplemente hacer que se vea más genial), por
lo que también agregué un par de Neopixels. Estos son pequeños
píxeles LED RGB (rojo / verde / azul) con controlador PWM
integrado (por lo que pueden ajustar el brillo) dentro de ellos. La
belleza es que solo necesitan uno o dos pines conectados a
Arduino, dependiendo del tipo de chip utilizado, para controlar
prácticamente cualquier tono y brillo de cualquier número de
píxeles conectados en serie. La otra ventaja es que después de
configurar la combinación deseada de colores, Arduino no
necesita interactuar con ellos por más tiempo, por lo que la
potencia de procesamiento se puede usar para algo, por ejemplo,
controlar el quadcopter. Pensé que una buena manera sería tener
4 Neopixels en total: dos en la parte inferior y dos en la parte
superior, uno en cada dirección.
Hay muchas variantes disponibles y una tabla bastante grande
con sus especificaciones se puede encontrar aquí y un video
sobre cuáles son las mejores está aquí . Para este proyecto,
recomendaría WS2812B (RGB) o SK6812(RGB + Blanco) y
tamaño de 5050 LED (5cm x 5cm). El tamaño 3535 (3,5 cm x 3,5
cm) también está disponible, pero es más difícil de soldar (por lo
tanto, es más fácil dañarlos mientras se suelda) y es más difícil de
encontrar al comprar. Sin embargo, tenga en cuenta que hay dos
tipos de este tamaño, uno con pines en el exterior (Mini-HS) y otro
con pines en la parte inferior (Mini). No recomiendo este último si
se suelda a mano. Los LED requieren un pin de Arduino para
controlarlos a todos. Según la hoja de datos, necesitaría una tapa
de desacoplamiento externa de 100nF para cada uno de los
Neopixels. Recuerda de los condensadoressección que se
utilizan para eliminar la ondulación de la fuente de
alimentación. En este caso, creo que están aquí debido a que los
píxeles utilizan una cantidad bastante significativa de corriente:
cada píxel puede consumir hasta 60 mA de corriente cuando los
LED rojo, verde y azul se encienden con el brillo máximo. Además
de eso, a partir de las pautas sugeridas también debemos colocar
una resistencia de valor de 300 a 500 Ohm entre Arduino y la
entrada del primer neopixel, debe colocarse cerca del
Neopixel. Finalmente, se coloca un gran tapón de
desacoplamiento al lado de la fuente de alimentación, pero ya
incluimos uno y lo comentamos antes.
En Aliexpress, estos neopíxeles se pueden comprar, por
ejemplo, aquí o aquí o en muchos otros lugares.
Control de software de alimentación (solo nRF52840)
Un problema con los píxeles mencionados anteriormente es una
corriente de reposo (apagada) bastante grande de 1 mA. Esto
está bien sin un interruptor de encendido, sin embargo, de lo
contrario, cuando la energía está apagada, necesitamos una
forma de apagarlos. Esto se puede hacer agregando otro P-
MOSFET, que por defecto estaría apagado pero podría
encenderse usando código a través de uno de los pines de
Arduino. Esto se logra fácilmente usando la configuración pull-up
donde la puerta está conectada a la fuente a través de, digamos,
una resistencia de 10k Ohm y también está conectada al Arduino
a través de, digamos, una resistencia de 100 Ohms (reduce las
corrientes de sobretensión). Podríamos usar otro P-MOSFET (uno
se usa como protección de voltaje inverso) o usar un chip con dos
P-MOSFET como APM4953. Seguiré usando dos fichas en su
lugar, ya que entonces hay más opciones para elegir. Además de
eso, básicamente crearé dos fuentes de energía separadas, una
que alimenta los motores y la placa de desarrollo nRF52840 y otra
programable que alimenta el resto de los sensores y los LED.
Sensor de altitud (soldadura opcional)
Cuando solo se usa IMU para controlar el quadcopter, aparecen
dos problemas complicados:
Poder flotar a una altitud constante. Por lo general, el control
del eje Z (vertical) se realiza aumentando o disminuyendo la
velocidad deseada de todos los motores, agregando así
efectivamente la compensación. Sin embargo, debido a que
las baterías se agotaron durante el vuelo, aunque la
velocidad deseada no cambie, el voltaje de la batería
disminuirá, lo que disminuirá la velocidad.
Despegue y aterrizaje automático sin interacción del
usuario. Esto es útil tanto para controlar el quadcopter como
de costumbre como para realizar un aterrizaje de
emergencia en caso de que las baterías se agoten. Una vez
que el quadcopter llega a tierra, esto también se puede usar
para apagar los motores por completo.
Ambos problemas se pueden solucionar fácilmente utilizando un
sensor de altitud. Este, dependiendo del tamaño y tipo del
cuadricóptero, será de diferente tipo:
Barómetro: los cambios de presión con el cambio de altitud
y, mediante determinadas fórmulas, se puede calcular
fácilmente el cambio de altitud. Sin embargo, el barómetro
se usa mejor para drones que se usan en exteriores debido
a que no son súper precisos. Además de que la presión
cambia en el tiempo (clima), pero este cambio es bastante
gradual, por lo que no impone muchos problemas a menos
que se utilicen vuelos largos.
Sensor de ultrasonido: estos son, con mucho, los más
populares. en la comunidad Arduino, por lo que
probablemente todos ya los conocen muy bien. Utilizan
ondas de ultrasonido junto con el algoritmo TOF (tiempo de
vuelo) para medir de manera efectiva cuánto tiempo viajó el
sonido desde el sensor hasta el objeto y, después de ser
reflejado, regresó. No me gustan porque son voluminosos,
sufren mucho ruido y, por lo tanto, tienen muchos falsos
positivos, no pueden medir distancias más largas de
alrededor de 1 m con precisión y, además, la precisión de la
medición depende de la humedad en el aire.
Sensor láser: creo que este es, con mucho, el mejor sensor
para usar en cuadricópteros de interior. También se basa en
el algoritmo TOF, sin embargo, en lugar de sonido, utiliza
luz, cuya velocidad en el aire es bastante constante. Un
sensor muy barato que ya tenía es el VL53L0X , cuyos
módulos en Aliexpress se pueden comprar por menos de £ 1
y también están disponibles en Adafruit . Son pequeños,
ligeros, miden la distancia con gran precisión, no sufren los
reflejos laterales y pueden medir distancias de hasta 1
m. También establece que se puede medir un rango de 2 m
cuando el modo LONG_RANGE está habilitado, pero
funciona mejor en la oscuridad. Una desventaja es que no
pueden distinguir la diferencia entre 0 y 5 cm, por lo que
cuando se alcanza esta distancia podemos programar para
aterrizar el quadcopter. Otro sensor similar esVL6180X ,
pero se usa más para distancias cortas de 0 a 20 cm y
también admite la detección de gestos. Este sensor sería
más útil para la operación de aterrizaje / elevación. Si
combináramos ambos sería increíble pero incluso tener uno
de ellos nos lo permitiría. para agregar una buena
funcionalidad.
Por supuesto que elegí la última variante. Ambos chips usan
comunicación I2C y por lo tanto no necesitamos usar más pines
de los que ya se están usando, ya que el MPU6050 también usa
I2C. Usé el VL53L0X porque ya tenía uno. Solo una cosa a tener
en cuenta, necesitaremos un condensador de desacoplamiento
para mantener el voltaje más estable al lado del sensor.
Interruptor de encendido (no agregado al esquema de
forma predeterminada)
A veces es bueno tener una forma de girar el chip a través de
algún tipo de interruptor deslizante o un botón. El primero es más
fácil de implementar, ya que normalmente ni siquiera requiere
componentes adicionales. Sin embargo, tenga en cuenta que
estos interruptores no tienen una corriente nominal de contacto
muy grande. Por ejemplo, el interruptor MSS3-QT / R solo admite
hasta 25 mA, mientras que nuestro circuito puede consumir más
incluso sin encender los motores.
Para solucionar este problema, podríamos diseñar un circuito muy
similar al que se basa este producto aquí . El esquema se agrega
como una imagen allí. La única diferencia es que no
necesitaríamos la parte adicional de controlar el encendido con un
BJT externo, por lo que esa parte se puede eliminar. Rediseñé
ligeramente el circuito y lo agregué a un proyecto separado si
alguien quería que esta funcionalidad reemplazara el circuito
existente.
Mejor filtrado de ruido (no se agrega al esquema de
forma predeterminada)
Pensé en un par de ideas diferentes sobre cómo se podría filtrar
la corriente de ondulación de voltaje en caso de que
experimentara mucho ruido incluso con las tapas agregadas:
Filtro LC
una idea de agregar también un filtro LC como se muestra en la
tercera página de los esquemas de Crazyflie 2.1 (Anote la oración
Filtrar la fuente de alimentación 73kHz.) ya que esto debería
eliminar la ondulación de la fuente de alimentación aún más, sin
embargo, he visto videos donde refuta esto y algunos límites de
ESR bajos parecían funcionar mejor que esto, por lo que por
ahora lo dejé en un proyecto separado .
"Multiplicador de capacitancia"
Este circuito es en realidad un filtro de paso bajo activo, sin
embargo, se está implementando de una manera muy
ordenada. El comportamiento del circuito se explica muy bien
en este video. Es una forma de "aumentar" la capacitancia de la
tapa existente en cientos de veces agregando una sola
resistencia y un BJT, un par Darlington o un N-MOSFET. Por
supuesto, la capacitancia no está aumentando, simplemente
estaríamos disminuyendo la corriente que fluye hacia el
capacitor. No he visto a nadie usar este circuito en el diseño de un
cuadricóptero, por lo que no sé qué tan bien se comportaría, pero
creo que vale la pena pensarlo cuando necesite proporcionar un
voltaje de suministro muy estable para alimentar la IMU sin
agregar tapas enormes. Además de eso, la resistencia podría ser
reemplazada por un inductor (mire arriba en el filtro LC) y, por lo
tanto, este podría ser un circuito muy ordenado.
Agregar sugerenciaPreguntaComentarioDescargar
Paso 4: Cálculos de peso y precio
Precio
Probablemente a muchos de ustedes les gustaría saber el precio
de la cosita. Bueno, calculemos que usando algunos cálculos
aproximados ya que el precio dependerá del proveedor:
Motores costosos:
£ 4 (BLE-Nano) + £ 3 (MPU6050) + £ 20 (Motores) + £ 3 (Batería
del motor) + £ 2 (Hélices) + £ 2 (MOSFETs) + £ 2 (El resto de la
electrónica + plástico) + £ 1 (conectores) + £ 3 (cargador) = £ 40
Motores Hubsan X4 baratos:
£ 40 - £ 15 = £ 25
Yo diría que este es un precio bastante bueno ya que los
productos de la competencia cuestan varias veces más.
Motores costosos
Para que nuestro quadcopter vuele bien, existe una regla de oro
que indica que el 50% del empuje máximo de los motores debe
ser igual al peso del propio quadcopter. Lo que significa que el
quadcopter estará en la altura constante cuando dé el 50% de su
potencia máxima. Los motores que compré tienen 40g por motor
de empuje. En total, eso suma 160 g. El 50% de eso son 80
g. Ahora sumemos todos los componentes electrónicos + el
marco:
15g (marco) + 8g (PCB) + 20g (motores) + 12g (batería) + 5g
(microcontrolador) + 2g (MPU) + 5g (extra) = 67g
Logramos encajar fácilmente dentro de los límites de 80 g, por lo
que el quadcopter debería poder volar felizmente.
Motores baratos
El empuje proporcionado por los motores es de 34 g por motor, es
decir, 136 g en total. El 50% de eso es 68 g. El peso total del
componente será más o menos el mismo, tal vez se pueda
agregar una batería más pequeña y que aún pueda caber dentro
del límite de empuje del 50%. Puede que no vuele tan bien como
con motores más rápidos, pero bueno, ¡estás usando motores al
menos 4 veces más baratos!
Agregar sugerenciaPreguntaComentarioDescargar
Paso 5: Cableado del sistema junto
Al diseñar la PCB se debe tener cuidado, ya que esto afectará
directamente el rendimiento del circuito. Cada módulo y chip debe
estar conectado a la entrada correcta de nano.
Motores que controlan PWM
Los MOSFET que controlan el motor se controlarán mediante la
señal PWM. Hay 6 pines disponibles con hardware PWM
incorporado en nano pines 3, 5, 6, 9, 10, 11. Solo necesitaremos
4 pines para el proyecto, sin embargo, de hecho, para un
desarrollo más fácil, solo hay 4 "correctos" alfileres para ir. Verá,
PWM usa temporizadores dedicados para establecer la frecuencia
PWM y nano tiene 3 de estos temporizadores, que usan
frecuencias predeterminadas ligeramente diferentes (aunque es
posible modificarlas). Recomiendo encarecidamente echar un
vistazo a la hoja de referencia de Timer PWMya que mis próximas
presunciones se basarán en él. A la derecha, el temporizador 0
(predeterminado 976 Hz) se usa para los pines 5 y 6, el
temporizador 1 (predeterminado 490 Hz) para los pines 9 y 10 y el
temporizador 2 (predeterminado 490 Hz) para los pines 3 y 11.
Para obtener el mejor rendimiento, las frecuencias PWM para
todos los motores tienen ser el mismo que el empuje depende de
la frecuencia, como se puede ver en este video. Debido a que el
Timer 0 también se usa para las funciones delay y millis (), no
querríamos cambiar su frecuencia ya que afectaría a las dos
funciones. Tendríamos que adaptar el código, posiblemente
incluso cambiar las bibliotecas utilizadas, que dependen de estas
dos funciones. Por tanto, esto nos da dos opciones:
1. Usando los pines 3, 5, 6 y 11, manteniendo la frecuencia
predeterminada del Temporizador 0 de 976Hz pero luego
escalando el Temporizador 2 para proporcionarnos una
frecuencia de 980Hz.
2. Usando los pines 3, 9, 10 y 11 y manteniendo la frecuencia
predeterminada de 490Hz o mejorando tanto el
temporizador 1 como el 2 a 3921Hz.
No sé cuál es la mejor opción aquí, y de algunas de las
fuentes parece que el valor real no es realmente tan importante,
sin embargo, una frecuencia más alta dará una respuesta más
suave y menos ruido como se discutió en los foros . Por lo tanto,
elegiré la opción dos y también escalaré la frecuencia a
3921Hz. Otro buen foro que discute cómo afectan los
temporizadores y cómo se pueden modificar para producir
diferentes frecuencias PWM.
Sin embargo, tenga en cuenta que también es posible usar PWM
basado en software, también conocido como Bit Banging (puede
leer más de esto aquí ), sin embargo, es más complicado
administrar el código, ya que se debe tener cuidado de no afectar
los tiempos. posible. Sin embargo, también tenga en cuenta que
si desea usar el chip RF-Nano , en los esquemas podemos ver
que los pines 9, 10, 11, 12 y 13 ya se utilizan para hablar con el
chip nRF24L01, por lo que es la única posibilidad de usarlo en
este proyecto. es mediante el uso de un chip PWM externo o
mediante Bit Banging.
IMU
La IMU MPU6050 usada se comunica usando I2C y para
mantener contentas a las bibliotecas, decidí quedarme con los
pines predeterminados A4 (SDA) y A5 (SCL). Conectaré el pin de
interrupción en caso de que lo necesite en el futuro. Nano admite
interrupciones en los pines 2 y 3 solo como se puede
ver aquí . Por lo tanto, usaré el pin 2, ya que el pin 3 es PWM y
podría usarse para otra cosa, por ejemplo, hacer parpadear un
LED. Encontré otro proyecto que usa configuraciones
idénticas aquí .
Alimentando Arduino
De los esquemas BLE-Nano podemos ver que el mejor lugar para
conectar las baterías es directamente en el pin de 5V. No
podemos conectarlo a Vin ya que espera voltajes mayores a 5V,
de lo contrario, la caída de voltaje debido al regulador de voltaje
sería horrible y tampoco podemos conectarlo a 3.3V, porque
Arduino en sí se alimenta desde la línea de 5V en lugar de 3.3. V,
por lo que Arduino no se alimentaría en absoluto.
Aunque el chip que alimenta Arduino Nano ( ATmega328 ) puede
funcionar con voltajes en el rango de 1.8 - 5.5V, hay ciertas
protecciones integradas para evitar que funcione a voltajes
demasiado bajos. El voltaje más bajo aceptable antes de que el
chip deje de funcionar se llama voltaje de bajada. En Arduino,
esto se establece en 2.7V. En nuestro proyecto, los voltajes
pueden caer durante períodos cortos de tiempo (milisegundos)
cerca de este punto, lo que puede hacer que el Nano se
reinicie. Para evitar que esto suceda, es posible que deba
configurar el voltaje de caída en 1.8V y esto se puede hacer como
se explica en este comentario .
Detector de nivel de batería
Como se dijo anteriormente, construiremos un divisor de potencial
para medir el voltaje de la batería. La entrada del divisor de
potencial irá al pin analógico A0 y en el software configuraremos
la referencia de voltaje INTERNO.
Neopixels (opcional)
La entrada al primer Neopixel se conectará al pin número 5 de
Arduino, sin embargo, también podría conectarse a cualquier otro
pin no utilizado.
Agregar sugerenciaPreguntaComentarioDescargar
Paso 6: Esquema del circuito
Estoy agregando aquí los "esquemas" heredados para la
configuración anterior que hice hace años, sin embargo, si los
compara con los nuevos circuitos, verá dónde se cometieron los
errores (¡uy!). Mi último diseño de Nano Quadcopter está
disponible en EasyEDA para que pueda usarlo tal como está o
cambiar el diseño y / o la PCB de la forma que desee. También
agregué una explicación a cada módulo para facilitar la
comprensión. Tenga en cuenta que si no comprende algo,
siempre puede consultar los pasos de Componentes
electrónicos o Cableado del sistema juntos, ya que me
aseguré de proporcionar suficiente información para explicar cada
parte de los circuitos.
Además de Nano Quadcopter, también agregué los esquemas
para nRF52840 Quadcopter , que funcionará con placas de
desarrollo Particle Xenon o Adafruit Feather nRF52840
Express. Fue más fácil diseñar para estas placas, ya que ya
incluye muchos módulos, como el pin de habilitación para agregar
un interruptor de encendido, un detector de nivel de batería y un
circuito de carga de batería con un conector de batería, por
supuesto. Además de eso, los módulos son más rápidos, casi
todos los pines son compatibles con PWM y se pueden programar
usando Circuitpython o Micropython.
Agregar sugerenciaPreguntaComentarioDescargar
Paso 7: PCB y soldadura
Recomiendo pedir la PCB a JLCPCB , que se puede hacer
directamente desde EasyEDA. El precio es de solo $ 2 por 10
PCB, lo cual es realmente insignificante. En este momento vivo en
España y la entrega aquí cuesta alrededor de $ 10, por lo que no
es un mal negocio, aunque probablemente solo necesitaré una
PCB ... Además de eso, también puede seleccionar una opción
para que los componentes SMD estén pre soldado para usted por
un pequeño costo adicional. Seleccioné las opciones de
componentes que estaban disponibles en la biblioteca JLCPCB
Assembled Basic SMT Type, para mantener esto como una
opción. La única parte SMD que era de la biblioteca extendida era
el LED WS2812B, sin embargo, ¡no tener uno no evitará que el
quadcopter vuele! También puede pedirlos a buen precio en
Aliexpress.
Tamaño del componente
La PCB que diseñé ahora usará componentes SMD de tamaño
806. Estos ajustes son lo suficientemente buenos para poder
soldar la PCB a mano. Sin embargo, puede rediseñar la PCB a su
gusto. Incluso podría proporcionar una PCB para componentes de
orificios pasantes, sin embargo, ajustar todo se vuelve mucho
más complicado.
Diseño de pistas
Debido a que se utilizarán corrientes muy grandes para hacer
funcionar los motores, las pistas para hacer funcionar los motores
deben diseñarse con cuidado:
Ninguno de los cables de alimentación debe tener vías, esto
es para reducir la resistencia del cable y, por lo tanto, la
caída de voltaje sobre el cable.
El grosor del cable debe ser de alrededor de 50 mil, sin
embargo, dependerá del grosor de la capa de cobre que
elija. Simplemente puede usar la calculadora de ancho de
vía en línea para decidir esto.
Es mucho más fácil soldar todos los componentes en una PCB ya
preparada. Lamentablemente, no siempre es posible acceder a
una máquina para fabricarla. Teníamos uno en la Universidad,
¡así que diseñé un PCB usando Target 3001! Software. Para abrir
el archivo * .T3001, deberá descargar el software Target 3001,
que lamentablemente solo es compatible con Windows. Podría
exportar el proyecto a Eagle más tarde. Añadiendo
Target3001, .xps, .tif y .src (exportar a Eagle) para aquellos que
pretenden hacer una PCB en casa.
Separación del suelo
Tenga en cuenta que podría ser una buena idea separar la tierra
utilizada por los motores y los otros sensores, ya que el ruido
causado por los motores no afectaría a los sensores como se
describe aquí . Sin embargo, esto no es muy fácil de hacer
usando el editor de PCB easyEDA ya que lo intenté y obtuve
errores de autorización. Por lo tanto, por ahora guardé esto como
una idea en mi cabeza para el futuro si el quadcopter no vuela ...
El resultado impreso y soldado se ve como en la imagen
proporcionada. Agregué círculos rojos que muestran los
transistores soldados, círculos amarillos que muestran los
conectores JST para los motores, un círculo verde que marca los
conectores de la batería, suministrando energía SOLAMENTE al
motor y un círculo azul que marca los conectores de la batería,
que suministra energía al resto de la electrónica. (Arduino,
MPU6050, etc.). Como puede ver, se han realizado algunas
correcciones junto a ambos conectores de alimentación. No es
necesario que haga eso, ya que la PCB se actualizó después de
hacer el primer modelo de trabajo. Básicamente, el problema era
que al principio la PCB solo tenía una fuente de
alimentación. Durante la prueba, pareció que el módulo Bluetooth
se desconectaba constantemente del teléfono a medida que el
voltaje de la batería bajaba a niveles bajos (<3V). No solo eso,
Arduino también tuvo problemas con eso, que se solucionaron
reduciendo la tensión de caída. Usted puedehágalo fácilmente
usted mismo, ya que solo requiere modificar un solo archivo en el
IDE de Arduino, sin embargo, es más un truco ya que cuanto
mayor es la frecuencia, mayor voltaje se necesita. Al final, algo
más podría romperse en el futuro o podría perder toda la energía
disponible, etc. De todos modos, la implementación del sistema
de dos baterías funcionó bien, especialmente porque la batería,
que alimenta la electrónica, pesa solo alrededor de 3 g.
Cuando suelde los conectores del motor, asegúrese de que estén
soldados de la manera correcta. En cada lado, uno de los
conectores está orientado hacia un lado y otro hacia otro
lado. Debe asegurarse de que el pin 1 siempre esté conectado
por el mismo lado. Creo que es mejor colocar primero todos los
conectores, luego volver a revisarlos 3 veces y solo luego
soldarlos.
Tenga en cuenta que comercializo el conector de la batería con
un plus para asegurarme de que no lo conecte de manera
incorrecta. De hecho, podría agregar una protección de batería ...
¡Necesito echarle un vistazo!
Consideraciones futuras
En el futuro, podría deshacerme por completo de las piezas
impresas en 3D y almacenar todos los componentes en el
PCB. Esto reducirá el peso drásticamente, sin embargo, podría
aumentar la turbulencia y las vibraciones, por lo que se deberá
tener cuidado para evitar estos problemas, digamos estableciendo
el grosor de la PCB al mayor disponible. No solo eso, sino que
tendrá que pensar en una forma de conectar los motores para que
permanezcan seguros en la PCB.
Archivos adjuntos
[Link]
Descargar
[Link]
Descargar
PCB_GND_MODIFIED.SCR
Descargar
PCB_GND_MODIFIED.T3001
Descargar
Agregar sugerenciaPreguntaComentarioDescargar
Paso 8: software
Hace mucho tiempo escribí una biblioteca y un programa de
ejemplo usando mbed para un quadcopter que puedes
encontrar aquí . En ese momento, sin embargo, no entendía
completamente cómo funcionaba PID cuando se aplicaba a la
teoría de Quadcopter. Para desarrollar el software ahora eché un
vistazo a proyectos existentes como
Configuración
Como no me odio a mí mismo, decidí programar el Quadcopter
usando el editor de código Visual Studio con
el complemento PlatformIO instalado . Para instalar la
configuración, simplemente seguí esta guía.
Lectura del voltaje de la batería
Para realizar una medición analógica por defecto, Arduino usa su
fuente de alimentación como referencia de voltaje. Si no
cambiamos esta configuración al leer el voltaje de la batería,
siempre será el mismo, ya que nuestra fuente de alimentación
disminuirá con la batería descargada. Para resolver esto,
necesitamos usar la referencia de voltaje de intervalo . Como se
discutió anteriormente en Atmega328, esto es igual a ± 1.1V. El
código para leer el valor real de la batería e imprimirlo en el puerto
serie sería:
// Factor de compensación, que es inverso de VBAT = (150k / (150k +
150k))
#define VBAT_DIVIDER_COMP ((33.0 + 100.0) / 33.0)
// Referencia de voltaje de intervalo de 1.1V en mV
#define BATTERY_VOLTAGE_REFERENCE_VALUE 1100
// La resolución de 10 bits da 1023 pasos
#define RESOLUTION_STEPS 1023
// Combinar a partir de una fórmula
#define REAL_BATTERY_MV_PER_LSB (VBAT_DIVIDER_COMP *
BATTERY_VOLTAGE_REFERENCE_VALUE / RESOLUTION_STEPS)
#define BATTERY_PIN A0
configuración vacía () {
// Establecer la referencia de voltaje interna de 1,1 V
analogReference (INTERNAL);
[Link] (115200);
bucle vacío () {
[Link] (analogRead (BATTERY_PIN) * REAL_BATTERY_MV_PER_LSB);
MPU6050
La biblioteca MPU6050 está disponible por Jeff Rowberg 2012. El
código de ejemplo proporcionado MPU6050_DMP6 se utiliza
como código principal para el proyecto.
Estabilización de motores
En los sistemas de control, un controlador PID es una forma muy
popular de estabilizar el sistema. Aquí queremos estabilizar el
cabeceo y balanceo del MPU6050. Usé la biblioteca PID_v1 para
este propósito. En el código que se proporciona a continuación,
configuraré tanto los motores como el controlador PID. Luego
agregaré una función para estabilizar los motores dependiendo de
la velocidad requerida.
#define FL_MOTOR 3
#define FR_MOTOR 9
#define BR_MOTOR 10
#define BL_MOTOR 11
// --------------------------------- PID --------------
----------------------
// Definir variables a las que nos conectaremos
doble rollSetpoint, rollInput, rollOutput;
doble pitchSetpoint, pitchInput, pitchOutput;
// Defina los parámetros de ajuste agresivos y conservadores <br> double
consKp = 1, consKi = 0.05, consKd = 0.25;
PID pitchPID (& rollInput, & rollOutput, & rollSetpoint, consKp, consKi,
consKd, DIRECT);
PID rollPID (& pitchInput, & pitchOutput, & pitchSetpoint, consKp,
consKi, consKd, DIRECT);
configuración vacía () {
// ------------------------------ PID ----------------- -----------------
pitchInput = 0.0;
rollInput = 0.0;
pitchSetpoint = 0.0;
rollSetpoint = 0.0;
// enciende el PID
[Link] (AUTOMATIC);
[Link] (AUTOMATIC);
[Link] (-20, 20);
[Link] (-20, 20);
// ------------------------------------------------ -------------------
para (int i = 0; i <4; i ++) {
targetSpeed [i] = 0;
}
pinMode (FL_MOTOR, SALIDA);
pinMode (FR_MOTOR, SALIDA);
pinMode (BR_MOTOR, SALIDA);
pinMode (BL_MOTOR, SALIDA);
bucle vacío () {
[Link] ();
[Link] ();
int actSpeed [4];
estabilizar (targetSpeed, actSpeed, rollOutput, pitchOutput);
// targetSpeed = actSpeed; // ¿Debería estar aquí o no?
void stabilize (int * currSpeed, int * actSpeed, float rollDiff, float
pitchDiff) {
// La velocidad real se calcula de la siguiente manera + - half
rollDiff + - half pitchDiff
actSpeed [0] = (int) currSpeed [0] + (rollDiff / 2) - (pitchDiff / 2);
actSpeed [1] = (int) currSpeed [1] + (rollDiff / 2) + (pitchDiff / 2);
actSpeed [2] = (int) currSpeed [2] - (rollDiff / 2) + (pitchDiff / 2);
actSpeed [3] = (int) currSpeed [3] - (rollDiff / 2) - (pitchDiff / 2);
para (int i = 0; i <4; i ++) {
if (actSpeed [i] <0) actSpeed [i] = 0;
void runIndividual (int * actSpeed) {
analogWrite (FL_MOTOR, actSpeed [0]);
analogWrite (FR_MOTOR, actSpeed [1]);
analogWrite (BR_MOTOR, actSpeed [2]);
analogWrite (BL_MOTOR, actSpeed [3]);
Conectividad BLE
BLE (Bluetooth Low Energy) es un protocolo de comunicación
completamente diferente del antiguo Bluetooth 2.0. En lugar de
consumir mucha energía para mantener la conectividad con un
dispositivo host, envía ráfagas de pulsos. Cada ráfaga puede
alcanzar niveles de 20 a 40 mA, sin embargo, serán muy cortos y
se enviarán solo un par de veces por segundo. ¡En promedio, el
consumo de energía se acerca al nivel sub-mA!
La comunicación del quadcopter al teléfono se realizará a través
del módulo BLE integrado BLE-Nano . El nano se conecta al chip
BLE usando el serial integrado en los pines TX y RX. Por
supuesto, esto hace que sea un poco más difícil si desea hablar
con la PC, sin embargo, rara vez necesitaré una conexión a la PC
de todos modos. A continuación se muestra un ejemplo sobre
cómo recibir un número entero a través del servicio BLE UART y
devolverlo:
configuración vacía () {
[Link] (115200);
bucle vacío () {
if ([Link] ()) {
lectura int = [Link] ();
// tirar todo lo que no fue leído
while ([Link] ()) {
[Link] ();
}
// Repite el eco del entero
[Link] (lectura);
Sumando bits juntos
En cuanto al código completo, siempre estoy trabajando en él, así
que decidí no agregarlo TODO aquí. Puede encontrar la última
versión del código en GitHub . Notificaré en este Instructable
cuando el código esté terminado. Por el momento, necesito
configurar las constantes PID correctas, etc.
Neopixels (opcional)
Hay un par de bibliotecas disponibles:
Adafruit
WS2812B
FastLED : fue diseñado para controlar diferentes tipos de tira
de LED RGB, por lo que si en el futuro se usara una
diferente, esta biblioteca permitiría cambiar todo muy
fácilmente. La desventaja es un mayor uso de memoria.
Agregar sugerenciaPreguntaComentarioDescargar