Étape 3: Electronique
L’électronique, que j’ai choisi d’utiliser est tous de parallaxe. J’utilise 2 cachet de base usb Commission scolaire microcontrôleurs. L’un est un Basic Stamp bs2 et autre un timbre bs2PX de haute performance. Je suis également en utilisant un microcontrôleur de l’hélice qui se trouve dans le corps. Il y a un contrôleur de servo d’hélice, 24 LED s’allume et nombreux capteurs différents, dont un capteur de température, accéléromètre et capteur bluetooth etc.. Un BASIC Stamp est un ordinateur monocarte qui exécute l’interpréteur de langage de parallaxe PBASIC dans son microcontrôleur. Code du développeur est stocké dans une EEPROM, ce qui peut également être utilisée pour stocker les données. La langue PBASIC comporte des commandes facile à utiliser pour base i/o, comme allumer les appareils ou d’éteindre, interfaçage avec capteurs, etc.. Des commandes plus avancées permettent à l’interface de module BASIC Stamp avec d’autres circuits intégrés, communiquent entre eux et fonctionnent en réseaux.
- Contrôler les servos est un contrôleur de servo de parallaxe hélice USB qui exploite les bras. Vous pouvez connecter jusqu'à 15 servos sur une seule carte. Le microcontrôleur basic stamp contrôle le contrôleur de servo permettant toutes les fonctions.
- Les moteurs sont commandés par 2 contrôleurs de moteur de parallaxe HB-25 qui sont également contrôlés depuis un autre microcontrôleur Bs2.
- J’ai beaucoup de différents capteurs que j’ai utiliser pour prendre des relevés de température, exploiter les phares automatiques avec obscurité % et de nombreuses autres applications.
- Les microcontrôleurs sont les cerveaux de cette machine et les possibilités sont infinies en ce qui concerne les choses que vous êtes capable de faire quelques connaissances et expériences.
MODE DE RC :
Dans la mesure où à l’aide d’une télécommande RC pour conduire mon robot, cela se fait avec un 2.4GHzSpektrum DX5e système. Le récepteur est monté sur le robot et les câbles du moteur deux disques sont connectés à la boîte de culasse. Le contrôleur de moteur HB-25 est couru sur les impulsions de servo et la plupart des systèmes RC ne peut fonctionner avec certaines modifications. Avec cette technologie et ma caméra sans fil je peux s’asseoir à l’intérieur de ma maison et conduire mon robot autour du bloc et Découvre tout de mon PC. Très cool!
Il s’agit d’un code que j’ai écrit à charger dans le processeur afin de rendre ce robot à errer autour de manière autonome. Il erre et lorsqu’il rencontre un objet avec son capteur de ping qui utilisé pour être monté où la caméra est elle s’arrête et balaye la zone environnante pour un passage dégagé puis reprend sa mission. Comment programmer l’apprentissage prend du temps, mais une fois que vous l’essayez vous plaira et voulez en savoir plus. Tout cela est fait avec le logiciel éditeur de timbre de parallaxe. Faites passer les fils de ping à top 3 port pin 13 ' -----[ I/O Definitions ]------------------------------------------------- PingServo broche 14' PING))) Servo ' -----[ Variables ]------------------------------------------------------- pulseCount VAR Byte ' utilisé pour mesurer les tourne ' -----[ Initialization ]-------------------------------------------------- A faire : Boucle jusqu'à HB25 = 1' attente pour HB-25 Power Up ' -----[Main Code ]---------------------------------------------------- Principal : Compteur = compteur + 1' Passive au compteur d’incrémentation IF compteur > 10 puis IF (distance > 40) puis ' est distace supérieure à 40 cm?? BOUCLE ' -----[ Subroutines ]----------------------------------------------------- Forward_Pulse : POUR index = 250 à 250' rampe à la vitesse maximale ' ************************************************************************* Turn_Left : ' ************************************************************************* Turn_Right: « tournez à droite, environ 45 degrés ' ************************************************************************* Back_Up: ' vers le haut
Faites passer les fils de servo haut de la page 3 port pin 14
Faites passer les fils du HB-25 au top 3 port pin 15
HB-25 a sa propre source d’alimentation avec un interrupteur.
fils de raccordement sont courait depuis un HB-25 à l’autre connexion ensemble à être couru sur l’impulsion d’un servo.
"{$STAMP BS2}
"{$PBASIC 2,5}
'---[Object Detection et évitement]---
Ping PIN 13' PING))) capteur
HB25 Broche 15' i/o pour HB-25
distance de mot VAR ' Distance actuelle de l’objet
oldDistance mot VAR ' ancienne valeur de la Distance
contrer le mot VAR ' PING))) compteur de cycles
tâche VAR Nib ' tâche en cours
index mot VAR ' compteur pour rampe
HB25 faible ' faire des broches d’e/s/faible
Attendez 5' PAUSE l’HB-25 à Initialize
PULSOUT HB25, 750' arrêter le moteur 1
PAUSE 1 ' 1 mS Delay
PULSOUT HB25, 750' Stop Motor 2
FAIRE
GOSUB Ping_Out
ENDIF
GOSUB Forward_Pulse
D’AUTRE
GOSUB Back_Up
GOSUB Ping_Around
ENDIF
PULSOUT HB25, 750 + index ' moteur 1 avec impatience
PAUSE 1 ' 1 mS Delay pour moteur 2 Pulse
PULSOUT HB25, 750 - index ' moteur 2 inverser
PULSOUT PingServo, 750' valeur de Ping Servo impulsion vers l’avant
PAUSE DE 20
PROCHAINE
RETOUR
POUR pulseCount = 1 à 35' tournez à gauche, sur 45 degrés
PULSOUT HB25, 750 + index ' moteur 1 avec impatience
PAUSE 1 ' 1 mS Delay pour moteur 2 Pulse
PULSOUT HB25, 750 + index ' moteur 2 inverser
PULSOUT PingServo, 750' valeur de Ping Servo impulsion vers l’avant
PAUSE DE 20
PROCHAINE
RETOUR
POUR pulseCount = 1 à 35' nombre d’impulsions à tour
PULSOUT HB25, 750 - index "moteur 1 avec impatience
PAUSE 1 ' 1 mS Delay pour moteur 2 Pulse
PULSOUT HB25, 750 - index ' moteur 2 inverser
PULSOUT PingServo, 750' valeur de Ping Servo impulsion vers l’avant
PAUSE DE 20
PROCHAINE
RETOUR
POUR pulseCount = 0 à 5' nombre d’impulsions de sauvegarde
PULSOUT HB25, 750' 1 moteur arrêté Fwd
PAUSE 1 ' 1 mS Delay pour moteur 2 Pulse
PULSOUT HB25, 750' 2 moteur arrêté Rev
PULSOUT PingServo, 750' valeur de Ping Servo impulsion vers l’avant
PAUSE DE 20
PROCHAINE
RETOUR
Ping_Out: ' PING)))
compteur = 0' Reset compteur de retard Passive
Ping faible ' Force PING))) ligne faible
PULSOUT Ping, 5' activer PING))) Pulse
PULSIN Ping, 1, distance ' recevoir les impulsions de retour
distance = distance ** 2257' calculer Distance
RETOUR
Ping_Around: « commencer à 180 degrés Pan-Scan
compteur = 0' Reset compteur de retard Passive
oldDistance = 30' vieux Distance valeurs actuelles
tâche = 0' priorité actuelle de tâche
' *************************************************************************
POUR pulseCount = 0 à 20' nombre d’impulsions à Spin
Ping faible ' Force PING))) ligne faible
PULSOUT PingServo, 1085' Ping Servo 90 gauche Pulse valeur
PULSOUT Ping, 5' activer PING)))
PULSIN Ping, 1, distance ' recevoir la valeur de Distance
PAUSE rafraîchissement retard de 20'
PROCHAINE
distance = distance ** 2257' calculer la Distance en cm
Distance de IF > oldDistance puis ' est distance > dernier passage dégagé
oldDistance = distance ' mise à jour d’oldDistance valeur
tâche = 1
ENDIF
' *************************************************************************
POUR pulseCount = 0 à 20' nombre d’impulsions à Spin
Ping faible ' Force PING))) ligne faible
PULSOUT PingServo, 850' Ping Servo 45 laissé Pulse valeur
PULSOUT Ping, 5' activer PING)))
PULSIN Ping, 1, distance ' recevoir la valeur de Distance
PAUSE rafraîchissement retard de 20'
PROCHAINE
distance = distance ** 2257' calculer la Distance en cm
Distance de IF > oldDistance puis ' est distance > dernier passage dégagé
oldDistance = distance ' mise à jour d’oldDistance valeur
tâche = 2
ENDIF
' *************************************************************************
POUR pulseCount = 0 à 20' nombre d’impulsions à Spin
Ping faible ' Force PING))) ligne faible
PULSOUT PingServo, 400' Ping Servo 45 Pulse juste valeur
PULSOUT Ping, 5' activer PING)))
PULSIN Ping, 1, distance ' recevoir la valeur de Distance
PAUSE rafraîchissement retard de 20'
PROCHAINE
distance = distance ** 2257' calculer la Distance en cm
Distance de IF > oldDistance puis ' est distance > dernier passage dégagé
oldDistance = distance ' mise à jour d’oldDistance valeur
tâche = 3
ENDIF
' *************************************************************************
POUR pulseCount = 0 à 20' nombre d’impulsions à Spin
Ping faible ' Force PING))) ligne faible
PULSOUT PingServo, 225' Ping Servo 90 pouls juste valeur
PULSOUT Ping, 5' activer PING)))
PULSIN Ping, 1, distance ' recevoir la valeur de Distance
PAUSE rafraîchissement retard de 20'
PROCHAINE
distance = distance ** 2257' calculer la Distance en cm
Distance de IF > oldDistance puis ' est distance > dernier passage dégagé
oldDistance = distance ' mise à jour d’oldDistance valeur
tâche = 4
ENDIF
ON tâche GOSUB Task0, Task1 Task2, Task3, Task4
distance = 50' empêcher Scan de bouclage
RETOUR
Task0: « vers l’avant était plus claire voie
GOSUB Turn_Right "cela pourrait signifier defile
GOSUB Turn_Right ' donc nous allons tourner autour
GOSUB Turn_Right ' vous pouvez modifier le comportement
GOSUB Turn_Right ' de l’une des tâches
RETOUR
Task1: ' gauche de 90 degrés a été plus claire
GOSUB Turn_Left
GOSUB Turn_Left
RETOUR
Task2: ' 45 ° à gauche était plus claire
GOSUB Turn_Left
RETOUR
Task3: ' 45 degrés droit était plus clair
GOSUB Turn_Right
RETOUR
Task4: ' 90 degrés droit était plus clair
GOSUB Turn_Right
GOSUB Turn_Right
RETOUR