Table des matières:

Construisez votre propre contrôleur de caméra sans fil multifonction (pas cher !) : 22 étapes (avec photos)
Construisez votre propre contrôleur de caméra sans fil multifonction (pas cher !) : 22 étapes (avec photos)

Vidéo: Construisez votre propre contrôleur de caméra sans fil multifonction (pas cher !) : 22 étapes (avec photos)

Vidéo: Construisez votre propre contrôleur de caméra sans fil multifonction (pas cher !) : 22 étapes (avec photos)
Vidéo: Niska sur le tournage avec shay 2024, Juillet
Anonim
Construisez votre propre contrôleur de caméra sans fil multifonction (pas cher !)
Construisez votre propre contrôleur de caméra sans fil multifonction (pas cher !)
Construisez votre propre contrôleur de caméra sans fil multifonction (pas cher !)
Construisez votre propre contrôleur de caméra sans fil multifonction (pas cher !)
Construisez votre propre contrôleur de caméra sans fil multifonction (pas cher !)
Construisez votre propre contrôleur de caméra sans fil multifonction (pas cher !)

Introduction Avez-vous déjà eu envie de créer votre propre contrôleur de caméra ? REMARQUE IMPORTANTE: les condensateurs du MAX619 sont de 470n ou de 0,47u. Le schéma est correct, mais la liste des composants était erronée - mise à jour. Ceci est une participation au concours Digital Days, donc si vous le trouvez utile, veuillez noter/voter/commenter favorablement ! Si vous l'aimez vraiment et que vous êtes un trébuchement, appuyez sur "Je l'aime!":) Mise à jour: en vedette sur hackaday ! hackaday.com/2009/10/13/a-different-breed-of-camera-controllers/ Mise à jour: nouvelles photos du déclencheur laser en action ! Mise à jour: premier prix =D, merci d'avoir voté et/ou noté ! Cette instructable est principalement destinée aux utilisateurs de reflex qui cherchent à tirer un peu plus de kilométrage de leurs appareils photo, mais s'il y a des points et des prises de vue avec des interfaces IR, vous pourriez trouver cela intéressant. Certes, cela fonctionnera également (avec un peu de modification) avec des hacks de caméra où vous pouvez câbler des sorties logiques aux terminaux de déclenchement de caméra. Cela a commencé comme un didacticiel complet, mais en raison de certaines contraintes inattendues que j'ai rencontrées plus tard, il s'agit peut-être plutôt d'un guide sur la façon d'accomplir diverses choses - je vous laisse souvent le choix de la façon dont vous pouvez faire les choses qui Je pense que c'est une meilleure façon de faire les choses que de simplement dire aveuglément "tu dois le faire". Considérez cela comme une leçon de conception de contrôleur de caméra. J'ai fourni des schémas et un code complet afin que vous puissiez toujours le copier. Ce sera un cas simple de transfert de la conception sur un stripboard et d'ajout de l'écran LCD pour la plupart des gens. J'ai expliqué comment le tester car le processus est très similaire et permet de corriger les erreurs avant de rendre la conception permanente ! Conceptions de capteurs incluses - lumière, son (beaucoup plus possibles !) Coût total - moins de 25 £ (hors outils) Écran LCD pour un changement facile des paramètres Compatible avec Nikon/Canon (codé), support potentiel (non testé) pour Olympus/Pentax Pas de firmware modification nécessaire Utilise l'IR, il est donc à la fois sans fil et n'endommage pas votre appareil photo. J'ai eu l'idée de cela après m'être assis dehors dans le froid en cliquant sur ma télécommande pendant des heures. Je faisais un intervalle de 8 secondes pour environ 1000 coups. J'ai pensé, hé, c'est juste une LED IR n'est-ce pas ? Pourquoi ne puis-je pas le reproduire et créer ma propre télécommande avec un délai intégré ? J'ai ensuite découvert (un peu embarrassé, parce que je pensais que j'avais eu une onde cérébrale massive) que cela avait été fait et qu'il y avait même quelques instructables sur le sujet. Là où mon implémentation diffère de la plupart des intervallomètres et des télécommandes de bricolage, c'est qu'elle permet beaucoup de personnalisation et de modularité, est compatible avec Nikon/Canon (et probablement d'autres plus tard) et combine la possibilité de prendre une photo sur un déclencheur particulier. L'idée est simple. Vous souhaitez prendre une photo de quelque chose d'assez rapide (limité actuellement par le décalage de votre obturateur, pour moi 6ms). Il existe une variété de méthodes pour ce faire: 1. Essais et erreurs, vous essayez de prendre la photo au bon moment. au bon moment 3. Achetez un contrôleur de déclenchement dédié qui a une sorte de capteur audio/lumière pour prendre la photo à votre commande 4. Construisez-en un vous-même ! Ok, 1 et 2 sont parfaits pour déconner et peuvent donner de très bonnes images. Mais ce que je vais vous montrer, c'est qu'il est possible de construire un circuit qui vous donnera des résultats cohérents à maintes reprises. Plus important encore, en ces temps serrés, le coût est inférieur aux modèles alternatifs (certaines personnes ont produit des kits faisant ce genre de chose, mais ils coûtent une fortune voir les liens). La polyvalence de la conception est la suivante: si votre capteur génère une tension de sortie comprise entre 0 et 5V, vous pouvez l'utiliser pour déclencher votre caméra ! À première vue, c'est une déclaration ennuyeuse, mais une fois que vous commencez à comprendre les implications, cela devient très puissant. En surveillant simplement un niveau de tension, votre déclencheur peut être basé sur la lumière (LDR), le son (microphone ou ultrasons), la température (thermistance) ou même un simple potentiomètre. En fait, à peu près n'importe quoi. Vous pouvez même relier le circuit à un autre contrôleur et à condition qu'il puisse vous donner une sortie logique, vous pouvez ainsi déclencher à partir de celui-ci. La seule limitation majeure de la conception actuellement est qu'elle ne fonctionne qu'avec des interfaces IR, il serait assez simple de modifier le logiciel et le matériel pour sortir via mini-USB ou tout autre type d'interface requis. Remarque: Code source: j'ai fourni quelques applications à l'étape 13. Le code que j'exécute sur mon contrôleur à partir de maintenant se trouve dans un fichier hexadécimal avec le fichier c principal et ses dépendances. Vous pouvez simplement exécuter mon code si vous n'êtes pas sûr de la compilation. J'ai également inclus des exemples de code que vous pouvez utiliser à différentes étapes (ils s'appellent évidemment remote_test, intervalometer test et adc test. Si je me réfère au code dans une étape, il y a de fortes chances qu'il y soit. EDIT: Une mise à jour sur les ballons éclatent - il semble que j'étais un peu myope quand j'ai dit que vous pouviez facilement prendre des photos de ballons éclatant. Il s'avère que la peau d'un ballon moyen voyage si vite qu'elle aura complètement éclaté au moment où votre appareil photo se déclenche. est un problème avec la plupart des appareils photo, PAS le contrôleur (qui détecte l'ADC à un taux d'environ 120 kHz). Le moyen de contourner cela est d'utiliser un flash déclenché, ce qui est faisable si vous ajoutez un fil supplémentaire et un autre petit circuit. Cela dit, vous pourriez en théorie utiliser autre chose pour le faire éclater et jouer avec le retard (ou même changer le code de retard pour inclure des microsecondes). Une pastille d'air voyageant 1m à 150ms-1 prend environ 6-7ms, assez de temps pour déclencher et tirer Le simple déplacement du pistolet fournirait un délai rudimentaire de quelques microsecondes s. Encore une fois, toutes mes excuses à ce sujet, je vais jouer ce soir si je peux mettre la main sur des ballons, mais il y a encore de nombreuses utilisations pour un déclencheur audio, comme des feux d'artifice ! J'ai mis un laps de temps rapide et sale ci-dessous pour montrer que cela fonctionne cependant:) N'oubliez pas de lire, de noter et/ou de voter ! Salutations, JoshDisclaimer Dans le cas improbable où quelque chose se passe horriblement mal ou vous brisez votre appareil photo / rêvez votre chat, je ne suis pas responsable de quoi que ce soit. En démarrant un projet basé sur cette instructable, vous acceptez cela et continuez à vos risques et périls. La réponse a été écrasante jusqu'à présent (du moins selon mes normes), donc ce serait génial de voir comment les gens l'interprètent. Je travaille sur la révision 2 pendant que je tape;)

