Répondre à la discussion
Page 1 sur 2 1 DernièreDernière
Affichage des résultats 1 à 30 sur 54

Fonction ADC avec un AVR



  1. #1
    joey57

    Fonction ADC avec un AVR


    ------

    Bonsoir,

    Je voudrais afficher la température sur un LCD grâce à un LM35.

    Je n'ai jamais utiliser la fonction ADC et je voudrais la comprendre en entier ! Là je passe mon temps à lire des exemples de programmes qui me font de plus en plus peur.

    Alors y'a t-il un cour bien fait ?

    Bon je sais calculer le quantum, faire un graphe etc mais je parle niveau programmation.

    Une autre question :

    J'ai un afficheur LCD 4 lignes de 20 cars.
    Je souhaite afficher 3 températures provenant de 3 sondes + une quatrième fonction qui est un voltmètre.

    Sachant que pour la tension il me faut ( et je veux ) un chiffre après la virgule, est t-il plus judicieux de prendre la même " dimension " pour les températures ? Avec un chiffre après la virgule.

    Merci

    -----

  2. Publicité
  3. #2
    PIC sur PAC

    Re : Fonction ADC avec un AVR

    Bonsoir,
    Moi aussi j'utilise un ATMEL (ATMEGA32) avec le CAN (realisation d'un thermostat différentiel sur 2 sondes de températures KT100).
    Je peux te fournir le peu de code qui me permet de la mettre en service et de l'utiliser. Par contre j'ai encore qques points que je ne maitrise pas et je souhaiterais profiter de ton post pour les évoquer si cela ne te dérange pas notamment le prescaller et son utilité: a t-il un autre intérêt que ramener la fréq osc à moins de 200khz).
    Dans le doute reboot

  4. #3
    joey57

    Re : Fonction ADC avec un AVR

    Slt,

    OK moi ca m'intéresse ( Merci ! )
    J'utiliserais 3 sondes LM35.

    Bien évidemment je suis pas contre le fait que tu poses tes questions ici puisqu'on parle du même sujet.

    Pour moi le prescaler est un diviseur de fréquence, on le trouve dans le registre ADCSRA. Pour avoir une bonne résolution il faut le faire tourner entre 50 et 200Khz, si on divise trop cette fréquence, on diminue le nombre d'échantillons du coup moins de précision.

    Je penses que c'est ca ...

  5. #4
    PIC sur PAC

    Re : Fonction ADC avec un AVR

    bonjour,
    Ok j'extrais les commande faite pour la mise en service du CAN et je le mets sur le post.
    Pour le préscaller c'est ce que j'ai aussi compris mais je pensais que cela pouvait avoir d'autres finalités (moyenne de la mesure ou autre).
    Dans le doute reboot

  6. #5
    DAUDET78

    Re : Fonction ADC avec un AVR

    Citation Envoyé par joey57 Voir le message
    J'utiliserais 3 sondes LM35.
    Trois sondes analogiques ?

    C'est vraiment se compliquer la vie . Utilise des sondes numériques (LM70 ou autres)
    J'aime pas le Grec

  7. A voir en vidéo sur Futura
  8. #6
    joey57

    Re : Fonction ADC avec un AVR

    Salut DAUDET ...

    J'ai acheté 3 sondes numérique DS1821 et ca fais 2 semaines que je cherche des programmes et j'ai rien compris c'est des usines à gaz !

    J'ai bien compris la méthode pour demander une mesure mais la liaison 1wire ...hum !

  9. Publicité
  10. #7
    PIC sur PAC

    Re : Fonction ADC avec un AVR

    Bonjour DAUDET,
    Pour mon cas j'ai besoin de mettre de rendre les sondes étanches donc une petite TY noyée dans l'araldite cela sera plus pratique qu'un dip8 par contre je garde sous le coude la référence que tu as donné.
    Au fait JOEY57 tu utilises quel AVR?
    je ne sait pas si c'est les mêmes dénomination.
    Bon voici un extrait du code:
    Code:
    //mise en service du convertiseur A/N
    ADCSRA=(ADCSRA|0x80);
    //choix de la tension externe comme référence 
    //et division par 8 pour l'horloge de conversion
    //on attend environ 22 cycles que la mesures soit faite
    //avec une division par 8 et 350 avec une division par 128 (avec une freq de 1Mhz
    ADMUX=0x00;
    ADCSRA=ADCSRA|0x03;
    
    //acquisition des voies analogiques temp1 et temp2
    void	a2n_temps(void)
    {
    unsigned int i,temp=0;
    unsigned char nb_moy;
    
    //choix de la voie de mesure 0
    ADMUX=0x00;
    //lancement d'une mesure surveillance du bit ADIF de ADCSRA
    for (nb_moy=0;nb_moy<NB_MOY;nb_moy++)
    	{
    	ADCSRA=ADCSRA|0x40;
    //attente du résultat
    	while((ADCSRA&0x10)==0){
    		}
    
    	ADCSRA=ADCSRA|0x10;//effacement du flag
    	//lecture de la valeur
    	temp1=ADCL;
    	i=ADCH;
    	temp1+=(i<<8);
    	temp+=temp1;
    	}
    temp1=temp/NB_MOY;
    temp=0;
    }
    Voilà c'est assez simple (une fois que cela fonctionne c'est facile à dire ) peut être un peu brut aussi.
    Dans le doute reboot

  11. #8
    joey57

    Re : Fonction ADC avec un AVR

    Je programme avec CVAVR et AVR.

    SI je comprend, tu mesure la température avec 2 sondes et tu fais la moyenne des deux ?

    J'ai pas compris ce que tu fais avec ADCH et ADCL ... tu est sur 16 bits ?

  12. #9
    DAUDET78

    Re : Fonction ADC avec un AVR

    Citation Envoyé par PIC sur PAC Voir le message
    cela sera plus pratique qu'un dip8 par contre je garde sous le coude la référence que tu as donné.
    tu as des capteurs numériques de température en TO92
    J'aime pas le Grec

  13. #10
    joey57

    Re : Fonction ADC avec un AVR

    Bah oui le DS1821 ^^

  14. #11
    PIC sur PAC

    Re : Fonction ADC avec un AVR

    SI je comprend, tu mesure la température avec 2 sondes et tu fais la moyenne des deux ?
    Non c'est un thermostat différentiel j'ai besoin des 2 valeurs par contre je fait plusieurs mesures de suite que je moyenne pour chaque capteurs (ici tu as le code que pour un capteur l'autre c'est idem sur une autre entrée)
    J'ai pas compris ce que tu fais avec ADCH et ADCL ... tu est sur 16 bits ?
    Le résultat est en 10bits donc sur 2 octets cf doc
    When an ADC conversion is complete, the result is found in these two registers. If differential
    channels are used, the result is presented in two’s complement form.
    When ADCL is read, the ADC Data Register is not updated until ADCH is read. Consequently, if
    the result is left adjusted and no more than 8-bit precision is required, it is sufficient to read
    ADCH. Otherwise, ADCL must be read first, then ADCH.
    The ADLAR bit in ADMUX, and the MUXn bits in ADMUX affect the way the result is read from
    the registers. If ADLAR is set, the result is left adjusted. If ADLAR is cleared (default), the result
    is right adjusted.
    Dans le doute reboot

  15. #12
    PIC sur PAC

    Re : Fonction ADC avec un AVR

    Bonjour,
    Bon je fais fonctionner mon ADC mais je ne suis pas très content du résultat que j'obtiens.
    Le code que j'utilise est celui présenté plus haut il à l'air d'être bon.
    Je dois m'être planter qque part (dans le câblage probablement) car j'obtiens une mesure qui varie de d'environ une vingtaine de niveaux .
    condition d'essais:
    -montage ATMEGA32 sur plaquette d'essais c'est pas le top mais quand même.
    -Pas de dialogue externe pendant la conversion
    -oscillateur interne 1Mhz
    -prescaller de ADC: /8
    -AVcc cablée comme la notice self plus capa
    -Aref reçoit une tension de 2.6V via une zener (zener de 2.7 alimenté via une resistance de 600ohm depuis le 5 volt et même ligne que le µc pas top je sais).
    la tension mesuré est fixe (pont de résistances)
    D'où peut venir le problème?
    Dans le doute reboot

  16. Publicité
  17. #13
    PIC sur PAC

    Re : Fonction ADC avec un AVR

    J'ai refait un test en utilisant la tension interne en référence:
    Le résultat est le même
    Bon il reste le mode "ADC noise Canceler" à tester mais quand même le bruit est important et même en moyennant (sur 10 ou 20 acquisitions) il est quand même là.
    Prochain essai je le ferai avec une pile 9v pour éviter tous bruit d'alimentation (et exit la sonde JTAG).
    Dans le doute reboot

  18. #14
    PIC sur PAC

    Re : Fonction ADC avec un AVR

    Bonsoir,
    J'ai fait qques tests.
    résultats:
    Mon alimentation est perturbée par mon afficheur à LED (HDSP2111) avec une capa de 100µF à ses bornes c'est mieux.
    Je n'utilisais pas la déclaration "volatile" pour mes variables globales utilisées dans ma routine interruption qui faisait la mesure elles n'étaient donc pas toujours rafraichis correctement.
    Maintenant j'ai une mesure assez stable pour des niveaux compris entre 600 et 1024 environ. Par contre pour des niveaux faibles j'ai encore une dizaine de LSB de bagottement sur la mesure.
    Et là je ne comprend pas pourquoi.
    Dans le doute reboot

  19. #15
    ftorama

    Re : Fonction ADC avec un AVR

    Salut,

    poste-nous un schéma COMPLET de ton montage....

    J'ai l'impression que plusieurs délits contre l'électronique sont commis, en espérant qu'il n'y ait pas de crimes

  20. #16
    PIC sur PAC

    Re : Fonction ADC avec un AVR

    Bonjour,
    Voici donc le montage actuel je pense que tout y est.
    Pour rappel il est sur plaque d'essais et il est sur mon bureau (pas de grande variation extérieure).
    L'alimentation 8V est issue d'un bloc secteur réglable (pont de 4 diodes (graetz) LM317 et 1000µF).
    A terme le montage est prévu pour fonctionner dehors installer sur ma PAC (variation de température: -20+40°C)
    Autre soucis: je peux déclarer un tableau de 6 INT GLOBAL en VOLATILE
    j'ai l'impression que cela me met la zone dans mon code.
    Dernière modification par Tropique ; 25/02/2011 à 18h15.
    Dans le doute reboot

  21. #17
    Tropique

    Re : Fonction ADC avec un AVR

    Bonjour

    Merci de respecter les http://forums.futura-sciences.com/el...-sabonner.html, et de convertir l'image dans un format autre que le pdf (réservé aux documents complexes et multipages).
    Pas de complexes: je suis comme toi. Juste mieux.

  22. #18
    PIC sur PAC

    Re : Fonction ADC avec un AVR

    donc voici la version en jpeg au lieu du pdf
    Images attachées Images attachées
    Dans le doute reboot

  23. Publicité
  24. #19
    invite98765423456
    Invité

    Re : Fonction ADC avec un AVR

    Bonsoir, Pic sur Pac

    Mets aussi des capas (10 nf à 100nf) sur tes entrées ("antennes"?) PA0 et PA1, si possible près des pins du µC.

    Fais aussi une moyenne sur au moins 16 à32 mesures.

    Thierry

  25. #20
    DAUDET78

    Re : Fonction ADC avec un AVR

    il y a des pullUPs sur PD2 et PD3 ? soft?
    J'aime pas le Grec

  26. #21
    invite98765423456
    Invité

    Re : Fonction ADC avec un AVR

    Oui,

    Elles sont normalement activées en "écrivant" (PORT) sur le registre des entrées configurées en entrées (PIN).

    Ca fait (très) longtemps que cela existe sur les µC autres que les PICs

    Th.
    Dernière modification par invite98765423456 ; 25/02/2011 à 21h13.

  27. #22
    DAUDET78

    Re : Fonction ADC avec un AVR

    J'y connais rien en µC ... je demande simplement si il y en a par soft (vu qu'il n'y en a pas par hard)
    J'aime pas le Grec

  28. #23
    invite98765423456
    Invité

    Re : Fonction ADC avec un AVR

    Normalement, tous les µC non préhistoriques ont des pull up dont la valeur varie entre 20 en 50k.

    Chose amusante, c'est un "tips" pour les modes "low power" car susceptible de consommer plus que le microampère garanti pour le cpu: on recherche le cpu qui consomme le moins mais on laisse une entrée avec pull-up...

    Th.

  29. #24
    PIC sur PAC

    Re : Fonction ADC avec un AVR

    Bonsoir
    je tourne actuellement avec une moyenne sur 16 mais le résultat n'est pas là quand même. De plus faire une moyenne sur 3 ou 4 mesures OK mais au delà je ne trouve pas cela normal.
    Mets aussi des capas (10 nf à 100nf) sur tes entrées ("antennes"?) PA0 et PA1, si possible près des pins du µC
    Ok je l'ai fait mais coté "sonde" je vais déplacer les capas.

    il y a des pullUPs sur PD2 et PD3 ? soft?
    j'ai fais les deux (même les trois cad sans pull up) Aucun impact sur les résultats

    Je ferais de nouveaux tests avec la capa près du µC et un afficheur découplé du reste du montage quand mon code sera à nouveau opérationnel (il est à moitié en vrac suite à un changement de type de variable ).
    A ce propos que signifie le fait de ne pas pouvoir mettre de point d'arret sur une partie de code?
    Je pense que cela indique que cette partie de code n'existe pas dans l'exécutable fourni au µCaprès compilation(je sais c'est grotesque mais je ne vois que cela comme explication cependant j'ai pas d'erreur lors de la compil et du built ).


    Je suis preneur de toutes autres idées.
    Dans le doute reboot

  30. Publicité
  31. #25
    invite98765423456
    Invité

    Re : Fonction ADC avec un AVR

    Citation Envoyé par PIC sur PAC Voir le message
    A ce propos que signifie le fait de ne pas pouvoir mettre de point d'arret sur une partie de code?
    Je pense que cela indique que cette partie de code n'existe pas dans l'exécutable fourni au µCaprès compilation(je sais c'est grotesque mais je ne vois que cela comme explication cependant j'ai pas d'erreur lors de la compil et du built ).
    Je suis preneur de toutes autres idées.
    Exact, mais tu as sans doute laissé l'optimisation du code sur 03 ??.. Qui effectivement supprime tout ce qui est "inutile". Remets l'optimisation su O0 et interroge toi sur le pourquoi il ne"passe pas" dans cette partie de code. (Non, ce n'est pas le compilateur qui est buggé).

    Thierry

    PS: Daudet pourra te donner (mieux que moi) les bon conseils pour que ton signal analogique arrive *nickel* aux pattes du µC

  32. #26
    DAUDET78

    Re : Fonction ADC avec un AVR

    Tu parles des sondes KTY ?

    Déja, c'est idiot de les alimenter avec une tension instable de 5V et d'alimenter la référence du convertisseur ADC avec une référence pil-poil sur Aref ...
    On cherche à mesurer un ratio de résistance. Donc c'est la même tension qui doit alimenter Aref et les KTY.

    Si les KTY sont un peu loin, c'est un blindé torsadé qui doit les ramener. Ensuite, la température variant lentement, un bon filtre passe bas en entrée de PA0 et PA1 n'est pas inutile.
    J'aime pas le Grec

  33. #27
    ftorama

    Re : Fonction ADC avec un AVR

    Et avec la ref interne, ça donne quoi?

  34. #28
    DAUDET78

    Re : Fonction ADC avec un AVR

    Citation Envoyé par ftorama Voir le message
    Et avec la ref interne, ça donne quoi?
    ben ... c'est idiot !
    On mesure une tension sur les sondes KTY qui est fonction de la stabilité du 5V (donné par un 7805 qui n'est pas une référence de tension)

    Par contre si Aref est donné à partir du même 5V pourri, on peux parfaitement calculer la variation du ratio de résistance

    Le problème serait tout autre si on avait un thermocouple comme capteur. Il faut alors mesurer une tension avec précision et il faut que Aref soit ultrastable (avec une référence externe ou interne ... dont je ne connais pas les performances)
    J'aime pas le Grec

  35. #29
    PIC sur PAC

    Re : Fonction ADC avec un AVR

    Exact, mais tu as sans doute laissé l'optimisation du code sur 03
    Ok je fais cela et je fouille mon code. Je me doute bien que le compliateur n'est pas buggé mais je suis encore loin de maitriser la suite AVRstudio comme:
    - Pourquoi ne peut-on pas voir certaines variables (en faite je pense que je viens de trouver la solution dans ta réponse: car elle n'existe pas suite à l'optimisation j'ai gagné ?).
    - Pourquoi ne peut on pas voir les variables lorsque l'on est en mode simulation ??? Là pas d'idée

    Déja, c'est idiot de les alimenter avec une tension instable de 5V et d'alimenter la référence du convertisseur ADC avec une référence pil-poil sur Aref ...
    On cherche à mesurer un ratio de résistance. Donc c'est la même tension qui doit alimenter Aref et les KTY.
    Pour le moment j'en suis au démonstrateur de fonctionnalité j'utilise donc le 5V pour les alimenter (s'il faut faire autre choses je le ferais cependant je comptais réutiliser les alims de ma PAC et je ne pense pas qu'elles soient particulièrement chiadées )
    Pour le Aref il n'est pas pil-poil actuellement c'est un potar donc le Aref suit les variations du 5V. Par contre il est nécessaire pour moi d'utiliser Aref pour travailler sur environ 2.4V afin d'obtenir un lsb 2 fois plus petit.
    Si les KTY sont un peu loin, c'est un blindé torsadé qui doit les ramener.
    Pour le moment les potars qui les remplacent sont à 6 cm sur ma plaque d'essai avec comme seul blindage la gaine PVC du strap qui fait la liaison.
    Dans le doute reboot

  36. #30
    DAUDET78

    Re : Fonction ADC avec un AVR

    Citation Envoyé par PIC sur PAC Voir le message
    Pour le Aref il n'est pas pil-poil actuellement c'est un potar donc le Aref suit les variations du 5V.
    sorry, sur ton schéma, c'est une zener qui donne le Aref ... et c'est pas bon!
    J'aime pas le Grec

Sur le même thème :

Page 1 sur 2 1 DernièreDernière

Discussions similaires

  1. Fonction ADC pour Pic 16F727
    Par invite9865321 dans le forum Électronique
    Réponses: 0
    Dernier message: 21/05/2010, 21h50
  2. Mise en fonction ADC PIC16F887
    Par Sibe dans le forum Électronique
    Réponses: 4
    Dernier message: 05/05/2010, 19h19
  3. compatibilté de winAVR avec Easy AVR
    Par spray_kim dans le forum Électronique
    Réponses: 1
    Dernier message: 05/04/2010, 23h46
  4. fonction c pic, pour adc (sous CSS)
    Par bulsara53 dans le forum Électronique
    Réponses: 9
    Dernier message: 26/11/2008, 09h34
  5. adc avec un PIC12F683
    Par passicon dans le forum Électronique
    Réponses: 2
    Dernier message: 21/01/2007, 15h38
Découvrez nos comparatifs produits sur l'informatique et les technologies.