Máquina de dibujo vectorial # 3





Como ingeniero, siempre me ha impresionado el estilo pragmático ruso de nombrar nuevos productos. Si bien algunos especialistas en marketing occidentales podrían llamar a un pequeño dispositivo de juego basado en CRT Vectormatic Score-Master 3000, los rusos tienden a usar nombres más significativos. Y dado que están considerando un tercer intento de crear un sistema de representación vectorial, lo llamarían "Máquina de dibujo vectorial n. ° 3". Ingenieros - puntaje de especialistas en marketing (15: 0).



Hace muchos años, me fascinó la idea de utilizar un pequeño tubo de rayos catódicos de osciloscopio para mostrar un reloj analógico. Esta empresa, por supuesto, prometía placer estético, pero al mismo tiempo parecía ridículo. La idea de reemplazar la cadena de conexiones mecánicas con un microcontrolador que acciona dos amplificadores diferenciales de alto voltaje y una fuente de alimentación de alto voltaje independiente solo para, en términos generales, decir la hora, parecía un poco tonta.

Si, al mismo tiempo, tomamos en cuenta todo el trabajo en la implementación de cada etapa del proceso, como resultado de lo cual se debe obtener un dispositivo de aspecto decente, y agregamos un estudio detallado del diseño, entonces todo el proyecto ya insinuaba su monumentalidad.



Ninguna de las muchas tareas propuestas presentaba dificultades particulares en sí misma, pero si la consideramos en su conjunto, es la etapa de integración de todo en tales proyectos la que revela las complejidades de las interrelaciones de los componentes individuales.



Este artículo examina el montaje de un simple juego espacial basado en CRT. Este proyecto describe la arquitectura, proporciona notas de diseño, comentarios sobre el equipo utilizado, la electrónica, la implementación de la fuente de alimentación de alto voltaje y el proceso de corte por láser del gabinete.



Información general



El cuerpo se ensambla a partir de dos partes principales, fabricadas en tablero MDF mediante corte por láser. La parte superior alberga una pantalla CRT, una fuente de alimentación de alta tensión, canales de deflexión y calibradores correspondientes. En la parte inferior hay un joystick, botones, un microcontrolador y una fuente de alimentación de baja tensión. En la parte trasera hay un conector de alimentación y una toma USB mini B. El segmento superior de la caja se coloca en el inferior, y toda esta estructura se fija mediante un panel de control plano, en el que hay un joystick y botones.



CRT



El CRT utilizado es el D7-16G, que tiene poco más de 76 mm de diámetro, 160 mm de longitud y funciona con batería. Compré tres de estos CRT hace muchos años solo para proyectos similares.





CRT D7-16G



Utiliza un conector de 11 pines tipo 30-232, que es muy problemático de encontrar. Después de un poco de deliberación, se me ocurrió la idea de montar la mía propia cortando un espacio en blanco con un láser de una hoja de acrílico y recogiendo las clavijas de contacto apropiadas de la base del panel de la lámpara.





Conector de ensamblaje 30-232



Para hacer esto, diseñé dos espacios en blanco compuestos en Autocketch para que los contactos CRT estén colocados a lo largo del contorno "D" de la parte izquierda. Luego, cada pieza se cortó de una lámina acrílica de 3 mm y se pegó. Quité los contactos del nuevo panel de la lámpara B9A, los inserté en el espacio en blanco pegado y los doblé ligeramente para fijarlos, luego soldé los cables a sus terminales, aislando las conexiones con contracción térmica.



Fuente de alimentación de alto voltaje



Esta unidad se basa en el regulador de conmutación SG3525 que impulsa una etapa N-FET push-pull seguida de un pequeño transformador de ferrita con bobinas secundarias de alto y bajo voltaje. El lado de alto voltaje pasa a través de un rectificador de media onda positiva, que genera aproximadamente 240 VCC, y luego se reduce mediante un regulador paralelo a 210 V. El voltaje rectificado se alimenta a los amplificadores de deflexión y consume alrededor de 7 mA. El voltaje secundario de HV también se duplica, generando aproximadamente -600V, 1mA para polarizar el haz del cañón de electrones. El equilibrio de cualquier devanado secundario de CC capaz de saturar el núcleo o causar un desplazamiento magnético se logra mediante rectificadores positivos y negativos.



