Brilla siempre, brilla en todas partes. Parte 2


La versión actual de la placa del módulo del procesador

Ha llegado la segunda parte del material sobre el sistema de control de iluminación de bicicleta hecho a sí mismo. Permítame recordarle que decidí construir una red RS-485, en la que hay dispositivos de control y ejecutivos, y el maestro es una computadora en la que se ejecuta el programa que implementa la lógica. Antes de continuar con la descripción de la lógica del sistema, hablaré sobre las mejoras y los cambios de paradigma en términos de hardware que surgieron como resultado de la discusión y prueba de prototipos de la primera parte .

Dopilirovanie

En primer lugar, se decidió hacer las glándulas modulares, por analogía con Arduino y una serie de otros proyectos. Pensé que mi módulo principal (procesador) contiene más componentes que módulos funcionales, por lo tanto, será la madre. Y se insertarán "escudos" en él. En términos de circuitos, se realizaron los siguientes cambios:

1) Se agregó un estabilizador de potencia (AMS1117-5.0).
2) Se cambia el cableado de alimentación del microcontrolador.
3) La placa del módulo principal está divorciada teniendo en cuenta la fabricación industrial, pero la segunda capa de cobre se utiliza al mínimo: puede hacer una placa de una sola capa en casa y colocar puentes.
4) Puente de punto final agregado para terminar la línea en el último dispositivo.
5) Se agregó el puente de bloqueo RST para bloquear el reinicio del microcontrolador.
6) De manera similar a la cláusula 3, las placas secundarias del codificador y el controlador de la tira de LED están divorciadas.
7) Estoy esperando el primer pedido de prueba de placas de circuito impreso, mientras que solo los módulos principales (ITEAD Studio).


La placa secundaria del controlador de tira de LED

Vanity alrededor del RS-485

Ahora paso al maestro de la red. En términos de hierro, todo es simple allí, bueno, al menos eso creo. Tomé un adaptador USB-UART, conecté una placa pequeña con MAX485 y varias resistencias, y comencé a trabajar. Y pisó un rastrillo excelente, bastante documentado, pero para un principiante no era del todo obvio.

El MAX485 debe cambiarse entre recepción (baja en pines fijados ~ RE y DE) y transmisión (alta). Guiado por una lógica simple, utilicé la salida DTR del convertidor (en CP2102) para controlar el modo, tirando de él mediante programación. Y tengo una desgracia. El sistema de alguna manera funcionó solo con retrasos inaceptablemente grandes entre la recepción y la transmisión. Y todo porque el DTR cambia lentamente. Cuán lentamente, no tenía nada que medir, así que solo proporciono un enlace a un estudio de rastrillo más sano usando un osciloscopio.

Del mismo material, entendí lo siguiente: usar FT232 será lo menos doloroso, ya que tiene una conclusión, cuando el chip está configurado por defecto, está diseñado para cambiar los modos RS-485. En pocas palabras, aparece un alto nivel al transmitir a través de UART. Entonces, el clon chino Arduino Nano se extrajo de los contenedores, ~ RST está en cortocircuito a tierra, el cable está soldado a la pata 13 del FT232, y todo esto está conectado al MAX485. Funciona como un reloj. En la versión de "combate" del sistema, por supuesto, dicho diseño no se utilizará: la industria china se complace en ofrecer tableros confeccionados similares.

Lógica del sistema

Finalmente, a cómo se ve todo el proceso desde el punto de vista del maestro. Funciona con objetos de dispositivo, que pueden ser de control o ejecutivos. Los gerentes se dividen en reales ("hierro"), virtuales y temporizadores. El ejecutivo solo puede ser real.

Se necesitarán dispositivos de control virtual cuando se implemente una administración de sistemas más compleja, en particular, cuando se le adjuntará una interfaz web. También serán útiles para la integración con algo que aún no se me ocurrió. Sí, aquí, probablemente, debo decir que, en general, ese "dispositivo" está dentro del sistema.

Un dispositivo es un objeto de la clase Dispositivo. El conjunto mínimo de atributos es el nombre, el tipo y el indicador de uso. Además, según el tipo, se pueden agregar la dirección en el bus, el nombre del dispositivo esclavo, la prioridad de control, los valores iniciales de los registros y algunos otros atributos. Los principales métodos de la clase se relacionan con el trabajo con dispositivos reales: esto es leer y escribir registros.

Y ahora, habiendo decidido más o menos la estructura del programa del sistema, podemos comenzar la implementación. Actualmente, existe lo siguiente:
1) Módulo Comm485 que contiene una descripción de la clase Conn. Los métodos de clase son abrir y cerrar una conexión, enviar y recibir un paquete y verificar una suma de verificación.
2) el módulo Device485 contiene la clase de dispositivo descrita anteriormente.
3) el módulo de software principal.


Encoder Daughter Board

En realidad, se implementan dos cosas en el módulo principal. El primero es crear los objetos necesarios de la clase Dispositivo de acuerdo con el archivo de configuración. El segundo es directamente la lógica del sistema.

En el proceso

Actualmente, los siguientes trabajos:

1) Compilar una lista de actuadores involucrados.
2) Para cada artista, se compila una lista de los dispositivos de control involucrados.
3) Los valores de los registros del dispositivo de control con la prioridad más alta se registran en los registros del actuador y control, que tienen una prioridad más baja.

Es decir, supongamos que tenemos un codificador (hierro) con baja prioridad y un dispositivo de control virtual con alta prioridad. En modo de espera, el dispositivo virtual está deshabilitado. Cuando necesita ajustar la luz sin levantar el quinto punto del sofá, se activa un dispositivo virtual (por un corto período de tiempo) para proporcionar nuevos parámetros al intérprete y al codificador.

Pero lo más probable es que, después de una pequeña alteración del software, el modo principal sea el siguiente: hay dos dispositivos de control con la misma prioridad. Al cambiar los registros de uno de ellos, los valores se escriben en los registros del ejecutor y del otro administrador, que no tuvo cambios.

En realidad, por ahora. El proyecto está disponible en github., en la carpeta del host puede ver el código escalofriante de Python. Hay dos módulos (Comm485, Device485), el programa principal (host) y la carpeta cfg en la que se encuentran los archivos de configuración: configuración de una conexión UART y una lista de dispositivos.

La continuación ciertamente seguirá.

PD Ser víctima de la migración desde Habr, en una serie de posibilidades es limitada.

Source: https://habr.com/ru/post/es381907/


All Articles