détecteur de tension

Bonjour,

J'ai un montage trouvé sur le net mais que je n'arrive pas à faire fonctionner.

Il s'agit d'un détecteur de tension qui allume une led si celle ci est sous 2.5v et l'éteint si elle est au dessus.

Voici le programme ino et la doc pdf.

Pourriez vous regarder?

J'ai oublié de mentionner que j'utilise un arduino nano

Merci

diiity

init-arduino-class03.pdf (890 KB)

detection.ino (969 Bytes)

Bonjour,

Il faut mettre LEDpin en sortie dans le setup.
De plus dans tes digitalWrite(), la pin n'est pas LED mais LEDpin.

Mets ton code entre balises

C'est bon j'ai déclaré

Pour digitalWrite je l'ai fait dans le code que j'ai recopié, le ino.

Et si je veux que la détection soit quand la tension arrive à 3.92v, que dois changer?

Je m'explique.

Je voudrais qu'arrive à une tension minimum de 3.92v, un buzzer retentit.

Il faut que je remplace le potard par un diviseur de tension et que j'indique 3.92 dans arduino

diiity:
Il faut que je remplace le potard par un diviseur de tension et que j'indique 3.92 dans arduino

Je ne comprend pas ce que tu veux dire. Sur ton schéma, le potar est monté en diviseur de tension.

Est ce que va mieux/moins mal? nota: je doute que ce que vous avez transmis compile....

//define the threshold value
const double SEUIL = 3.9; // 2.5;
//define the inputpin analog voltage
int analogPin = 0;
//define the ouput pin for red LED
int LEDpin = 3;

void setup() {
// initialize serial communication at 9600bits per second:
Serial.begin(115200);
// DEFINIR LEDpin en sortie remarque de Kamil
  pinMode(ledPin, OUTPUT);   
}

void loop() {
// read the input on analog pin 0
int sensorValue = analogRead(analogPin);
// convert the analog reading (which goes from 0 - 1023) to a voltage (0 - 5V):
float voltage = (sensorValue * 5.0) / 1023.0; // changé parenthéses 

//detect if analog signal is > SEUILvolts
if (voltage > SEUIL){
// print out the value you read:
Serial.println(sensorValue);
Serial.println(voltage);
Serial.println("LED is on");

//turn the LEDpin on
digitalWrite(LED,HIGH);
} else{
//print out the value you read:
Serial.println(sensorValue);
Serial.println(voltage);
Serial.println("LED is off");

}
}
//turn the LEDpin off
digitalWrite(LED,LOW);
}
//delay for display on the serial monitor
delay(200);
}

si si ça compile, par contre la précision n'est pas là, il faut que je code à 4.2 pour avoir 3.92.

Sinon la détection se fera directement sur un élément d'accu lipo donc quand il atteindra les 3.92.

Comment je dois faire parce qu'il faut alimenter indépendamment l'arduino et avoir la tension de référence 3.92 pour la détection?

double threshold = 3.92;
//define the inputpin analog voltage
int analogPin = 0;
//define the ouput pin for red LED
int LEDpin = 3;

void setup() {
// initialize serial communication at 9600bits per second:
Serial.begin(9600);
pinMode(LEDpin, OUTPUT);
}

void loop()
{
// read the input on analog pin 0
int sensorValue = analogRead(analogPin);
// convert the analog reading (which goes from 0 - 1023) to a voltage (0 - 5V):
float voltage = sensorValue * (5.0 / 1023.0);

//detect if analog signal is > 2.5volts
 if (voltage > 3.92)
{
// print out the value you read:
Serial.println(sensorValue);
Serial.println(voltage);
Serial.println("LED is on");

//turn the LEDpin on
digitalWrite(LEDpin,HIGH);
}
else
{
//print out the value you read:
Serial.println(sensorValue);
Serial.println(voltage);
Serial.println("LED is off");


//turn the LEDpin off
digitalWrite(LEDpin,LOW);
}
//delay for display on the serial monitor
delay(200);
}

La précision du convertisseur dépend (en grande partie) de la précision de la tension de référence.
Par défaut la tension de référence est la tension d'alimentation du micro. La mesure dépend donc de cette tension.
Si tu veux avoir une mesure plus précise il faut que tu mesures la tension "5V" et que tu utilises cette tension pour le calcul de la tension mesurée. Ce n'est cependant pas la panacée car cette tension peut varier en fonction de l'alimentation (tension usb, alimentation par jack ...)

j'ai essayé de mettre la référence à 3.92, ça ne marche pas mais je pense que c'est du au pont diviseur.

Il faut que je fasse un pont qui me donne en sortie la valeur d'entrée, c'est ça?

Attention avec une nano si tu utilises l'alim par l'USB : il y a en série une diode shottky soit 0,4 à 0,5V en moins.

diiity:
j'ai essayé de mettre la référence à 3.92, ça ne marche pas mais je pense que c'est du au pont diviseur.

Il faut que je fasse un pont qui me donne en sortie la valeur d'entrée, c'est ça?

Comme je te l'ai dit la valeur lue dépend de la tension d'alimentation.
Il faut que tu mesures le tension d'alimentation et que tu utilises cette valeur.
Si la tension vaut 4.6V la tension lue sera

float voltage = sensorValue * 4.6 / 1023.0;