Robot à faire soi-même qui évite les obstacles à l'aide d'un microcontrôleur. Nous assemblons des robots automoteurs à l'aide d'Arduino. Assemblage du tableau de commande

Introduction

A l'époque hellénistique, sur l'île de Pharos se trouvait un phare sur lequel étaient installées quatre statues. Ces statues, se tournant à certains intervalles, chassaient les bouteilles ; la nuit, ils faisaient retentir des sons de trompette, avertissant les marins de la proximité du rivage.

5ème siècle avant JC Les œuvres de Platon expriment des idées liées à la pensée humaine et à la mécanique des machines. Le brillant philosophe et mathématicien Archytas de Tarente, ami de Platon, conçoit une colombe en bois capable de voler et contrôlée par un jet de vapeur.

1495 Dessins de Léonard de Vinci projet détaillé homme mécanique capable de bouger les bras et de tourner la tête. Le mécanisme ressemble à un chevalier en armure.

Qu’ont en commun toutes ces « inventions » ? Le fait que l’homme ait essayé de créer des objets qui pourraient exister dans notre monde de manière aussi autonome que les êtres vivants, ou même penser.

Les temps changent, les technologies changent. Mais l’homme n’a pas abandonné l’idée de se faire des « serviteurs mécaniques » capables de penser et d’agir. différentes tâches. Le nom moderne de ces appareils est robots.

Buts, objectifs et salutations

Bonjour, chers chats radio et chats radio ! Puisque je suis moi-même encore un chaton, tant dans le domaine de la radio amateur que dans le domaine de mon âge physique, les appareils que je crée doivent être destinés aux enfants et servir de jouet (et en général, cet article n'intéressera que débutants). Et vous avez probablement déjà deviné ce qui servira de jouet. Que fera-t-il ? Hum... Ah ! Et laissez-le suivre la ligne tracée, car il suit presque un chemin donné ! (vous pouvez lui faire transporter des sandwichs du réfrigérateur à son lieu de travail, pour ne pas se laisser distraire de son activité préférée :)) Et ainsi, nous nous sommes rapprochés des objectifs de mon travail, ou plutôt objectifs:

  • Créez un robot (modèle agissant) qui suivra une ligne tracée sur une feuille de papier blanche.

Tâches :

  • Création d'un schéma de circuit
  • Création d'un programme pour la plateforme créée
  • Assemblage du robot selon le schéma
  • Test, débogage
  • Analyse des résultats

Création d'un modèle de robot fonctionnel

Donc, création d'un schéma de circuit :

Le schéma initial ressemble à ceci :

La partie principale du circuit est un MCU 8 bits de la méga famille d'Atmel. C’est lui qui remplit la fonction de contrôleur du comportement du robot. Il contient un programme. Il reçoit les signaux de deux capteurs - les phototransistors L32P3C (tous les autres peuvent être utilisés, à condition qu'ils réagissent à la lumière). Lorsque le phototransistor est allumé, il laisse passer le courant et une impulsion apparaît à la sortie du MK. MK, ayant reçu le signal haut niveau, selon qu'il y a un signal sur un autre phototransistor, envoie un signal aux entrées du driver de moteur L293D, qui amplifie ces signaux (puisque les broches MK ne sont pas capables de supporter un courant supérieur à 20 mA) et les transmet au moteurs M1 et M2, qui tournent. Ensemble Z1, C1 et C2 fréquence d'horloge MK, dans dans ce cas il est réglé sur 4 MHz, ce qui signifie que le contrôleur effectuera 4 millions d'opérations par seconde. Tout le monde le sait une bonne nutrition- un gage de santé, donc C3, C4 et VR1 agissent comme un stabilisateur de tension pour éliminer les interférences indésirables.

Comment fonctionneront les capteurs ? Tout le monde sait que le noir absorbe presque tout le spectre des ondes lumineuses et que le blanc le reflète donc lorsque les capteurs sont situés au-dessus. ligne noire, alors aucune lumière ne les atteindra, et lorsque les capteurs sont situés au-dessus d'une surface lumineuse, alors il y aura, et par conséquent, un signal viendra du capteur.


Bien sûr, ce n'est pas le cas schéma final, les améliorations apportées à certains blocs seront présentées ci-dessous.

Algorithme de travail :

L'algorithme de fonctionnement est assez simple (on suppose que les capteurs sont situés différents côtés lignes)

Petites précisions :

Si la section de la ligne sur laquelle se trouve le robot est droite, alors un signal sera envoyé par les deux capteurs.

Les deux moteurs doivent tourner en conséquence.

Si une section de la ligne est dirigée vers la gauche, il n'y aura aucun signal au niveau du capteur gauche.

Ensuite, vous devez appliquer une tension au moteur droit.

S'il n'y a aucun signal sur le capteur droit, un virage à droite a lieu.

Naturellement, vous devez faire tourner le moteur gauche.

En fait, développement de programmes.

Le langage de programmation C, répandu et puissant, a été choisi comme langage de développement.

Je vais l'analyser, uniquement le bloc principal, voir tout le code ci-dessous.

tandis que (1)
{
PORTC.0 = PIND.0 ;
PORTC.2 = PIND.1 ;
}

Il n'y a pas d'option ici lorsque le robot termine le robot, ce qui ne correspond pas à l'algorithme décrit ci-dessus, car il n'existe malheureusement pas de systèmes parfaits ; Par conséquent, cette pièce a été retirée afin que le robot ne s'arrête pas brusquement sans raison.

