Traqueur solaire de servo 2 axes Arduino (5 / 6 étapes)

Étape 5: L’Arduino code

#define TILTL 2
#define TILTH 3
#define bas 2
#define TOPLEFT 0
#define TOPRIGHT 1
#include < Servo.h >
#include « math.h »

Servo hservo ;
Servo vservo ;
int tlsense ;
int trsense ;
int bsense ;
tavg int ;
int diff ;
int spd ;
int diviseur ;
sensibilité de l’int ;
tiltl int ;
ameublissement int ;

annuler le programme d’installation () {}
vservo.Attach(9) ; attache le servo sur la broche 9 à l’objet de servo
hservo.Attach(10) ; s’adapte sur le servo sur la broche 10 l’objet de servo
diviseur = 10 ; il contrôle la vitesse du servo. abaisser le nombre = grande vitesse
sensibilité = 5 ; Cela contrôle la sensibilité du tracker. abaisser le nombre = une sensibilité plus élevée. Si votre tracker est sautillement constamment en arrière, augmenter le nombre
Serial.Begin(19200) ; ouvrir la série com
Serial.Print (SolarTracker ready!") ;
pinMode (en bas, entrée) ; définir les entrées
pinMode (entrée, TOPLEFT) ;
pinMode (TOPRIGHT, entrée) ;
pinMode (entrée, TILTL) ;
pinMode (entrée, TILTH) ;
}

void loop () {}

tiltl = digitalRead(TILTL) ; lire le capteur d’inclinaison
ameublissement = digitalRead(TILTH) ;
tlsense = analogRead(TOPLEFT) ; lire les capteurs de lumière
trsense = analogRead(TOPRIGHT) ;
bsense = analogRead(BOTTOM) ;
bsense = bsense * 1.05 ; J’ai dû ajuster la valeur de ce capteur pour le rendre plus précis. vous devrez peut-être faire la même chose mais commencer en le laissant seul
tavg = (tlsense + trsense) / 2 ; obtenir une valeur moyenne pour les capteurs haut 2
diff = abs (tavg - bsense) ; ce juge dans quelle mesure le tracker doit tourner
SPD = diff/diviseur ; et adapte la vitesse de la réaction en
SPD = max (spd, 1) ; définit la vitesse minimale à 1
Serial.Print ("\nTOP:") ; Serial.Print (tavg, DEC) ; imprimer les valeurs de capteur pour la série com
Serial.Print("\tBOTTOM:") ; Serial.Print (bsense, DEC) ;
Serial.Print("\tLEFT:") ; Serial.Print (tlsense, DEC) ;
Serial.Print("\tRIGHT:") ; Serial.Print (trsense, DEC) ;

Si ((tavg < bsense) & & (diff > sensibilité) & & (tiltl == faible) & & (tilth == faible)) {/ / si la valeur moyenne des capteurs haut de la page est plus petite (plus de la lumière) que le capteur de bas et le capteur d’inclinaison est dans la plage correcte
vservo.Write (90 - spd) ; Envoyer commande servo de tourner vers le haut plus ajouter Vitesse
Serial.Print ("\tState:") ; Serial.Print("up!") ;
} ElseIf ((tavg < bsense) & & (diff > sensibilité) & & (tiltl == HIGH) & & (tilth == faible)) {/ / si la valeur moyenne des capteurs haut de la page est plus petite (plus de la lumière) que le capteur de bas et le capteur d’inclinaison est dans la plage correcte
vservo.Write (90 - spd) ; Envoyer commande servo de tourner vers le haut plus ajouter Vitesse
Serial.Print ("\tState:") ; Serial.Print("up!") ;
} ElseIf ((tavg > bsense) & & (diff > sensibilité) & & (tiltl == HIGH) & & (tilth == faible)) {/ / si la valeur de la sonde du bas est plus petit (plus léger) que la valeur moyenne des capteurs haut de la page et le capteur d’inclinaison est dans la plage correcte
vservo.Write (90 + spd) ; Envoyer commande servo de tourner vers le bas plus ajouter Vitesse
Serial.Print ("\tState:") ; Serial.Print("Down!") ;
} ElseIf ((tavg > bsense) & & (diff > sensibilité) & & (tiltl == faible) & & (tilth == HIGH)) {/ / si la valeur de la sonde du bas est plus petit (plus léger) que la valeur moyenne des capteurs haut de la page et le capteur d’inclinaison est dans la plage correcte
vservo.Write (90 + spd) ; Envoyer commande servo de tourner vers le bas plus ajouter Vitesse
Serial.Print ("\tState:") ; Serial.Print("Down!") ;
} else {/ / pour tous les autres cas
vservo.Write(90) ; arrêter le moteur d’axe y
Serial.Print ("\tState:") ; Serial.Print("Stop!") ;
}

