"El destino tiene muchas formas ..." o automatizamos el control de una bombilla usando CANNY 3 tiny y un fotorresistor

En el último artículo sobre Habr, les conté cómo recibí el pequeño controlador Canny3 como regalo. "Parpadeamos" el LED, presionamos un botón. Sobre esto, en principio, fue posible terminar los experimentos.

Sin embargo, durante las últimas semanas he estado escuchando audiolibros sobre The Witcher y, por lo tanto, me he vuelto mucho más serio sobre Destination . Según la información proporcionada en el sitio web del fabricante, la familia de controladores CANNY está destinada principalmente a la automatización de diversos sistemas de automóviles y equipos especiales.

El problema es que nadie me dejará hurgar en un auto real con mis "manos doradas", y en general tengo miedo de los autos. Por lo tanto, tuve que comprar una pequeña lámpara de automóvil y una fotorresistencia especialmente para este artículo. Lo que no harás para no enojar al Destino.

Hoy conectaremos el controlador y la lámpara del automóvil a una fuente de alimentación de 12V, enviaremos un mensaje al puerto COM, automatizaremos la inclusión de la lámpara dependiendo de la luz y probaremos el controlador PWM de alta frecuencia.

¿También crees en el poder del Destino? Entonces eres bienvenido bajo cat.





Parte I: Introducción


Parte I: Introducción
Parte II: Componentes y precauciones
Parte III: Cómo escribir datos en el puerto COM
Parte IV: Conecte y programe la lámpara automática y el fotorresistor
Parte V: Intente reducir el brillo de la lámpara usando PWM
Parte VI: Conclusión

Al comienzo del artículo, le recuerdo No tengo mucha experiencia en electrónica de bricolaje. Hace muchos años incursioné en CraftDuino, el clon doméstico de Arduino. Y aparte de esas "manualidades" que hizo por míDrzugrikEsta es realmente mi experiencia en electrónica de bricolaje es limitada.

Aparentemente, conociendo mi amor por los desarrollos domésticos, decidí darle a Canny 3.

Incluso en el proceso de preparación del último artículo, me sorprendió que el controlador pueda alimentarse no solo desde 5V, sino también desde 12V, mientras que el voltaje en las salidas será el mismo que en entrada, y la corriente máxima por canal es de hasta 100 mA. Me pareció interesante, porque mi viejo CraftDuino no podía.

Por cálculos simples usando la fórmulaP=UIMe di cuenta de que la potencia máxima por salida del controlador será de alrededor de 1,2 vatios. Se decidió recoger una lámpara con reserva de marcha, por si acaso. La elección recayó en una bombilla LED de 0,9 W.

Sin embargo, todavía no quería quemar mi regalo de Año Nuevo sin gloria, y antes de conectarlo, decidí preguntar a los desarrolladores si entendía todo correctamente.
Para mi gran sorpresa, no solo me respondieron, sino que también sugirieron que si combina varias salidas, la potencia aumentará proporcionalmente. Después de eso, se decidió comprar algo más potente que la lámpara y la elección recayó en el ventilador del automóvil, que se inserta en el encendedor. Sin embargo, para no hacer "vinagreta" del artículo, decidí posponer las manipulaciones con el ventilador del automóvil hasta la próxima vez.


Parte II: equipo y precauciones


Entonces, al comienzo de los experimentos, tenía lo siguiente:

  • Dispositivo de carga y lanzamiento "Orion Vympel-55". Ya lo tenía y, afortunadamente, no solo puede cargar las baterías, sino también ser una fuente de alimentación en un amplio rango (incluyendo 12 V);



  • Autolamp LED "Skyway H3. SH3-9SMD-5050 W. " Según tengo entendido, la bombilla se puede usar en varios faros, pero no tengo dónde pegarla, así que elegí la potencia y la facilidad de conexión sin soldar;



    Por cierto, volviendo a la fórmula de cálculo de potencia, decidí medir las corrientes y asegurarme de que encajaba en los 100 mA permitidos. En teoría, la corriente de la bombilla debería serI=P/U=0.9/12=0,075A.
    Pero a juzgar por la medida, resultó un poco menos. Aunque tal vez acabo de hacer algo mal.



  • Fotoresistor FR-765. Lo elegí simplemente porque no había nada más en la tienda.



Bueno, por supuesto que tenía: un controlador, una placa de pruebas, cables, cocodrilos, etc.