En chargeant du port D (responsable des capteurs) vers les broches nécessaires du port C (il est responsable du mouvement du robot), nous forçons le robot à répondre à la fois à des impulsions uniques provenant de différents capteurs et aux deux ensemble.

Nous arrivons donc à assembler le robot selon le schéma.

Assemblage du tableau de commande.

La carte de contrôle est une carte dotée d'un microcontrôleur qui contrôlera le comportement du robot. Son schéma :

Comme vous pouvez le constater, le circuit est simple et peut être assemblé en peu de temps. Résultat final :

Assemblage du stabilisateur de tension et du pilote de moteur.

Sur le schéma c'est :

Le montage ne prend pas non plus beaucoup de temps, voici ce que j'ai obtenu :

Assemblage du bloc capteur.

Le bloc capteur est chargé de recevoir des informations sur le monde. Sur le schéma c'est :

Le circuit est si simple qu’il peut être assemblé en 3 minutes. Résultat final :

Après avoir connecté tous les blocs, nous obtenons :


Naturellement, je n’oblige personne à assembler un robot de cette manière particulière ; c’est juste que l’assembler de cette manière fournit une sorte de systématisation « adulte ».

Tests, débogage.

À ma grande surprise, la carte de commande et la carte stabilisatrice de tension n'ont pas nécessité de débogage. Mais la carte pilote du moteur, ou plutôt les moteurs eux-mêmes, et l'unité de capteur ont compensé cette perte.

Dans l’unité pilote de moteur, les moteurs nécessitaient un débogage. Le problème est qu'au départ j'ai mal calculé la puissance des moteurs (ce que je ne vous conseille pas de faire) et j'ai décidé que cette conception me suffirait :

Naturellement, j'avais tort. Le robot ne se contentait pas de rouler lentement, il restait simplement immobile.

En conséquence, j'avais besoin de boîtes de vitesses. Je n'ai trouvé aucun modèle approprié ni en magasin ni sur Internet, j'ai donc dû les « arracher brutalement » de la voiture radiocommandée et les ajouter au design.

Après les avoir ajoutés à la conception, le robot a commencé à « voler ». Il conduisait si vite que parfois il manquait la route. Comment je l'ai corrigé est écrit ci-dessous.

Capteurs de débogage

Probablement, pas un seul capteur n'a jamais fonctionné immédiatement sans débogage. Mon cas ne fait pas exception. Initialement, les capteurs réagissaient même à une lumière faible. Par conséquent, vous devez créer un régulateur de sensibilité. Le dispositif a donc été complété :

Des résistances variables vous permettent d'ajuster la sensibilité. Ensuite, vous pouvez mesurer la résistance résistance variable et installez-le déjà permanent. À propos, la résistance optimale dans mon cas est de 9,1 kOhm. Des LED ont également été ajoutées, ce qui a permis aux capteurs de fonctionner même dans des pièces sombres. Résultat final :

Débogage programmes

Comme mentionné ci-dessus, le robot roulait trop vite, il est donc nécessaire de réduire la vitesse du robot. Il me semblait déraisonnable de faire cela avec du matériel, j'ai donc effectué un réglage de la vitesse qui rappelle le réglage utilisant la modulation de largeur d'impulsion.

La fonction a été développée :

void PWM (vecteur de caractères non signé)

Retour ;

Un radioamateur expérimenté dira que ce n'est pas du PWM, et il aura raison. Mais quand même cette fonction vous permet d'ajuster la vitesse du robot. (voir le code final ci-dessous dans la liste des fichiers)

Et maintenant, lorsque l'assemblage et le débogage sont terminés, il est temps de vérifier la fonctionnalité du robot (il y avait de la musique en arrière-plan, mais YouTube l'a supprimée =()

Analyse des résultats

