"The Destination a beaucoup de formes ..." ou nous automatisons le contrôle d'une ampoule à l'aide de CANNY 3 Tiny et d'une photorésistance

Dans le dernier article sur Habr, je vous ai expliqué comment j'avais reçu le petit contrôleur Canny3 en cadeau. Nous avons «clignoté» la LED, appuyé sur un bouton. Sur ce, en principe, il a été possible de terminer les expériences.

Cependant, depuis quelques semaines, j'écoute des livres audio sur The Witcher et je suis donc devenu beaucoup plus sérieux à propos de Destination . Selon les informations indiquées sur le site Internet du constructeur, la famille de contrôleurs CANNY est principalement destinée à l'automatisation de divers systèmes automobiles et équipements spéciaux.

Le problème est que personne ne me laissera fouiner dans une vraie voiture avec mes «mains d'or», et en général j'ai peur des voitures. Par conséquent, j'ai dû acheter une petite lampe de voiture et une photorésistance spécialement pour cet article. Ce que vous ne ferez pas pour ne pas irriter le Destin.

Aujourd'hui, nous allons connecter le contrôleur et la lampe de voiture à une alimentation 12V, envoyer un message au port COM, automatiser l'inclusion de la lampe en fonction de la lumière et essayer le contrôleur PWM haute fréquence.

Croyez-vous également au pouvoir de Destination? Alors vous êtes les bienvenus sous chat.





Partie I: Introduction


Partie I: Introduction
Partie II: Composants et précautions
Partie III: Comment écrire des données sur le port COM
Partie IV: Connecter et programmer la lampe automatique et la photorésistance
Partie V: Essayer de réduire la luminosité de la lampe à l'aide de PWM
Partie VI: Conclusion

Au tout début de l'article, je vous rappelle Je n'ai pas beaucoup d'expérience en électronique DIY. Il y a plusieurs années, j'ai essayé CraftDuino - le clone Arduino domestique. Et à part ces "métiers" qu'il a fait pour moiDrzugrikc'est en fait mon expérience dans l'électronique DIY est limitée.

Apparemment, connaissant mon amour pour les développements domestiques, j'ai décidé de donner Canny 3.

Même dans le processus de préparation du dernier article, j'ai été surpris que le contrôleur puisse être alimenté non seulement à partir de 5V, mais aussi à partir de 12V, tandis que la tension aux sorties sera la même que sur et le courant maximum par canal peut atteindre 100 mA. Cela m'a semblé intéressant, car mon ancien CraftDuino ne pouvait pas.

Par de simples calculs utilisant la formuleP=UI j'ai réalisé que la puissance maximale par sortie de contrôleur serait d'environ 1,2 watts. Il a été décidé de prendre une lampe avec une réserve de marche, au cas où. Le choix s'est porté sur une ampoule LED 0,9 W.

Cependant, je ne voulais toujours pas brûler mon cadeau du Nouvel An sans gloire, et avant de le connecter, j'ai décidé de demander aux développeurs si j'avais tout compris correctement.
À ma grande surprise, ils m'ont non seulement répondu, mais ont également suggéré que si vous combinez plusieurs sorties, la puissance augmenterait proportionnellement. Après cela, il a été décidé d'acheter quelque chose de plus puissant que la lampe et le choix s'est porté sur le ventilateur de voiture, qui est inséré dans l'allume-cigare. Cependant, afin de ne pas faire de «vinaigrette» à partir de l'article, j'ai décidé de reporter les manipulations avec le ventilateur automobile jusqu'à la prochaine fois.


Partie II: Équipement et précautions


Donc, au début des expériences, j'avais ce qui suit:

  • Dispositif de charge et de lancement "Orion Vympel-55". Je l'avais déjà et, heureusement, il peut non seulement charger les batteries, mais aussi être une source d'alimentation dans une large gamme (dont 12 V);



  • «Skyway H3. SH3-9SMD-5050 W». , , ;



    , , 100 . I=P/U=0.9/12=0,075A.
    . - .



  • -765. , .