La estructura del transformador comienza con un devanado primario en el medio, después de lo cual hay un arranque a tierra del devanado secundario de AT, que termina con un terminal bajo voltaje de ánodo. Finalmente, hay un devanado de bajo voltaje que se usa para calentar la bobina del tubo de rayos catódicos. Este orden se elige para evitar la ruptura entre los devanados de alta y baja tensión. Habiendo dicho todo esto, pensé en esta topología y, tal vez, encuentre tiempo para refinarla.





Unidad de alto voltaje y dispositivo de deflexión



No he utilizado un núcleo de armadura de ferrita durante tanto tiempo que me olvidé por completo de su conductividad eléctrica. Esto creó arcos electrónicos entre la parte superior del secundario y la ferrita conectada a tierra, lo que provocó que varios pares de controladores de transistores del lado primario STN3NF06L fallaran. En el curso de averiguar el motivo, los reemplacé por un par de TO252 más estables (100A / 8mΩ), capaces de soportar incluso el suministro de 12V, 1A y arrancar un transformador con espiras en cortocircuito.



Estaba algo confundido al descubrir que el SG3525 está disponible en paquetes SOIC tanto anchos como estrechos. Como resultado, se descubrió que la huella de PCB no era adecuada y la parte estrecha se tuvo que pedir al Reino Unido.



Amplificador de deflexión



El diseño de este subsistema resultó ser una tarea desalentadora y tomó mucho tiempo trabajar con el simulador SPICE, lo que ayudó a comprender todos los matices.



Aquí hay una breve especificación:



  • entrada no balanceada 0..5V
  • salida diferencial con un swing> 80V por brazo
  • a 210 V consumo de corriente inferior a 2 mA
  • posibilidad de alimentación desde 12V
  • sin neumáticos negativos
  • ancho de banda> 500 kHz con menos de 5 ° de cambio de fase en relación con el calculado


En el transcurso de varios días, aprendí varias topologías, comenzando con un circuito push-pull en cascodo con una fuente de corriente. Inicialmente, solo se probó y optimizó el modo estacionario. Después de alcanzar los valores de CC de referencia, tomé los parámetros de CA. El capacitor que conecta los emisores del circuito push-pull (lo cual no es sorprendente) afecta significativamente la ganancia de CA, la frecuencia, las características de fase y, aparentemente, interactúa fuertemente con las resistencias del emisor, así como con los drenajes asociados con ellos.



Aquí, como mejora, puede aplicar la estabilización térmica mediante la unión térmica de los dispositivos de salida (si considera que ahora es SOT-233, entonces la tarea no es fácil). Alternativamente, por supuesto, puede cambiar a sus contrapartes que están montadas en agujeros, lo que simplificará enormemente la tarea.



Sería bueno usar un circuito en el que el cambio de fase y la ganancia sean menos dependientes. Pero la simple opción actual ha superado muchas barreras técnicas difíciles, por lo que el requisito adicional sería demasiado oneroso.



Placa controladora y DAC



Teniendo en cuenta que la tarea principal del microcontrolador es el cálculo repetido de una fila de pares de vectores cada pocas decenas de milisegundos, me pareció razonable utilizar una opción sencilla y económica para ello.



El ATmega328P y el ST micro STM32F103C8T6 eran candidatos obvios. Como resultado, el primero fue elegido únicamente por sus posibilidades más amplias y (una vez) popularidad. En el proceso de ensamblaje de la placa, se descubrió sorprendentemente que compré accidentalmente un controlador de la versión "B", pero hablaremos de eso más adelante.



En general, su placa es simple e incluye un convertidor USB FT232RL, un DAC de 8 bits de doble canal, una interfaz de joystick y botones, una interfaz I2C opcional y un regulador de 5V. Era posible usar el Arduino Nano con una placa base, pero la solución actual era simple y fácil de conectar.





Los



requisitos de la placa controladora y del sistema DAC implican el funcionamiento con un bus, lo que limita la elección de DAC. Inicialmente, tomé el TLC7528, que parece tener una salida de corriente, pero al examinarlo más de cerca, resultó que se puede configurar para que funcione en el modo de salida de voltaje. Combinado con los amplificadores operacionales TSH82, resultó ser una mala elección, ya que la distorsión, incluso en los niveles de señal más bajos, era de un pequeño porcentaje. Resolví este problema reemplazando el DAC con el AD7302, que tiene dos salidas de voltaje y un tiempo de estabilización de 2μs.





