Interface microcontrôleur à électromètre de Forrest Mims (2 / 3 étapes)

Étape 2: logiciel

Il y a trois parties principales du logiciel ; (1) le programme d’installation (timer1, les ports et comparateur), (2) l’effet stroboscopique LED et (3) exécution de la conversion de l’ADC.

Les fusibles de ATtiny2313 doivent avoir la valeur appropriée pour sélectionner l’horloge interne de 1Mhz. Le suivant lien www.engbedded.com/fusecalc est utile afin de simplifier la logique inverse légèrement confuse, utilisée pour la programmation de fusible. Le fichier fuse.txt ci-dessous montre la commande que j’ai utilisé pour programmer les fusibles.

Une autre chose est que les ports de programmation flash se chevauchent avec PORTB, vous devrez peut-être débrancher le LED pendant la programmation de la ATtiny2313. Les instructions de compilation sont dans le fichier build.txt ci-dessous. (Juste comme un test de validation, j’imprime les tailles de code et le plan variable.)

J’ai utilisé une portée multicanal pour le débogage. Il aurait été difficile pour moi de trouver certains des « bogues » dans le cas contraire. Il m’a fallu un certain temps pour comprendre que l’effet stroboscopique LED interférait avec la conversion. Pour déboguer ce problème, dont je me doutais portait sur les interruptions, j’ai utilisé le port inutilisé de PORTD et réglez-le au début de l’interruption et débranché il juste avant la fin. Le problème était que, bien que le code d’effet stroboscopique dans la routine d’interruption du service était facile à lire et à comprendre, il a fallu environ 500μS à exécuter. J’ai réécrit le code afin qu’il avait moins de lignes (mais plus complexe et moins compréhensible), et cela est devenu moins une question. J’ai également décidé de désactiver les interruptions stroboscopique pendant la conversion.

L’installation est simple, timer1 est utilisée pour déclencher l’interruption de l’effet stroboscopique (1000 cycles à 1Mhz). Le comparateur est activé pour déclencher une capture de minuterie sur un front montant. Tous les bits du port et PORTD sont initialement tri-indiqué. Les lecteurs de LED (6 bits sur PORTB, 4 sur PORTD) sont activés. Les ports les résistances de charge et de décharge de conduite sont retrouvent haute et basse respectivement. Le condensateur est déchargé, puis les interruptions sont activées. Elle est suivie d’une boucle infinie de conversions suivies en affichant le résultat.

L’effet stroboscopique LED est conceptuellement simple, mais un peu compliqué par le fait des bits sont fractionnés sur deux ports. L’effet stroboscopique travaille dans un cycle de 10 ms. Dans le premier cycle, LED0 & LED1 sont activés, lors du prochain cycle, LED1 & LED2 sont activés, et ainsi de suite, jusqu'à ce que le dernier cycle dans lequel LED9 & LED0 sont activés. Les masques d’activer sont stockés dans un tableau statique pré-calculée display_mask_B et display_mask_D et les cycles de routine interruption par l’intermédiaire de chacune des 10 masques.

La conversion ADC fonctionne en désactivant l’interruption timer1, charge le condensateur (et l’enregistrement de l’heure de début, qui est la valeur de timer1) jusqu'à ce que la sortie du comparateur est réglée. Puis le condensateur est déchargé pour 5 * R_DIS * C_CHR qui est d’environ 60μS. Le temps nécessaire à la conversion est mesuré par l’interruption de capture de timer1 (déclenchée par un front montant sur la sortie du comparateur). L’interruption du timer1 est activée et que le décalage horaire calculé. Le calcul est simple puisque la conversion prend moins de 1 ms. (N’oubliez pas que le compteur entoure chaque 1000 tiques.)

Au départ j’ai essayé calibrer la sortie en mesurant et en informatique, mais il a commencé à devenir trop compliqué, alors j’ai décidé d’afficher temporairement le résultat à l’aide d’une routine de debug_led_value (qui affiche la valeur en 10-bit binaire, maintenez l’écran pendant une seconde) et de jouer avec certains statique. Ceci a donné une gamme (subjective) de temps des tiques 136-351. Puis, j’ai écrit un code de branchement pour mapper cette gamme dans un nombre compris entre 0 et 10 et cela permet d’afficher les barres. Cela a fonctionné de façon satisfaisante. (J’ai calibré l’appareil avant l’Assemblée, qu’il s’agissait de reflasher le ATtiny2313).

Articles Liés

Début microcontrôleurs partie 13 : Intro pour interfacer les LCD

Début microcontrôleurs partie 13 : Intro pour interfacer les LCD