Étape 1: Quelques réflexions initiales…

Alors, comment allons-nous construire cette chose ?MicrocontrôleurLe cœur et l'âme de ce projet est un AVR ATMega8. Il s'agit essentiellement d'une version légèrement rognée de la puce ATMega168 utilisée par Arduino. Il est programmable en C ou en assemblage et possède une variété de fonctionnalités vraiment utiles que nous pouvons utiliser à notre avantage." 28 broches, dont la majorité sont des entrées/sorties (i/o)" Convertisseur analogique-numérique embarqué" Faible consommation "3 minuteries intégrées" Source d'horloge interne ou externe" Beaucoup de bibliothèques de code et d'échantillons en ligneAvoir beaucoup de broches est une bonne chose. Nous pouvons nous interfacer avec un écran LCD, avoir 6 entrées de bouton et avoir encore assez pour une LED IR avec laquelle tirer et quelques LED d'état. La série de processeurs Atmel AVR a beaucoup de support en ligne et il existe de nombreux tutoriels pour commencé (je vais y revenir brièvement, mais il existe de meilleurs tutoriels dédiés) et des tas et des tas de code à méditer. Pour référence, je vais coder ce projet en C à l'aide de la bibliothèque AVR-LibC. J'aurais pu facilement utiliser PIC pour le faire, mais AVR est bien pris en charge et tous les exemples que j'ai trouvés pour les télécommandes ont été basés sur AVR ! Il existe deux principaux types d'affichage, graphique et alphanumérique. Les écrans graphiques ont une résolution et vous pouvez placer des pixels où vous le souhaitez. L'inconvénient est qu'ils sont plus difficiles à coder (bien que des bibliothèques existent). Les affichages alphanumériques sont simplement une ou plusieurs rangées de caractères, l'écran LCD dispose d'un magasin intégré de caractères de base (c'est-à-dire l'alphabet, certains chiffres et symboles) et il est relativement facile de sortir des chaînes, etc. L'inconvénient est qu'ils ne sont pas aussi flexibles et que l'affichage de graphiques est pratiquement impossible, mais cela convient à notre objectif. Ils sont également moins chers ! Les caractères alphanumériques sont classés par nombre de lignes et de colonnes. Le 2x16 est assez courant, avec deux rangées de 16 caractères, chaque caractère étant une matrice 5x8. Vous pouvez également obtenir 2x20 s, mais je ne vois pas le besoin. Achetez tout ce avec quoi vous vous sentez à l'aise. J'ai choisi d'utiliser un écran LCD rétroéclairé rouge (je veux l'utiliser pour l'astrophotographie et la lumière rouge est meilleure pour la vision nocturne). Vous pouvez vous passer de rétro-éclairage - c'est entièrement votre choix. Si vous choisissez un itinéraire non rétroéclairé, vous économiserez de l'énergie et de l'argent, mais vous aurez peut-être besoin d'une torche dans l'obscurité. Lorsque vous recherchez un écran LCD, vous devez vous assurer qu'il est contrôlé par le HD44780. Il s'agit d'un protocole standard de l'industrie développé par Hitachi et il existe de nombreuses bonnes bibliothèques que nous pouvons utiliser pour générer des données. Le modèle que j'ai acheté était un JHD162A d'eBay. La saisie se fera par boutons (simple !). J'ai choisi 6 - sélection de mode, ok/shoot et 4 directions. Cela vaut également la peine d'avoir un autre petit bouton pour réinitialiser le micro en cas de crash. En ce qui concerne l'entrée de déclenchement, certaines idées de base sont une résistance dépendante de la lumière ou un microphone à électret. C'est là que vous pouvez faire preuve de créativité ou de radin selon votre budget. Les capteurs à ultrasons coûteront un peu plus cher et nécessiteront une programmation supplémentaire, mais vous pouvez faire des choses vraiment intéressantes avec eux. La plupart des gens seront satisfaits d'un microphone (probablement le capteur général le plus utile) et les électrets sont très bon marché. Sachez qu'il devra également être amplifié (mais j'y reviendrai plus tard). Sortie - ÉtatLa seule sortie réelle dont nous avons besoin est l'état (en plus de l'affichage), donc quelques LED fonctionneront bien ici. images, nous avons besoin d'interfacer avec la caméra et pour cela nous avons besoin d'une source de lumière qui peut produire un rayonnement infrarouge. Heureusement, il existe une multitude de LED qui font cela et vous devriez essayer d'en choisir une de puissance raisonnablement élevée. L'unité que j'ai choisie a un courant nominal de 100 mA max (la plupart des LED tournent autour de 30 mA). Vous devez également prendre soin de noter la longueur d'onde de sortie. La lumière infrarouge se situe dans la partie de longueur d'onde la plus longue du spectre EM et vous devriez rechercher une valeur d'environ 850-950 nm. La plupart des LED IR tendent vers l'extrémité 950 et vous pouvez voir un peu de lumière rouge lorsqu'elle est allumée, ce n'est pas un problème, mais c'est du spectre gaspillé alors essayez de vous rapprocher de 850 si possible. cette? Bon, ça va être portable donc piles ! J'ai choisi d'utiliser 2 piles AA qui sont ensuite montées à 5V. Je vais passer en revue le raisonnement derrière cela dans les prochaines sections.'Casing and Construction'Comment vous faites ce morceau est entièrement à vous. J'ai décidé d'utiliser un stripboard pour le circuit après le prototypage car il est bon marché et flexible et permet d'économiser la conception d'un PCB personnalisé. J'ai fourni les schémas afin que vous soyez libre de créer votre propre schéma de circuit imprimé - bien que si vous le faites, je serais reconnaissant d'avoir une copie ! Encore une fois, le boîtier est entièrement votre choix, il doit pouvoir s'adapter à l'écran, aux boutons (dans une disposition assez intuitive si possible) et les batteries. En ce qui concerne les circuits imprimés, celui-ci n'est pas si compliqué, de nombreuses connexions sont simplement liées à des éléments tels que les boutons/LCD.