En un artículo anterior sobre Canny 3, realmente elogié al controlador, pero resultó que hay una mosca en la pomada. La última vez no usé el paquete de cable incluido que viene con el kit, pero esta vez no podría prescindir de él.

Como uso muy poco un soldador, quería reducir su uso al mínimo vital. Por lo tanto, al final, reuní todos los circuitos en conexiones desmontables. Usé cables especiales (papá-papá, mamá-mamá, mamá-papá), placas de prueba y pinzas de cocodrilo.

Y si los desarrolladores del controlador no tienen la culpa del hecho de que en el proceso de pelar el cable tuve un par de cortes, entonces los momentos en que toda mi estructura cayó al suelo debido al hecho de que enganché el arnés "de madera", en parte a su conciencia.

Por un lado, un torniquete es algo bueno. Para instalar el controlador dentro del automóvil, creo que el arnés de cables es el correcto. Los cables que contiene están trenzados y si están bien retorcidos, entonces encajan completamente en los conectores "madre", mis cables de "placa". Por otro lado, como no es conveniente hacer experimentos con el cable con la placa de prueba, incluso una hermosa foto con el controlador en toda su extensión fue difícil debido a los "cables de roble".

Dije un poco más alto que no quería usar un soldador, pero al menos una vez tendrían que armarse.

Para medir la señal del fotorresistor, necesitamos "insertarla" en el convertidor analógico a digital (ADC) del controlador. Pero el hecho es que, a diferencia de, por ejemplo, mi viejo Craftduino. En el caso de Canny, resultó necesario poner un jersey.

Al principio, no leí cuidadosamente la documentación y pensé que las salidas 5 y 6 del controlador son las salidas de A5 y A6. Incluso escribí un programa e intenté durante mucho tiempo tomar lecturas. Naturalmente, no tuve éxito porque, por defecto, sin una preparación preliminar, los canales 5 y 6 funcionan como una entrada discreta normal.

Después de leer la documentación para el controlador con una "mente fresca", me di cuenta de que todavía tenía que soldar. No tienes idea de cómo tenía miedo de "arruinar" todo.
La última vez que intenté soldar algo en el circuito que hice por mí Drzugrik, Logré completar todos los condensadores con soldadura cerca del lugar de la soldadura.
Esta vez el proceso de soldadura fue simple. Fue suficiente poner con mucho cuidado una gota de soldadura en la pista.

El aspecto de mi puente de soldadura se puede ver en la foto a continuación:



He conectado solo la sexta salida al canal A6, no me atreví a soldar el quinto canal, para no llenar accidentalmente ambos puentes con soldadura.

Teóricamente, era posible prescindir de un soldador conectando el orificio y el terminal No. 6 con un cable. Pero eso sería terriblemente inconveniente.

La foto a continuación muestra la conexión del pin No. 5 y el pin ADC No. A5 con un cable de padre a padre: lo



último a lo que debe prestar atención antes de ponerse a trabajar.

¡Atención!No repita uno a uno, lo que describiré más adelante en el texto. No sea flojo para reemplazar las conexiones enchufables con soldadura, recoja cables más gruesos, lea la documentación. No soy un experto en estos asuntos, así que puse todo junto "lo mejor que pude". También le aconsejo que vigile cuidadosamente el peligro de incendio y que no deje el equipo desatendido. Me las arreglé para oler algunos cables ardientes un par de veces. Bueno, incluso en la fuente de alimentación había protección contra cortocircuitos (también lo arreglé). Por lo tanto, tenga cuidado.

Además, no olvide que a pesar del hecho de que los voltajes y las corrientes que tenemos son pequeños, aún tocar las partes vivas bajo voltaje puede ser doloroso (especialmente si las golpea con una parte herida del cuerpo) .


Parte III: Cómo escribir datos en el puerto COM


Para calibrar de alguna manera nuestro sensor de luz ambiental, necesitamos comprender qué valores envía al controlador dependiendo del nivel de luz. Para hacer esto, necesitamos enviar datos desde el ADC al monitor. Al trabajar con Arduino y sus clones para resolver tales problemas, utilicé un monitor de puerto COM.

En el caso de Canny 3 tiny, el proceso de lectura de datos desde un puerto COM virtual no es mucho más complicado que para Arduino. Pero hay una diferencia clave. El entorno de desarrollo CannyLab no tiene su propio monitor de puerto COM.
Solía Hterm porque es multiplataforma, ligero y no requiere instalación. Pero puedes usar cualquier otro.

