Suivi de la lumière et évitement des robots basés sur Arduino: 5 étapes

Suivi de la lumière et évitement des robots basés sur Arduino: 5 étapes

Table des matières:

Anonim

C'est un projet simple qui suit ou évite la lumière.

J'ai fait cette simulation dans Proteus 8.6 pro.

Composants requis: -

1) Arduino uno.

2) 3 LDR.

3) 2 moteurs à engrenages en courant continu.

4) Un servo.

5) Trois résistances 1k.

6) un pont en H l290D

7) Un interrupteur marche / arrêt pour changer les conditions du programme

8) Battry 9v et 5v

Provisions:

Étape 1: Code Ardunio

Améliorations: _

Le code Arduino est modifié un peu plus tard le 23 février 2016

Ce code est hautement commenté, je ne veux pas expliquer, mais si vous avez besoin d'aide, n'hésitez pas à me contacter à ([email protected])

Remarque:-

J'utilise deux conditions dans ce programme

1er pour la lumière suivante.

2e pour éviter de la lumière.

Dans la mesure où ces conditions sont satisfaites, Robot suivra ou évitera la lumière.

Ceci est la valeur minimale de LDR que je choisis. Dans la lumière normale, sa plage est comprise entre 80 et 95, mais à mesure que son intensité augmente, de plus en plus de tensions lui sont induites, alors qu’il fonctionne sur le principe du diviseur de tension.

int a = 400; // Valeur de tolérance

Étape 2: Fichiers Proteus

Pour le téléchargement de la bibliothèque Arduino à partir de ce lien

Étape 3: Comment fonctionne votre pont en H

Le L293NE / SN754410 est un pont en H très basique. Il dispose de deux ponts, l'un à gauche de la puce et l'autre à droite, et peut contrôler 2 moteurs. Il peut gérer jusqu'à 1 ampère de courant et fonctionner entre 4,5V et 36V. Le petit moteur à courant continu que vous utilisez dans ce laboratoire peut fonctionner en toute sécurité à basse tension, de sorte que ce pont en H fonctionne parfaitement. Le pont en H possède les broches et caractéristiques suivantes: La broche 1 (1,2EN) active et désactive notre moteur, qu’il soit HIGH ou LOWPin 2 (1A) est une broche logique pour notre moteur (l’entrée est HIGH ou LOW). 3 (1Y) correspond à l’une des bornes du moteurPin 4-5 correspond à la massePin 6 (2Y) correspond à l’autre borne du moteurPin 7 (2A) correspond à une broche logique de notre moteur (l’entrée est HIGH ou LOW) Broche 8 (VCC2) est l’alimentation électrique de notre moteur, il convient de lui attribuer la tension nominale de votre moteur. Les broches 9 à 11 ne sont pas connectées, car vous n’utilisez qu’un moteur dans ce laboratoire. Les bornes 12-13 sont mises à la terre. Les bornes 14-15 sont non connectées. connecté à 5V. Ci-dessus est un schéma du pont en H et quelles broches font quoi dans notre exemple. Le schéma comprend une table de vérité indiquant le fonctionnement du moteur en fonction de l'état des broches logiques (définies par notre Arduino).

Dans ce projet, la broche d'activation se connecte à une broche numérique de votre Arduino afin que vous puissiez l'envoyer en position HIGH ou LOW et mettre le moteur en marche ou à l'arrêt. Les broches logiques du moteur sont également connectées aux broches numériques désignées sur votre Arduino afin que vous puissiez l'envoyer HIGH et LOW pour que le moteur tourne dans un sens, ou LOW et HIGH pour le faire tourner dans l'autre sens. La tension d'alimentation du moteur est connectée à la source de tension du moteur, qui est généralement une alimentation externe. Si votre moteur peut fonctionner sur 5 V et moins de 500 mA, vous pouvez utiliser la sortie 5 V de l’Arduino. La plupart des moteurs nécessitent une tension et une consommation de courant supérieures, vous aurez donc besoin d'une alimentation externe.

Connecter le moteur au pont en H Connecter le moteur au pont en H, comme indiqué dans la deuxième image.