Étape 2: Gestion de l'alimentation

Gestion de l'alimentation
Gestion de l'alimentation

Gestion de l'alimentationPour un projet comme celui-ci, il est évident que la portabilité doit être un aspect clé. Les batteries sont donc le choix logique ! Maintenant, pour les appareils portables, il est assez important que vous choisissiez une source de batterie rechargeable ou facilement disponible. Les deux options principales sont la pile 9V PP3 ou les piles AA. Je suis sûr que certaines personnes supposeront qu'une batterie 9V est la meilleure option parce que bon, 9V est mieux que 3, non? Eh bien, pas dans ce cas. Les piles 9V, bien que très utiles, produisent leur tension au détriment de la durée de vie de la batterie. Mesurée en mAh (milliampères-heures), cette note vous indique en théorie combien de temps durera une batterie à 1 mA en heures (bien qu'à prendre avec une pincée de sel, ce sont souvent dans des conditions idéales de faible charge). Plus la note est élevée, plus la batterie durera longtemps. Les batteries 9V sont évaluées jusqu'à et environ 1000mAh. Les alcalines AA, quant à elles, ont presque trois fois plus à 2900 mAh. Les recharges NiMH peuvent atteindre cela, bien que 2500 mAh soient une quantité raisonnable (notez que les batteries rechargeables fonctionnent à 1,2 V et non à 1,5 !). bien qu'il puisse descendre jusqu'à 2,7 pour les vitesses d'horloge à basse fréquence). Nous avons également besoin d'une tension assez stable, si elle fluctue, cela pourrait causer des problèmes avec le microcontrôleur. Pour ce faire, nous utiliserons un régulateur de tension, vous devez maintenant faire un choix entre le prix et l'efficacité. Vous avez la possibilité d'utiliser un simple régulateur de tension à 3 broches comme le LM7805 (série 78, sortie +5 volts) ou un petit circuit intégré. Utilisation d'un simple régulateurSi vous choisissez cette option, vous devez supporter un quelques points à l'esprit. Premièrement, les régulateurs à trois broches ont presque toujours besoin d'une entrée supérieure à leur sortie. Ils abaissent ensuite la tension jusqu'à la valeur souhaitée. L'inconvénient est qu'ils ont une efficacité terrible (50 à 60%, c'est bien). L'avantage est qu'ils sont bon marché et fonctionneront avec une batterie 9V, vous pouvez acheter un modèle de base pour 20 pence au Royaume-Uni. Vous devez également garder à l'esprit que les régulateurs ont une tension de chute - l'écart minimum entre l'entrée et la sortie. Vous pouvez acheter des régulateurs spéciaux LDO (Low DropOut) qui ont des décrochages à environ 50mV (comparé à 1-2V avec d'autres conceptions). En d'autres termes, recherchez les LDO avec une sortie +5V. Utiliser un circuit intégréLa solution idéale est un régulateur à découpage. Ce seront, pour notre propos, des boîtiers normalement à 8 broches qui prennent une tension et nous donnent une sortie régulée à un rendement élevé - près de 90% dans certains cas. Vous pouvez obtenir des convertisseurs élévateurs ou abaisseurs (respectivement boost/buck) en fonction de ce que vous voulez mettre, vous pouvez également acheter des régulateurs qui prendront au-dessus ou en dessous de la sortie souhaitée. La puce que j'utilise pour ce projet est un MAX619+. Il s'agit d'un régulateur élévateur 5V qui prend 2 AA (la plage d'entrée est de 2V-3,3V) et donne une sortie 5V constante. Il n'a besoin que de quatre condensateurs pour fonctionner et est très peu encombrant. Coût - 3,00 €, bouchons compris. On peut dire que cela vaut la peine de faire des folies juste pour utiliser un peu plus vos batteries. Le seul inconvénient majeur est qu'il n'est pas protégé contre les courts-circuits, donc s'il y a une surtension, soyez prévenu ! Cependant, il est raisonnablement trivial de résoudre ce problème avec un circuit supplémentaire: une autre conception de puce utile - bien que la solution LT1307 soit loin d'être aussi soignée. Encore une fois, un régulateur 5V, mais il peut prendre une variété d'entrées et a des choses utiles comme la détection de batterie faible. Cela coûte un peu plus cher à près de 5 £ avec des inductances, de gros condensateurs et des résistances. Rails de tension Nous allons utiliser deux rails de tension principaux (plus une terre commune). Le premier sera le 3V de la batterie, celui-ci sera utilisé pour alimenter les LED et autres composants de puissance relativement élevée. Mon MAX619 n'est évalué qu'à 60 mA (bien que le maximum absolu soit de 120 mA), il est donc plus facile de connecter le microcontrôleur à un MOSFET pour contrôler n'importe quelle LED. Le MOSFET ne consomme presque pas de courant et agit comme une coupure dans le circuit lorsque l'entrée de la grille est inférieure à environ 3V. Lorsque le microcontrôleur envoie un 1 logique sur la broche, la tension est de 5 V et le FET s'allume, agissant alors simplement comme un court-circuit (c'est-à-dire un morceau de fil). Le rail 5 V alimentera l'écran LCD, le microcontrôleur et tous les circuits d'amplification pour capteurs d'entrée. Consommation d'énergieSi l'on regarde différentes fiches techniques, on constate que l'AVR ne prend pas plus de 15-20mA à charge maximale. L'écran LCD ne prend que 1 mA pour fonctionner (au moins lorsque j'ai testé, budget pour 2). Avec le rétroéclairage allumé, c'est vraiment à vous de décider. Le connecter directement au rail 5V (j'ai essayé) est bien, mais assurez-vous qu'il a une résistance intégrée (suivez les traces sur le PCB) avant de le faire. Il a tiré 30mA de cette façon - terrible! Avec une résistance de 3,3 k, il est toujours visible (parfait pour la photographie astro) et ne consomme que 1 mA. Vous pouvez toujours obtenir une luminosité décente en utilisant un 1k ou autre. Je vais bien avec le mien qui dessine un peu moins de 2 mA avec le rétroéclairage allumé ! Si vous le souhaitez, il est trivial d'ajouter un bouton de luminosité à l'aide d'un potentiomètre 10k. La LED IR peut prendre 100 mA maximum, mais j'ai eu de bons résultats avec 60 mA sur le mien (expérimentez !). Vous pouvez ensuite réduire de moitié ce courant car vous utilisez effectivement un cycle de service de 50% (lorsque la LED est modulée). Quoi qu'il en soit, il n'est allumé que pendant une fraction de seconde, nous n'avons donc pas à nous en soucier. Les autres LED avec lesquelles vous devriez jouer, vous constaterez peut-être que seul un courant de 10 mA est suffisant pour vous donner une bonne luminosité - regardez certainement pour les LED de faible puissance (hors IR), vous ne concevez pas de torche ! J'ai choisi de ne pas ajouter d'indicateur de puissance dans mon circuit, simplement parce que c'est beaucoup de courant pour peu d'utilisation. Utilisez l'interrupteur marche/arrêt pour vérifier s'il est allumé ! Au total, vous ne devriez pas faire fonctionner plus de 30 mA à la fois et avec une alimentation théorique d'environ 2500 mAh (en tenant compte des variations) mAh qui devrait vous donner bien plus de 80 heures directement avec tout. Avec le processeur inactif la plupart du temps, cela va au moins doubler/tripler, vous ne devriez donc pas avoir à changer vos piles très souvent. Conclusion Et voilà, c'était facile n'est-ce pas ! Vous pouvez soit aller bon marché et joyeux avec une batterie 9V et un régulateur LDO au détriment de l'efficacité, soit payer un peu plus et utiliser un circuit intégré dédié pour le faire. Mon budget était toujours inférieur à 20 € même AVEC l'IC, vous pouvez donc le baisser encore plus si vous en avez besoin.