Le microcontrôleur est une merveilleuse pièce de génie et il peut faire beaucoup de choses (avec l'aide de certaines émissions grande), mais c'est toujours une boîte noire opaque. Si vous voulez partager des informations ou vous montrer ce qu'il essa
3D imprimés microcontrôleur Dice Roller

3D imprimés microcontrôleur Dice Roller

Il s'agit d'un projet juste pour le plaisir que j'ai fait dans la Digilent MakerSpace. Généralement, chaque fois que je joue des jeux de société j'utilise une application smartphone laminage dés puisque les dés sont si faciles à perdre. J'ai pensé qu
LYT LED compteur: LED, microcontrôleur PIC et déplacement moyenne Code

LYT LED compteur: LED, microcontrôleur PIC et déplacement moyenne Code

Bonjour à tous, Merci de vérifier sur mon premier Instructable. J'ai aimé voir vos créations au fil des ans et aimer ce que vous tous apportent leur contribution. Ce projet est un essaimage de celui que j'ai vu récemment ici et je dois donner une cri
Microcontrôleur bricolage - main dynamomètre

Microcontrôleur bricolage - main dynamomètre

Fait ce bricolage dynamomètre de main comme un capteur pour microcontrôleur PICAXE. Il peut également être utiliser pour Arduino ou n'importe quel microcontrôleur trop.Liste des matières que j'avais l'habitude de faire main dynamomètre :1) exerciseur
Début microcontrôleurs partie 2: Création d’une Interface SPI du programmateur au microcontrôleur

Début microcontrôleurs partie 2: Création d’une Interface SPI du programmateur au microcontrôleur

Bonjour, nous espérons que vous avez apprécié la partie 1 de début de microcontrôleurs. Nous allons avancer dans la partie 2 et de commencer à parler sur les interfaces et comment obtenir votre microcontrôleur pour communiquer avec un ordinateur.Donc
Comment interfacer 16 X 2 LCD avec microcontrôleur 8051 ?

Comment interfacer 16 X 2 LCD avec microcontrôleur 8051 ?

Il s'agit d'un schéma de circuit de interface 16 X 2 LCD avec AT89C51 qui est une famille de microcontrôleurs 8051. Nous utilisons des écrans LCD pour l'affichage des messages d'erreur, etc.. Ici, nous fournissons les informations de l'écran et égale
Comment LCD Interface 16 X 2 avec Microcontrôleur AVR

Comment LCD Interface 16 X 2 avec Microcontrôleur AVR

Voici le schéma de interface 16 X 2 LCD à Microcontrôleur AVR. Dans ce circuit, l'oscillateur à quartz fournira l'horloge au microcontrôleur. Les condensateurs reliés à la volonté de cristal agissent comme des filtres, aide le cristal à résonner et o
Couleur de RVB LED ambiance simple potentiomètre sans microcontrôleur

Couleur de RVB LED ambiance simple potentiomètre sans microcontrôleur

afficher les combinaisons de couleur de couleur LED sans utiliser un microcontrôleurvous pouvez faire un Simple couleur Cycle affichage pour RVB (rouge, vert, bleu) LEDÉtape 1: Ce que vous devez Vous aurez besoin :1] potentiomètre 1 K x3Résistance de
Chronomètre avec microcontrôleur ATmega328 du tour

Chronomètre avec microcontrôleur ATmega328 du tour

cette instructable vous montrera comment construire votre propre chronomètre pour enregistrer plusieurs scissions utilisant un microcontrôleur programmable ATmega328. Quand on appuie sur le bouton Démarrer (ou envoie le Metal dans ma montre), l'écran
Interface 16 X 2 LCD avec microcontrôleur PIC

Interface 16 X 2 LCD avec microcontrôleur PIC

ici, vous apprendrez comment interfacer 16 × 2 LCD à microcontroller PIC18F4550 qui appartient à la famille PIC18F. PIC18F4550 est un microcontrôleur 8 bits et utilise l'architecture RISC. PIC18F4550 a 40 broches PDIP (double en ensemble line) et 44
Interface Servo-moteur avec microcontrôleur 8051

Interface Servo-moteur avec microcontrôleur 8051

cette vidéo illustre le fonctionnement d'un moteur d'asservissement. Les signaux de commande pour la rotation du moteur sont fournis par microcontrôleur 8051 (AT89C51). Ici, le palonnier est tourné de 5° par rapport à la position précédente, à partir
Début microcontrôleurs partie 5: Essais le programmeur et la construction du premier Circuit

Début microcontrôleurs partie 5: Essais le programmeur et la construction du premier Circuit

Jusqu'à présent, vous devriez avoir tous les logiciels installés et construit l'interface qui assurera une liaison commode du programmateur pour les microcontrôleurs (MCU). Pour l'étape suivante, vous aurez besoin une maquette (ceux avec les nombres
Une connexion Wi-Fi contrôlée voiture télécommandée sans microcontrôleur

Une connexion Wi-Fi contrôlée voiture télécommandée sans microcontrôleur

Il s'agit d'une voiture de contrôlé télécommande Wi-Fi avec caméra qui peut être branché sur internet. La voiture RC est tout à fait unique puisqu'elle utilise un routeur sans fil et élimine la nécessité d'un microcontrôleur.Étape 1: Structure de voi
Intro aux GPS avec des microcontrôleurs

Intro aux GPS avec des microcontrôleurs

Une fois que la compétence des opérations strictement militaires, GPS est devenu une partie intégrante de la vie moderne et en relativement peu de temps ! Qui ne voudrait pas envie de savoir quand et où ils sont n'importe où sur la planète ? C'est un