Go Down

Topic: batterie analog? (Read 2185 times) previous topic - next topic

fdufnews




Personnellement je suis arrivé à la conclusion que les mesures analogiques avec Mega328, Mega3Uu4... nécessitent souvent une VRAIE référence externe, les 'références' de 1,1V ou 2,56V internes n'étant garanties qu'à 10% près  =(.
Avec le lithium 10%  c'est notoirement insuffisant comme précision.
Un bon régulateur 5V ou 3,3V fait déjà mieux que ces "références" internes.

bonsoir Al1fch
même conclusion
J'aime bien utiliser des petites Vref en TO92 MCP1541 (4.096V) comme c'est une ^2 c'est facile ensuite de jouer avec une résolution simple.


Ces 10% c'est une erreur absolue. Dans le cas traité ici, une calibration (avec une source connue ou une mesure avec un multimètre) permet de corriger le problème.

al1fch

#16
Jun 12, 2012, 11:35 am Last Edit: Jun 12, 2012, 11:55 am by al1fch Reason: 1
OK. Pour faire simple :

-Carte Uno ou Duemilanov, sans ajout de composants,  lancer le code d'origine de 'Secret Voltmeter' .
Il donnera déjà une bonne idée de Vcc (en mV)

Code: [Select]
long readVcc() {
 long result;
 // Read 1.1V reference against AVcc
 ADMUX = _BV(REFS0) | _BV(MUX3) | _BV(MUX2) | _BV(MUX1);
 delay(2); // Wait for Vref to settle
 ADCSRA |= _BV(ADSC); // Convert
 while (bit_is_set(ADCSRA,ADSC));
 result = ADCL;
 result |= ADCH<<8;
 result = 1126400L / result; // Back-calculate AVcc in mV
 return result;
}

void setup() {
 Serial.begin(9600);
}

void loop() {
 Serial.println( readVcc(), DEC );
 delay(1000);
}


-Carte Leonardo, Vinciduino, Olimexino32u4..... prendre le code adapté que j'ai testé,
avec la ligne
Code: [Select]
ADMUX = _BV(REFS0) | _BV(MUX4)| _BV(MUX3) | _BV(MUX2) | _BV(MUX1);

-Dans un second temps, on peut améliorer la précision en calibrant par retouche de la valeur 1126400L
Sur ma carte j'avais retenu 1121000L (correspond à 1,121 Volt)

djo54150

#17
Jun 12, 2012, 01:38 pm Last Edit: Jun 12, 2012, 01:42 pm by djo54150 Reason: 1
j ai une question qui peut parraitre con mais quand je test jai la valeur de vcc oui mais du cable usb et non de ma batterie :/

comment voir sur le serial monitor sans etre alimenter par l usb juste par la batterie ?

et aussi théoriquement si ma batterie est pleine je suis censé avec 3.7 V

si c eest une 3.7 V

patg_


comment voir sur le serial monitor sans etre alimenter par l usb juste par la batterie ?

Ca dépend quelle carte Arduino tu as.
Sur celles qui sélectionnent automatiquement la source d'alimentation, une solution est de te faire ton propre câble USB, sans y câbler le +5V (mais garde la masse commune!).
Comme ça l'Arduino ne va détecter que l'alim externe (je ne sais pas trop comment fonctionne cette détection mais j'étais persuadé que l'alim externe était prioritaire).
Mes Arduineries: http://breizhmakers.over-blog.com/

djo54150

jai une mega adk et une uno r3

skizoh

sinon câble Série de base tu coupe un coté tu reli RX TX masse a l'arduino et l'autre au pc, un petit hyper terminal ou gtkterm et pis ça roule :)


Skizo !
Un tien vaux mieux que deux tu l'auras !

al1fch

#21
Jun 12, 2012, 03:21 pm Last Edit: Jun 12, 2012, 03:23 pm by al1fch Reason: 1
Quote
câble Série de base tu coupe un coté tu reli RX TX masse a l'arduino et l'autre au pc

Non ! Surtout pas çà : les niveaux de tension RS232 côté PC sont +12V et -12V, destruction plus que probable  de l'entrée RX de l'Arduino
Un montage d'adaptation des niveaux ET d'inversion logique est indispensable..... souvent à base de circuit MAX232
le -12V envoyé par  le Tx du PC doit être transformé en +Vcc
le +12V envoyé par le Tx du PC doit être transformé en 0 Volts

skizoh

:x :x :x la j'ai dit de la merde xDDDD désolé, en plus je le sais je me tape du rs485 depuis 3mois et j'utilise des max488, bref oui effectivement adaptation à prévoir du coup ! :s
.. bon pour faire simple on est mal la au final...

Skizo
Un tien vaux mieux que deux tu l'auras !

patg_

Faut aussi arriver à trouver un PC avec un port série  :smiley-mr-green:
Plus facile de se bricoler un câble USB A->B en ne câblant que la masse, D+ et D-
Mes Arduineries: http://breizhmakers.over-blog.com/

68tjs

Une solution radicale pour être tranquille  (un peu à la hussarde quand même) mais sans risque de confusion en mélangeant les câbles :
1) dessouder le polyswitch (*), cela coupe la liaison avec le +5VUSB fourni par le PC  -> pour ne pas perdre le polyswitch je l'ai soudé en attente sur la grosse plage de soudure du régulateur 5V
2) souder un fil pour amener l'alim sur la plage de report du polyswitch -> celle qui n'est pas reliée à l'USb  :smiley-mr-green:
3) par précaution souder un condensateur de filtrage entre le fil et la masse du connecteur USB

Comme cela on peut utiliser une alimentation externe (3 à 5V) sans se préocuper ni de l'usb ni du régulateur qui demande 7V min.

Par contre ne pas oublier d'alimenter le micro AVANT de commencer à le programmer par l'USB.

(*) voir les schéma électrique et d'implantation sur le site Arduino.

Commutation automatique des alim :
L'alim "USB" passe par T1  (FDN340P) qui est normalement conducteur donc Rdson = 0 Ohms.
Dès que l'on applique une tension par l'accès Vextérieur l'amplificateur opérationnel IC7b (LM358 monté en comparateur) bascule et bloque le T1. Comme la sortie du FET et celle du régulateur sont reliées le micro continu à être alimenté.

skizoh

Quote
Une solution radicale pour être tranquille  (un peu à la hussarde quand même)


un peu à la hussarde? lol xDD totalement ouai mdrr ^^


Skizo !
Un tien vaux mieux que deux tu l'auras !

68tjs

#26
Jun 13, 2012, 10:01 am Last Edit: Jun 13, 2012, 10:03 am by 68tjs Reason: 1
Quand on veut bricoler l'électronique la première des choses à apprendre c'est de pas avoir peur de se servir d'un fer à souder.

skizoh

tout à fait d'accord ! :)
Un tien vaux mieux que deux tu l'auras !

Go Up