Un pequeño porcentaje de distorsión puede estropear las cosas



En retrospectiva, parece que la distorsión con el TLC7528 puede haberse debido al rango de modo común de entrada limitado del TSH82 asociado. Esto se verifica fácilmente quitando estos amplificadores operacionales y dibujando un círculo de Lissajous en el osciloscopio directamente con las sondas.



Como resultado, una serie de errores de diseño me llevaron a reconstruir esta placa aparentemente simple: elegir un DAC, usar el FT232RL por primera vez y no conectar el pin TST correspondiente a tierra. También cometí un error en el circuito para conectar el conector USB en la placa (mezclé los cables de señal), que corrigí temporalmente con un cable casero.



Nuevo microcontrolador, caja de herramientas y cargador de arranque



Como dije, sorprendentemente resultó que el ATmega328P que había pedido antes, de una manera incomprensible, resultó ser una versión menos popular de "B". Son totalmente compatibles en binario con sus hermanos menores, excepto por la firma del chip. Sin embargo, la versión más reciente tiene una serie de funciones adicionales útiles, incluida la compatibilidad con un segundo USART.



Arduino proporciona el último conjunto de herramientas que, curiosamente, no estaba disponible en el sitio de Atmel. Estas herramientas tenían que extraerse y ensamblarse en un paquete portátil y, por lo tanto, ya no dependían del marco de Arduino. Luego actualicé el archivo make del proyecto correspondiente para hacer referencia al nuevo controlador y herramientas.



Teniendo en cuenta la compatibilidad de los chips, el cargador de arranque Arduino estándar se programó en uno más nuevo usando un IDE de AVR Studio 4 relativamente pequeño, que elegí por la simplicidad de la interfaz. El archivo XML para describir el nuevo controlador tuvo que crearse en base a la versión anterior. Como resultado, las principales diferencias fueron su número y la firma correspondiente.



La utilidad make se utilizó para actualizar el proyecto y, en consecuencia, el archivo Make. Con este enfoque, el conjunto de herramientas ocupaba solo unos 30 MB, y no cientos, como es el caso del uso de IDE integrados "modernos".





Los programadores reales no usan IDE



Firmware



El sistema está diseñado para dibujar alrededor de 10K pares de vectores por segundo. Con una frecuencia de actualización de 50 Hz, esto significa que se pueden dibujar 200 vectores. Después de cada 200 vectores (20 ms), el primer plano recibe una señal para actualizar su lista para que el juego se ejecute sin problemas.



Varios procesos del sistema requieren la capacidad de rotar vectores. Al mismo tiempo, a pesar de la obvia razonabilidad de usar un valor decimal en el rango de 0..359 grados, tal solución requerirá usar U16 y será innecesariamente engorrosa. Después de pensarlo un poco, decidí que sería apropiado procesar la mayor cantidad de datos posible con el S8 (+127 a –128). También funcionará bien para representar coordenadas X / Y (asumiendo un DAC de 8 bits) para expresar un ángulo (aproximadamente ± 180 grados).



La actualización de la pantalla se realiza mediante una interrupción del temporizador y es la única forma de controlar los DAC. Los vectores se leen del búfer ping o pong y se repiten hasta que la tarea de primer plano cambia el búfer. Cada búfer comienza en el contador U8 y continúa hasta el siguiente punto de escritura disponible seguido de un punto de lectura. Después de eso, contiene una lista de valores X e Y almacenados en formato U8.



La dirección de la nave espacial se cambia moviendo el joystick hacia la izquierda / derecha. El barco en sí se muestra en forma de cuatro puntos a la chevron de la serie de televisión Star Trek, girando alrededor de su centro. Cada vector requiere una búsqueda de pecado y cos, 4 multiplicaciones y dos sumas. En total, se obtienen 37 cálculos por rotación, que en total son unas 200 instrucciones. La nave espacial siempre se dibujará primero y la nariz siempre será el primer par de vectores, por lo que en el búfer de salida este par de vectores será el punto de partida para el lanzamiento de cohetes.