Eh bien, bien sûr, j'avais: un contrôleur, une planche à pain, des fils, des crocodiles, etc.

Dans un article précédent sur Canny 3, j'ai vraiment fait l'éloge du contrôleur, mais il s'est avéré qu'il y a une mouche dans la pommade. La dernière fois, je n'ai pas utilisé le faisceau de câbles fourni avec le kit, mais cette fois, je ne pouvais pas m'en passer.

Comme j'utilise très mal un fer à souder, je voulais réduire son utilisation au minimum vital. Par conséquent, à la fin, j'ai rassemblé tous les circuits sur des connexions détachables. J'ai utilisé des fils spéciaux (papa-papa, maman-maman, maman-papa), des planches à pain et des pinces à crocodile.

Et si les développeurs du contrôleur ne sont pas à blâmer pour le fait que dans le processus de dénudage du câble, j'ai eu quelques coupures, alors les moments où toute ma structure est tombée au sol en raison du fait que j'ai accroché le harnais "en bois", en partie sur leur conscience.

D'une part, un garrot est une bonne chose. Pour installer le contrôleur à l'intérieur de la voiture, le faisceau de câbles, je pense, est juste. Les fils qui s'y trouvent sont toronnés et s'ils sont bien torsadés, alors ils s'insèrent complètement dans les connecteurs «mère», mes fils «planche à pain». D'un autre côté, comme il n'est pas pratique de faire des expériences avec le câble avec la planche à pain, même une belle photo avec le contrôleur tourné en plein visage était difficile à faire à cause des «fils de chêne».

J'ai dit un peu plus haut que je ne voulais pas utiliser de fer à souder, mais au moins une fois ils devraient s'armer.

Afin de mesurer le signal de la photorésistance, nous devons «l'insérer» dans le convertisseur analogique-numérique (ADC) du contrôleur. Mais le fait est que, contrairement, par exemple, à mon ancien Craftduino. Dans le cas de Canny, il s'est avéré nécessaire de mettre un pull.

Au début, je n'ai pas lu attentivement la documentation et pensais que les sorties 5 et 6 du contrôleur sont les sorties A5 et A6. J'ai même écrit un programme et essayé pendant longtemps de faire des lectures. Naturellement, je n'ai pas réussi car par défaut, sans préparation préalable, les canaux n ° 5 et 6 fonctionnent comme une entrée discrète normale.

Après avoir lu la documentation du contrôleur sur un "esprit neuf", j'ai réalisé que je dois encore souder. Vous n'avez aucune idée de la façon dont j'avais peur de «tout foutre».
La dernière fois que j'ai essayé de souder quelque chose dans le circuit que j'ai fait pour moi Drzugrik, J'ai réussi à remplir tous les condensateurs avec de la soudure près du lieu de soudure.
Cette fois, le processus de soudage était simple. Il suffisait de mettre très soigneusement une goutte de soudure sur la piste.

À quoi ressemble mon cavalier de soudure peut être vu sur la photo ci-dessous:



Je n'ai connecté que la 6ème sortie au canal A6, je n'ai pas osé souder le cinquième canal, afin de ne pas accidentellement remplir les deux cavaliers avec de la soudure.

En théorie, il était possible de se passer d'un fer à souder en connectant le trou et la borne n ° 6 avec un fil. Mais ce serait terriblement gênant.

La photo ci-dessous montre la connexion de la broche n ° 5 et de la broche ADC n ° A5 avec un fil de papa à papa:



la dernière chose à laquelle vous devez faire attention avant de vous mettre au travail.