Ou, si vous utilisez une alimentation externe pour l’Arduino, vous pouvez utiliser la broche Vin.

Étape 4: Comment fonctionne LDR

La première chose qui peut nécessiter des explications supplémentaires est l’utilisation des résistances dépendantes de la lumière. Les résistances dépendantes de la lumière (ou LDR) sont des résistances dont la valeur change en fonction de la quantité de lumière ambiante, mais comment pouvons-nous détecter une résistance avec Arduino? Bien, vous ne pouvez pas vraiment, cependant vous pouvez détecter des niveaux de tension en utilisant les broches analogiques, qui peuvent mesurer (en utilisation de base) entre 0 et 5V. Maintenant, vous vous demandez peut-être «Comment convertissons-nous les valeurs de résistance en variations de tension?», C’est simple, nous fabriquons un diviseur de tension. Un diviseur de tension prend une tension et en sort ensuite une fraction proportionnelle à la tension d'entrée et au rapport entre les deux valeurs de résistances utilisées. L'équation pour laquelle est:

Tension de sortie = Tension d'entrée * (R2 / (R1 + R2)) Où R1 est la valeur de la première résistance et R2 la valeur de la seconde.

Maintenant, cela pose toujours la question «Mais quelles sont les valeurs de résistance du LDR?», Bonne question.

Plus la quantité de lumière ambiante est faible, plus la résistance est élevée, plus la lumière ambiante est élevée, plus la résistance est faible. Maintenant, pour les LDR en particulier, la plage de résistance que j’utilisais allait de 200 à 10 kilo ohms, mais cela change pour différents, alors assurez-vous de regarder où vous les avez achetés et essayez de trouver une fiche technique ou quelque chose du genre. Si R1 est en fait notre LDR, rapportons cette équation et faisons un peu de math-e-magic (magie électrique mathématique).Maintenant, nous devons convertir ces valeurs de kilo ohms en ohms:

200 kilo-ohms = 200 000 ohms 10 kilo-ohms = 10 000 ohms

Donc pour trouver quelle est la tension de sortie quand on est en noir, on connecte les nombres suivants:

5 * (10000 / (200000 + 10000))

L'entrée est 5V car c'est ce que nous obtenons de l'Arduino.

Ce qui précède donne 0,24 V (arrondi). Maintenant, nous trouvons quelle est la tension de sortie en luminosité de crête en utilisant les nombres suivants: 5 * (10000 / (10000 + 10000)) Et cela nous donne exactement 2,5V.

Donc, ce sont les valeurs de tension que nous allons entrer dans les broches analogiques de l’Arduino, mais ce ne sont pas les valeurs qui seront vues dans le programme, "Mais pourquoi?", Vous pouvez demander.

L'Arduino utilise une puce analogique-numérique qui convertit la tension analogique en données numériques exploitables. Contrairement aux broches numériques de l'Arduino qui ne peuvent lire que les états HIGH ou LOW (0 et 5 V), les broches analogiques peuvent lire de 0 à 5 V et les convertir en une plage de nombres de 0 à 1023..

nous pouvons réellement calculer les valeurs lues par l’Arduino.

Comme ce sera une fonction linéaire, nous pouvons utiliser la formule suivante: Y = mX + C

Où; Y = Valeur numériqueOù; m = pente, (montée / course), (valeur numérique / valeur analogique) Où; C = Y interceptionL'interception Y est 0, ce qui nous donne: Y = mXm = 1023/5 = 204.6Par conséquent: valeur numérique = 204,6 * valeur analogique Ainsi, dans le noir, la valeur numérique sera: 204,6 * 0,24

Ce qui donne environ 49. Et en luminosité de crête ce sera: 204,6 * 2,5

Ce qui donne environ 511.

Maintenant, avec deux de ceux-ci configurés sur deux broches analogiques, nous pouvons créer deux variables entières pour stocker leurs valeurs deux et faire des opérateurs de comparaison pour voir laquelle a la valeur la plus basse, en tournant le robot dans cette direction.

Étape 5: