Fabriquez un capteur de proximité infrarouge basé sur Attiny13 pour 2,42 $: 7 étapes (avec photos)

Fabriquez un capteur de proximité infrarouge basé sur Attiny13 pour 2,42 $: 7 étapes (avec photos)

Table des matières:

Anonim

REMARQUE: le diagramme est faux. La broche de détection se place sur la broche 6 (une de plus à gauche), pas sur la broche 5. Je mettrai à jour les diagrammes prochainement.Merci à brmccollum pour la correction. (Diagrammes maintenant corrigés)

Il s’agit d’un capteur de proximité infrarouge extrêmement économique que vous pouvez fabriquer avec quelques pièces économiques et un programmateur AVR. J'utilise un Arduino comme programmeur dans cet Instructable.

Ce capteur n’a qu’une portée d’environ 3 pouces. Vous pouvez facilement ajouter plus de LED ou plus brillantes pour étendre la portée. Vous pouvez également réorganiser facilement les LED pour détecter également le moment où un faisceau est interrompu.

La conception tire parti d'un AVR (ordinateur sur puce) bon marché. L'ordinateur allume et éteint les DEL IR et compare les lectures analogiques du capteur dans chaque état. Lorsque la lecture avec les lumières allumées est au-dessus de la lecture avec les lumières éteintes, la broche de détection devient haute indiquant que le capteur voit sa propre lumière (réfléchie). Il y a une LED sur l'indicateur de lecture dans cette conception afin que vous puissiez voir quand le capteur s'enclenche. Vous pouvez connecter le signal directement à un microcontrôleur, comme un Arduino ou un Picaxe.

Cette conception déplace une partie du traitement de votre cerveau de robot principal vers son propre noeud. Vous voudrez peut-être atténuer le signal, mais vous n'avez pas besoin de faire clignoter les leds et de prendre les lectures. Vous pouvez également utiliser une seule broche numérique pour prendre la lecture. Le croquis représente environ 700 000 des 1024 disponibles.

Pourquoi j'ai construit ça

Je sors du lycée, mais cela fait partie d'une série de projets visant à amener les robots du jeu Robot Oddysey dans le monde réel. Je veux donner aux écoliers la même chance d'apprendre la robotique que j'ai eue. Je travaille donc à la construction de robots vraiment peu coûteux, capables de se déplacer dans 8 directions sans tourner. Les "bumpers" sont terminés maintenant.

Suivez @ dustin1970

Provisions:

Étape 1: Rassembler les matériaux

Les composants électroniques dont vous aurez besoin sont les suivants. Les numéros et références Digikey sont valables à partir du 18/04/2012.

Quantité

Numéro de pièce Digikey La description Coût
1 475-1439-ND475-1439-ND PHOTOTRANSISTOR NPN AVEC FILTRE 5MM $0.53
1 ATTINY13A-PU-ND IC MCU AVR 1K FLASH 20MHZ 8PDIP $0.95
3 CF14JT220RCT-ND RES 220 OHM 1 / 4W 5% FILM DE CARBONE $0.24
1 CF14JT1M00CT-ND RES 1M OHM 1 / 4W 5% FILM DE CARBONE $0.08
1 2N3904FS-ND IC TRANS NPN SS GP 200MA TO-92 $0.18
2 754-1241-ND EMETTEUR IR 3MM 940NM TRANSPARENT À L'EAU $0.44
TOTAL $2.42

Vous aurez aussi besoin de

  • Ruban électrique
  • paille en plastique
  • les ciseaux
  • Coupe-fil
  • planche à pain et / ou fer à souder
  • Fils de connexion
  • Un programmeur AVR (n'importe quel compatible Ardunio fera l'affaire)
  • Logiciel Ardunio 1.0 avec modifications du programme Attiny et du noyau Atiny13

Étape 2: Créer un carénage de capteur