Une fois le travail terminé, vous devez résumer. Alors, qu’ai-je réussi ?

  • Création d'un programme.
  • Création d'une plateforme électromécanique. Regardons ce point de plus près. L'EMF final s'est avéré tel qu'il peut être utilisé pour résoudre de tels problèmes. tâches simples comme : en passant par un labyrinthe, à la fois bidimensionnel et tridimensionnel, en suivant une source de lumière, il peut dessiner (il suffit d'attacher un feutre sur le corps), le robot peut même participer à de tels concours de robotique comme le Kegelring.
  • Débogage du système.
  • Et surtout, le robot se déplace le long de la ligne.

Conclusion

En conclusion, il faut absolument dire quelque chose. Et je dirai ceci :

C'est le cas :

  • Financièrement cher

Cet article montre la fabrication robot simpleéviter les obstacles sur la carte Xboard v2.0. Ce tableau bon pour les petits robots intelligents car il est compact et dispose de quatre contrôleurs de moteur CC, peut être flashé via USB et possède de nombreuses autres fonctions. Il est également très facile à apprendre et à utiliser. xAPI est un ensemble de fonctions C conçues pour résoudre des problèmes complexes. tâches du programme, comme travailler avec PWM, écran LCD, télécommande etc. Très bon et facile pour les débutants. Sa conception est ouverte, donc si vous ne souhaitez pas acheter Xboard v2.0, vous pouvez le fabriquer vous-même.

Le but de notre robot est simple : vous devez vous déplacer n'importe où, en évitant les obstacles. La tâche est simple et le robot l’exécute en toute autonomie. Il possède un cerveau qui lit les informations des capteurs, prend des décisions et contrôle les moteurs.

En créant un robot, vous apprendrez diverses méthodes de base, qui vous sera utile à l'avenir.

Partie mécanique du robot

Le robot est assemblé de haute qualité boîtier en métal, qui peut être acheté dans un magasin de robotique. Le robot est entraîné par deux motoréducteurs CC de 200 tr/min. Il utilise un système de transmission différentielle et possède une seule roulette à l'avant. Les roues sont reliées directement à l'arbre du moteur.

Les moteurs sont fixés au châssis à l'aide d'un écrou vissé sur le filetage près de l'arbre.

Xboard v2.0 est monté à l'aide du kit de montage inclus, qui comprend des boulons, des écrous et des supports. Xboard v2.0 est conçu pour que ses trous de montage coïncident avec les trous du boîtier.

Engrenage différentiel

La transmission différentielle permet le mouvement et le contrôle à l'aide de deux roues. Il n’y a pas besoin de volants comme sur un vélo ou une voiture. Pour tourner véhicule(ou robot) les roues gauche et droite tournent à différentes vitesses. C'est pourquoi on l'appelle transmission différentielle. Par exemple, si la roue droite tourne plus vite que la gauche, alors le robot tourne à gauche.

La photo le montre plus clairement.

Ainsi, le déplacement et le contrôle du robot se font en contrôlant deux moteurs, ce qui se fait facilement grâce à xAPI. En savoir plus à ce sujet sur les liens suivants :

http://xboard.extremeelectronics.co.in/Motor1.htm

http://xboard.extremeelectronics.co.in/Motor2.htm

Les articles vous expliquent comment démarrer le moteur dans le sens des aiguilles d'une montre ou dans le sens inverse. MotorA est le moteur droit, MotorB est le moteur gauche. Extraits de code montrant comment travailler avec les moteurs.

Avancement du robot :

Mouvement du robot vers l’arrière :

Tourner à gauche:

MoteurA(MOTOR_CW,255); // Le moteur droit tourne dans le sens des aiguilles d'une montre (CW) avec max. vitesse (255)

MoteurB(MOTOR_CW,255); // Le moteur gauche tourne dans le sens des aiguilles d'une montre (CW) avec max. vitesse (255)

Tournez à droite:

MoteurA(MOTOR_CCW,255); // Le moteur droit tourne dans le sens inverse des aiguilles d'une montre (CCW) avec max. vitesse

MoteurB(MOTOR_CCW,255); // Le moteur gauche tourne dans le sens inverse des aiguilles d'une montre (CCW) avec max. vitesse (255)

Vous pouvez en savoir plus sur MotorA et MotorB en cliquant sur le lien

Capteurs

Des capteurs sans contact aident le robot à détecter les obstacles sur son chemin. Les capteurs comprennent des émetteurs IR et des récepteurs IR. Une LED IR est utilisée comme émetteur IR, qui émet de la lumière dans le spectre IR, invisible pour oeil humain. Le récepteur IR reçoit ces rayons.

Capteur infrarouge

Un capteur IR se compose d'un récepteur IR, d'un émetteur IR et de plusieurs résistances. Le diagramme est présenté ci-dessous. Nous avons besoin de trois de ces capteurs installés à l’avant du robot.

Comme vous pouvez le voir, le capteur a deux broches : alimentation et sortie. La sortie du capteur peut avoir une tension de 0 à 5 V en fonction de la distance à l'obstacle et de son type. La tension approche 5V lorsqu'un obstacle est à proximité.

Cote R1 150Ohm, R2 22kOhm. Code couleur indiqué dans le schéma ci-dessus. Les valeurs des résistances sont très importantes, utilisez donc uniquement des résistances de la valeur spécifiée. La broche courte du récepteur IR, de couleur noire (translucide), est la broche positive. Ce n'est pas une erreur, alors connectez-le de cette façon.

Le récepteur IR et l'émetteur IR doivent être installés de manière à ce que les rayons IR de l'émetteur IR heurtent des obstacles et soient réfléchis vers le récepteur IR. Leur emplacement correct montré sur l'image.

La sortie du capteur est connectée à l'ADC Microcontrôleur AVR. L'ADC convertit la tension en une valeur numérique de 10 bits de 0 à 1024. Autrement dit, sur la base de la valeur de l'ADC, vous pouvez savoir s'il y a des obstacles devant le capteur. Travailler avec l'ADC Xboard v2.0 est simple et est décrit dans le lien.

Si nous connectons le capteur à l'ADC0, nous pouvons alors en obtenir des informations en utilisant la fonction suivante :

int valeur_capteur ;

sensor_value=ReadADC(0);//Lecture du numéro de canal 0

Lors de l'utilisation des résistances indiquées dans le schéma ci-dessus, la valeur du capteur est d'environ 660 lorsqu'il n'y a aucun obstacle devant le capteur, et de 745 lorsque l'obstacle est d'environ 15 cm. Si l'obstacle est à moins de 6 cm, alors la valeur est de 1023. . C'est valeur maximale, et même si l'obstacle est encore plus proche, la valeur n'augmente pas.

Attention, ces valeurs peuvent varier selon le type d'obstacle. Certains objets réfléchissent mieux ou moins bien les rayons infrarouges que d’autres. Certains objets réfléchissent très mal les rayons infrarouges et ne peuvent pas être détectés. Ces résultats ont été obtenus en utilisant la paume comme obstacle. Par exemple, les rayons IR sont mal réfléchis par le bois peint couleurs sombres, comme les portes.

Combinaison et connexion de capteurs IR

Trois capteurs IR sont montés sur une planche à pain, montée à l'avant du robot. Un capteur est installé au centre de la carte et les deux autres sont respectivement à droite et à gauche.

Pour commencer, la planche à pain est découpée tailles requises. Cela peut être fait à l'aide d'une petite scie à métaux.

Vous devez maintenant percer deux trous pour le montage. Ensuite, nous pouvons utiliser des vis, des écrous et des entretoises pour installer la carte sur le châssis. J'ai utilisé une perceuse électrique pour faire les trous en quelques secondes, mais si vous n'en avez pas, vous pouvez utiliser une perceuse à main.

De l'autre côté de la carte, nous avons mis des entretoises sur les vis pour laisser un peu d'espace entre la planche à pain et le châssis.

La carte de développement peut maintenant être installée sur le châssis

Veuillez noter que j'utilise résistances d'ajustement au lieu de constant à 22 kOhm. Mais tu dois utiliser résistances fixesà 22kOhm. La carte de développement se connecte au Xboard v2.0 à l'aide d'un connecteur standard à 8 broches. Xboard v2.0 dispose d'un connecteur à 8 broches pour les capteurs. Ce connecteur possède également des broches +5V et GND pour les capteurs. Son brochage est indiqué ci-dessous.

Connectez le capteur droit à l'ADC0, le capteur central à l'ADC 1 et le capteur gauche à l'ADC 2. Les capteurs sont prêts et vous pouvez maintenant procéder à leur test.

Test du capteur IR

Ci-dessous un petit programme d'essai, qui lit la valeur de trois capteurs et l'affiche sur l'écran LCD. Pour comprendre le fonctionnement du programme, lisez l'article Interagir avec un écran LCD à l'aide de xAPI.

#include "avr/io.h" #include "util/delay.h" #include "lcd.h" void InitADC() ( ADMUX=(1<

Compilez et flashez le programme dans Xboard v2.0. Après cela, connectez l'écran LCD et la carte capteur. L'écran doit afficher les valeurs de trois capteurs, comme indiqué ci-dessous.

Lorsque vous rapprochez un obstacle de l'un des capteurs, la valeur de celui-ci devrait augmenter, et lorsque l'obstacle est très proche, elle augmentera jusqu'à 1023. Notez les valeurs des capteurs lorsqu'il n'y a aucun obstacle dans devant eux et lorsque l'obstacle se trouve à environ 15 cm de lui. Vous aurez besoin de ces valeurs pour configurer le programme du robot.

J'ai également fourni un fichier HEX prêt à flasher le firmware du microcontrôleur ATmega32 (ou ATmega16) et à le rendre opérationnel en un rien de temps.

S'il n'y a pas de texte sur l'écran, réglez le contraste à l'aide du potentiomètre.

Si les capteurs ne fonctionnent pas comme prévu, vérifiez les connexions. Pour vérifier le fonctionnement des LED IR, utilisez n'importe quel appareil photo numérique, tel qu'un Handicam ou l'appareil photo d'un téléphone portable. Invisibles à l’œil humain, les rayons IR sont clairement visibles par la caméra. Si les LED n'émettent pas de rayons IR, vérifiez les connexions.

Partie logicielle

La tâche du programme est de lire les valeurs des capteurs, de prendre des décisions et de contrôler deux moteurs. Ainsi, le robot circulera dans la pièce en contournant tout sur son passage.

Nous avons défini trois constantes, à savoir RTHRES, CTHRES et LTHRES :

//Valeurs seuils pour le déclenchement du capteur

#define RTHRES 195

#définir CTHRES 275

#define LTHRES 195

Leurs valeurs constantes sont les valeurs saisies. Ils devraient déjà être écrits. Comment les obtenir est décrit ci-dessus. Lorsque la valeur du capteur s'approche de ce seuil, le programme le perçoit comme un obstacle. Attention, les valeurs​​données ci-dessus peuvent ne pas correspondre aux vôtres. C'est bien.

Le programme commence par l'initialisation du sous-système moteur et du sous-système ADC :

Ensuite, nous commençons à faire avancer le robot. Cela se fait en appelant des fonctions MoteurA et MotorB. Le premier argument est la direction requise :

Le deuxième argument est la vitesse requise. Sa valeur peut aller de 0 à 255. On utilise 25,5 pour se déplacer à pleine vitesse.

Plus d'informations sur l'utilisation du moteur à l'aide de xAPI peuvent être trouvées dans la documentation Xboard v2.0.

Une fois que notre robot commence à avancer, nous entamons une boucle infinie, vérifiant s'il y a un obstacle devant le robot. Si oui, alors le robot tourne.

Article original en anglais (traduction : Alexandre Kassianov pour le site cxem.net)

26.01.2011, 09:18
Source:

Habituellement, dans les articles, j'essaie de présenter le matériel dans l'ordre de son développement, mais je pense que ce n'est pas le cas. Par conséquent, nous sauterons les étapes de conception d’un schéma de circuit, de disposition du PCB et de tout le reste. Dans la figure 1, nous voyons quel genre de « honte » j’ai eu.

À première vue, cela ressemble à un simple tas de fer, d’électronique et de fils. Cela est probablement dû au fait que des morceaux de matériaux différents ont été utilisés. Voyons cela.

Maintenant, tout est en ordre. Le microcontrôleur Attiny2313 reçoit un signal d'obstacle (un logique ou zéro) provenant de deux capteurs infrarouges. Ensuite, selon le firmware, le microcontrôleur contrôle la puce pilote du moteur L293D (courant de contrôle jusqu'à 1 ampère). La figure 3 montre une photographie d'un robot inversé.

La base de la conception d'un robot fait maison est une bande métallique pliée en trapèze. L'angle de courbure est d'environ 120°. Il est fondamentalement important que le même virage soit obtenu des deux côtés, sinon le robot ne se déplacera pas en ligne droite. Bien que, d'un autre côté, ce qu'un mécanicien ou un électronicien a mal fait puisse parfois être corrigé par un programmeur, par exemple en utilisant PWM pour obtenir un mouvement linéaire du robot.

Nous savons tous grâce au cours de géométrie scolaire qu'un plan est formé soit de trois points, soit d'une droite et d'un point dans l'espace. Le troisième point est une roue à rouleaux en rotation libre.

Les récepteurs des capteurs IR et des phototransistors sont situés en bas afin de réduire l'éclairage et de minimiser les faux positifs. Les capteurs IR eux-mêmes sont montés sur des charnières mobiles, ce qui vous permet d'ajuster la zone de numérisation. Au fait, la réaction de mon chat face au robot rampant dans le couloir a-t-elle été intéressante ? Mon chat est noir. J'ai réglé les capteurs IR sur du papier peint gris, de sorte que le robot s'est retourné devant le chat presque au tout dernier moment, et le chat a reculé d'un pas avec un fort sifflement.

Le prochain modding pour le robot était des capteurs IR sur son ventre, permettant au robot de suivre une ligne noire tracée sur du papier blanc avec un marqueur. La mise en œuvre a nécessité trois capteurs et un comparateur sur la puce LM339N pour soulager le microcontrôleur. Un inconvénient important s'est avéré être le réglage préalable nécessaire des capteurs à l'aide de résistances d'ajustement, en fonction de l'éclairage de la pièce.