Attention!Ne répétez pas un à un, ce que je décrirai plus loin sur le texte. Ne soyez pas paresseux pour remplacer les connexions enfichables par de la soudure, prenez des fils plus épais, lisez la documentation. Je ne suis pas un expert en la matière, j'ai donc tout rassemblé "du mieux que je pouvais". Je vous conseille également de surveiller attentivement les risques d'incendie et de ne pas laisser l'équipement sans surveillance. J'ai réussi à sentir quelques fils qui couvaient plusieurs fois. Eh bien, même dans l'alimentation, il y avait une protection contre les courts-circuits (je l'ai également arrangé). Par conséquent, soyez prudent.

N'oubliez pas non plus qu'en dépit du fait que les tensions et les courants sont faibles, toucher les parties sous tension sous tension peut être douloureux (surtout si vous les piquez avec une partie du corps blessée) .


Partie III: Comment écrire des données sur le port COM


Afin d'étalonner en quelque sorte notre capteur de lumière ambiante, nous devons comprendre quelles valeurs il envoie au contrôleur en fonction du niveau de lumière. Pour ce faire, nous devons sortir les données de l'ADC vers le moniteur. Lorsque je travaillais avec Arduino et ses clones pour résoudre de tels problèmes, j'ai utilisé un moniteur de port COM.

Dans le cas de Canny 3 Tiny, le processus de lecture des données à partir d'un port COM virtuel n'est pas beaucoup plus compliqué que pour Arduino. Mais il y a une différence clé. L'environnement de développement CannyLab ne possède pas son propre moniteur de port COM.
J'ai utilisé Hterm car il est multiplateforme, léger et ne nécessite pas d'installation. Mais vous pouvez en utiliser d'autres.

Je dirai encore plus, rien ne nous empêchera d'utiliser le moniteur de port COM Arduino IDE.

Tout a fonctionné sur la base de mon système Windows 10 et je n'ai pas eu à installer séparément les pilotes pour le port COM virtuel. Mais juste au cas où, je dirais que le pilote semble être intégré à l'environnement de développement CannyLab (il se trouve dans le dossier drv \ canny3tiny_vcp).

Afin de ne pas expliquer davantage le fonctionnement des blocs de graphiques associés à l'envoi de données au port COM virtuel USB, je vais donner un exemple simple.

Aujourd'hui, en séance d'entraînement, nous enverrons le message «HABR» à l'aide du contrôleur. Vous devez d'abord télécharger l'IDE CannyLab. Il peut être facilement trouvé sur le site officiel du développeur.

Soit dit en passant, j'ai utilisé CannyLab v 1.42, mais je pense que dans les versions précédentes, il n'y aura aucun problème avec les performances des diagrammes.

Le processus d'écriture d'un logiciel sur le nouveau contrôleur et les principes de base de l'utilisation de Cannylab I sont décrits dans le chapitre 3 du dernier article .

Créez un nouveau graphique, sélectionnez Canny 3 tiny dans la boîte de dialogue. Et nous transférons des blocs, des constantes et des registres dans le diagramme, comme dans la capture d'écran ci-dessous. Bien sûr, il n'est pas nécessaire de transférer les étiquettes de texte, rien ne dépend d'eux lors de l'exécution du diagramme.



Si vous n'avez pas envie de déplacer des blocs vous-même, vous pouvez télécharger les diagrammes de cet article à l'aide de GitHub.

Il convient de noter que l'envoi d'un message au port COM fonctionne un peu étrange et que vous devez écrire des lettres dans une paire de caractères dans un miroir, mais vous pouvez vous y habituer.

Je vais vous expliquer en partie.

Dans le bloc "Parameter Setting"nous définissons les paramètres du pilote USB VCP. Tout d'abord, activez le mode de transfert sur le port COM virtuel, puis définissez la longueur du message transmis. Dans notre cas - 6 caractères, y compris le saut de ligne.

Dans le bloc "Message Text", nous écrivons le texte du message en constantes (n'oubliez pas de passer en mode "chr") et transférons ces constantes dans les registres de pilotes correspondants. Encore une fois, j'attire votre attention sur le fait que nous écrivons le message dans l'ordre inverse, à la fois dans les paires de symboles elles-mêmes et dans les registres des pilotes.

Dernier bloc "Transfert de messages"Envoie avec une fréquence spécifiée notre message au port COM. Pour cela, nous utilisons un bloc PWM. Ne le confondez pas avec le RF PWM, que nous utiliserons lors de la connexion de la lampe. Dans ce cas, le bloc génère la moitié du temps «0» et la seconde moitié «1». Vous pouvez "jouer" avec la taille de la période et remplir pour augmenter ou diminuer la fréquence d'envoi des messages.

La connexion d'une LED verte à ce bloc PWM est nécessaire afin de vérifier le fonctionnement du contrôleur. Si tout est en ordre, la LED clignote avec la fréquence d'envoi d'un message.

Comment écrire un programme sur le contrôleur, je l'ai déjà dit dans un précédent article . Cependant, au cours du temps passé, j'ai appris un autre truc cool.

Lorsque nous connectons le contrôleur à l'ordinateur, il entre en mode d'enregistrement de programme. Auparavant, afin de passer en mode d'exécution, j'ai retiré le contrôleur de l'ordinateur et y ai bloqué le chargement USB.

Il s'est avéré qu'il existe un moyen plus simple. Après avoir connecté le contrôleur au port USB de l'ordinateur et cliqué sur le bouton "Connecter" dans CannyLab , allez dans le menu "Périphérique" et sélectionnez "Exécuter" .



Le contrôleur commence à exécuter le programme enregistré, en étant alimenté par le port USB. Après cela, le contrôleur sera également disponible sur le moniteur du port COM. Certes, pour revenir au mode d'enregistrement de programme, le contrôleur devra être retiré et réinséré dans le port USB de l'ordinateur.

Et voici notre «HABR» dans le moniteur de port COM Hterm. Faites attention à la vitesse de transfert des données et aux autres paramètres.



Et voici le moniteur du port COM Arduino IDE:



La photo montre comment le contrôleur fonctionne après avoir enregistré le diagramme:



la LED rouge signale que l'alimentation est reçue via le port USB de l'ordinateur et le vert "clignote" au rythme des messages transmis via le port COM USB virtuel.


Partie IV: Nous connectons et programmons une lampe de voiture et une photorésistance.


Pour commencer, nous considérerons l'option la plus simple. Connectez simplement la lampe à la borne n ° 1 du contrôleur et la photorésistance à la borne n ° 6 (ADC).

Tout est assez simple, mais juste au cas où, j'ai dessiné un diagramme:



Mais ici, ça a l'air en direct:



"-" et "+" de la source d'alimentation que nous connectons aux bornes correspondantes de Canny 3 minuscule, la broche n ° 1 est connectée au boîtier de la lampe, et la "queue" de la lampe avec un plus sur la planche à pain de la planche à pain.

Avec une photorésistance aussi, tout est simple. De plus, nous apportons la planche à pain du bus à la planche à pain, et le moins va à la broche n ° 6 du contrôleur, que nous avons précédemment connectée avec le cavalier à l'ADC.

J'ai déjà écrit ci-dessus que toute ma structure est tombée à quelques reprises de la table. Par conséquent, plus loin sur les photos, il peut y avoir de légères différences en termes de couleurs des conducteurs et des points de leur entrée dans la planche à pain.

Nous allons maintenant écrire un programme.



Considérez le nouveau jour que nous bloquons.

Commençons par le bloc «Obtenir la valeur de l'ADC et la convertir en suites» .
Dans ce bloc, nous traduisons les valeurs que l'ADC (0 à 1023) peut nous donner en éclairage (lux).

Nous devons faire une mesure de l'éclairage lorsqu'il fait clair et une mesure dans des conditions plus sombres.

En conséquence, dans la «valeur de», j'ai enregistré la lecture ADC minimale «0», et dans le «résultat de» la valeur zéro du niveau d'éclairage.

Dans la «valeur à», j'ai enregistré les lectures ADC = 20, et l'éclairage correspondant égal à 300 lux, je suis entré dans le «résultat à» .

Je n'ai pas de description détaillée des paramètres de la photorésistance, mais je soupçonne qu'elle n'a pas une caractéristique complètement linéaire, mais cela nous suffit maintenant.

Vérifiez à l'avance comment le diagramme est exécuté dans le simulateur. Plus en détail sur le travail dans le simulateur CannyLab que j'ai écrit ici .

Voici ce que je me suis retrouvé avec:



Imaginez que la photorésistance a passé une valeur de 10 à l'ADC Le bloc "Affichage (MAP)"il s'agit d'une mise à l'échelle essentiellement linéaire. Dix est exactement la moitié de l'échelle de notre échelle, ce qui signifie que la sortie sera la moitié de la plage 0 - 300, à savoir 150. C'est en dessous du niveau spécifié de 300 lux. Par conséquent, un est envoyé au registre de canal n ° 1 (sortie n ° 1) et la lampe s'allumera . Mais il ne s'allumera pas immédiatement, mais uniquement s'il fait sombre pendant au moins une seconde (1000 millisecondes).

Pour comprendre quel message nous recevrons dans le port COM, j'ai changé l'affichage des valeurs dans le simulateur au format hexadécimal.



Considérez le "registre de configuration de message VCP D1: D0 , la valeur 3130 y entre. Comme nous nous en souvenons, il s'agit d'une paire de caractères, dont chaque partie représente un code de caractère hexadécimal. Il s'avère que 31h est le code de caractère "1" en ASCII, 30 est le code zéro en ASCII.

Dans le registre d'installation des messages "VCP D3: D2 , nous aurons en conséquence les caractères" 0 "et" 5 ". Nous collectons les valeurs des paires de caractères dans l'ordre de D0 à D3 nous obtenons: "0", "1", "5", "0". Nous avons donc obtenu notre 0150 lux.

Mais comme on dit "pas un seul simulateur ...". Voyons ce qui se passe dans la pratique.

Mesure sous la lumière du lustre et la lumière naturelle (éclairage combiné): Les



lectures du posemètre d'usine et de notre fait maison coïncident presque parfaitement.

Mesure à la lumière du jour:



extrêmement pire.

Cela est probablement dû à la non-linéarité des caractéristiques de la photorésistance, et aussi parce que nous avons fixé la limite d'échelle inférieure à zéro, mais nous ne compliquerons pas le diagramme afin d'augmenter la précision de mesure; pour notre exemple, l'essentiel était de comprendre le principe général d'obtention des valeurs d'éclairage. Et l'augmentation de la précision peut être retardée jusqu'à la mise en œuvre de ces projets dans la voiture ou à la maison.

Nous vérifions le fonctionnement du circuit, fermons le capteur avec un doigt, puis retirons le doigt.



Et maintenant, il y a une option quand il fait juste noir dans la pièce:



la lampe est allumée. Tout fonctionne comme il se doit.


Partie V: essayer de réduire la luminosité de la lampe en utilisant PWM


Compliquons un peu le schéma en modifiant la luminosité de la lampe. Pour ce faire, nous avons besoin d'un PWM haute fréquence (RF PWM), dans Canny 3 tiny il est implémenté aux sorties n ° 3 et n ° 4.
J'ai décidé d'utiliser la sortie n ° 4.

Le schéma de connexion restera pratiquement inchangé. Simplement, au lieu de la sortie n ° 1, nous connectons la sortie n ° 4 à la lampe



. Toute la différence est qu'au lieu d'un fil blanc, le cadre est maintenant bleu.



Le diagramme n'a pas non plus beaucoup changé.



Je ne peindrai pas le diagramme en détail. Les principaux changements dans la configuration de la sortie 4, que nous utilisons pour PWM. Dans cette section, nous devons définir le "Registre des paramètres de remplissage"il prend des valeurs de 2 à 255 microsecondes, j'ai décidé de ne pas le risquer et j'ai choisi 254. A noter qu'il est installé pour deux canaux à la fois (n ° 3 et n ° 4). Ensuite, nous écrivons "1" dans le "registre d'activation de canal PWM n ° 4" , incluant ainsi le PWM de notre ampoule.

Dans le bloc "Allumer la lampe en mode PWM (avec faible luminosité)", la nouveauté pour nous est seulement "S'inscrire pour régler le canal de remplissage n ° 4, μs" Nous y inscrirons la valeur "10", à condition que le niveau d'éclairage au-dessus du capteur photo soit inférieur à 250 lux, en dans la seconde.

La photo ci-dessous montre que la lampe s'allume, mais elle brille faiblement.



Si vous voulez que la lampe brille plus, il vous suffit de changer la valeur de la constante «10» en un nombre plus grand. Par exemple, vous pouvez prendre le nombre 127, dans notre cas, c'est la moitié du temps qu'il faut pour remplir la période RF PWM, ce qui signifie environ la moitié de la luminosité de la lampe.



Il convient de noter que le RF PWM avec cette lampe fonctionne de manière assez notable. Voici trois photos: sur la première, nous fixons la valeur dans le "Registre pour remplir le canal numéro 4" à 10 μs, sur la seconde - 110 μs, à droite - 210 μs.



En principe, la lampe automatique de notre exemple, si je comprends bien, est utilisée dans les signaux de position et parfois dans les feux de brouillard des voitures.
Je pense que si nous affinons le schéma et le schéma, il serait possible de mettre en œuvre l'inclusion du rétro-éclairage en basse lumière sur les machines plus anciennes. Certes, vous devez tenir compte de l'effet de l'éclairage artificiel la nuit. Alors que sur les routes, dans les tunnels et depuis les phares des voitures venant en sens inverse, la lampe ne s'est pas éteinte. Ou il serait possible de contrôler la lampe dans l'habitacle afin que, par exemple, les lampes des portes du Zhiguli ou du Niva ne s'allument pas toujours à l'ouverture.


Partie VI: Conclusion


En écrivant cet article, j'ai ressenti un fort sentiment de nostalgie.
Pendant mes études à l'institut, mon ami et camarade de classe Seryoga avait une berline de marque VAZ 2107 bleu chic. Ce qu'il n'a juste pas fait avec lui: il attachera une sorte de tuyau (pour augmenter le boost), installera un ventilateur dans l'habitacle pour qu'il s'allume par un bouton séparé, puis il fera démarrer la voiture en appuyant sur un bouton (uniquement avec la clé tournée) allumage). En général, il n'a tout simplement pas «réglé» son «hirondelle». De nombreuses années se sont écoulées depuis lors, mon ami est passé à une voiture plus solide, mais j'ai peur d'imaginer ce qu'il ferait de son Zhiguli s'il obtenait ce contrôleur il y a 10 ans.

Grâce à cet article, je me suis également souvenu de ma destination. Après tout, j'ai étudié pendant de nombreuses années en tant qu'ingénieur en automatisation, mais je n'ai pas travaillé un jour uniquement dans ma spécialité.
Il s'avère que c'est tellement cool de plonger dans le monde du bricolage. Dans le processus d'assemblage des circuits plus d'une fois «coincé» en allumant / éteignant l'ampoule et la LED avec un bouton. C'est une sensation agréable lorsque quelque chose fonctionne comme prévu. Je me suis également fait une idée que la programmation d'un contrôleur à l'aide de diagrammes est une tâche plus méditative que l'écriture de code dans l'IDE Arduino. Une perception complètement différente du programme.

En écrivant cet article, je me suis commandé une version de Canny 3 tiny sans faisceau de câbles. Maintenant, je vais prendre un peu de repos et écrire un article sur l'installation de ce contrôleur dans une planche à pain, et à lui seul, nous analyserons quelques autres exemples d'automatisation d'éclairage avec son aide.

, , .

UPD:
, , :


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

All Articles