Étape 3: un examen plus approfondi de l'ATmega8

Un regard plus attentif sur l'ATmega8
Un regard plus attentif sur l'ATmega8

PinsImage 1 est le schéma de brochage de l'ATMega8 (exactement le même que le 168/48/88, la seule différence est la quantité de mémoire embarquée et les options d'interruption). Pin 1 - Reset, doit être maintenu à la tension VCC (ou au moins logique 1). S'il est mis à la terre, l'appareil effectuera une réinitialisation logiciellePin 2-6 - Port D, entrée/sortie généralePin 7 - VCC, tension d'alimentation (+5V pour nous)Pin 8 - GroundPin 9, 10 - XTAL, entrées d'horloge externes (partie du Port B)Broche 11 - 13 Port D, entrée/sortie généraleBroche 14 - 19 Port B, entrée/sortie généraleBroche 20 - AVCC, tension d'alimentation analogique (identique à VCC)Broche 21 - AREF, référence de tension analogiqueBroche 22 - MasseBroche 23-28 Port C, entrée/sortie générale Ports d'e/s utilisables: D = 8, C = 6, B = 6 Un total de 20 ports utilisables est excellent, pour plus de simplicité, vous devez regrouper vos sorties soit en ports (disons, D comme port de sortie) soit en groupes sur la carte - vous voudrez peut-être que l'écran LCD fonctionne à partir du port C juste pour garder les fils bien rangés dans ce coin. Trois broches supplémentaires sont nécessaires pour la programmation. Il s'agit de MISO (18), MOSI (17) et SCK (19). Celles-ci serviront volontiers de broches d'E/S si nécessaire. Horloge Le signal que nous envoyons à la caméra doit être chronométré avec précision (à une microseconde environ), il est donc important que nous choisissions une bonne source d'horloge. Tous les AVR ont un oscillateur interne dont la puce peut obtenir son horloge. L'inconvénient est qu'ils peuvent fluctuer autour de 10 % en fonction de la température/pression/humidité. Ce que nous pouvons faire pour lutter contre cela, c'est utiliser un cristal de quartz externe. Ceux-ci sont disponibles dans n'importe quoi de 32768kHz (montre) à 20MHz. J'ai choisi d'utiliser un cristal 4Mhz car il fournit une vitesse décente tout en étant assez conservateur en énergie par rapport à peut-être 8Mhz+. Gestion de l'alimentation intégréeJe voulais vraiment utiliser des routines de veille dans mon code. En fait, j'ai écrit la première version pour s'appuyer fortement sur la mise au ralenti du processeur pendant le laps de temps. Malheureusement, en raison de contraintes de temps, j'ai rencontré des problèmes avec l'exécution de l'horloge en externe et l'interruption de l'utilisation des minuteries. Essentiellement, je devrais réécrire le code pour que le contrôleur ne se réveille tout simplement pas - ce que je pourrais faire, mais le temps joue contre moi. En tant que tel, l'appareil ne consomme que 20 mA, vous pouvez donc vous en tirer. Si vous êtes vraiment partant, alors par tous les moyens, jouez avec le code, tout ce que vous avez à faire est de cadencer en interne, puis d'exécuter la minuterie 2 en mode asynchrone en utilisant le cristal de 4 MHz pour des délais plus précis. C'est simple à faire, mais prend du temps. ADCLe couteau suisse de l'ensemble d'outils AVR, l'ADC signifie Analogue to Digital Converter. Son fonctionnement est relativement simple de l'extérieur. Une tension est échantillonnée sur une broche (à partir d'un capteur ou d'une autre entrée), la tension est convertie en une valeur numérique comprise entre 0 et 1024. Une valeur de 1024 sera observée lorsque la tension d'entrée est égale à la tension de référence ADC. Si nous définissons notre référence sur VCC (+5V), alors chaque division est de 5/1024 V ou environ 5mV. Ainsi, une augmentation de 5 mV sur la broche augmentera la valeur ADC de 1. Nous pouvons prendre la valeur de sortie ADC comme variable, puis la manipuler, la comparer avec des éléments, etc. dans le code. L'ADC est une fonction incroyablement utile et vous permet de faire beaucoup de choses intéressantes comme transformer votre AVR en oscilloscope. La fréquence d'échantillonnage est d'environ 125 kHz et doit être réglée proportionnellement à la fréquence d'horloge principale. Registres Vous avez peut-être déjà entendu parler des registres, mais n'ayez crainte ! Un registre est simplement une collection d'adresses (emplacements) dans la mémoire de l'AVR. Les registres sont classés par leur taille en bits. Un registre 7 bits a 8 emplacements, car nous commençons à partir de 0. Il existe des registres pour à peu près tout et nous les examinerons plus en détail plus tard. Certains exemples incluent les registres PORTx (où x est B, C ou D) qui contrôlent si une broche est définie haut ou bas et définit des résistances de rappel pour les entrées, les registres DDRx qui définissent si une broche est sortie ou entrée et ainsi de suite. The DatasheetUn géant de la littérature, pesant environ 400 pages; les fiches techniques AVR sont une référence inestimable pour votre processeur. Ils contiennent des détails sur chaque registre, chaque broche, comment fonctionnent les minuteries, quels fusibles doivent être réglés sur quoi et bien plus encore. Ils sont gratuits et vous en aurez besoin tôt ou tard, alors téléchargez une copie !www.atmel.com/dyn/resources/prod_documents/doc2486.pdf