Vous ne voulez pas que la lumière infrarouge s'infiltre des côtés du capteur. Nous allons créer un petit tunnel avec du ruban isolant et une paille. Ma bande est opaque aux IR. Le vôtre l'est probablement aussi, mais vous pouvez l'aligner avec une feuille d'aluminium si vous voulez en être sûr. Assurez-vous qu'aucun métal n'est exposé car cela ruinerait le circuit.

Coupez environ 4 cm (1,5 ") de la paille. Enveloppez-la dans du ruban isolant. Coupez les extrémités et rendez-la nette.

Coupez un morceau de ruban adhésif d'environ 8 mm (1/2 ") et enroulez-le à partir du bord court. Pliez le rouleau en deux. Il ne restera pas en place, mais un bon pli dedans. Ceci obturera le bas du capteur et gardera lumière parasite de cette façon.

Étape 3: préparer le capteur

Couper la jambe du milieu de votre phototransistor s'il en a un. Ce n'est pas nécessaire dans cette conception et peut réellement causer des problèmes si vous le laissez allumé. Vous n'êtes pas obligé de tout réduire, mais ne partez pas beaucoup.

Faites glisser doucement le capteur dans la paille jusqu'à ce que la base atteigne environ 5 mm (1/4 "). Poussez le rouleau de ruban plié derrière celui-ci et scellez le dos avec un peu de ruban adhésif.

Étape 4: Connecter

Vous pouvez le faire sur la maquette ou le souder à la manière d'un "bug mort". Commencez par la planche à pain pour pouvoir programmer facilement l’Attiny13. Une fois que cela fonctionne, vous pouvez le souder ensemble.

Suivez le schéma de câblage et gardez quelques notes à l'esprit.

  • La puce, les LED et les transistors ne fonctionnent que dans un sens.
  • Le bras court des LEDS est connecté aux résistances de 220 ohms.
  • le longue la jambe du phototransistor est connectée à la résistance 1meg.
  • Vous pouvez ajouter plus de paires émetteur / résistance IR en parallèle avec la paire existante. Faites fonctionner le circuit de base en premier. Vous pouvez également utiliser un seul émetteur IR, mais 2 semble rendre les lectures beaucoup plus stables.
Remarque: Après avoir réalisé ce diagramme, j'ai découvert qu'un condensateur de 0,1 uf sur la puce Attiny de VCC à GND aide à la stabilité. Il est recommandé d'en insérer une sur chaque puce d'un design. Sans cela, cela fonctionnait raisonnablement dans la planche à pain, mais le circuit imprimé s’est vraiment amélioré avec l’ajout.

Étape 5: Câbler l'AVR (Arduino) et programmer la puce

Si vous gravez l'esquisse ArduinoISP sur un Ardunio basé sur AtmegaX28, il peut graver le programme de puces Attiny. Le diagramme montre un pro-mini pour économiser de l'espace. Utilisez simplement les mêmes numéros de broches pour n’importe quel tableau Si vous avez un autre programmeur AVR, je suppose que vous savez vous en servir.

Installez Attiny13 Core13 à partir de sourceforge. Voici un fichier Instructable de diy_bloke avec des instructions et même un fichier zip à télécharger.

Voici les instructions du MIT pour modifier votre environnement afin de graver Attiny.

Cette page pourrait vous aider si vous avez des problèmes. Vérifiez les commentaires.

Fil dans l'Arduino. Vous pouvez le débrancher lorsque la programmation est terminée.

Chargez le fichier INO et gravez-le sur la puce Attiny13.

Autrement, utilisez simplement un programmeur AVR pour graver le fichier hexadécimal ou nikkipugh Author de Instructable dispose d’un bouclier en super bande pour la programmation de puces attiny13.

Vous aurez peut-être besoin d'un condensateur de 10 uf ou d'une résistance de 120 ohms après la réinitialisation de l'Arduino à la terre.

code:

/ * Capteur de proximité Attiny13 de Dustin Andrews 2012 Licence: Creative Commons Unported http://creativecommons.org/licenses/by/3.0/ * / // Faites de l'écriture de broches AVR de bas niveau pour sauvegarder les instructions. 1010 sur 1024. Fermer! #define SetPin (Bit) PORTB | = (1 << Bit) #define ClearPin (Bit) PORTB & = ~ (1 << Bit) // câble votre IR à cette broche. (puce broche 5?); #define irOutPin 3 // Cette broche monte lorsque le capteur détecte un obstacle. (puce pin 6) #define outPin 1 // câblez cette broche à votre phototrans vcc -> phototrans -> pin4 -> 1M res -> gnd (puce pin3) #define sensorInPin 2 void setup () {pinMode (irOutPin, OUTPUT); pinMode (outPin, OUTPUT); // pinMode (2, OUTPUT); analogReference (0); // analogread ne fonctionnera pas sur Atiny13 sans cette ligne. Ne travaillera pas sur les autres AVEC probablement. } void loop () {statique longue différence = 0; non signé statique long lastTime = 0; SetPin (irOutPin); delay1 (); unsigned int r1 = analogRead (sensorInPin); ClearPin (irOutPin); delay1 (); unsigned int r2 = analogRead (sensorInPin); différence + = r1 - r2; if (millis () - lastTime> 5) // pourrait obtenir une réponse plus douce avec des délais plus longs {if (difference> 0) {SetPin (outPin); } else {ClearPin (outPin); } différence = 0; lastTime = millis (); }} void delay1 () {// delay (1) est trop coûteux en mémoire. Pourquoi est-ce tellement moins cher?: D début long = millis (); while (true) {if (millis () - start> 1) {break;}}}

Étape 6: Construisez un robot impressionnant avec le capteur

À ce stade, vous devriez avoir un capteur qui fonctionne sur la planche à pain. Souder ensemble pour un capteur bon marché que vous pouvez ajouter à un robot. Le capteur finira par avoir 3 fils externes. VCC (5v), GND et Sense. Voir le schéma de circuit pour savoir où accrocher "sens". C'est le même fil que la longue jambe de la LED indicatrice.

Dépannage:

  • Vérifiez tous les fils.
  • Remuez les voyants et assurez-vous qu'ils sont bien alignés avec le canon.
  • Vérifiez les fils à nouveau.
  • Demandez à quelqu'un de regarder par-dessus votre épaule pendant que vous expliquez où va chaque fil. (Cela aide si souvent que ce n'est même pas drôle)
  • Vérifiez la polarité des LED, du capteur et du transistor.
  • Vérifiez la polarité de l'Attiny. S'il fait chaud, vous mettez en arrière.
  • Utilisez un téléphone ou un autre appareil photo numérique pour vérifier que les voyants sont allumés.
  • Éteignez toutes les lampes fluorescentes et essayez le capteur à l'abri du soleil.
  • Prenez l’une des DEL et attachez-la à de longs fils et placez-la dans le corps du capteur pour voir si elle peut voir du tout.
  • Remplacez la résistance 1M par des valeurs plus petites pour obtenir moins de sensibilité.
  • Tweak le code.

Étape 7: facultatif - le circuit imprimé

Cette étape comprend un fichier PDF que vous pouvez utiliser sur une imprimante laser avec les méthodes de transfert de toner ou de fabrication de cartes photo. Il y a beaucoup d'instructions partout pour savoir comment faire cela. J'ai effectivement déterminé que l'ajout d'une limite.1uf sur VCC et GND sur la puce contribue à rendre le fonctionnement du tableau plus fiable.

Imprimez le motif sur ce qui sera le fond du tableau. Insérez les composants à partir du côté vide de la carte conformément au schéma et soudez-les. J'ai plié la LED et le capteur avance à 90 degrés pour que le capteur regarde "devant".

Le PDF et la mise en page sont légèrement différents de l'image. J'ai ajouté explicitement le capuchon à 0,1 uf et j'ai fait en sorte que la jambe de base du transistor reste à l'écart de la ligne de capteur.