Chargeur de batterie voiture PIC12F683 (5 / 8 étapes)

Étape 5: Courte introduction sur PIC et minuteries

Les minuteries peuvent être utilisés pour des tâches un peu : création de bases de temps, déclenchant des manifestations périodiques, mesurer le temps entre deux événements (fréquence de mesure) et bien plus encore. Dans mon petit firmware, j’ai utilisé un minuteur pour me faire une base de temps de dix millisecondes. Compter qu’une centaine de fois m’a donné un drapeau qui a obtenu la valeur chaque fois qu’une seconde passée. Cela était nécessaire, parce que je savais que je voulais l’appareil pour recharger pendant 10 minutes et sur mesure pour 5 secondes – une base de temps standard devait être impliqué dans le projet en quelque sorte.

Consacrée aux minuteries PIC

Un processeur peut exécuter des milliers d’instructions en fractions de seconde, les plus grandes bases de temps sont généralement construits en comptant les millisecondes un plusieurs centaines de fois. Pour pouvoir calculer un petit moment, comme celui de 1ms, nous avons besoin de savoir à quelle vitesse le PIC fonctionne vraiment à. Le PIC12F683 a un oscillateur interne de maximum 8MHz, c’est ce que j’ai utilisé pour cadencer le système. Sachant que le PIC a besoin de quatre horloges pour exécuter une instruction unique, le cycle d’instruction est MHz 2. sur cette base, le temps nécessaire par le commandant de bord pour exécuter une instruction est 1/2.000.000 = 500ns. Ce sera la base de temps avec que les temporisateurs internes fera progresser. Chaque timer a un associé interne 8 ou registre de 16 bits, ce qui augmente sa valeur chaque fois que cette 500ns passe. Ce registre peut être lue et écrit à tout moment. Lors de la 8 ou 16 bits inscription débordements, un indicateur est défini pour signaler cet événement.

Convertisseurs et postscalers peuvent être assignés aux minuteries, pour atteindre les temporisations plus longtemps. Un Prédiviseur ou postscaler est un compteur sur son propre, configurable dans une variété de façons. Autrement dit, ces divisent l’horloge à leur entrée avec une valeur qui peut être changée par le logiciel. Un diviseur de 1:8 donne un signal d’horloge sur sa sortie après chaque horloge 8-ème à son entrée. Cela signifie, qu’ajoutant un Prédiviseur 1:8 sur une entrée de minuterie va ralentir la vitesse de cette minuterie avance par 8. Postscalers fonctionne exactement la même chose, c’est généralement la position de ces circuits (à l’égard auprès du registre de la minuterie), qui détermine si nous parlons un Prédiviseur ou un postscaler. Convertisseurs de ralentir le taux d’avance du Registre minuterie, postscaler retard au moment où un événement de dépassement de capacité se déclenche. À l’aide de ces circuits, nous pouvons créer les horodateurs de plus longues périodes. L’événement qui se produit à chaque dépassement de capacité est souvent décrit comme le « réglage de l’indicateur d’interruption ».

Nous allons voir la configuration de l’horloge dans notre exemple !

Configuration de l’horloge 0

Dans notre processeur, il y a trois minuteries disponibles, nous allons utiliser qu’un seul : numéro 0 de la minuterie. Les registres qui doivent être configurés pour ce module de travailler sont : OPTION_REG, INTCON.

Configuration de OPTION_REG

Le grignotement supérieur de ce registre n’a aucun effet sur le timer0, je vais leur mettre à zéro. Le grignotement inférieur se compose de la PSA bit de (3) qui détermine où le diviseur sera obtenir affecté, minuterie 0 ou le temporisateur. Je veux pas de diviser le taux d’avance du Registre minuterie timer 0, alors il faut mettre à 0. Ensuite, je veux le mettre pour diviser l’horloge autant qu’il peut 1: 256. Pour ce faire, je dois définir les bits de PS2:PS0 à 111. Cela se traduit par OPTION_REG étant la valeur 0b00000111 = 0 x 07.

Configuration de INTCON

Ce registre a peu à voir avec minuterie 0 car c’est un registre de configuration d’interruption, mais – comme nous utilisons des interruption avec minuterie 0 – j’ai de le mentionner. Les trois bits qui sont associés avec minuterie 0 sont les suivants : GIE, T0IF, T0IE.

GIE est le bit qui permet les interruptions au niveau mondial, si cela est défini à 0, aucune interruption ne se déclenchera. Bien sûr, nous devons définir ceci à 1.

