Bienvenue aux nouveaux arrivants sur FantasPic !

- Pensez à lire les règles durant votre visite, il n'y en a pas beaucoup, mais encore faut-il les respecter .
- N’hésitez pas à faire des remarques et/ou suggestions sur le Forum, dans le but de l'améliorer et de rendre vos prochaines visites plus agréables.
- Vous pouvez regarder votre "panneau de l'utilisateur" afin de configurer vos préférences.
- Un passage par "l'utilisation du forum" est recommandé pour connaître les fonctionnalités du forum.

--- L’équipe FantasPic ---
Forum général en BASIC et PASCAL !

Modérateur : Gérard

chauffage solaire pour piscine
pspic
Amateur
Amateur
Messages : 148
Âge : 72
Enregistré en : septembre 2017
Localisation : 68

#41 Message par pspic » mer. 6 févr. 2019 18:04

Je suppose que le n°serie/adresse du capteur est gravé ou noté dans la doc livrée avec le DS18B20

Non, il faut la lire par programme.

dapi1313 a écrit :Peut-être qu'on peut brancher un DS par I/O, pour simplifier mon apprentissage
pourquoi la RA5 ?

Sans moi.

Un conseil: Utilise l'aide de MikroBasic (Help, Mikrobasic Libraries, Hardware Libraries, LCD Library et tu trouvera le schéma de branchement du LCD.

chauffage solaire pour piscine
paulfjujo
Avatar de l’utilisateur
Expert
Expert
Messages : 1311
Âge : 68
Enregistré en : juillet 2015
Localisation : 01800
Contact :

#42 Message par paulfjujo » mer. 6 févr. 2019 18:17

bonsoir,

dapi1313 a écrit :.. Je suppose que le n°serie/adresse du capteur est gravé ou noté dans la doc livrée avec le DS18B20


malheureusement ,NON

il faut le petit bout de programme qui va bien, pour decouvrir les adresses de chaque capteur
et les notes ensuite .. en dur dans le programme
mais c'est necessaire QUE si tu mets plusieurs capteur sur le meme bus OWS .

Peut-être qu'on peut brancher un DS par I/O, pour simplifier mon apprentissage


Avec 2 capteur et 2 entree, c'est peut etre jouable,
en declarant, via l'init OWS, le bus OWS sur l'une, puis sur l'autre ... mais je n'ai pas testé.

Le plus facile est de recupérer les adresses des 2 capteurs
et les mettres sur 1 seul bus ..
:sifflotte: un BUS, c'est étudié POUR, sinon on prend une 2CV.


pourquoi la RA5 ? ...


lié au fait d'utiliser une carte Easy Pro ?
sinon , avec un PIC tout neuf hors carte de développement, je ne vois pas pourquoi
cette exclusivité.
Aides toi, le ciel ou Fantastpic t'aideras

chauffage solaire pour piscine
pspic
Amateur
Amateur
Messages : 148
Âge : 72
Enregistré en : septembre 2017
Localisation : 68

#43 Message par pspic » mer. 6 févr. 2019 19:05

Pour éviter que la piscine reste froide encore longtemps !
Tu relèves les deux adresses des 2 capteurs.
Tu les insères dans les constantes serial_1 et 2.
Tu charges dans le PIC 18F2420 le code ci-dessous.
Tu testes le fonctionnement, si ça fonctionne, tu mets en chauffe ta piscine et tu prends ta tête entre tes deux mains pour chercher à comprendre.
Sinon tu commences par faire clignoter une Led.

Code : Tout sélectionner

