Incubateur low cost et précis pour la biologie DIY (4 / 8 étapes)

Étape 4: L’arduino code

Dans la prochaine étape, nous discutons comment contrôler ce circuit avec le code de l’Arduino. Vous pouvez simplement télécharger et exécuter notre code. Le reste de cette étape va dans les détails de comment le code fonctionne. Veuillez noter que certaines parties de notre code reposent sur la phase d’AC de l’Arduino contrôlant le tutoriel et nous re-utilisé une partie de ce code car il est.

La carte Arduino UNO contient un ATmega328P microprocesseur 16MHz. Pour déclencher le circuit de commande de phase AC à précisément intervalles nous avons utilisé la fonction timer interrupt de ATmega328. Donc, si vous n’êtes pas familier avec les concepts comme les horloges, les débordements de Registre et prescaling, que cet article explique les mieux.

Avant d’aller en codage, nous devons faire quelques calculs de base. Le signal alternatif est 60 Hz. (ne vous inquiétez pas si vous avez 50Hz dans votre pays, vous pouvez re-calculer facilement) cela signifie le signal alternatif traverse zéro, atteint le pic de tension positive, traverse zéro encore une fois, atteint le pic de tension négative et revienne à zéro à 60 fois par seconde. La période (longueur de temps que cela prend) correspond à 1/60 ou 0,01667 secondes (16,67 millisecondes). Ainsi, un demi-cycle ou le temps entre deux impulsions de passage à zéro intervient en 8,33 millisecondes.

Partir de là, nous allons déterminer les intervalles de temps dans le code de chiffres de l’horloge, pas par secondes. L’horloge de l’Arduino tourne à 16 MHz, qui est de 16 000 000 cycles par seconde : un cycle d’horloge prend 0,0625 microsecondes. Une seule que moitié du cycle du signal 60Hz AC contient 133 333 cycles d’horloge. Le 16-bit timer (timer1) d’Arduino Uno ne peut compter à 65535. Nous devons donc que configurer avec un diviseur. Dans ce code, nous avons utilisé un Prédiviseur 256. Avec le prescaler 256, un demi-cycle signifie environ 520 incréments de minuterie. Pour des raisons pratiques (légèrement modifié en approvisionnement en fréquence et triac retards opérationnels) nous jugent comme 450. Ceci s’assure que le conducteur triac a le temps d’éteindre avant le prochain demi-cycle. Donc nous avons contrôlé le temps d’attente avant d’allumer le triac dans la plage 1-450 à l’intérieur de chaque demi-cycle de contrôler la puissance de sortie. Nous avons utilisé des interruptions de match comparateur pour cela. Nous avons utilisé des interruptions de débordement de minuterie pour contrôler le signal à triac porte et définir la largeur d’impulsion de 4 chefs de minuterie. Ici, lorsque l’impulsion est envoyée vers la porte du triac, il va s’allumer l’alimentation CA et demeurera allumé même après que le pouls est supprimé jusqu'à ce que la prochaine fois que l’onde AC atteint zéro. (Si vous n’êtes pas familier avec opération il s’agit d’un bon article du Triac.) Pour cette raison nous n’avez pas besoin de s’inquiéter d’éteindre le triac.

Extrait de code suivant montre la phase AC contrôle logique.

#define DETECT 2 / /zéro Croix détecter

#define porte 9 / /porte de triac

#define PULSE 4 / /déclencher la largeur d’impulsion (comtes)

mis en place Timer1(16-bit)

OCR1A = 100 ; initialiser le comparateur

TIMSK1 = 0 X 03 ; activez le comparateur A et déborder les interruptions

TCCR1A = 0 X 00 ; contrôle Timer recense ensemble pour

TCCR1B = 0 X 00 ; fonctionnement normal, la minuterie désactivée

mise en place de zéro interruption du passage à niveau

attachInterrupt (0, zeroCrossingInterrupt, RISING) ;

zéro incident détecté

void zeroCrossingInterrupt() {}

TCCR1B = 0 X 04 ; Démarrer la minuterie avec fracture par 256 entrées