T0IE est une interruption permettent peu trop, mais celui-ci est-il strictement pour activer/désactiver l’interruption du timer 0. Nous devons définir ceci à 1 trop.

T0IF est le bit d’indicateur interrupt timer 0 qui obtient la valeur chaque fois que le timer 0 Registre déborde, il faut effacer ce bit au démarrage, il sera réglé par le matériel une fois que le registre de la minuterie atteint la valeur maximale et déborde. D'où T0IF doit avoir la valeur 0.

Nous devons 0b11100000 la valeur INTCON = 0xE0 pour rendre cette minuterie fonctionnent de la manière que nous voulons.

Autres choses qu’il faut faire

Pour créer le moment exact d’une millisecondes, nous allons avoir à précharger le registre de la minuterie. Le nombre de minuteur étape divisée par 256 (à cause du Prédiviseur que j’ai choisi) ajoutée à cette valeur de précharge devrait donner la valeur de débordement du Registre minuterie. Dans notre cas, cette valeur est 256, puisque nous utilisons une minuterie de 8 bits.

Les choses que nous savons :

  • horloge de l’oscillateur = 8 MHz
  • horloge d’instruction = 2 MHz
  • période d’instruction = 500 ns
  • Prédiviseur utilisé = 1: 256
  • moment où nous voulons = 10 ms

Les choses que nous voulons savoir :

  • valeur de précharge registre la minuterie.

Nous savons que nous voulons un 10 ms de chronométrage, et nous savons que notre minuterie étapes à un débit de 256 * 500 ns. Cette multiplication de problèmes nous dit que le registre de minuterie 0 avancera quand passes 128 μs. 10 ms / 128 μs = 78, ce numéro est important parce qu’il exprime nos 10 ms dans nombre d’étapes de minuterie. Nous savons que nous voulons que le trop-plein de Registre minuteur après 10 ms, et nous savons que cela se produit après la valeur maximale de 8 bit, 255. Assez simple, il suffit de mettre 256 – 78 = 178 dans le registre de la minuterie et attendez que l’indicateur défini. Ceci se produira après 10 ms.

Ce n’est pas suffisant, que nous devrons également actualiser le registre minuterie avec cette valeur après chaque dépassement de capacité. Si nous ne parvenons pas à le faire, le registre de minuterie comptera à partir de zéro et les timings sera totalement fermées (128 μs * 256 n'est pas de 10 ms).

Je l’ai mentionné comment ces indicateurs de dépassement de capacité peuvent déclencher des interruptions (peut et va, parce que nous avons activé cette fonctionnalité dans le registre INTCON). Les interruptions sont gérées dans une partie spéciale du programme appelé une routine d’interruption du service. Chaque fois qu’une interruption est déclenchée, le programme saute à cette partie spéciale du programme et l’exécute. Après qu’il exécute cette partie du code (souvent dénommé l’interruption traitée), le programme continue où il s’était arrêté avant l’interruption a été signalée. Cela permet à un programmeur de réagir rapidement à ce genre d’événements, en fait, c’est la raison pourquoi interruptions ont été « inventées ». Les routines d’interruption service convient courts, donc leur exécution est assez rapide. J’ai écrit le registre minuterie rechargement dans la routine d’interruption du service, ce qui garantit la minuterie 0 débordements se produira après 10 ms maintes et maintes fois. Le drapeau de l’interruption doit être effacé trop, sinon le processeur sera « pense » qu’une interruption est signalée – il sera coincé dans la routine de service et n’arrive pas à nouveau le code principal. C’est une erreur classique et vous pouvez retenir pour un temps assez long.

Articles Liés

Aide au démarrage une voiture en 5 Minutes ! -Avec chargeur de batterie 12v bricolage voiture morte

Aide au démarrage une voiture en 5 Minutes ! -Avec chargeur de batterie 12v bricolage voiture morte

Dans cette vidéo j'ai Will Show vous un moyen de faire démarrer une voiture à juste en 5 Minutes avec des pièces vous avez à l'intérieur de votre maison comme SMPS (alimentation à découpage) de vieux Pc et une étape de Dc / Dc convertisseurVous pouve
Chargeur de batterie USB Energizer

Chargeur de batterie USB Energizer

une modification simple vous permettra d'utiliser un chargeur de téléphone portable 20 $ AA Energizer avec n'importe quel périphérique USB pour recharger votre téléphone portable, iPod, etc. * (Remarque en essai, il n'a pas assez de jus pour recharge
Taser (pistolet électrique) d’un adaptateur de chargeur de batterie V2.0

Taser (pistolet électrique) d’un adaptateur de chargeur de batterie V2.0

Salut tout le monde:)Dans ce instructable, je vais vous montrer comment j'ai fait un taser sur un adaptateur de chargeur de batterie (petite boîte noire, vous enfoncer dans la prise murale:))J'ai déjà fait un choquant dispositif plus tôt (il y a envi
Tourner un régulateur de Charge solaire dans mur alimenté 12v chargeur de batterie

Tourner un régulateur de Charge solaire dans mur alimenté 12v chargeur de batterie

Ce Instructable a commencé à résoudre un problème, j'ai eu. J'avais besoin de charger un 9 ampères heure la batterie, mais je n'avais qu'un chargeur de batterie de voiture standard. Le chargeur de batterie de voiture était beaucoup trop élevé d'ampér
Chargeur de batterie

Chargeur de batterie

Il est important d'assurer que vos batteries de véhicule sont toujours en bon état.Préservation de notre environnement est/devrait être obligatoire.Ce projet prend en charge les deux fins. Il recycle un adaptateur téléphone fonctionnalité obsolète po
Minuterie pour chargeur de batterie automobile

Minuterie pour chargeur de batterie automobile

Cette instructable utilise un Arduino pour contrôler un chargeur de maintien batterie d'automobile.Le chargeur s'allume pendant 1/2 heure tous les trois jours.Votre batterie restera chargée lorsque vous rangez votre voiture ou une moto pendant le lon
Système de chargeur de batterie Lithium rapide, bon marché et modulaire

Système de chargeur de batterie Lithium rapide, bon marché et modulaire

J'ai vu d'innombrables idées sur internet et également sur ce site Web sur les chargeurs de batteries et systèmes similaires. Quand j'ai commencer à compter le coût et l'effort, la plupart d'entre eux se pour révéler beaucoup moins fonctionnelle, ser
Faire de cette puce, modulaire et système de chargeur de batterie au Lithium bon marché en quelques minutes !

Faire de cette puce, modulaire et système de chargeur de batterie au Lithium bon marché en quelques minutes !

Il y a d'innombrables idées sur internet et aussi sur Instructables sur les chargeurs de batteries bricolage et systèmes connexes. Toutefois en termes de coût et d'efforts, la plupart d'entre eux se pour révéler sur le côté supérieur et sur le plan d
Chargeur de batterie Lithium-ion DIY

Chargeur de batterie Lithium-ion DIY

Batteries jouent un rôle important dans n'importe quel projet/produits fonctionnant sur batterie. Les piles rechargeables sont chers, comme nous avons besoin d'acheter le chargeur de la batterie, ainsi que des batteries (jusqu'à présent), comparative
Chargeur de batterie intelligent (aucune soudure!)

Chargeur de batterie intelligent (aucune soudure!)

Chargeurs de piles AA ou AAA bien charger les batteries dans les paires, mais beaucoup de dispositifs utiliser 1 ou 3 batteries, ce qui signifie que certains de vos batteries obtenir surfacturés et certains obtenir sous-évalué. Les batteries NiCd et
Microcontrôleur base chargeur de batterie intelligent

Microcontrôleur base chargeur de batterie intelligent

Le circuit de ce que vous êtes sur le point de voir est un chargeur de batterie intelligent basé sur ATMEGA8A avec auto coupé. Différents paramètres sont affichés via un écran LCD au cours des États de charge différent. En outre, le circuit fera sono
Chargeur de batterie solaire pour vos outils électriques sans fil

Chargeur de batterie solaire pour vos outils électriques sans fil

L'énergie solaire est un excellent moyen de sortir l'électricité à un site de projet à distance. Une façon simple de faire cela est d'utiliser un panneau solaire pour recharger les batteries de vos outils électriques sans fil. Dans ce projet, je vais
SuperSquid - séparateur de chargeur de batterie appareil photo

SuperSquid - séparateur de chargeur de batterie appareil photo

sur les rameaux de photographie emplacement habituellement ce que je rencontrerai la nécessité pour plusieurs chargeurs et très peu de prises de courant. D'autres fois, j'ai fait les valises de caméra et oublié le câble du chargeur deuxième, identiqu
Chargeur de batterie Li-ion USB

Chargeur de batterie Li-ion USB

il s'agit d'un chargeur pour batteries lithium-ion qui prend son alimentation par le port USB d'un ordinateur.Il utilise la puce chargeur de batterie MCP73861 ou MCP73863 Li-ion fabriquée par Microchip.Étape 1: L'USB connecteur d'alimentation Un morc