tlsense = analogRead(TOPLEFT) ; relire les capteurs 2 meilleurs parce qu’ils ont probablement changé
trsense = analogRead(TOPRIGHT) ;
trsense = trsense * 1.03 ; encore une fois j’ai dû ajuster la valeur d’un capteur à fiabiliser le tracker
diff = abs (tlsense - trsense) ; réinitialiser la variable diff pour les nouvelles valeurs
SPD = diff/diviseur ; et de générer une vitesse en conséquence
SPD = max (spd, 1) ; régler la vitesse minimale à 1

Si ((tlsense < trsense) & & (diff > sensibilité)) {/ / si la valeur du capteur gauche supérieure est plus petite (plus de la lumière) que le capteur haut droit
hservo.Write (90 + spd) ; Envoyer commande servo de virer à gauche
Serial.Print ("\tState:") ; Serial.Print("left!") ;
} ElseIf ((tlsense > trsense) & & (diff > sensibilité)) {/ / si la valeur du capteur gauche supérieure est plus grande (moins de lumière) que le capteur haut droit
hservo.Write (90 - spd) ; Envoyer commande servo de tourner à droite
Serial.Print ("\tState:") ; Serial.Print("Right!") ;
} else {/ / pour tous les autres cas
hservo.Write(90) ; arrêter le moteur de l’axe des abscisses
Serial.Print ("\tState:") ; Serial.Print("Stop!") ;
}

Delay(10) ; retard de 10 ms
}

Arduino interroge les capteurs et réagit en conséquence en s’assurant que jamais s’incliner trop loin vers le bas ou vers le haut. La différence de lumière détermine à quelle vitesse le tracker devrait réagir.

Articles Liés

Traqueur solaire à l’aide de LEDs Arduino !

Traqueur solaire à l’aide de LEDs Arduino !

Donc j'ai récemment trouvé un peu d'information que j'avais oublié. LEDs génèrent un peu de tension lorsque vous êtes sous l'éclairage d'une gamme de longueurs d'onde. Temps d'exploiter cette bizarrerie pour faire un tracker solaire DIY pour mes pann
Traqueur solaire simple double axe

Traqueur solaire simple double axe

En español.Nous à BrownDogGadgets.com aime utiliser l'énergie solaire avec nos projets électroniques. La plupart du temps, il est extrêmement facile de travailler en petite, basse tension, projets.Une question fréquente, que nous obtenons des étudian
Traqueur solaire avec arduino à partir de matériaux chaque jour

Traqueur solaire avec arduino à partir de matériaux chaque jour

Cette construction de modèle traqueur solaire est si simple qu'il n'y a pas besoin d'un laboratoire entièrement équipé afin de le créer. Je l'ai fait en fait dans ma cuisine ! En revanche, l'idée principale et les logiciels sont afin que j'oserais le
Mono-axe PIC contrôlée traqueur solaire Kit DIY

Mono-axe PIC contrôlée traqueur solaire Kit DIY

