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 ---
- 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 ---
Modérateur : mazertoc
[Realisation] Domotique pour poulailler
Temps-x a écrit :oops balancé par son coéquipier....
Oops... j'y ai même pas penser.
Alala je suis trop bon que veux tu...
Ça ne se reproduira plus.
Pas bête une idée de petit projet a coder tiens...
Sinon F6FC0 les œufs ? Toujours rien ? Car là j'ai faim et une petite omelette oseille, Je ne dis pas non
@++
[Realisation] Domotique pour poulailler
Re
Ben oui.... a quand !! les premier œufs, faut les mettre aux travailles tes cocotes,
Sinon tu prends ta CNC, et tu fabriques un œuf, après, tu vas leurs montrer... on leurs disant voilà je que je veux.
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
A+
venom a écrit :Source du message Sinon F6FC0 les œufs ?
Ben oui.... a quand !! les premier œufs, faut les mettre aux travailles tes cocotes,
Sinon tu prends ta CNC, et tu fabriques un œuf, après, tu vas leurs montrer... on leurs disant voilà je que je veux.
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
A+
[Realisation] Domotique pour poulailler
[Realisation] Domotique pour poulailler
- F6FCO
Expert- Messages : 1413
- Âge : 70
- Enregistré en : décembre 2017
- Localisation : Furtif je suis.
- Contact :
Hello tous,
Ben non, toujours pas d'œufs à l'horizon , 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 .
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
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.
Ben non, toujours pas d'œufs à l'horizon , 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 .
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
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.
[Realisation] Domotique pour poulailler
[Realisation] Domotique pour poulailler
Bonjour Gérard(?), F6FCO, venom, Jérémy, et tout le forum,
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
1) Pour le faire on sélectionne la patte on se servant du registre ANSEL
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)
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
Ce que je vais essayer de t'expliquer est assez dure pour moi, car je suis pas un prodige de la grammaire Française
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 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
la façon de lire les bits
Si tu comprends pas mes explications n'hésite pas à reposer les questions, car mes explications ne son pas parfaite
A+
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
1) Pour le faire on sélectionne la patte on se servant du registre ANSEL
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,3 ************************
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
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 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
la façon de lire les bits
Si tu comprends pas mes explications n'hésite pas à reposer les questions, car mes explications ne son pas parfaite
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.
[Realisation] Domotique pour poulailler
- F6FCO
Expert- Messages : 1413
- Âge : 70
- Enregistré en : décembre 2017
- Localisation : Furtif je suis.
- Contact :
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
Tkt, on s'en fiche éperdument, d'ailleurs ici on ne parle pas le Français, on parle le Numérique
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.
[Realisation] Domotique pour poulailler
Re
Profite pour faire un affichage sur LCD, 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.
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
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+
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, 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
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.
[Realisation] Domotique pour poulailler
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.
@++
[Realisation] Domotique pour poulailler
-
Jérémy
Administrateur du site- Messages : 2725
- Âge : 45
- Enregistré en : juillet 2015
- Localisation : Dans le sud
- Contact :
Temps-x a écrit :Source du message
J'ai choppé cette saloperie de COVID-19.... pouah...
Prends bien soin de toi !
Retourner vers « Langage ASM »
Qui est en ligne
Utilisateurs parcourant ce forum : Aucun utilisateur enregistré et 41 invités