TCNT1 = 0 ; Réinitialiser la minuterie - count de zéro - comtes jusqu'à ce qu’elle correspond à la valeur de comparaison

}

match de comparateur - atteint le délai prévu

{ISR(TIMER1_COMPA_vect)}

digitalWrite(GATE,HIGH) ; Set porte de triac à haute - Allumez la fourniture

TCNT1 = 65536-PULSE ; largeur d’impulsion de déclenchement

}

débordement de Timer1 - pouls atteint sa largeur

{ISR(TIMER1_OVF_vect)}

digitalWrite(GATE,LOW) ; Mettez hors tension triac porte

TCCR1B = 0 X 00 ; désactiver la minuterie pour arrêter les déclencheurs involontaires

}

Contrôle de température

Maintenant, nous avons fini avec la partie la plus délicate de notre code. Suivante consiste à contrôler la puissance (ou le temps de retard), selon la valeur actuelle de la température et la température de consigne souhaitée. Pour lire la valeur de la température, nous avons utilisé la bibliothèque Adafruit_MAX31855. Pour implémenter le mécanisme de contrôle, nous avons utilisé la logique de contrôle PID. Ne vous inquiétez pas si ça vous semble un peu complexe. Heureusement, nous avons une bibliothèque Arduino pour cela. L’extrait suivant montre le code pour cela.

#define 3

#define CS 4

#define CLK 5

Adafruit_MAX31855 thermocouple (CLK, CS, DO) ;

double point de consigne, entrée, sortie ; Définir des Variables nous va se connecter à

Kp double = 2, Ki = 6, Kd = 1 ; Précisez les liens et les paramètres de réglage initiales

PID myPID (entrée, sortie & point de consigne, Kp, Ki, Kd, DIRECT) ;

myPID.SetMode(AUTOMATIC) ;

myPID.SetOutputLimits (0, 449) ; définissez la plage

à l’intérieur de la méthode de la boucle

double c = thermocouple.readCelsius() ;

Si (isnan(c)) {}

J’ai = 450 ; Aller à la puissance minimale si quelque chose n’allait pas

}

else {}

Entrée = c ; myPID.Compute() ;

J’ai = 450-sortie ; abaisser le délai, plu la puissance

}

OCR1A = i ; j’ai la valeur comparateur

Delay(400); / / attendre la prochaine température lue


Interface utilisateur

Pour la programmation de l’interface utilisateur, nous avons utilisé olimex lcd bouclier bibliothèque ainsi que de la bibliothèque de fils Arduino. Vous pouvez Télécharger la bibliothèque olimex Olimex site Web.

Articles Liés

Low-Cost lumineux de signalisation pour Todays socialement responsable

Low-Cost lumineux de signalisation pour Todays socialement responsable

Low-cost, illuminé de signalisation pour socialement responsable aujourd'hui avec la permission de la GRL et Eyebeam OpenLab. Ce tutoriel vous expliquera les outils et les processus, que nous avons utilisé pour combiner Noël LED lumières, plexiglas e
LM386 low cost basée amplificateur pour guitare

LM386 low cost basée amplificateur pour guitare

a pris la référence du LM386 datasheet et dessous de sites Web.http://www.electrosmash.com/Little-GEM-Analysis (broche 7 n'est pas moulu, mais dans le schéma il est relié à la terre)http://www.runoffgroove.com/littlegem.htmlVoici ma vidéo alors que j
Configuration de prototype pour un USB Powered Low cost ; rayonnement continu en temps réel, système de surveillance de la pathologie chirurgicale de l’hôpital, hématologie, biologique gestion des déchets et des installations de recherche

Configuration de prototype pour un USB Powered Low cost ; rayonnement continu en temps réel, système de surveillance de la pathologie chirurgicale de l’hôpital, hématologie, biologique gestion des déchets et des installations de recherche

configuration de Prototype pour un USB Powered Low cost ; temps réel rayonnement continu système de surveillance pour biologique de pathologie chirurgicale de l'hôpital, hématologie, gestion des déchets et des installations de rechercheTitre courant
Trois Low Cost Interchangeable 3D imprimables Bionic mains