P.S. La récompense du temps perdu à créer un appareil inutile sera peut-être la clarté du fonctionnement et de la mémoire du microcontrôleur qui ramassera la poussière sur l'étagère jusqu'à ce que l'enfant de quelqu'un s'y intéresse.

Dans cet article, nous examinerons plusieurs conceptions de robots qui implémentent les comportements suivants :
1. Il contourne un obstacle lorsqu'il entre en contact avec celui-ci avec ses « antennes ».
2. Évite les obstacles sans contact (pare-chocs IR).
3. Il pose ses « antennes » sur l'obstacle, recule, fait un tour, puis continue son mouvement.
4. Évite les obstacles en tournant (pare-chocs IR).
5. Suit l'objet tout en maintenant la distance (pare-chocs IR).

Avant de commencer à examiner les circuits, examinons brièvement les caractéristiques de la puce L293.

Figure 1. Brochage de la puce L293D

À l'intérieur se trouvent deux pilotes pour contrôler les moteurs électriques.
Les moteurs sont connectés aux sorties OUTPUT. Nous avons la possibilité de connecter deux moteurs à courant continu.
Les 8ème et 16ème broches du microcircuit sont connectées au positif de l'alimentation. Une alimentation séparée est prise en charge, c'est-à-dire La 16ème broche (Vss) est destinée à alimenter la puce elle-même (5 volts), et la broche Vs (8ème broche) peut être connectée à l'alimentation des moteurs. La tension maximale de la partie puissance est de 36 volts.
Je ne les séparerai pas et les connecterai dans tous les circuits à une source d'alimentation commune.
Le négatif ou masse de l'alimentation (GND) est connecté aux broches n°4, 5, 12, 13. Ces contacts assurent en outre la dissipation thermique du microcircuit, donc lors du soudage à la carte, il est conseillé d'attribuer un zone métallisée pour ces broches.
Le microcircuit dispose également des entrées ENABLE1 et ENABLE2.
Pour activer les drivers, il doit y avoir une unité logique sur ces broches ; en d'autres termes, nous connectons les 1ère et 9ème broches au positif de l'alimentation.
Il existe également des entrées INPUT pour contrôler les moteurs.

Fig.2. Tableau de correspondance entre les niveaux logiques aux entrées et aux sorties.

Ci-dessus se trouve un tableau à partir duquel vous pouvez comprendre que si une entrée logique est appliquée à l'entrée INPUT1, c'est-à-dire connectez-vous au plus de l'alimentation et l'entrée INPUT2 au moins, puis le moteur M1 commencera à tourner dans une certaine direction. Et si vous échangez les niveaux logiques au niveau de ces entrées, alors le moteur M1 tournera dans l'autre sens.
La même chose se produit avec la deuxième partie, à laquelle est connecté le moteur M2.

C'est cette fonctionnalité qui est utilisée dans les schémas de robots présentés.

Schéma n°1. Le robot contourne un obstacle lorsqu'il le contacte avec ses « antennes ».

Figure 3. Schéma n°1. Avec capteurs d'obstacles mécaniques.