Salut tousJe ne vais plus en profondeur avec cette instructable à cause de mon manque de temps actuel.  Cela dit, j'ai l'intention entièrement mise à jour de cette instructable avec le temps avec les nouveaux algorithmes et programmes d'optimisation.
BRICOLAGE Mini traqueur solaire

BRICOLAGE Mini traqueur solaire

BonjourMon tout premier instructable, c'est ma conception appelée le bricolage Mini traqueur solaire est un panneau solaire qui suit le soleil ! J'ai utilisé cela pour mon projet équitable du huitième grade de science, et mes camarades de classe pens
Traqueur solaire portable (pas microcontrôleur requis!)

Traqueur solaire portable (pas microcontrôleur requis!)

Toujours voulu garder votre panneau solaire en plein soleil toute la journée sans avoir à déplacer constamment ?  Un suiveur solaire peut être la réponse.  Ce tracker a l'avantage d'être portable - si vous le déplacez, la volonté de tracker automatiq
Traqueur solaire Arduino & Lego (biaxiale)

Traqueur solaire Arduino & Lego (biaxiale)

J'ai fait un suiveur solaire avec lego et arduino.C'est un projet très agréable et simple, si vous voulez apprendre l'arduino et l'électronique. Aucune soudure requise.Son but est seulement éducatif car les moteurs ne sont pas assez solides pour supp
Traqueur solaire Arduino

Traqueur solaire Arduino

ce qui est fait :Il recherche la source de lumière plus brillante comme le soleil.Étape 1: Comment ça marche How it works:J'avais fait un capteur de 4 LDRs avec feuilles entre euxLes stips sont les LDRsQuand le bâton sur le dessus est réparé au solei
Traqueur solaire DIY

Traqueur solaire DIY

IntroductionNotre objectif est d'initier les jeunes élèves au génie et à leur enseigner l'énergie solaire ; en ayant leur construisent un Helios dans le cadre de leur programme d'études. Il y a un effort dans l'ingénierie de production d'énergie pous
Biaxiale transistorisé traqueur solaire

Biaxiale transistorisé traqueur solaire

Cette conception utilise des 16 transistors, 8 par marche-pieds, pour les pan et tilt axes.Le cadre est en tube d'aluminium de 25 mm² est associé aux pièces d'angle de 90° Connect-It et tige filetée inox M6 est utilisé pour faire pivoter les deux axe
Comment câbler une machine à CNC 3 axes arduino

Comment câbler une machine à CNC 3 axes arduino

J'ai vu un certain nombre de tutoriels sur la façon de construire la plate-forme pour une machine de fraisage CNC 3 axes.  Je n'ai pas vu quelqu'un aborder le sujet délicat de l'électronique.Voici maintenant ma tentative de le faire.Étape 1: piècesVo
3 axe Arduino accéléromètre / inclinomètre (Tilt / Roll / lacet)

3 axe Arduino accéléromètre / inclinomètre (Tilt / Roll / lacet)

de l'esprit à http://arduinotronics.blogspot.com/Ans, j'ai vu un gadget de tableau de bord soigné pour une Jeep qui avait deux photos d'une Jeep sur l'appareil. Comme vous avez conduit, les deux images seraient déplacer, affichage inclinaison et roul
3 axe Arduino Based CNC Controller

3 axe Arduino Based CNC Controller

j'ai joué avec différentes conceptions CNC et des contrôleurs de moteurs pas à pas depuis de nombreuses années. J'ai commencé à construire des machines CNC il y a longtemps. Mon premier jet d'inspiration provenait d'eggbot de Bruce Shapiro. J'ai essa
Commande de moteur pas à pas 2 axes Arduino UNO

Commande de moteur pas à pas 2 axes Arduino UNO

ce Instructable explique comment mettre en place un système de contrôle de 2 axes moteur pas à pas à l'aide :- Arduino UNO (~ 30$ US)- Sparkfun Quadstepper (~ 65$ US)-Un couple de démonté les anciens scanners (5 $ chaque)J'ai acheté ces en Nouvelle-Z