Trois Low Cost Interchangeable 3D imprimables Bionic mains

Ce Instructable repose en partie sur mon projet de science de lycée année senior « Puissance de Touch : défis en conception haptique Sensing et Feedback pour Neural contrôlée Bionic/prosthétique Hands ». J'ai été profondément honoré lorsque ce projet
ARUPi - une unité d’enregistrement automatisé Low-Cost pour les écologistes Soundscape

ARUPi - une unité d’enregistrement automatisé Low-Cost pour les écologistes Soundscape

Cette instructable a été écrit par Anthony Turner. Le projet a été élaboré avec beaucoup d'aide de l'abri à l'école d'informatique, Université du Kent (M. Daniel Knox a beaucoup aidé!).Il vous montrera comment créer une unité d'enregistrement Audio a
Low Cost workstation de préchauffage du Circuit imprimé pour souder retravailler

Low Cost workstation de préchauffage du Circuit imprimé pour souder retravailler

postes de travail préchauffage du Circuit imprimé sont très chers, 350,00 $ - $2500,00.L'objectif de cette instructable doit démontrer comment faire une workstation de préchauffage du circuit imprimé pour environ $50.00 avec aucun outil spécial et la
LCS - 1M - un complet, Low-Cost Hobby Oscilloscope

LCS - 1M - un complet, Low-Cost Hobby Oscilloscope

cette instructable va vous montrer comment j'ai développé un simple pourtant oscilloscope à échantillonnage numérique complet qui, je l'espère vous permettra d'obtenir un bon départ dans ce domaine. Les principaux objectifs de cette évolution sont :C
Spiromètre Low Cost

Spiromètre Low Cost

Il s'agit d'un projet que j'ai réalisé pour une classe d'instrumentation biomédicale à l'Université Vanderbilt. Ce spiromètre utilise un transducteur de pression et un Arduino Uno pour calculer le volume d'air soufflé par le tube en plastique. Le cir
Low Cost modulaire NEUROPROTHÉTIQUES

Low Cost modulaire NEUROPROTHÉTIQUES

Mon nom est JD, et je suis un étudiant en deuxième année au lycée. J'ai ont travaillé sur ce projet depuis un certain temps maintenant et il améliore encore activement, mais voulait commencer à documenter mon travail en ligne afin que d'autres pourro
Percer des trous précis pour montage électronique contrôle et conseils

Percer des trous précis pour montage électronique contrôle et conseils

J'ai construit un projet Arduino. J'ai moi-même construit un tableau de commande, avec quelques boutons et une molette. J'ai un écran LCD. Comme j'ai ajouté plusieurs éléments au projet, ces deux planches gardé obtenir de la manière. Ils étaient flop
Robot dessin Low-Cost, Compatible Arduino

Robot dessin Low-Cost, Compatible Arduino

J'ai conçu ce projet pour un atelier de 10 heures pour ChickTech.org dont le but est d'introduire des adolescentes aux sujets de souches. Les objectifs de ce projet étaient :Facile à construire.Facile à programmer.Avez-vous quelque chose d'intéressan
Homme mince low-cost / High-peur

Homme mince low-cost / High-peur

Vous marchez tranquillement dans les bois, profitant de la brise de la nuit. Vous avez laissé vos amis à la fête, donc rien ne pourrait perturber votre promenade solitaire tranquille. La nuit est sombre, mais au clair de lune peut encore vous permett
UDuino : très Low Cost Arduino Compatible Development Board

UDuino : très Low Cost Arduino Compatible Development Board

cartes Arduino sont parfaits pour le prototypage. Cependant, ils obtiennent assez chers quand vous avez plusieurs projets simultanés ou avez besoin de beaucoup de cartes contrôleur pour un projet plus vaste. Il existe quelques alternatives grands, mo
Ultra Low Cost Scanner 3D

Ultra Low Cost Scanner 3D

Récemment, je me construire un scanner 3D qui fonctionne sorte d'ok, mais en raison de son coût à bas prix, c'était très lente et de faible qualité. Cependant, c'est un amusant projet à faire cependant.Étape 1: pré-versionIl s'agit d'une pré-version