Je fabrique un simple détecteur infrarouge à l'aide d'une thermopile. J'ai quelques condensateurs supplémentaires que ce que dit ce schéma. J'en suis actuellement un autre, mais c'est l'essentiel.
Je peux ajouter une image de planche à pain si nécessaire. Je n'ai pas 10 points dans cette pile, je ne peux donc pas en publier plus de 2.
J'utilise une batterie 9V via un régulateur 24v - 5v (il y en avait un autour) pour puissance mon ampli op et schématique. Le signal de l'OPAMP sera compris entre 0 et 5 V, donc la tension n'a pas endommagé l'Arduino Uno. Le projet final sera quelque chose comme: output> A puis power green, A < output < B power yellow, B < output red.
Le problème est que j'obtiens une valeur oscillante de mon Serial Monitor cela va de 0 à 1023 (ou j'ai une conversion pour le ramener à la tension de sortie. Donc 0V à 5V. Voir le code).
Il fait cette oscillation lorsque la carte est connectée à l'un des Broches AX (X = 0-5) ou rien de branché du tout (je comprends que cela produira des nombres étranges avec la broche flottante).
J'avais une photo du moniteur série mais je ne le fais pas Je n'ai pas 10 points pour ajouter plus de 2 photos. S'il vous plaît voir l'image ci-dessous
Je sais que la sortie de l'OPAMP fonctionne parce que lorsque j'utilise un voltmètre pour lire la sortie, cela fonctionne très bien. 0.3XXV quand aucune flamme, 5V quand la flamme est directement au-dessus de mon theromopile.
Quelqu'un aurait-il une suggestion pour expliquer pourquoi l'Arduino agit de cette façon? La lecture du voltmètre provient directement de la broche 1 de l'ampli Op. pas plus de 2 liaisons. AD822 op amp
Voici mon code avant d'ajouter des instructions if pour les LED. C'était incorrect.
int TP = A2; // Affecte Thermopile à la broche A2int val; // Déclare readValue Variablefloat Voltage; // Déclarer la variable de tension du monde réel - Float = in between variableint ledG = 11; int ledY = 12; int ledR = 13; void setup () {pinMode (TP, INPUT); // Déclarer la broche Thermopile comme entrée
pinMode (ledG, SORTIE); pinMode (ledR, SORTIE); pinMode (ledY, OUTPUT); Serial.begin (9600); // Démarrez votre port série} void loop () {val = analogRead (TP); // Lire la broche de la thermopile et placer la valeur dans readValue Voltage = (5./1023.)*val; // Pour faire des "calculs en virgule flottante" ont un "." // après le nombre. Sinon, il renverra le nombre réel (5/1023 = 0) selon ArduinoSerial.println (Voltage); // Print readValue to Serial Monitor delay (100); // Sortie retardée à 1/4 de seconde}