Une fois la puissance appliquée, les moteurs tournent dans une certaine direction, faisant avancer le robot. Cela est dû au fait qu'un signal de niveau haut est fourni à INPUT1 via la résistance R2, tout comme à l'entrée INPUT4. Le transistor VT1 est bien fermé, la base est tirée vers l'alimentation moins et aucun courant ne circule dans le collecteur.
Je vais vous expliquer sur le côté gauche, parce que... les deux parties sont symétriques.
À l'entrée INPUT2, un 0 logique est défini via la résistance R3. À en juger par le tableau (Fig. 2), le moteur tourne dans une certaine direction. Sur le côté droit du schéma, la même chose se produit et le robot avance.
Le circuit contient des commutateurs (SB1, SB2), qui utilisent des commutateurs SPDT. Des trombones y sont fixés à l'aide de colle chaude et des capteurs d'obstacles sont obtenus.

Figure 4. Les capteurs d'antenne sont fabriqués à partir de trombones.

Lorsqu'un tel capteur heurte un obstacle, la clé se ferme et l'entrée INPUT2 est connectée au positif de l'alimentation, c'est-à-dire un "1" logique est fourni. Au même instant, le transistor s'ouvre également, de sorte que le un logique à l'entrée INPUT1 est remplacé par un zéro logique. Lorsque le bouton est enfoncé, le moteur tourne dans l'autre sens. La microcommutation se produit par saccades et le moteur éloigne le robot de l'obstacle jusqu'à ce que le capteur cesse de toucher l'obstacle.

Comme vous l'avez peut-être deviné, les interrupteurs ou les moteurs eux-mêmes doivent être disposés en croix.

Schéma n°2. Le robot évite les obstacles sans contact (pare-chocs IR)

Un comportement encore plus intéressant peut être obtenu si les récepteurs TSOP sont utilisés comme capteurs pour recevoir des signaux infrarouges. Ce sera une sorte de pare-chocs IR.
Alors maintenant, le circuit ressemble à ceci.

Figure 5. Schéma n°2. Avec capteurs d'obstacles infrarouges.

Le « module de réception IR » fonctionne comme ceci : lorsqu'un signal infrarouge arrive au récepteur TSOP, une tension négative apparaît à sa sortie, qui déverrouille le transistor PNP, et le courant de l'alimentation est fourni au circuit d'entrée du microcircuit . Si la dernière fois, des interrupteurs mécaniques étaient utilisés, avec ce qu'on appelle des antennes constituées de trombones, alors le nouveau système permettra au robot de ne pas s'écraser sur un obstacle, mais d'y réagir à une certaine distance. Cela ressemble à ceci :

La partie réceptrice est conçue de cette manière : deux modules absolument identiques (gauche et droit) fixés ensemble (Fig. 8).

Des TSOP1136 avec une fréquence de fonctionnement de 36 kHz ont été utilisés comme récepteurs. Les emplacements des broches sont indiqués dans la figure ci-dessous.

Fig.6. TSOP1136.

Nous avons compris les récepteurs, mais pour détecter les obstacles, vous devez envoyer un rayonnement infrarouge à une certaine fréquence dans l'espace devant le robot. La fréquence de fonctionnement des récepteurs varie, dans mon cas elle est de 36 kHz. Par conséquent, un générateur d'impulsions pour cette fréquence a été assemblé sur la puce NE555 et des diodes émettrices infrarouges ont été connectées à la sortie.


Figure 7. Circuit émetteur NE555.

Un fragment de maquette est fixé au châssis du robot, sur lequel vous pouvez installer le nombre souhaité de diodes IR.
Il est conseillé de mettre des tubes thermorétractables ou quelque chose de similaire sur les diodes afin qu'elles brillent vers l'avant et non dans des directions différentes.

Figure 8. Pare-chocs IR.

Après la mise sous tension, le robot peut reculer, cela est dû à la sensibilité trop élevée des récepteurs TSOP. Ils perçoivent le signal réfléchi même depuis le sol, les murs et autres surfaces. Par conséquent, une résistance d'ajustement est utilisée dans le circuit émetteur de signal IR (Fig. 7), à l'aide de laquelle nous réduisons la luminosité des diodes infrarouges et obtenons la sensibilité souhaitée.

Schéma n°3. Un tel robot s'éloigne de l'obstacle et effectue un virage.

Regardons un autre schéma intéressant.

Figure 9. Schéma n°3.

Lorsqu'un tel robot heurte un obstacle avec l'une de ses antennes, il recule en effectuant un léger virage, puis après une courte pause, le robot continue son mouvement. Le comportement est illustré dans l'animation ci-dessous :

Ce circuit est également entièrement compatible avec le pare-chocs infrarouge du circuit précédent.

