IRBOT commencé la vie comme un projet de test à partir du livre de Scott Edwards Programmation et personnalisation de l'ordinateur BASIC Stamp appelé Whiskerbot. Cela a été amusant, mais je détestais les moustaches. J'ai décidé de construire un système infra-rouge de détection des objets en utilisant le détecteur IR Radio Shack et Radio Shack High Output LEDs IR. Ces pièces ont été faciles à obtenir et pas très cher. Pour le contrôleur du robot j'ai utilisé le Parallax BASIC Stamp I.
La dernière version du logiciel le plus grand, au moins comme des 09/10/98, donne IRBOT trois modes de fonctionnement. Le mode par défaut ne fonctionne tout simplement éviter objet, amusant en soi, mais je voulais plus. J'ai donc ajouté deux nouveaux modes qui sont basées sur les cellules photoélectriques CDS que la résistance changer en fonction de l'intensité lumineuse. Ils sont montés à l'avant de l'extérieur et inclinées IRBOT à environ 30 degrés ou plus. Le code actuel a maintenant la possibilité d'être léger en évitant (photophobes) ou de chercher la lumière (phototrophes). La mode est sélectionné par le déclenchement d'une ou l'autre capteur IR pendant deux secondes lorsque vous allumez-le. Les détails sont plus bas dans cette page.
Si vous voulez construire ce trop, mon conseil est d'obtenir le livre de Scott Edwards ci-dessus et un Stamp Parallax 1.4 rev. D . Le D rev vient sur une carte porteuse donc aucune autre dépense est nécessaire pour capter les signaux en provenance et à elle. Le livre Scott Edwards est livré avec le logiciel de programmation pour le timbre et il vient aussi avec des détails de construction pour rendre le câble de programmation, vous devrez connecter le timbre de votre machine DOS. Le livre est d'environ 30 $ et le cachet rev D est d'environ 35 $. Vous avez maintenant un langage BASIC microcontrôleur interprétation.
Vous avez maintenant besoin que de deux circuits intégrés simples, quelques résistances, des condensateurs, et un moyen de les lier ensemble. Tous ces composants peuvent être obtenus à votre Radio Shack local.
Avec mon habituelle «ceinture et bretelles» l'attitude de conception (comme l'a souligné à moi), je doute surdimensionnées mon circuit. Peut-être, mais le dégrossi 555 seule version de ce circuit ne fonctionne pas très bien, son été abandonnée en faveur d'une solution basée PIC .
Voici deux explications sur le piratage une servo RC, tant de courtoisie de Marvin Green de PARTS .
Parlant d'éliminer les faux échos. vous aurez à jouer avec la LED d'orientation pour obtenir des résultats optimaux. J'ai constaté que les visant tout droit est très bon, mais, j'ai eu à les incliner un peu pour éviter les échos constante de l'étage de déclencher le module IR. Expérience, et voir ce qui fonctionne le mieux pour vous. La gamme de capteurs le rebond est encore plus grande dans l'obscurité, garder cela à l'esprit. Enfin, je angle des capteurs de lumière d'environ 30 degrés vers l'extérieur sur deux côtés pour que je puisse obtenir un écart de lumière de large. Encore une fois, expérimenter pour voir ce qui fonctionne pour vous. Vous aurez besoin d'expérimenter avec les valeurs claires et sombres dans le code parce que vos cellules CDS sera sans doute différente de la mienne.
Le IRBOT a trois modes qui sont sélectionnables quand il est allumé. Pour programmer ces modes:
Voici le programme , commenté en anglais , il représente ce qui se passe quand vous pirater plutôt que de planifier votre code :
( Cet article est traduit de l'anglais à partir du site d'origine http://users.frii.com/dlc/robotics/irbot/irbot.htm )
La dernière version du logiciel le plus grand, au moins comme des 09/10/98, donne IRBOT trois modes de fonctionnement. Le mode par défaut ne fonctionne tout simplement éviter objet, amusant en soi, mais je voulais plus. J'ai donc ajouté deux nouveaux modes qui sont basées sur les cellules photoélectriques CDS que la résistance changer en fonction de l'intensité lumineuse. Ils sont montés à l'avant de l'extérieur et inclinées IRBOT à environ 30 degrés ou plus. Le code actuel a maintenant la possibilité d'être léger en évitant (photophobes) ou de chercher la lumière (phototrophes). La mode est sélectionné par le déclenchement d'une ou l'autre capteur IR pendant deux secondes lorsque vous allumez-le. Les détails sont plus bas dans cette page.
Si vous voulez construire ce trop, mon conseil est d'obtenir le livre de Scott Edwards ci-dessus et un Stamp Parallax 1.4 rev. D . Le D rev vient sur une carte porteuse donc aucune autre dépense est nécessaire pour capter les signaux en provenance et à elle. Le livre Scott Edwards est livré avec le logiciel de programmation pour le timbre et il vient aussi avec des détails de construction pour rendre le câble de programmation, vous devrez connecter le timbre de votre machine DOS. Le livre est d'environ 30 $ et le cachet rev D est d'environ 35 $. Vous avez maintenant un langage BASIC microcontrôleur interprétation.
Vous avez maintenant besoin que de deux circuits intégrés simples, quelques résistances, des condensateurs, et un moyen de les lier ensemble. Tous ces composants peuvent être obtenus à votre Radio Shack local.
Le IRBOT, laid, mais il fonctionne très bien! |
Le Circuit infra-rouge de détection des objets
Ce circuit fonctionne en modulant une LED IR à 40KHz, qui est la fréquence centrale de la Sharp GPIU5 module de décodeur infrarouge. Vérifiez ce que vous obtenez à Radio Shack, certains modules sont GPIU 38KHz, qui vraiment, est assez proche de toute façon. Lorsque le faisceau modulé IR rebondit sur quelque chose que le module IR va réagir au signal en donnant une logique bas sur sa sortie. La logique de cette circuit fonctionne d'abord en permettant au microcontrôleur pour permettre à la gauche LED IR en mettant une logique bas sur cette broche, puis vérifier la réponse. Le microcontrôleur peut alors mettre un logique haut sur la gauche LED IR et de mettre un logique bas sur la droite de LED IR et à la recherche d'une réponse. De cette séquence le microcontrôleur peut déterminer s'il ya un objet à la gauche, à droite ou tout droit, et réagir en conséquence.Avec mon habituelle «ceinture et bretelles» l'attitude de conception (comme l'a souligné à moi), je doute surdimensionnées mon circuit. Peut-être, mais le dégrossi 555 seule version de ce circuit ne fonctionne pas très bien, son été abandonnée en faveur d'une solution basée PIC .
Leur schéma de circuit de détection
Le pot 2K dans le circuit 555 est là pour vous permettre de régler la sensibilité du circuit de détection en se déplaçant plus loin de 40KHz. Vous pouvez laisser cela et choisir de mettre du ruban adhésif clair sur le visage du module détecteur IR au lieu - je n'ai pas essayé encore. J'ai noté des cas où mon logiciel cherche la réponse du circuit et où il permet à la gauche ou de droite à LED pour la recherche. Le plafond de 0,1 uf sur le côté de la CAP 10UF dans le coin supérieur gauche du schéma se trouve physiquement à proximité de la minuterie 555. IRM est le module de détection infrarouge. Si vous ne pouvez pas obtenir une résistance 1.3K pour la minuterie 555, une résistance de 3.3K et 2.2K en parallèle viendra assez proche de cette valeur. Vous avez parfois besoin de vérifier le circuit pour la fréquence bon centre, ou jouer avec lui comme le 0,1 UF bouchons sont généralement + ou-20% de leur valeur affichée. Faire les bouchons 0,1 UF proche de la puce 74LS00 et le module IR 555 et que vous le pouvez.La construction du circuit
J'ai construit mes circuits en utilisant carte de prototypage et de point à point de soudure de fils. C'est une douleur, si vous connaissez un meilleur moyen, c'est faire. Comme référence, est inférieure à une première tentative de passage à un simple ou double face PCB pour ce circuit. La vue est à partir du haut et vous pouvez faire ce circuit imprimé simple face en lançant juste jumper fils entre les points où les connexions rouges aller. Dans les deux cas, vous devez exécuter un cavalier entre les deux pads 'J' pour relier les broches de réponse. Pièces de placement n'est pas très critique, mais assurez-vous que la LED IR ne dépassent pas plus en avant que l'avant du module de détection infrarouge, ou vous obtiendrez des faux signaux. Cette image sera presque certainement pas être à l'échelle afin d'utiliser un copieur pour le rétrécir de sorte que les 8 broches IC s'adapte sur elle.Nouvelles Flash!
J'ai abandonné les circuits discrets de détection IR en faveur des variantes d'un circuit 12C508. L'utilisation d'un 12C508 libère beaucoup de temps processeur dans le debouncing de la détection et le filtrage du bruit. J'ai maintenant une UIT programmateur de PIC (moins de 40 $) et le MPASM Micropic assember pour créer une solution de microcontrôleur. J'ai peut-être jamais utiliser la logique discrète encore! Même une solution PIC simple est au moins aussi bonne que la mienne, mais n'exige pas mon pauvre petit timbre I à filtrer le bruit, le 12C508-ce que la plupart du temps avec un faible nombre de pièces et de la complexité. Il laisse plus de place pour faire d'autres choses dans le processeur principal et tire moins de courant. Son la solution parfaite - et son plaisir à jouer avec aussi bien. Un PIC 12C508 coûts 1,80 $, et même si sa seule programmables une seule fois, sa reste un grand. J'achète 'em par la demi-douzaine aujourd'hui. J'ai récemment terminé une solide solution de PIC , il est un interprète très solide et j'ai beaucoup apprécié la programmation PIC apprentissage et comment les Sharp IR GPIU démodulateurs travail.Les composants IRBOT Autres
Différents connecteurs
Il ya une multitude de connecteurs sur ce projet. J'ai utilisé ce que j'ai pu trouver pour rendre les côtés féminins des connecteurs. Pour les côtés masculins (les uns sur les planches), j'ai utilisé "bandes-tête" clipsée sur le nombre de conducteurs dont j'avais besoin. Les gars de Radio Shack vous donnera l'air stupide si vous le demandez bandes-tête, je recommande d'utiliser une opération de vente par correspondance comme JDR Microdevices et juste pour tous vos trucs électroniques là. Le numéro de pièce JRD pour ces bandes-tête est HDR-40. Bien sûr, si vous avez ordure qui traînent, il suffit d'utiliser ça!Moteurs
Le circuit de détection objet est seulement une partie de l'image IRBOT. Vous aurez aussi besoin de se déplacer. Ceci est fait par le piratage deux servos voiture RC. J'ai utilisé deux servos Hitec HS303 pour le mien. Si vous utilisez ou de servos Futaba Hobby Tour les numéros direction sera inversée par rapport à celles que je donne. En d'autres termes, inverse sera pas 64 C8 et vice-versa.Voici deux explications sur le piratage une servo RC, tant de courtoisie de Marvin Green de PARTS .
- Piratage d'un servo Futaba - par Kevin Ross
- Hacking une Servomoteurs Hitec - par Mondotronics
- Retirer la plaque supérieure et inférieure, voir ci-dessus pour plus de détails à ce sujet, c'est la même chose.
- Retirer les engrenages, en notant où ils ont besoin d'y retourner!
- Coupez l'onglet qui se trouve sur la grande roue dont les splines bâtons sur le haut de la servocommande
- Dévissez l'écrou de maintien du pot de (la grande roue est montée sur ce pot)
- Percez le centre de la grande roue qui monté sur le pot en utilisant un peu juste un tout petit peu plus pour que l'appareil va tourner facilement - être prudent et ne pas faire le trou trop grand!
- couper les mène à la casserole hors droit au pot de sorte qu'ils soient à long
- Agrandir le trou où les fils de commande de sortir de l'affaire servo afin que vous puissiez obtenir le pot entraîne bien que trop
- souder les fils qui est allé au pot à une petite garniture-pot qui sera collé à l'extérieur du boîtier d'asservissement: comme ceci:
- Soudez le fil qui allait à la poste du centre de la marmite à l'avance sur le pot-garniture qui est le bras d'essuie-glace
- Souder les fils qui allaient jusqu'aux extrémités de la marmite pour la fin conduit sur le potentiomètre-
- Sur un servo, dessouder le moteur de la BPC, c'est le tour de 180 degrés et soudez-le revenir dans - ce qui signifie que les moteurs seront contre rotation, de sorte que vous pouvez donner le même signal à moteurs sur les côtés opposés de la plate-forme en mouvement et ils vont la même direction
- Mettez le conseil du moteur, le pot et le circuit de retour à, ne pas plier le conduit garniture-pot
- Remontez les engrenages et de mettre la plaque supérieure et inférieure de retour sur
- Collez le pot-garniture à l'extérieur du boîtier d'asservissement où il n'interfère pas avec le montage du moteur pour une plate-forme
loopIt: pulsout 0150 pulsout 1150 pause de 15 goto loopItMaintenant tordre les deux potentiomètres jusqu'à ce que les moteurs s'arrêtent en mouvement. Vous les avez centré sur l'impulsion de synchronisation à 1.5ms arrêt complet. Vous avez à émettre des impulsions pour au moins 20 ms à un moment de garder les servos de se confondre. Ensuite, vous pouvez aller faire d'autres choses et de revenir à émettre des impulsions de commande pour les servos de nouveau.
Roues
IRBOT utilise deux pneus de 3 "RC atterrissage d'un avion pour les roues. Le type de mousse sont plus légers et c'est pourquoi je les ai utilisés. Tous les servomoteurs sont livrés avec une variété de palonniers. Choisissez celui qui ressemble le plus facile à utiliser et boulons un à chacune des roues dans votre manière favorite. Soyez prudent pour les centre de bien. La roue arrière est un lanceur unique. Trouvez celui qui se glisse sous le IRBOT et ne pas entrer dans le chemin.Bump Commutateur
Une autre composante sur la IRBOT est le commutateur bosse avant qui est utilisé pour obtenir IRBOT des ennuis qu'il ne voit pas (comme les pieds de chaise maigre). Il s'agit simplement de deux micro-interrupteurs collé à l'avant de la IRBOT avec un pare-chocs entre eux couvrant et s'étendant depuis les côtés des roues motrices. J'ai ce commutateur connecté au port 2 de timbre, il est prélevé après le capteur IR est et a priorité sur toutes les entrées de capteurs d'autres. Ce serait bien si je pouvais loquet de cette broche quand il a changé de statut, mais hélas ...Capteurs de lumière
Inclus sur le IRBOT est la capacité à capter la lumière. Deux capteurs de lumière sont placés de telle sorte que le robot peut dire si son plus sombre vers la droite ou la gauche. Celles-ci prennent place les deux derniers ports du capteur sur le 1.4D de timbre. Je les mets sur les ports 3 et 4 dans mon code. Pour obtenir cette conversion de pseudo-A / D, vous devez placer un condensateur de 0,1 uF au sol sur un côté de chacun d'eux et de l'autre côté va au port d'entrée. Essayez de garder la résistance normale de la cellule de la CDS à 10K ou moins.Le Programme de PBASIC pour la IRBOT
Ports utilisés sur le 1.4D de timbre
Il s'agit de la cartographie I / O des axes utilisés par le programme ci-dessous. N'hésitez pas à les changer, mais n'oubliez pas que vous devez changer le logiciel si vous ne.- Port 7 [ENTREE]: Détection IR module de sortie (objet détecté BAS =)
- Port 6 [SORTIE]: Droit Look (sur le niveau logique bas)
- Port 5 [SORTIE]: Gauche Look (sur le niveau logique bas)
- Port 4 [ENTREE]: Droit Side CDS Photocellule (capteur de lumière)
- Port 3 [input]: CDS Left Side Photocellule
- Port 2 [input]: Commutateur Bump avant
- Port 1 [SORTIE]: Droit de contrôle moteur
- Port 0 [SORTIE]: Ctrl gauche du moteur
Parlant d'éliminer les faux échos. vous aurez à jouer avec la LED d'orientation pour obtenir des résultats optimaux. J'ai constaté que les visant tout droit est très bon, mais, j'ai eu à les incliner un peu pour éviter les échos constante de l'étage de déclencher le module IR. Expérience, et voir ce qui fonctionne le mieux pour vous. La gamme de capteurs le rebond est encore plus grande dans l'obscurité, garder cela à l'esprit. Enfin, je angle des capteurs de lumière d'environ 30 degrés vers l'extérieur sur deux côtés pour que je puisse obtenir un écart de lumière de large. Encore une fois, expérimenter pour voir ce qui fonctionne pour vous. Vous aurez besoin d'expérimenter avec les valeurs claires et sombres dans le code parce que vos cellules CDS sera sans doute différente de la mienne.
Le IRBOT a trois modes qui sont sélectionnables quand il est allumé. Pour programmer ces modes:
- Pour éviter seul objet - il suffit de l'allumer dans une pièce normalement éclairée
- Pour une réponse photophobes - déclencher le capteur IR gauche pendant deux secondes d'abord
- Pour une réponse phototrophes - déclencher le capteur IR droit pendant deux secondes d'abord
Voici le programme , commenté en anglais , il représente ce qui se passe quand vous pirater plutôt que de planifier votre code :
'************************************************************************' IRBOT'' Object avoiding robot that uses my home-made IR sensor, a bump' switch and two CDS photocells to detect light. The IR is debounced by ' several readings to eliminate false echoes hopefully. ' Operation:' Output a 'low' on port 5 to enable the left looking IR LED' Output a 'low' on port 6 to enable the right looking IR LED' Look for a consistant 'low' on port 7 to detect an obstruction' A 'low' on pin 2 signifies that IRBOT ran into something ' Port 4 is the right light sensor, low values mean lots of light' Port 3 is the left light sensor, same as above' Port 1 controls the right motor' Port 0 controls the left motor' ' IRBOT can be set to just avoid obstacles or be photophobic (light ' avoiding) or phototrophic (light seeking). To set the various modes,' do the following:' To just avoid obstacles, just turn it on in normal or bright light' To be photophobic, cover the left photocell for two seconds when turned on' To be phototrophic, cover the right photocell for two seconds on turnon' ' IRBOT will now choose semi-randomly the backup mode when it is either' light sensitive, not just avoiding.'' DLC 10/9/98'************************************************************************SYMBOL side = b1SYMBOL mot_ctl = w2SYMBOL mot_l = b4SYMBOL mot_r = b5SYMBOL timer = b7SYMBOL fulsec = 15 '50 = about 1 secondSYMBOL longsec = 50SYMBOL sright = b8 'light sensorsSYMBOL sleft = b9SYMBOL literight = 3SYMBOL liteleft = 4SYMBOL temp1 = b10SYMBOL temp2 = b11SYMBOL scale = 40 'new factor 10/5SYMBOL DARK = 254 'Its darkSYMBOL BRIGHT = 25 'Its brightSYMBOL modeflag = b6 'flag for mode determinationSYMBOL F = $6464 'Go forwardSYMBOL R = $9664 'Turn Right SYMBOL L = $6496 'Turn LeftSYMBOL BR = $C896 'Back RightSYMBOL BL = $96C8 'Back LeftSYMBOL B = $C8C8 'Straight BackSYMBOL PB = $64C8 'Pivot backSYMBOL RB = $C864 'The other waySYMBOL SS = $9696 'stand stillSYMBOL RMOT = 1 'Right MotorSYMBOL LMOT = 0 'Left MotorSYMBOL LEFT = 5 'Left LEDSYMBOL RIGHT = 6 'Right LEDSTART: pause 2000 'Just wait 2 seconds gosub lookout 'check for mode if b0 = 1 then bphobic 'be photophobic if b0 = 2 then btropic 'be phototropic modeflag = 0 'just avoid stuff goto testitbphobic: modeflag = 1 goto testitbtropic: modeflag = 2testit: b0 = 0 'sense flag gosub lookout 'Look at IR sensors if pin2 = 0 then oops 'bump switch if b0 <> 0 OR modeflag = 0 then brnch 'avoid first pot liteleft,scale,sleft 'look for darkness pot literight,scale,sright 'look for darkness sleft = sleft -1 'convert 0 to 255 sright = sright -1 temp1 = sleft/sright * 100 'bug in Stamp makes me do this temp2 = sright/sleft temp1 = temp1 + temp2 if modeflag = 1 then phobic 'be photophobictropic: if temp1 >= 200 then gright 'darker to left if temp1 >= 2 AND temp1 < 100 then gleft 'darker to right if sright <= BRIGHT AND sleft <= BRIGHT then goforit'Nice and bright if sright >= DARK AND sleft >= DARK then oops 'go back to light!phobic: if temp1 >= 200 then gleft 'darker to left if temp1 >= 2 AND temp1 < 100 then gright 'darker to right if sright <= BRIGHT AND sleft <= BRIGHT then oops 'WAY too bright if sright >= DARK AND sleft >= DARK then stand 'stay in the dark goto brnchgleft: b0 = 2 goto brnchgright: b0 = 1 goto brnchgoforit: b0 = 0 goto brnchstand: pause 5000oops: b0 = 4brnch: lookup b0,(F,R,L,BR,PB),mot_ctl 'choose path if b0 > 2 then long 'backing up timer = fulsec 'normal timer goto loopitlong: timer = longsec 'a real secondloopit: for b2 = 1 to timer 'Turns motors on pulsout RMOT,mot_r pulsout LMOT,mot_l pause 15 next goto testit'Check IR sensorlookout: 'Look left high RIGHT low LEFT side =1 goto dbouncerstart: 'Look right high LEFT low RIGHT side = 2dbounce: b2 = pin7 for b3 = 1 to 3 'Take four readings to debounce pause 1 b2 = b2 + pin7 next if b2 = 0 then detected 'got a repeatable transition if side = 1 then rstart 'this was left side, now do rightfinished: returndetected: b0 = b0 + side 'add left and right reading if side = 1 then rstart 'now do the right side if b0 = 3 AND modeflag <> 0 then rbckup goto finished rbckup: b3 = sright & 1 'semi random backup mode b0 = b0 + b3 goto finished
Aucun commentaire:
Enregistrer un commentaire