Capteur température DS1820
Répondre à la discussion
Affichage des résultats 1 à 17 sur 17

Capteur température DS1820



  1. #1
    boux

    Capteur température DS1820


    ------

    Bonsoir,

    J'utilise une Arduino UNOR3 et un capteur de température DS1820.
    Il existe également des DS18B20 et DS18S20.

    Je voudrais savoir quelle est la différence entre ces trois capteurs au niveau du code ? Ayant pas encore bien acquis toutes les bases pour programmer les Arduino, notamment la gestion de toutes les bibliothèques, j'ai utilisé un code tout prêt. Mais on trouve principalement des exemples de programme pour les B20 ou S20. J'ai jeté un coup d'oeil sur la datasheet, mais au niveau du calcul de la température, quelle est la différence ?

    Merci à vous, et bonne soirée

    -----

  2. #2
    DAUDET78

    Re : Capteur température DS1820

    De mémoire, le DS1820 avait un gros bug et n'existe plus .
    J'aime pas le Grec

  3. #3
    boux

    Re : Capteur température DS1820

    Mince, tu veux dire qu'il n'est pas utilisable ? Quand je charge le code trouvé sur internet il réagit bien au changement de température mais pour une température qui devrait avoisiner les 20°C j'obtiens environ 3°C !
    Et dire que c'est un magasin électronique qui m'a vendu ça pour un prix assez important !

  4. #4
    DAUDET78

    Re : Capteur température DS1820

    http://www.picbasic.co.uk/forum/showthread.php?t=14441

    Pour info, le DS1820 n'est plus dispo chez Farnell mais le DS18S20 ou le DS18B20
    J'aime pas le Grec

  5. A voir en vidéo sur Futura
  6. #5
    boux

    Re : Capteur température DS1820

    Ok, si j'ai bien compris il suffit de faire une tempo entre chaque conversion et le tour est joué ?
    J'essayerai ça !

    Merci

  7. #6
    boux

    Re : Capteur température DS1820

    J'ai testé avec une tempo plus longue (jusqu'à plusieurs secondes) entre chaque conversion mais rien n'y fait j'obtiens toujours une température de 2°C à 3°C.

    Voici le code utilisé :

    Code:
    #include <OneWire.h>
     
    int DS18S20_Pin = 2; //DS18S20 Signal pin on digital 2
     
    //Temperature chip i/o
    OneWire ds(DS18S20_Pin);  // on digital pin 2
     
    void setup(void) {
      Serial.begin(9600);
    }
     
    void loop(void) {
      float temperature = getTemp();
      Serial.println(temperature);
       
      delay(100); //just here to slow down the output so it is easier to read
       
    }
     
     
    float getTemp(){
      //returns the temperature from one DS18S20 in DEG Celsius
     
      byte data[12];
      byte addr[8];
     
      if ( !ds.search(addr)) {
          //no more sensors on chain, reset search
          ds.reset_search();
          return -1000;
      }
     
      if ( OneWire::crc8( addr, 7) != addr[7]) {
          Serial.println("CRC is not valid!");
          return -1000;
      }
     
      if ( addr[0] != 0x10 && addr[0] != 0x28) {
          Serial.print("Device is not recognized");
          return -1000;
      }
     
      ds.reset();
      ds.select(addr);
      ds.write(0x44,1); // start conversion, with parasite power on at the end
     
      byte present = ds.reset();
      ds.select(addr);   
      ds.write(0xBE); // Read Scratchpad
     
       
      for (int i = 0; i < 9; i++) { // we need 9 bytes
        data[i] = ds.read();
      }
       
      ds.reset_search();
       
      byte MSB = data[1];
      byte LSB = data[0];
     
      float tempRead = ((MSB << 8) | LSB); //using two's compliment
      float TemperatureSum = tempRead / 16;
       
      return TemperatureSum;
       
    }
    source : http://www.dfrobot.com/wiki/index.ph...grin:FR0198%29

  8. #7
    DAUDET78

    Re : Capteur température DS1820

    Tu te fais échanger tes DS1820 ....... il est pourri ce composant !
    J'aime pas le Grec

  9. #8
    boux

    Re : Capteur température DS1820

    Ça marche !
    Merci de m'avoir fais partager ton expérience
    Dernière modification par boux ; 28/04/2013 à 21h24.

  10. #9
    DAUDET78

    Re : Capteur température DS1820

    Voila la confirmation de l'obsolescence du produit
    http://www.maximintegrated.com/datas...p/id/3021/t/rp
    J'aime pas le Grec

  11. #10
    dome45

    Re : Capteur température DS1820

    Bonjour,
    Citation Envoyé par boux Voir le message
    Mince, tu veux dire qu'il n'est pas utilisable ? Quand je charge le code trouvé sur internet il réagit bien au changement de température mais pour une température qui devrait avoisiner les 20°C j'obtiens environ 3°C !
    Un produit obsolète ne veux pas dire qu'il devient un produit non utilisable
    Mes DS1820 fonctionnent avec cette routine.
    Code:
    ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
    ;;  Nom du fichier 1820.inc									;;
    ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
    ;;		Variables											;;
    ; VTemp1													;;
    ; VTempH													;;
    ; DS_cmpt													;;
    ; DS_Data													;;
    ; DS_Bit													;;
    ; DS_Error													;;
    ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
    ;;		Routines											;;
    ; Delay_10us												;;
    ; Delay_100ms												;;
    ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
    ;;		Define												;;
    ; #define DQ1	PORTA,0										;;
    ; #Define Carry	STATUS, 0									;;
    ; #Define Zero	STATUS, 2									;; 
    ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
    Pin_low1	macro
    	BCF		DQ1
    	BSF		STATUS, RP0
    	BCF		DQ1
    	BCF		STATUS, RP0
    	endm
    Pin_hz1	 macro
    	BSF		STATUS, RP0
    	BSF		DQ1
    	BCF		STATUS, RP0
    	endm
    ;************ReadTemp**************************************
    Read_Temp1
    	CLRF	VTemp1
    	CLRF	VTempH
    	CALL	DS_Reset1
    	BTFSC	DS_Error, 0			; =1?
    	 RETURN						; oui =1 -> erreur
    	MOVLW	0xCC				; Skip ROM
    	CALL	DS_Write1
    	MOVLW	0x44				; demande conversion
    	CALL	DS_Write1
    	MOVLW	0x05
    	CALL	Delay_100ms			; 500 ms
    
    DS_Attente1
    	MOVLW	0x01
    	CALL	Delay_100ms			; 100 ms
    	CALL	DS_Read1
    	MOVLW	0xFF
    	XORWF	DS_Data, w			; si DS_Data = W, resultat = 0		
    	BTFSS	Zero				; =0?
    	 GOTO	DS_Attente1			; OUI =0 
     
    	CALL	DS_Reset1
    	BTFSC	DS_Error, 0			; =1?
    	 RETURN						; oui =1
    	MOVLW	0xCC				; Skip ROM
    	CALL	DS_Write1
    	MOVLW	0xBE				; Read Cratchpad
    	CALL	DS_Write1
    	CALL	DS_Read1
    	MOVWF	VTemp1
    	CALL	DS_Read1
    	MOVWF	VTempH
    	CALL	DS_Reset1
    ; Option -> Changement resolution 0.5° vers resolution 1° 
    	BCF		Carry
    	BTFSC	VTempH, 0
    	 BSF	Carry
    	RRF		VTemp1, f
    	RETURN
    ;*****************Reset/Presence*********************
    DS_Reset1
    	Pin_hz1
    	NOP
    	BSF		DS_Error, 0			; Flag Erreur
    	Pin_low1
    	MOVLW	0x32				; 50
    	call	Delay_10us			; attendre 500 µs
    	Pin_hz1						; Haute impédance
    	MOVLW	0x08
    	call	Delay_10us			; attendre 70 µs
    	BTFSC	DQ1					; DQ1 =1?
    	 RETURN						; oui = 1  Erreur
    	MOVLW	0x2A				; 43
    	CALL	Delay_10us			; attendre 430 µs
    	BCF		DS_Error, 0			; Reset OK  Flag Erreur remis a zero
    	RETURN
    ;****************Write**************
    DS_Write1
    	MOVWF	DS_Data				; Lecture de W
    	MOVLW	0x08
    	MOVWF	DS_cmpt
    WriteByte1
    	BTFSS	DS_Data, 0			; =0?
    	 CALL	Write1_0			; oui bit =0
    	BTFSC	DS_Data, 0			; =1?
    	 CALL	Write1_1			; oui bit=1
    	RRF		DS_Data, F			; bit suivant
    	DECFSZ	DS_cmpt, F			; =0?
    	GOTO	WriteByte1			; non
    	RETURN
    Write1_0
    	Pin_low1					; DQ1=0 ->Output
    	MOVLW	0x06
    	CALL	Delay_10us			; 80 µs
    	Pin_hz1						; DQ1=1 -> Input  10 us
    	RETURN
    Write1_1
    	Pin_low1					; DQ1=0 -> Output 4 us
    	nop
    	Pin_hz1						; DQ1=1	-> Input	
    	MOVLW	0x06
    	CALL	Delay_10us			; 80 µs
    	RETURN
    ;************Read***********************************
    DS_Read1
    	MOVLW	0x08
    	MOVWF	DS_cmpt
    	CLRF	DS_Data
    DS_boucle1
    	Pin_low1					; Output 
    	NOP							; 4+1 µs
    	NOP	
    	Pin_hz1						; Input
    	NOP							; 3+5 µs
    	NOP
    	NOP
    	NOP
    	NOP
    	NOP
    	RRF		DS_Data, F
    	BCF		DS_Data, 7
    	BTFSC	DQ1					; =1?
    	 BSF		DS_Data, 7		; oui =1
    	MOVLW	0x06
    	CALL	Delay_10us			; 60 us
    	DECFSZ	DS_cmpt, F			; =0?
    	GOTO	DS_boucle1			; non
    	MOVFW	DS_Data
    	RETURN
    @++

  12. #11
    boux

    Re : Capteur température DS1820

    Ok ! Par contre je ne connais pas du tout le langage que tu utilises, c'est de l'assembleur ? Pourrez-tu me corriger mon programme disponible dans les postes précédents ? C'est du C, pour une arduino uno.

    Merci

  13. #12
    boux

    Re : Capteur température DS1820

    doublon sorry
    Dernière modification par boux ; 30/04/2013 à 18h08.

  14. #13
    boux

    Re : Capteur température DS1820

    J'ai regardé sur la toile et en effet beaucoup parlent des défauts de ce capteur, d'ailleurs confirmés par le constructeur. La valeur mesurée peut prendre un écart de 3°C !!
    Mais bon je vais tout de même rester sur cette solution. Il faut juste adapter le code. Si quelqu'un a une idée je suis preneur

    Merci

  15. #14
    dome45

    Re : Capteur température DS1820

    Bonjour,

    Regarde ici
    http://www.ucontrolit.tv/184/

    Si tu crois que ton DS1820 a un défaut ( dans ton cas, une erreur d'environ 17°) achète un DS18B20 à 5 euros pour tester ton programme.

    @++

  16. #15
    boux

    Re : Capteur température DS1820

    J'ai pris un programme sur le site d'arduino et ça a l'air de fonctionner !

    Par contre le lien que tu me donnes est encore plus intéressant car plus précis. Il fallait juste rajouter l'ouverture de la liaison série et les deux bibliothèques OneWire.h et DallasTemperature.h
    Je vais l'adapter pour mon application mais en tout cas merci !!!

  17. #16
    boux

    Re : Capteur température DS1820

    Juste une question :

    J'ai mis VDD au +5V et GND à la masse comme dans la datasheet mais sur le lien que tu m'as donné VDD est à la masse, est-ce normal ?

  18. #17
    dome45

    Re : Capteur température DS1820

    Bonsoir,

    comme son nom l'indique : 1-wire

    datasheet du DS1820
    Page 1 - VDD -> OPTIONAL VDD
    Page 2 - Pin 3 -> Optional VDD pin. See “Parasite Power” section for details of connection


    http://www.maximintegrated.com/app-n...dex.mvp/id/203

    @++

Discussions similaires

  1. Petit Projet de Domotique (Capteur de Courant, Capteur de Température)
    Par invitef7bb6cd7 dans le forum Électronique
    Réponses: 3
    Dernier message: 20/05/2015, 10h46
  2. Capteur température
    Par invite40ad6cb3 dans le forum Électronique
    Réponses: 5
    Dernier message: 06/02/2013, 17h37
  3. Capteur de température DS1820+ Déporté
    Par foudefoot dans le forum Électronique
    Réponses: 5
    Dernier message: 27/12/2011, 17h37
  4. Capteurs de température DS1820
    Par adipie dans le forum Électronique
    Réponses: 10
    Dernier message: 14/05/2009, 20h54
  5. capteur de temperature
    Par seizetheday dans le forum Électronique
    Réponses: 8
    Dernier message: 16/02/2009, 16h28
Dans la rubrique Tech de Futura, découvrez nos comparatifs produits sur l'informatique et les technologies : imprimantes laser couleur, casques audio, chaises gamer...