Los misiles se lanzan presionando el botón correspondiente. Vuelan por la proa del barco y continúan su curso actual. La destrucción de un cohete, del que no se pueden lanzar más de 16 simultáneamente, ocurre cuando choca con un asteroide o cuando alcanza el radio visible del espacio. Este modelo de vuelo se basa en trazar líneas entre la proa del barco y el borde del radio visible, donde delta X y delta Y se calculan en el lanzamiento. Delta X / Y es un punto fijo de 8.8, al igual que la velocidad.





Nave en el centro, asteroide debajo Los



objetos de asteroide se generan en un lugar aleatorio de radio y vuelan sobre él directamente en un ángulo entre 80 y 140 grados. Cuando aparecen, se genera una posición inicial y final aleatoria, que luego se convierten en coordenadas cartesianas, y la cuestión de una línea recta se resuelve de la misma manera que con los misiles.



Cuando un cohete golpea un asteroide, ambas entidades se destruyen y se aumenta el contador de puntuación actual. Los objetos de visualización numéricos se toman de la tabla de búsqueda "7 segmentos".



Todo el juego "pesado" se realiza con la función "girar", que se utiliza para agregar un objeto de entrada (asteroide, nave espacial, valor de 7 segmentos, etc.) al búfer de salida. Además, permite que el objeto de entrada rote, así como aplicar un desplazamiento a lo largo de los ejes X e Y. Al mismo tiempo, no hay nada que le impida agregar un pelotón 2x2 de naves alienígenas al búfer de entrada, luego tómelos como un grupo y despliéguelos antes de dibujar.



Parte mecánica



Darle estética a este dispositivo espacial ya supuso mucho más esfuerzo, aunque el proceso en sí resultó ser mucho más entretenido de lo que esperaba. Inicialmente, la inclinación del cuerpo del CRT era notablemente más baja de lo planeado, y al final tomó varias horas encontrar una manera de cortar el segmento de retención deslizante para que las partes superior e inferior pudieran conectarse de manera adecuada.





Diseño primario



Qué gran diferencia pueden hacer literalmente unos pocos grados. Me sorprendió la cantidad de cambio estético al final y lo torcida que se veía la primera versión con el ángulo más desplegado.





Conjunto: el módulo CRT, el segmento inferior de la caja y la cubierta frontal del



CRT se fija con soportes redondos de MDF pegados en la parte superior del compartimento. Desde el interior, estos soportes están revestidos con gomaespuma elástica sobre una base adhesiva.





Frente del CRT vacío con cerradura de la carcasa y marcas para una placa de circuito impreso



Es difícil ver en las fotografías que el panel de control con un joystick y botones fija firmemente el módulo CRT, evitando que se tire hacia atrás.



Paquetes utilizados para el diseño del casco



Para el diseño inicial de los segmentos superior e inferior del cuerpo, se utilizó el editor Inkscape con la extensión “The Laser Cut Box”. Solo las muescas dentadas sirvieron como un paquete de estos segmentos. Simplemente copié y pegué la plantilla final de Inkscape en Autosketch, en el que hice todas las mejoras necesarias.



Utilicé un cortador láser de 70 W para cortar espacios en blanco de MDF. El ciclo de trabajo resultó ser lo suficientemente rápido, lo que permitió probar simultáneamente ideas de diseño alternativas.



Conclusión



Como esperaba, en este proyecto logré aprender mucho, ya que todo, excepto quizás el microcontrolador incorporado, resultó estar más allá de mi experiencia ordinaria.



Obviamente, se pueden desarrollar muchos juegos y aplicaciones diferentes basados ​​en este dispositivo de representación vectorial. Hasta ahora, definitivamente quiero agregar un módulo de sincronización a la placa (a través de I2C), habiéndome dado cuenta de mi idea de larga data de mostrar un reloj analógico. El resto de posibles mejoras se irán realizando de forma paulatina.



Un error indecente, por supuesto, fue un error con el circuito USB mini B y el primer intento fallido de usar un DAC con una salida de corriente en el modo de salida de voltaje. Pero de lo contrario, ni siquiera sé qué más arreglaría en caso de volver a ensamblar dicha unidad.



En el proyecto actual se cumplieron todos los objetivos, incluida la ampliación de horizontes, durante los cuales, como suele suceder, hubo algunas sorpresas.



El autor Mark Atherton puede ser contactado por correo markaren1@xtra.co.nz










All Articles