'Démo 2 capteurs DS18B20 sur RA5 d'un PIC18F2420 avec osc 8MHz 31/01/2019
'Si T1 >= 24°C alors RC0 = 1
'Si T1 < 20 °C alors RC0 = 0
'Affichage T1 et T2 sur LCD
'Adresse des capteurs___________________________________________________________
const serial_1 as byte[8]= ($28, ...) 'Sonde DS18B20 1
const serial_2 as byte[8]= ($28, ...) 'Sonde DS18B20 2
'Déclaration LCD________________________________________________________________
dim LCD_RS as sbit at RB4_bit
    LCD_EN as sbit at RB5_bit
    LCD_D4 as sbit at RB0_bit
    LCD_D5 as sbit at RB1_bit
    LCD_D6 as sbit at RB2_bit
    LCD_D7 as sbit at RB3_bit
    LCD_RS_Direction as sbit at TRISB4_bit
    LCD_EN_Direction as sbit at TRISB5_bit
    LCD_D4_Direction as sbit at TRISB0_bit
    LCD_D5_Direction as sbit at TRISB1_bit
    LCD_D6_Direction as sbit at TRISB2_bit
    LCD_D7_Direction as sbit at TRISB3_bit
'Déclaration des variables
 Dim FinConv as bit
 b,i as byte
 Dt12F as float
 Tf1, Tf2 as float
 Tt1, Tt2 as string[20]
'Lecture capteur________________________________________________________________
sub function ReadTemp12() as float          '12 bits DS18B20
    Dim temp12 as byte[2]
    Dim Td12 as longint
         Ow_Write(PORTA, 5, $BE)            'Lecture du scratchpad 2 octets
         temp12[0] = Ow_Read(PORTA, 5)      'Read octet bas Temp L
         temp12[1] = Ow_Read(PORTA, 5)      'Read octet haut Temp H
          Td12 = temp12[1] * 256 + temp12[0]'Valeur température brute
          if (Td12 >>15) = 1 then           'Si bit poids fort = 1 alors négatif
           Td12=(Td12 xor $FFFF)            'Négatif
           Td12=Td12+1
           Dt12F=0-float(Td12)*0.0655       'Facteur pour 12 bits
          else
           Dt12F=float(Td12)*0.0655         'Positif
          end if
         Result = Dt12F                     'Température en flottant
end sub
'Formatage température en chaine________________________________________________
sub function ConvFloatStr(Dim ValF as float) as string[20]
  Dim FlSt as string[20]
   floattostr(ValF,FlSt)                       'Conversion temp. float en chaine
      if ValF > -10 then                       'Mise en place des espaces avants
       if ValF < 0 then strappendpre(" ",FlSt)
        else
        if ValF >= 0 then
         if ValF < 10 then
          strappendpre(" ",FlSt)
          strappendpre(" ",FlSt)
          else
          if ValF> 10 then strappendpre(" ",FlSt)
         end if
         end if
         end if
         end if
         end if
  Result = FlSt
end sub
'_______________________________________________________________________________
main:
ADCON1 = $0F         'RA0 -> RA5 en digital
PORTA = %0
PORTB = $0
PORTC = $0
TRISA = $0
TRISB = $0
TRISC = $0
'Init LCD_______________________________________________________________________
  Lcd_Init()
  Lcd_Cmd(_LCD_CURSOR_OFF)
  LCD_Cmd(_LCD_CLEAR)
  Lcd_out(1,2, "  DEMO DS18B20")
  Delay_ms(2000)
  LCD_Cmd(_LCD_CLEAR)
'Programme principal____________________________________________________________
 while true
'Conversion pour tous les capteurs______________________________________________
       Ow_Reset(porta, 5)        'Reset OW
       Ow_Write(porta, 5, $CC)   'Envoi CMD à tous les capteurs
       Ow_Write(porta, 5, $44)   'Commande de conversion à tous les capteurs
       Bc:                       'Attente fin conversion
       FinConv = Ow_Read(PortA, 5)
       if Finconv <> 1 then goto Bc end if
'Capteur 1______________________________________________________________________
       Ow_Reset(porta, 5)         'Reset OW
       Ow_Write(porta, 5, $55)    'Commande sélection capteur
       for i=0 to 7               'Sélection du capteur
            b = serial_1[i]
            Ow_Write(porta, 5, b) 'envoi des 8 octets d'adresse au capteur
            Delay_ms(10)          'Délai entre envois
       next i
        Tf1 = ReadTemp12          'Température en float
        Tt1 = ConvFloatStr(Tf1)   'Température en string
'Capteur 2______________________________________________________________________
       Ow_Reset(porta, 5)         'Reset OW
       Ow_Write(porta, 5, $55)    'Commande sélection capteur
       for i=0 to 7               'Sélection du capteur
            b = serial_2[i]
            Ow_Write(porta, 5, b) 'envoi des 8 octets d'adresse au capteur
            Delay_ms(10)          'Délai entre envois
       next i
        Tf2 = ReadTemp12          'Température en float
        Tt2 = ConvFloatStr(Tf2)   'Température en string
'Conditions de sortie___________________________________________________________
 if Tf1 >= 24.0 then setbit(PortC,0) end if   'Marche pompe
 If Tf1 < 20.0 then clearbit(PortC,0) end if  'Arrêt pompe
'Affichage sur LCD______________________________________________________________
 LCD_OUT(1,1,"Temp_1"+Tt1)
 LCD_OUT(1,12," °C  ")
 LCD_OUT(2,1,"Temp_2"+Tt2)
 LCD_OUT(2,12," °C  ")
'Tempo et boucle sans fin_______________________________________________________
  delay_ms(1000)
 wend
end.
Modifié en dernier par pspic le jeu. 7 févr. 2019 13:34, modifié 1 fois.

chauffage solaire pour piscine
Gérard
Avatar de l’utilisateur
Expert
Expert
Messages : 1102
Âge : 60
Enregistré en : septembre 2015
Localisation : Alsace - Haut-Rhin

#44 Message par Gérard » mer. 6 févr. 2019 21:31

Je reviens sur le branchement du LCD.
LCD-PIC.png
Vous n’avez pas les permissions nécessaires pour voir les fichiers joints à ce message.
Le 18 / 04 / 2019 je suis devenu papy de jumeaux, une fille et un garçon. Quel bonheur.

chauffage solaire pour piscine
paulfjujo
Avatar de l’utilisateur
Expert
Expert
Messages : 1311
Âge : 68
Enregistré en : juillet 2015
Localisation : 01800
Contact :

#45 Message par paulfjujo » jeu. 7 févr. 2019 10:25

bonjour à tous,


petit errata ici
adresse capteur #2

Code : Tout sélectionner

'Capteur 2______________________________________________________________________
       Ow_Reset(porta, 5)         '
Reset OW
       Ow_Write
(porta5, $55)    'Commande sélection capteur
       for i=0 to 7               '
Sélection du capteur
            b 
serial_2[i]
            
Ow_Write(porta5b'envoi des 8 octets d'adresse au capteur
            Delay_ms
(10)          'Délai entre envois
       next i
Aides toi, le ciel ou Fantastpic t'aideras

chauffage solaire pour piscine
pspic
Amateur
Amateur
Messages : 148
Âge : 72
Enregistré en : septembre 2017
Localisation : 68

#46 Message par pspic » jeu. 7 févr. 2019 13:31

petit errata ici
adresse capteur #2

Bien vu Paul, j'avais déjà signalé cette erreur de copier/coller à la fin du post #38.

chauffage solaire pour piscine
pspic
Amateur
Amateur
Messages : 148
Âge : 72
Enregistré en : septembre 2017
Localisation : 68

#47 Message par pspic » ven. 8 févr. 2019 18:55

Bonjour à tous,
Question à dapi 1313:
Peux tu répondres à la question du post #31: A quoi sert le 2 ème capteur ?


Retourner vers « Langage BASIC & PASCAL »

Qui est en ligne

Utilisateurs parcourant ce forum : Aucun utilisateur enregistré et 2 invités