Diré aún más, nada nos impedirá usar el monitor de puerto COM Arduino IDE.

Todo salió de la caja en mi sistema Windows 10 y no tuve que instalar los controladores para el puerto COM virtual por separado. Pero por si acaso, diré que el controlador parece estar incluido con el entorno de desarrollo CannyLab (está en la carpeta drv \ canny3tiny_vcp).

Para no explicar más cómo funcionan los bloques de gráficos asociados con el envío de datos al puerto COM virtual USB, daré un ejemplo simple.

Hoy, como entrenamiento, enviaremos el mensaje "HABR" utilizando el controlador. Primero debe descargar el IDE CannyLab. Se puede encontrar fácilmente en el sitio web oficial del desarrollador.

Por cierto, usé CannyLab v 1.42, pero creo que en versiones anteriores no habrá problemas con el rendimiento de los diagramas.

El proceso de escribir software en el nuevo controlador y los principios básicos para trabajar con Cannylab que describí en el Capítulo 3 del último artículo .

Cree un nuevo gráfico, seleccione Canny 3 pequeño en el cuadro de diálogo. Y transferimos bloques, constantes y registros al diagrama, como en la siguiente captura de pantalla. Por supuesto, no es necesario transferir etiquetas de texto; nada depende de ellas durante la ejecución del diagrama.



Si no tiene ganas de mover bloques usted mismo, puede descargar los diagramas de este artículo usando GitHub.

Cabe señalar que enviar un mensaje al puerto COM funciona un poco extraño y tiene que escribir letras en un par de caracteres en un espejo, pero puede acostumbrarse.

Lo explicaré en partes.

En el bloque "Configuración de parámetros"configuramos la configuración del controlador USB VCP. Primero, habilite el modo de transferencia en el puerto COM virtual y luego establezca la longitud del mensaje transmitido. En nuestro caso, 6 caracteres, incluido el avance de línea.

En el bloque "Texto del mensaje", escribimos el texto del mensaje en constantes (no olvide cambiar al modo "chr") y transferimos estas constantes a los registros de controladores correspondientes. Una vez más, llamo su atención sobre el hecho de que escribimos el mensaje en el orden inverso, tanto en los pares de símbolos como en los registros del conductor.

Último bloque "Transferencia de mensajes"Envía con una frecuencia especificada nuestro mensaje al puerto COM. Para esto usamos un bloque PWM. No lo confunda con el RF PWM, que usaremos al conectar la lámpara. En este caso, el bloque genera la mitad del tiempo "0" y la segunda mitad "1". Puede "jugar" con el tamaño del período y llenar para aumentar o disminuir la frecuencia de envío de mensajes.

Es necesario conectar un LED verde a este bloque PWM para verificar el funcionamiento del controlador. Si todo está en orden, el LED parpadeará con la frecuencia de enviar un mensaje.

Cómo escribir un programa en el controlador, ya lo dije en un artículo anterior . Sin embargo, en el pasado he aprendido otro truco genial.

Cuando conectamos el controlador a la computadora, ingresa al modo de grabación del programa. Anteriormente, para pasar al modo de tiempo de ejecución, quité el controlador de la computadora y puse la carga USB en él.

Resultó que hay una manera más fácil. Después de conectar el controlador al puerto USB de la computadora y hacer clic en el botón "Conectar" en CannyLab , vaya al menú "Dispositivo" y seleccione "Ejecutar" .



El controlador comienza a ejecutar el programa grabado, recibiendo energía del puerto USB. Además, después de eso, el controlador estará disponible en el monitor del puerto COM. Es cierto que para volver al modo de grabación del programa, será necesario quitar el controlador y volver a insertarlo en el puerto USB de la computadora.

Y aquí está nuestro "HABR" en el monitor de puerto COM Hterm. Presta atención a la velocidad de transferencia de datos y otras configuraciones.



Y este es el monitor del puerto COM Arduino IDE:



la foto muestra cómo funciona el controlador después de grabar el diagrama:



el LED rojo indica que se está recibiendo energía a través del puerto USB de la computadora y el verde "parpadea" al ritmo de los mensajes transmitidos a través del puerto USB COM virtual.


Parte IV: conectamos y programamos una lámpara de automóvil y un fotorresistor.


