Étape 4: Ajout d’un circuit plus
Une petite note avant de continuer : les broches nous utiliserons ont plusieurs fonctions qu’ils sont capables d’accomplir pour nous. Sur le schéma, les lettres et le numéro à l’extérieur de la zone représentant la puce sont les noms génériques de broche. PB1, par exemple, signifie broche Port B 1. Les broches e/s sont regroupés dans des ports et peuvent être utilisés individuellement ou en groupes de jusqu'à la taille du port. Port C est l’excentrique avec seulement 7 broches et port B dispose de plusieurs de ses broches utilisés comme axes de programmation. N’oubliez pas que nous pouvons réutiliser tout sauf la broche de remise à zéro, donc seuls PC6 est hors limites. En outre, PB6 et PB7 sont utilisés comme les broches d’oscillateur cristal, donc ceux qui sont hors limite trop, mais uniquement lorsque vous devez utiliser un oscillateur externe.
Commençons par les entrées capteur.
En regardant la première photo, vous pouvez voir que les circuits de Q1 et Q2 sont identiques. Les capteurs fournissent un signal 12VDC, quand ils sont actifs. C’est trop pour envoyer à un pin d’entrée directement, alors j’ai utilisé ces commutateurs de transistor pour détecter lorsque le capteur est actif et tirer la goupille d’entrée à la terre.
D4 et D5 sont juste là pour faire la queue des capteurs plus faciles. J’utilise un capteur photo avec un réflecteur pour rebondir la poutre arrière, alors quand ils sont alignés correctement les LEDs s’éteindre et les broches d’entrée aller hautes. Le logiciel que nous arriverons plus tard assurera le suivi de ces entrées d’aller la bas pour indiquer le passage de l’objet cible. Résistances R2 et R3 sont des résistances de pull-up sur ces broches d’entrée pour éviter les déclenchements intempestifs du bruit. L’AVR a des résistances de pull-up interne que vous pouvez activer pour chaque entrée, mais j’ai trouvé qu’ils n’ont pas pu assez rapidement à la mise sous tension, et une interruption a été déclenchée immédiatement chaque fois. Les résistances de pull-up externes éviter cela. R14 et R15 ont été ajoutées vers la fin de la mise au point pour éviter les interruptions de déclenchement en touchant les fils dans le circuit.
Avoir un regard sur les fonctions des deux broches reliés à transistors. Vous verrez qu’ils sont PCINT(number) et INT(number.) P.C.int est synonyme de goupille changement interruption et, si activé, va déclencher une interruption chaque fois que la tige change d’État entre 0 >> 1 ou 1 >> 0. C’est bon pour certaines applications, mais pas pour celui-ci. L’autre fonction commune, INT0/INT1, signifie interruption externe 0 et 1. Ce sont les deux seules interruptions de ce genre sur la puce, et elles peuvent être configurées pour déclencher sur les choses positives ou négative va à bord d’une impulsion... C’est parfait pour nos besoins ! Nous voulons déclencher dès que la tige va de 5V à la terre uniquement ; Nous ne se soucient pas quand la broche va haute encore une fois (sauf si vous voulez essayer de mesurer la longueur de l’objet de passage, mais c’est un autre projet!)
Je sais que j’ai promis plus d’infos sur interruptions... Soyez patient. Pour l’instant, il suffit de savoir que lorsqu’une interruption est déclenchée le programme cesse de ce qu’elle fait et exécute le code que nous écrivons pour cette interruption. Après l’exécution de ce code, le programme remonte à ce qu’il faisait avant, comme rien n’est jamais arrivé. Nous configurerons les interruptions dans le logiciel, donc plus à ce sujet dans la section logiciels, y compris quelques pièges à surveiller !
C’est tout pour les entrées de capteur ! Ainsi, gagner ces ajouts sur le montage d’essai et ensuite nous allons passer certaines connexions d’e/s plus...
Dans le deuxième pic, voilà notre première sortie ! R4 et D2 que le « ready » s’allume indiquant que le programme est prêt à prendre la prochaine mesure. Il s’agissait d’un ajout tardif après que j’ai eu quelques problèmes avec la deuxième déclenchement de capteur plusieurs fois au cours d’une mesure unique. Maintenant, chaque capteur peut déclencher une seule fois lors de la prise de la mesure, puis pas avant quelques temps passe. Après que le temps passe, le voyant s’allume et la prochaine mesure peut avoir lieu. SW4 a également été un ajout tardif. Une fois que la distance entre les capteurs est définie (voir section suivante), je voulais un moyen d’être en mesure de vérifier quelle valeur le programme utilisait cette distance dans le calcul. Appuyer sur ce bouton provoque cette consigne à afficher sur les écrans de sortie.
OK, SW3. Il s’agit d’un package DIP 8 interrupteurs que j’ai utilisé pour obtenir des données de l’utilisateur dans la puce au moment de l’exécution. 6 commutateurs sont utilisés, et chacun d’eux se connecter à un pin d’entrée avec la résistance de pull-up interne activée (nous verrons comment les activer plus tard dans le logiciel). Les 4 premiers commutateurs représentent la distance entre les capteurs dans les pieds. La gamme est 1-16 pieds par incréments d’un pied (0000 = 16.) A l’origine, la gamme était de 1-15 et 0000 était 0, mais qui a provoqué une condition de division par zéro. Pour cette raison, tous les 4 entrées basses est égale à 16. Notez que les 4 entrées ne sont pas sur les broches d’entrée consécutives. Cela pose un petit problème quand ils sont censés pour être un nombre binaire de 4 bits. Pour cette raison, nous devrons faire une manipulation un peu dans le logiciel pour récupérer les 4 bits ensemble avant de pouvoir être utilisés comme valeur binaire. Les deux derniers interrupteurs de SW3 sont deux entrées plus pour permettre à l’utilisateur de choisir les unités de sortie préféré. Vous pouvez voir la note à ce sujet sur le schéma. Les unités de sortie possibles sont miles/h, kilomètres/heure, mètres/sec et pieds/sec. Il est possible d’utiliser n’importe quelle unité que vous voulez bien sûr. Si vous aimez furlongs/quinzaine, vous pouvez le faire tout aussi bien en changeant l’arithmétique dans le programme ! Plus de goodies d’attendre avec impatience !
PIC 3 montre les 4 bits BCD (Binary Coded Decimal ; juste un nombre décimal représenté par 4 bits. Rafraîchir votre BCD ici : http://en.wikipedia.org/wiki/Binary-coded_decimal) sortie à la BCD à 7 segments décodeur, le 74LS48. PortB0 - 3 sont bien groupés ensemble ce qui facilite leur envoyer aux entrées BCD du décodeur sans mise en forme. Les broches de décodeurs marqués * capitol * A, B, C et D sont les entrées BCD. Ainsi, dès que nous aurons notre nombre, nous pouvons juste l’envoyer en sortie binaire sur le portB et laissez le décodeur le reste. SW1 est facultative et indique juste le décodeur s’allume tout sur les écrans pour des fins de test. SCR et le sol doivent être explicite ici, et nous y reviendrons * minuscules * a, b, c, d, e et f suivant... Une dernière chose sur le décodeur. La broche − nous utilisons le « test de la lampe » évidemment, mais quels sont ces deux autres broches bizarres ? /BI-/ RBO est non suppression d’entrée et sortie de zone morte non-ondulation (la barre au-dessus du nom est un opérateur logique "ne pas" ce qui signifie active faible comme la broche de remise à zéro sur l’AVR.) Détails sur le fonctionnement de ces broches dans la feuille de données, mais si rien d’autre, l’entrée de suppression de trame ne doit pas aller à la terre ou l’affiche sera vide ! Donc j’ai juste branché à l’alimentation 5v +.
Fig 4 semble plus compliquée qu’il est réellement. Chaque afficheur 7 segments a chacune de ses anode (positif) connexions étiqueté minuscules a - f. Les trois affiche guirlande juste ensemble afin que tous les les sont liées ensemble et tous les BS sont attachés ensemble et ainsi de suite... Puis ils ont tous se connectent à la broche correspondante sur le décodeur de sorte que toutes les données depuis le décodeur passe à tous les trois des écrans en même temps. Vous pourriez vous demander comment vous afficheriez un nombre à trois chiffres qui a des chiffres différents ! C’est le but de la Q3, Q4 et Q5. Chaque affichage nécessite également une connexion (négatif) cathode au sol pour pouvoir s’allumer. Donc, si nous pouvons contrôler l’affichage est mis à la terre et contrôler quels chiffres envoie le décodeur, nous pouvons faire défiler les trois chiffres et à trois écrans vraiment rapides pour afficher un chiffre différent sur chacun d’eux ! Ce processus est appelé multiplexage. L’utilisation du décodeur 7 segments et multiplexage réduit le nombre de broches de sortie nécessaires de 21 à seulement 7 ! PortC0 - 2 sont utilisés pour contrôler les commutateurs de transistor qui ancreront les affichages. Cette partie est amusant dans le logiciel ! Je ne peux pas attendre !
La dernière photo montre le circuit rempli. Si vous n’avez pas déjà, il planche à pain avec soin et soyez prêt à revenir à ATMEL Studio...