Des condensateurs électrolytiques sont apparus dans le circuit entre l'émetteur et les résistances de base des transistors VT1 et VT2. Les diodes VD1, VD2 et LED HL1, HL2 sont apparues.
Voyons pourquoi ces composants supplémentaires sont nécessaires.
Ainsi, lorsque le commutateur SB1 se ferme, c'est-à-dire le premier capteur, le courant de l'alimentation positif à travers la diode VD1 et la résistance de limitation de courant R1 est fourni à la base du transistor. Il s'ouvre en changeant le niveau logique à l'entrée INPUT1, et le niveau à l'entrée INPUT2 change également.
À ce moment, le courant circule également vers le condensateur C1 et se charge. Le moteur M1 change brusquement de sens de rotation et le robot s'écarte de l'obstacle. Dans la vidéo, vous pouvez voir que le deuxième moteur change également de direction de mouvement, mais pour une période de temps plus courte. Cela est dû au fait que lorsque le capteur SB1 est fermé, le courant de l'alimentation plus circule également vers le côté droit du circuit, à travers la LED HL2. Les LED fournissent non seulement un signal à court terme concernant une collision avec un obstacle, mais agissent également comme un absorbeur de tension pour la moitié opposée du circuit. En termes simples, lorsque l'interrupteur SB1 est fermé, le condensateur C2 se charge moins que C1. Et lorsque la clé (capteur) SB2 est fermée, la même chose se produit, mais au contraire - C2 charge davantage (c'est-à-dire que la tension sur ses plaques est plus élevée). Cela permet non seulement de s'éloigner de l'obstacle, mais aussi de s'en éloigner légèrement. L'angle de cette rotation dépend de la capacité des condensateurs C1 et C2. Les condensateurs d'une capacité de 22 μF sont, à mon avis, optimaux. Avec une capacité de 47 µF, l'angle de rotation sera plus grand.
Vous pouvez également remarquer dans la vidéo qu’après que le robot s’éloigne d’un obstacle, il y a une courte pause avant d’avancer. Cela se produit en raison de la décharge des condensateurs, c'est-à-dire à un moment donné, les signaux logiques aux entrées INPUT sont équilibrés et le conducteur cesse pendant une seconde de comprendre dans quel sens faire tourner le moteur. Mais lorsque C1 et C2 sont déchargés, les entrées INPUT reviendront à leurs niveaux logiques d'origine.
Les diodes VD1 et VD2 empêchent la décharge des condensateurs via les LED HL1, HL2. Sans LED, le circuit ne fonctionne pas.

Schéma n°4. Schéma précédent avec pare-chocs IR.

Ce schéma diffère du précédent en ce sens qu'au lieu de capteurs mécaniques, des capteurs infrarouges (pare-chocs IR) sont utilisés ici.

Figure 10. Schéma n°4.

Les collecteurs des transistors PNP VT1 et VT2, lorsqu'un obstacle est détecté, enverront un signal au circuit d'entrée du microcircuit. Ensuite, tout se passe de la même manière que décrit précédemment, seul un tel robot, lorsqu'il détecte un obstacle devant lui, recule, fait un virage, puis continue de se déplacer.
Le comportement est illustré dans l'animation ci-dessous :

Le robot se comportera plus brusquement si la capacité des condensateurs C1 et C2 est réduite à, par exemple, 1 µF (capacité minimale 0,22 µF).

Comment faire suivre un objet à un robot ?

Dans tous les schémas présentés ci-dessus, les capteurs ou les moteurs eux-mêmes doivent être disposés en croix. Et avec une connexion directe (lorsque le capteur gauche « commande » le moteur gauche, celui de droite - celui de droite), le robot n'évitera pas l'obstacle, mais le suivra plutôt. Grâce à la connexion directe, vous pouvez obtenir un comportement très intéressant du robot : il poursuivra activement un objet tout en maintenant une certaine distance. La distance à l'objet dépend de la luminosité des diodes IR sur le pare-chocs (à régler).

Quelques photos supplémentaires :

Le châssis utilise des pièces métalliques du designer. La planche à pain se déplie pour faciliter le remplacement de la batterie.

Le robot est alimenté par 4 piles AA.

Les options de fabrication d'une carrosserie et d'un châssis pour un robot ne sont limitées que par votre imagination, d'autant plus qu'il existe de nombreuses solutions toutes faites en vente. Dans mon cas, le circuit sera transféré sur la carte, car un tas de fils n'est pas esthétique. Des batteries avec circuit de recharge seront également installées. Et quelles autres améliorations peuvent être apportées ou de nouvelles fonctions ajoutées - vous pouvez suggérer tout cela dans les commentaires.

Il existe une vidéo pour cet article qui décrit en détail le fonctionnement des circuits et démontre différentes options pour le comportement du robot.

Liste des radioéléments

Désignation Taper Dénomination Quantité NoteBoutiqueMon bloc-notes
Éléments de circuit n°1 et n°2 (sauf le pare-chocs IR)
VT1, VT2 Transistor bipolaire

2N3904

2 Vers le bloc-notes
R1, R2, R4, R6 Résistance

10 kOhms

4 Vers le bloc-notes
R3, R5 Résistance

4,7 kOhms

2 Vers le bloc-notes
C1 100 µF1 Vers le bloc-notes
Eléments du « module de réception IR » dans le schéma n°2, n°4
VT1, VT2 Transistor bipolaire

2N3906

2 KT361, KT816 Vers le bloc-notes
R1, R2 Résistance

100 ohms

2 Vers le bloc-notes
C1, C2 Condensateur électrolytique10-47 uF2 Vers le bloc-notes
Éléments du « module d'émission de signal IR » Fig. 7
R1 Résistance

1 kOhm

1 Vers le bloc-notes
R2 Résistance

1,5 kOhm

1 Vers le bloc-notes
R3 Résistance variable20 kOhms1 pour régler la luminosité de FD1, FD2 Vers le bloc-notes
C1 Condensateur céramique0,01 µF1 Vers le bloc-notes
C2 Condensateur céramique0,1 µF1 Vers le bloc-notes
FD1, FD2 Diode IR 2 N'importe lequel

Salut tout le monde. Cet article est une courte histoire sur la façon dont faire robot leur mains. Pourquoi une histoire, demandez-vous ? Cela est dû au fait que pour la fabrication d'un tel artisanat il est nécessaire d'utiliser une quantité importante de connaissances, très difficiles à présenter dans un seul article. Nous passerons en revue le processus de construction, jetterons un coup d'œil au code et, finalement, donnerons vie à une création de la Silicon Valley. Je vous conseille de regarder la vidéo pour avoir une idée de ce à quoi vous devriez vous retrouver.

Avant de poursuivre, veuillez noter les points suivants : lors de la fabrication artisanat une découpeuse laser a été utilisée. Vous pouvez éviter d'utiliser une découpeuse laser si vous avez suffisamment d'expérience dans le travail manuel. La précision est la clé pour mener à bien le projet !

Étape 1 : Comment ça marche ?

Le robot possède 4 pattes, avec 3 servos sur chacune d'elles, qui lui permettent de déplacer ses membres selon 3 degrés de liberté. Il se déplace avec une « démarche rampante ». C’est peut-être lent, mais c’est l’un des plus fluides.

Tout d'abord, vous devez apprendre au robot à avancer, reculer, gauche et droite, puis ajouter un capteur à ultrasons, qui aidera à détecter les obstacles/obstacles, puis un module Bluetooth, grâce auquel le contrôle du robot atteindra un nouveau niveau. .

Étape 2 : Pièces nécessaires

Squelette en plexiglas de 2 mm d'épaisseur.

La partie électronique du produit fait maison sera composée de :

  • 12 servos ;
  • arduino nano (peut être remplacé par n'importe quelle autre carte arduino) ;

  • Bouclier pour contrôler les servos ;
  • alimentation (dans le projet, une alimentation 5V 4A a été utilisée) ;

  • capteur à ultrasons;
  • module Bluetooth hc05 ;

Pour fabriquer un bouclier, vous aurez besoin de :

  • un circuit imprimé (de préférence avec des lignes communes (bus) d'alimentation et de terre) ;
  • connecteurs à broches inter-cartes - 30 pièces ;
  • prises par carte – 36 pièces ;

  • fils.

Outils:

  • Découpeur laser (ou mains expertes) ;
  • Supercolle ;
  • Adhésif thermofusible.

Étape 3 : Squelette

Utilisons un programme graphique pour dessiner les composants du squelette.

Après cela, nous avons découpé 30 parties du futur robot en utilisant n'importe quelle méthode disponible.

Étape 4 : Assemblage

Après la découpe, retirez le papier protecteur du plexiglas.

Ensuite, nous commençons à assembler les jambes. Éléments de fixation intégrés à certaines parties du squelette. Il ne reste plus qu'à relier les pièces entre elles. La connexion est assez serrée, mais pour une plus grande fiabilité, vous pouvez appliquer une goutte de superglue sur les éléments de fixation.

Ensuite il faut modifier les servos (coller une vis en face des axes des servos).

Avec cette modification, nous rendrons le robot plus stable. Seuls 8 servos doivent être modifiés ; les 4 restants seront fixés directement sur la carrosserie.

Nous attachons les pieds à l'élément de connexion (une partie incurvée), et celui-ci, à son tour, au servomoteur du corps.

Étape 5 : Fabriquer le bouclier

Réaliser la planche est assez simple si vous suivez les photographies présentées dans l'étape.

Étape 6 : Électronique

Fixons les broches du servomoteur à la carte Arduino. Les broches doivent être connectées dans le bon ordre, sinon rien ne fonctionnera !

Étape 7 : Programmation

Il est temps de donner vie à Frankenstein. Tout d'abord, chargeons le programme legs_init et assurons-nous que le robot est dans la position comme sur l'image. Ensuite, chargeons quattro_test pour vérifier si le robot répond aux mouvements de base, comme avancer, reculer, gauche et droite.

IMPORTANT : vous devez ajouter une bibliothèque supplémentaire à l'IDE arduino. Le lien vers la bibliothèque est fourni ci-dessous :

Le robot doit faire 5 pas en avant, 5 pas en arrière, tourner à gauche de 90 degrés, tourner à droite de 90 degrés. Si Frankenstein fait tout correctement, nous allons dans la bonne direction.

P.. S: Placez le robot sur la tasse, comme sur un support, pour ne pas avoir à le remettre au point de départ à chaque fois. Une fois que les tests ont montré que le robot fonctionne normalement, nous pouvons continuer les tests en le plaçant au sol.

Étape 8 : Cinématique inverse

La cinématique inverse est ce qui entraîne réellement le robot (si vous n'êtes pas intéressé par le côté mathématique de ce projet et que vous êtes pressé de terminer le projet, vous pouvez sauter cette étape, mais savoir ce qui entraîne le robot sera toujours utile).

En termes simples, la cinématique inverse, ou cinématique inverse en abrégé, est la « partie » des équations trigonométriques qui déterminent la position de l'extrémité pointue de la jambe, l'angle de chaque servo, etc., qui déterminent finalement quelques réglages préliminaires. . Par exemple, la longueur de chaque pas du robot ou la hauteur à laquelle le corps se situera pendant le mouvement/repos. En utilisant ces paramètres prédéfinis, le système extraira la quantité de déplacement de chaque servo afin de contrôler le robot à l'aide des commandes données.



Des questions ?

Signaler une faute de frappe

Texte qui sera envoyé à nos rédacteurs :