Para comenzar, consideraremos la opción más simple. Simplemente conecte la lámpara al terminal No. 1 del controlador y la fotorresistencia al terminal No. 6 (ADC).

Todo es bastante simple, pero por si acaso, dibujé un diagrama:



Pero aquí se ve en vivo:



"-" y "+" de la fuente de alimentación que conectamos a los terminales correspondientes de Canny 3 pequeño, el pin No. 1 está conectado a la carcasa de la lámpara, y la "cola" de la lámpara con un plus en el tablero del tablero.

Con un fotorresistor, también, todo es simple. Además, llevamos la placa desde el bus a la placa, y el signo negativo va al pin No. 6 del controlador, que previamente conectamos con el puente al ADC.

Ya escribí anteriormente que toda mi estructura se cayó un par de veces de la mesa. Por lo tanto, más adelante en las fotos puede haber ligeras diferencias en cuanto a los colores de los conductores y los puntos de su entrada en el tablero.

Ahora escribiremos un programa.



Considere el nuevo día que nosotros bloqueamos.

Comencemos con el bloque "Obtener el valor del ADC y convertirlo en suites" .
En este bloque, traducimos los valores que el ADC (0 a 1023) nos puede dar en iluminación (lux).

Necesitamos hacer una medición de iluminación cuando es ligera y una medición en condiciones más oscuras.

En consecuencia, en el "valor de" grabé la lectura mínima de ADC "0", y en el "resultado de" el valor cero del nivel de iluminación.

En el "valor de" grabé las lecturas de ADC = 20, y la iluminación correspondiente igual a 300 lux, ingresé el "resultado de" .

No tengo una descripción detallada de los parámetros de la fotorresistencia, pero sospecho que no tiene una característica completamente lineal, pero esto es suficiente para nosotros ahora.

Verifique previamente cómo se realiza el diagrama en el simulador. En más detalle sobre el trabajo en el simulador CannyLab que escribí aquí .

Esto es lo que terminé con:



Imagine que la fotorresistencia pasa un valor de 10 al ADC. El bloque "Pantalla (MAP)"Esto es esencialmente una escala lineal. Diez es exactamente la mitad de la escala de nuestra escala, lo que significa que la salida será la mitad del rango de 0 a 300, es decir 150. Esto está por debajo del nivel especificado de 300 lux. Por lo tanto, uno se envía al registro de canal No. 1 (salida No. 1) y la lámpara se encenderá . Pero no se encenderá de inmediato, pero solo si está oscuro durante al menos un segundo (1000 milisegundos).

Para comprender qué mensaje recibiremos en el puerto COM, cambié la visualización de los valores en el simulador a formato hexadecimal.



Considere el "registro de configuración de mensajes VCP D1: D0 , recibe el valor 3130. Como recordamos, este es un par de caracteres, cada parte del cual representa un código de caracteres hexadecimales. Resulta que 31h es el código de caracteres "1" en ASCII, 30 es el código cero en ASCII.

En el registro de instalación de mensajes "VCP D3: D2 , tendremos los caracteres" 0 "y" 5 ". Recopilamos los valores de los pares de caracteres en el orden de D0 a D3 que obtenemos: "0", "1", "5", "0". Así que obtuvimos nuestro 0150 lux.

Pero como dicen "ni un solo simulador ...". Veamos qué pasa en la práctica.

Medición bajo la luz de la lámpara y la luz natural (iluminación combinada): las



lecturas del medidor de luz de fábrica y nuestro medidor casero coinciden casi perfectamente.

Medición a la luz del día:



extremadamente peor.

Esto probablemente se deba a la no linealidad de las características del fotorresistor, y también porque establecemos el límite de escala inferior en cero, pero no complicaremos el diagrama para aumentar la precisión de la medición; para nuestro ejemplo, lo principal fue comprender el principio general de obtener valores de iluminación. Y el aumento de la precisión se puede retrasar hasta la implementación de estos proyectos en el automóvil o en el hogar.

Verificamos el funcionamiento del circuito, cerramos el sensor con un dedo y luego retiramos el dedo.



Y ahora hay una opción cuando está oscuro en la habitación:



la lámpara está encendida. Todo funciona como deberia.


Parte V: Intentando reducir el brillo de la lámpara usando PWM


Vamos a complicar un poco el esquema cambiando el brillo de la lámpara. Para hacer esto, necesitamos un PWM de alta frecuencia (RF PWM), en Canny 3 tiny se implementa en las salidas No. 3 y No. 4.
Decidí usar la salida No. 4.

El esquema de conexión permanecerá prácticamente sin cambios. Simplemente, en lugar de la salida No. 1, conectamos la salida No. 4 a la lámpara,



así es como se ve en el ensamblaje. La diferencia es que, en lugar de un cable blanco, el marco ahora es azul.



El diagrama tampoco ha cambiado mucho.



No pintaré el diagrama en detalle. Los principales cambios en la configuración de la salida 4, que utilizamos para PWM. En esta sección, debemos establecer el "Registro de configuración de relleno"toma valores de 2 a 255 microsegundos, decidí no arriesgarme y elegí 254. Tenga en cuenta que está instalado para dos canales a la vez (No. 3 y No. 4). Luego escribimos "1" en el "Registro de habilitación de canal PWM No. 4" , incluyendo el PWM de nuestra bombilla.

En el bloque “Encender la lámpara en modo PWM (con bajo brillo)”, lo nuevo para nosotros es solo “Registrarse para configurar el canal de llenado No. 4, μs” . Escribiremos el valor “10” en él, siempre que el nivel de iluminación sobre el fotosensor sea inferior a 250 lux, en dentro de 1 segundo

La foto a continuación muestra que la lámpara se enciende, pero brilla tenuemente.



Si desea que la lámpara brille más, solo necesita cambiar el valor de la constante "10" a cualquier número mayor. Por ejemplo, puede tomar el número 127, en nuestro caso es la mitad del tiempo que lleva completar el período RF PWM, lo que significa aproximadamente la mitad del brillo de la lámpara.



Cabe señalar que el RF PWM con esta lámpara funciona de manera bastante notable. Aquí hay tres fotos: en la primera, establecemos el valor en el "Registro para llenar el número de canal 4" a 10 μs, en la segunda - 110 μs, a la derecha - 210 μs.



En principio, la lámpara automática de nuestro ejemplo, según tengo entendido, se usa en señales de posición y, a veces, en faros antiniebla de automóviles.
Creo que si refinamos el esquema y el diagrama, entonces sería posible implementar la inclusión de la retroiluminación con poca luz en máquinas más antiguas. Es cierto que debe considerar el efecto de la iluminación artificial por la noche. De modo que en las carreteras, en los túneles y desde los faros de los autos que se aproximan, la lámpara no se apagó. O sería posible controlar la lámpara en el compartimento de pasajeros para que, por ejemplo, las lámparas en las puertas del Zhiguli o Niva no siempre se enciendan cuando se abren.


Parte VI: Conclusión


En el proceso de escribir este artículo, experimenté una fuerte sensación de nostalgia.
Mientras estudiaba en el instituto, mi amigo y compañero de clase Seryoga tenía un elegante sedán azul de la marca VAZ 2107. Lo que no hizo con él: conectará algún tipo de manguera (para aumentar el impulso), instalará un ventilador en el compartimento de pasajeros para que se encienda con un botón separado, luego hará que el automóvil arranque con solo presionar un botón (solo con la llave girada encendido). En general, él simplemente no "sintonizó" su "golondrina". Han pasado muchos años desde entonces, mi amigo se mudó a un automóvil más sólido, pero tengo miedo de imaginar qué haría con su Zhiguli si obtuviera este controlador hace 10 años.

Gracias a este artículo, también recordé mi Destino. Después de todo, estudié durante muchos años como ingeniero de automatización, pero no trabajé un día exclusivamente en mi especialidad.
Resulta que es genial sumergirse en el mundo del bricolaje. En el proceso de ensamblar los circuitos más de una vez "atascados", enciende y apaga la bombilla y el LED con un botón. Es una sensación agradable cuando algo funciona según lo previsto. También me di cuenta de que programar un controlador usando diagramas es una tarea más meditativa que escribir código en el IDE de Arduino. Una percepción completamente diferente del programa.

Mientras escribía este artículo, me pedí una versión de Canny 3 tiny sin mazo de cables. Ahora descansaré un poco y escribiré un artículo sobre la instalación de este controlador en una placa de pruebas, y por sí mismo analizaremos algunos ejemplos más de automatización de iluminación con su ayuda.

, , .

UPD:
, , :


  1. «, , – !» CANNY 3 tiny.
  2. « ...» (CANNY Arduino) Raspberry PI.
  3. « ?» bluetooth Xamarin (Android).

All Articles