Étape 4: Attribution des épingles

Attribution des épingles
Attribution des épingles

J'ai déjà mentionné les entrées et les sorties dont nous avons besoin, nous devons donc leur allouer des broches ! Maintenant, le PORT D a 8 broches, ce qui est pratique car il peut servir de port de sortie. L'écran LCD nécessite 7 broches pour fonctionner - 4 broches de données et 3 broches de contrôle. La LED IR ne nécessite qu'une seule broche, ce qui constitue notre 8. PORTB va être notre port de bouton, il a 6 entrées, mais nous n'en aurons besoin que de 5. Ce seront les boutons de mode et directionnels. PORTC est spécial, c'est le port ADC. Nous n'avons besoin que d'une seule broche pour l'entrée de déclenchement et il est logique de la mettre sur PC0 (une abréviation courante pour les broches de port dans ce cas, Port C, Pin 0). Nous avons ensuite quelques broches pour les LED d'état (une s'allume lorsque la valeur ADC est supérieure à une certaine condition, l'autre s'allume lorsqu'elle est inférieure à une certaine condition). Nous allons également mettre notre entrée de bouton ok/shoot ici, pour des raisons qui deviendront claires plus tard. Après tout cela, nous avons utilisé la majorité des ports mais il nous en reste encore quelques-uns si vous souhaitez étendre le projet - peut-être plusieurs déclencheurs ?

Étape 5: Communiquer avec la caméra

Communiquer avec la caméra
Communiquer avec la caméra
Communiquer avec la caméra
Communiquer avec la caméra

Premier prix du concours photo Digital Days

Conseillé: