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 sur l'Assembleur !

Modérateur : mazertoc

[Realisation] Domotique pour poulailler
venom
Avatar de l’utilisateur
Confirmé
Confirmé
Messages : 963
Âge : 38
Enregistré en : avril 2016
Localisation : Klyntar
Contact :

#51 Message par venom » jeu. 3 juin 2021 18:32

Temps-x a écrit :oops balancé par son coéquipier....


Oops... :oops: j'y ai même pas penser.
Alala je suis trop bon que veux tu... :-D

Ça ne se reproduira plus.

Pas bête une idée de petit projet a coder tiens... :roll:

Sinon F6FC0 les œufs ? Toujours rien ? Car là j'ai faim et une petite omelette oseille, Je ne dis pas non :lol:





@++
Mon site web
Mon discord : venom#4888

[Realisation] Domotique pour poulailler
Temps-x
Avatar de l’utilisateur
Expert
Expert
Messages : 2618
Enregistré en : juillet 2016
Localisation : Terre

#52 Message par Temps-x » jeu. 3 juin 2021 19:27

Re
venom a écrit :Source du message Sinon F6FC0 les œufs ?


Ben oui.... a quand !! les premier œufs, faut les mettre aux travailles tes cocotes,

:roll: Sinon tu prends ta CNC, et tu fabriques un œuf, après, tu vas leurs montrer... on leurs disant voilà je que je veux. 8-)

Quand j'avais mes poules j'ai acheté 2 faut œufs que j'ai mi dans leur nid, pour les stimulés, mais la plupart du temps je les retrouvé par terre.

Pas si bête que ça les poules :wink:

==> A+
:roll: Les requins, c'est comme le langage ASM, c'est le sommet de la chaîne alimentaire. :wink:

[Realisation] Domotique pour poulailler
Gérard
Avatar de l’utilisateur
Expert
Expert
Messages : 1648
Âge : 65
Enregistré en : septembre 2015
Localisation : Alsace - Haut-Rhin

#53 Message par Gérard » jeu. 3 juin 2021 21:27

Chez mon père, les jeunes poulettes voyaient les anciennes et elles pondant dans les nids prévus.
Même chez les poules, on apprend des anciens.
Le 18/04/19 je suis devenu papy de jumeaux, le 01/09/23 une petite cousine des jumeaux est née.

[Realisation] Domotique pour poulailler
F6FCO
Avatar de l’utilisateur
Expert
Expert
Messages : 1413
Âge : 70
Enregistré en : décembre 2017
Localisation : Furtif je suis.
Contact :

#54 Message par F6FCO » sam. 5 juin 2021 09:21

Hello tous,

Ben non, toujours pas d'œufs à l'horizon :sad: , soit elles sont encore trop jeunes, soit c'est des grosses fainéantes. Pour les oeufs bidons on a fait cuire deux œufs durs sur lesquels on a mis des croix et placé dans leurs niches. Peut-être qu'elles ont vu les croix et qu'elles ont compris le topo...

En tout cas elles sont super sympas, hier elles étaient toutes les deux sur leur barre prêtes à dormir et moi j'étais aussi accoudé à la barre à l'intérieur du petit poulailler à coté des 2 poulettes, en train de faire des mesures au multimètre sur le système, vous auriez vu le tableau :lol:.


En parlant de système, maintenant que c'est installé çà ne fonctionne pas vraiment comme je voudrais.
Comme vous avez pu le voir sur la vidéo çà fonctionne nickel sur table quand c'est moi qui fait le jour et la nuit, je suis un mec franc et avec moi c'est 'jour' ou c'est 'nuit'. Binaire le mec. On bricole pas avec l'entredeux: 1 ou 0 !
Je rappelle les niveaux en logique TTL:
Etat 0: entre 0 et 1,4v
Etat 1: entre 2,4v et 5v
entre 1,4 et 2,4v c'est une zone de transition qui n'est ni 0 ni 1 et ou il peut se passer n'importe quoi.

Sur le terrain, pas pareil la transition entre le jour et la nuit est longue, et le soir au coucher comme rien n'est franc la trappe monte et descend sans arrêt entre le mauvais jour et la nuit noire ou elle s'arrête enfin.
Bizarrement çà ne le fait pas le matin au lever du soleil.
Evidemment si je fais des essais en occultant ou pas les LDR avec la main çà fonctionne bien.

Je vois trois solutions pour remédier à cela:
1 - je bricole un truc avec des comparateurs entre les ldr et le PIC mais mais çà me fait un peu iéche de refaire un nouveau circuit imprimé, avec tous les essais que çà comporte.

2 - Le programme se déroule dans une boucle infinie, pour l'instant avec une tempo de 100ms (voir l'algorithme plus haut), je pourrai changer la tempo pour que çà boucle toutes les 15mn par exemple de façon à zapper au maximum cette période bâtarde. Bonjour la patience pour faire des mesures :roll:

3- Je m'arme de courage et j'étudie enfin la conversion analogique/numérique sur les PIC, chose que je n'ai pas encore expérimentée. Pas que çà ne m'intéresse pas bien au contraire mais j'ai tant d'autres trucs à faire en ce moment que j'ai du mal à trouver le temps. Il va falloir que je retrouve dans tous les cours de Bigonoff ou est-ce qu'il parle de çà, vérifier si le 16F88 permet de le faire, comment le paramétrer, enfin toute cette sorte de choses quoi.
Si vous avez des infos, je suis preneur.
Une porte nand prend 2 bits en entrée... la cochonne !!! :langue:

[Realisation] Domotique pour poulailler
Jérémy
Administrateur du site
Administrateur du site
Messages : 2725
Âge : 45
Enregistré en : juillet 2015
Localisation : Dans le sud
Contact :

#55 Message par Jérémy » sam. 5 juin 2021 11:40

Bonjour à tous,

Pourquoi ne pas faire un hysteresis en Soft !

Bon courage à toi !
C'est en faisant des erreurs, que l'on apprend le mieux !!!

[Realisation] Domotique pour poulailler
Temps-x
Avatar de l’utilisateur
Expert
Expert
Messages : 2618
Enregistré en : juillet 2016
Localisation : Terre

#56 Message par Temps-x » sam. 5 juin 2021 13:16

Bonjour Gérard(?), F6FCO, venom, Jérémy, et tout le forum,

F6FCO a écrit :Source du message Si vous avez des infos, je suis preneur.


Ne t'en bête pas avec les cours de Bigonoff, je vais te montrer la simplicité de faire une conversion Analogique pour ce Pic16F88, c'est d'une simplicité enfantin, de plus tu as fait le bon choix avec ce pic, car il est très simple. (mais quand tu auras le temps essai quand même de lire le cours de Bigonoff, c'est très intéressant)

Dans ce pic il y a 7 pattes que tu peux choisir pour une conversion analogique, mais une seule à la fois : RA0, RA1, RA2, RA3, RA4, RB6, RB7

Toutes les pattes ou il y a marqué ANx, c'est pour de la conversion analogique, mais il faut les configurer
PIC16F88.jpg


1) Pour le faire on sélectionne la patte on se servant du registre ANSEL

PIC16F88 Canal adc.jpg


2) Configurer la patte que tu as choisi en entrée avec TRISA ou TRISB

3) Déterminé la tension de référence avec le registre ADCON1, généralement on se sert de la tension d'alimentation

4) Dans ce même registre on peut choisir la façon de récupérer le résultat (je t'expliquerais un peu plus bas)

Code : Tout sélectionner



      movlw B
'00000000'                   ; b7 = détermine si le résultat de la conversion sera justifié à droite = 1 ou à gauche = 0  
      movwf ADCON1                        
; b5 = VCFG1 sélection des tension de référence, Vref- = Vss 
                                          
; b4 = VCFG0 sélection des tension de référence, Vref+ = Vdd  
                                          
; b3 = N.C  
                                          
; b2 = N.C  
                                          
; b1 = N.C
                                          
; b0 = N.C  


Après il faut encore utiliser un registre, qui va choisir le canal, et lancé la conversion, c'est le registre ADCON0

Important : il faut aussi désactiver les résistances de tirage si tu te sert du PORB mais pas besoin si tu te sert du PORTA

Exemple pour une utilisation du convertisseur analogique sur la patte RB7

Code : Tout sélectionner



;**********************************************************************************************
    Errorlevel-302                        ; Supprime le message "Ensure that bank bits are correct" 

    radix dec                             
; par defaut en mode décimal

    LIST      P
=PIC16F88                  ; Définition de processeur
    
#include <p16F88.inc>                 ; fichier include                   

    __CONFIG _CONFIG1, _CP_OFF & _CCP1_RB0 & _DEBUG_OFF & _WRT_PROTECT_OFF & _CPD_OFF & _LVP_OFF & _BODEN_OFF & _MCLR_OFF & _PWRTE_ON  & _WDT_OFF & _INTRC_IO
    __CONFIG _CONFIG2
, _IESO_OFF & _FCMEN_OFF

;****************************** déclaration des variables *************************************


 CBLOCK H'20' 
      bank0 
:1                            ; zone de la ram en bank 0 : H'20' à H'6F' soit 80 octets              
 ENDC

 CBLOCK H
'A0' 
      bank1 
:1                            ; zone de la ram en bank 1 : H'A0' à H'EF' soit 80 octets  
 ENDC
        
 CBLOCK H
'110'                          
      bank2 
:1                            ; zone de la ram en bank 2 : H'110' à H'16F' soit 96 octets  
 ENDC

 CBLOCK H
'190'                          
      bank3 
:1                            ; zone de la ram en bank 3 : H'190' à H'1EF' soit 96 octets  
 ENDC

 CBLOCK H
'70'                             ; zone commune en bank 0, bank 1, bank 2, bank 3 : H'70' à H'7F' soit 16 octets  
      res8   
:1                            
      res16  
:1                            
 ENDC        

;**************************** adresse de depart après reset **********************************

    ORG H'00'
      goto debut      

;******************************** lieu des interruptions **************************************

    ORG  H'04'           
      retfie    

;************************** configuration du registre OSCCON en bank 1 *************************
debut

      BANKSEL OSCCON                      
; passer en bank 1 

;**********************************************************************************************  

                                          
; fréquence pour l'oscillateur interne 

                                          ; 01110000 oscillateur 8 MHz
                                          ; 01100000 oscillateur 4 MHz            <-- mon choix
                                          ; 01010000 oscillateur 2 MHz
                                          ; 01000000 oscillateur 1 MHz
                                          ; 00110000 oscillateur 500 kHz
                                          ; 00100000 oscillateur 250 kHz
                                          ; 00010000 oscillateur 125 kHz
                                          ; 00000000 oscillateur 31.25 kHz


      movlw B'
01100000'                   ; choix sur 4 Mhz  
      movwf OSCCON                        ;

;************************** configuration du registre ANSEL en bank 1 **************************
    
      movlw B'
01000000'                   ; en mode numérique B'01000000' 13(RB7)
      movwf ANSEL                         ; en mode E/S 17(RA0),18(RA1),1(RA2),2(RA3),3(RA4),12(RB6) 

;************************ configuration du registre OPTION_REG en bank 1 *********************** 

      movlw B'
10000000'                   ; 
      movwf OPTION_REG                    ; résistances hors service                                            
                                                     
;************************* configuration du registre CMCON en bank 1 ***************************  

      movlw B'
00000111'
      movwf CMCON                         ; éteindres les comparateurs                   

;******************* configuration des registres TRISA & TRISB en bank 1 ***********************

      movlw B'
00000000'                   ; 
      movwf TRISA                         ; configure les pattes dans TRISA
                                          ; 17(RA0),18(RA1),1(RA2),2(RA3),3(RA4),4(RA5),15(RA6),16(RA7)                         

      movlw B'
10000000'                   ; 
      movwf TRISB                         ; configure les pattes dans TRISB
                                          ; 6(RB0),7(RB1),8(RB2),9(RB3),10(RB4),11(RB5),12(RB6),13(RB7)                                                                   
                                                                            
;************************ configuration du registre ADCON1 en bank 1 ***************************

      movlw B'
00000000'                   ; b7 = détermine si le résultat de la conversion sera justifié à droite = 1 ou à gauche = 0  
      movwf ADCON1                        ; b5 = VCFG1 selection des tension de reférence, Vref- = Vss 
                                          ; b4 = VCFG0 selection des tension de reférence, Vref+ = Vdd  
                                          ; b3 = N.C  
                                          ; b2 = N.C  
                                          ; b1 = N.C
                                          ; b0 = N.C  

;***********************************************************************************************

      BANKSEL ADCON0                      ; passe en bank 0

;************************ configuration du registre ADCON0 en bank 0 ***************************

      movlw B'
11110000'                   ; b7 = ADCS1 choisir la fréquence de fonctionnement du 
      movwf ADCON0                        ; b6 = ADCS0 convertisseur en fonction de la fréquence d'
horloge du PIC  
                                          
; b5 = CHS2 sélection du canal RB7/AN6 
                                          
; b4 = CHS1 sélection du canal RB7/AN6  
                                          
; b3 = CHS0 sélection du canal RB7/AN6
                                          
; b2 = GO/DONE indique la fin de la conversion analogique, et permet de lancer la conversion
                                          
; b1 = N.C
                                          
; b0 = ADON mise en service du convertiseur 0 = arrêt : 1 = marche  

;********************* configuration du registre INTCON en bank 0,1,2,************************

      clrf INTCON                         ; interruption hors service 

      clrf PORTA                          
; PORTA à 0       
      clrf PORTB                          
; PORTB à 0

;***********************************************************************************************

     call numerise

    
; le résultat se trouve dans res8(ADRESL) et res16(ADRESH), mais on utilisera juste res16 pour la simplicité, et on négligera res8  


;*********************************************************************************************** 
terminer
      nop
      goto terminer

;********************************* "numérisation en cours" ************************************ 
numerise

      bsf ADCON0
,ADON                     ; on lance l’acquisition (charge du condensateur)

      nop                                 ; pause, pour la charge du condensateur
      nop
      nop
      nop
      nop
      nop       

      bsf ADCON0
,GO                       ; lancer la conversion A/D

      btfsc ADCON0
,GO                     ; si le bit GO est à 1 on va à la ligne 1        
      goto 
$-D'1'                         ; convertion n'est pas terminer     

      bcf ADCON0,ADON                     ; fin de conversion, éteindre convertisseur

      BANKSEL ADRESL                      ; passer en bank 1

      movfw ADRESL                        ;
      movwf res8                          ; 

      BANKSEL ADRESH                      ; passer en bank 0
     
      movfw ADRESH                        
      movwf res16                         ;

      return    

;*********************************************************************************************** 

      End 


Ce que je vais essayer de t'expliquer est assez dure pour moi, car je suis pas un prodige de la grammaire Française :cry:

Le Pic16F88 à un convertisseur Adc de 10 bits ce qui fait que tu n'est pas obliger de récupérer la valeur low quand tu fais une justification à gauche.

1, 2 , 4, 8, 16, 32, 64, 128, 256, 512 , On négligera le 1, et 2, il va donc nous restez 8 bits 4, 8, 16, 32, 64, 128, 256, 512 or si on :roll: réfléchi un peu, on s’aperçoit qu'on peut écrire 1, 2, 4, 8, 16, 32, 64, 128 ça ne changera absolument rien au résultat, ce qui te donne une valeur de 255 décimal pour 5 volts pour une justification à gauche

Pour mieux comprendre

Can ADRESL &amp; ADRESH.gif


la façon de lire les bits

EC4_TP4.jpg


Si tu comprends pas mes explications n'hésite pas à reposer les questions, car mes explications ne son pas parfaite :wink:

==> A+
Vous n’avez pas les permissions nécessaires pour voir les fichiers joints à ce message.
Modifié en dernier par Temps-x le dim. 6 juin 2021 00:26, modifié 16 fois.
:roll: Les requins, c'est comme le langage ASM, c'est le sommet de la chaîne alimentaire. :wink:

[Realisation] Domotique pour poulailler
F6FCO
Avatar de l’utilisateur
Expert
Expert
Messages : 1413
Âge : 70
Enregistré en : décembre 2017
Localisation : Furtif je suis.
Contact :

#57 Message par F6FCO » sam. 5 juin 2021 14:38

Temps-x a écrit :Ce que je vais essayer de t'expliquer est assez dure pour moi, car je suis pas un prodige de la grammaire Française :cry:



Tkt, on s'en fiche éperdument, d'ailleurs ici on ne parle pas le Français, on parle le Numérique :-D

Merci pour ton explication, je l'ai lue mais c'est tout neuf et il va falloir le temps que je digère en faisant quelques petites expériences avec un potar accompagné de mesures pour bien comprendre le truc.
Ma seule expérience de la chose c'est sous arduino ou c'était extrêmement facile à mettre en œuvre, tu as 5 broches dédiées, rien à paramétrer (c'est déjà fait) et simplement à envoyer une tension analogique 0 à 5v sur la broche choisie et tu récupères une valeur numérique comprise entre 0 et 1023 (0 à 5v).
Je pense que çà doit être sensiblement la même chose sur le PIC. Il suffit de faire une règle de 3 pour savoir à combien correspond telle valeur de tension analogique.
Une chose de sure, je vais être obligé de refaire mon PCB parce que mes LDR sont sur B0 et B1. Je n'en mettrai cette fois qu'une seule et sans la RV qui ne servira plus à rien.
Une porte nand prend 2 bits en entrée... la cochonne !!! :langue:

[Realisation] Domotique pour poulailler
Temps-x
Avatar de l’utilisateur
Expert
Expert
Messages : 2618
Enregistré en : juillet 2016
Localisation : Terre

#58 Message par Temps-x » sam. 5 juin 2021 21:36

Re

F6FCO a écrit :Source du message Une chose de sure, je vais être obligé de refaire mon PCB parce que mes LDR sont sur B0 et B1. Je n'en mettrai cette fois qu'une seule et sans la RV qui ne servira plus à rien.


Profite pour faire un affichage sur LCD, :sifflotte: en mode 4 bits..... ça te servira à régler ton convertisseur Adc

Pour l'écran LCD 4 bit je peux te faire voir un exemple si cela t'intéresse, c'est très simple.

F6FCO a écrit :Source du message Il suffit de faire une règle de 3 pour savoir à combien correspond telle valeur de tension analogique.

Tout est simple avec un langage de haut niveau, mais pas en ASM, pour avoir un résultat pour affichage,

il faut faire une conversion binaire vers décimal, et chaque chiffre doit être mi dans une variable.

Pour éviter de refaire ton PCB il faut changer de Pic, voici un pic carrément identique au Pic16F88 c'est le Pic16F1847

PIC16F1847.jpg


Il possède des convertisseur analogique sur toutes les pattes, et pour le mettre en oeuvre je peux te donner un coup de main.

J'ai choppé cette saloperie de COVID-19.... pouah...

==> A+
Vous n’avez pas les permissions nécessaires pour voir les fichiers joints à ce message.
Modifié en dernier par Temps-x le dim. 6 juin 2021 16:29, modifié 3 fois.
:roll: Les requins, c'est comme le langage ASM, c'est le sommet de la chaîne alimentaire. :wink:

[Realisation] Domotique pour poulailler
venom
Avatar de l’utilisateur
Confirmé
Confirmé
Messages : 963
Âge : 38
Enregistré en : avril 2016
Localisation : Klyntar
Contact :

#59 Message par venom » sam. 5 juin 2021 23:03

Temps-x a écrit :J'ai choppé cette saloperie de COVID-19.... pouah...


Aïe... Je l'ai eu il y a 1 mois. Perso j'ai casi rien eu. J'espère que ça sera ton cas. Bon rétablissement.







@++
Mon site web
Mon discord : venom#4888

[Realisation] Domotique pour poulailler
Jérémy
Administrateur du site
Administrateur du site
Messages : 2725
Âge : 45
Enregistré en : juillet 2015
Localisation : Dans le sud
Contact :

#60 Message par Jérémy » sam. 5 juin 2021 23:07

Temps-x a écrit :Source du message
J'ai choppé cette saloperie de COVID-19.... pouah...

Prends bien soin de toi !
C'est en faisant des erreurs, que l'on apprend le mieux !!!


Retourner vers « Langage ASM »

Qui est en ligne

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