Un truc aussi pour le LCD, il faut limiter la quantité d'info transmise aux seules variables, sans répéter le texte fixe.
MM
-----
Un truc aussi pour le LCD, il faut limiter la quantité d'info transmise aux seules variables, sans répéter le texte fixe.
MM
Si il y a des erreurs ci dessus, c'est que je n'ai pas eu le temps de les corriger...
Pour illustrer un peu sur la lecture du 18B20
On ne lit qu'une seule fois par seconde et time va mieux.
MMCode:if time<>memotime then readtemp DS, valtp memotime=time endif
Si il y a des erreurs ci dessus, c'est que je n'ai pas eu le temps de les corriger...
Merci de ces conseils j'ai testé c'est un peu mieux effectivement mais le temps reste trop imprécis sur un programme complet de 40min l'erreur devient trop grande.
J'ai connecté le deuxième picaxe dans lequel j'ai mis le programme suivant:
Ainsi que le code suivant dans le picaxe qui va gérer la température:Code:#picaxe 20m2 dirsC=%10000000 ;sortie=1 entr?e=0 dirsB=%11111111 symbol timeOld=b3 high B.6 Main: ;if pinC.1 = 1 then ; time=0 ;endif if time!=timeOld then serout C.0, n2400, (time) timeOld=time endif goto Main
Code:#picaxe 20m2 dirsC=%00000000 ;sortie=1 entr?e=0 dirsB=%10111111 symbol timeIN=b3 symbol razTime=pinB.2 symbol bp1=pinC.7 pause 500 low C.0 pause 500 razTime=0 serout c.0, n2400, ( 254, 1 ) Main: if bp1=0 then razTime=1 pause 200 razTime=0 endif serin B.1, n2400, TimeIN bintoascii TimeIN, b0,b1,b2 serout c.0, n2400, ( 254, $80 ) serout c.0, n2400, ( b0, b1, b2, "s" ) goto Main debug
L'envoie de la valeur de time ce fait bien puisque le temps en seconde s'affiche sur le LCD.
Je veux maintenant pouvoir remettre la variable time à 0 depuis le picaxe qui gère la température et l'affichage.
Seul problème, quand je rajoute le if PinC.1 etc... (qui est en commentaire sur cette exemple) le LCD affiche 000 puis 001 et plus rien (que j'appuie sur le bouton ou non).
EDIT: j'avais juste pas relié les 2 broches ....
Par contre il faut que je reste appuyer un certain temps pour que la raz soir prise en compte est-ce normale ?
J'ai pas tout compris dans ce code (pourquoi les pauses ? A quoi sert le test sur time ?)
Avant d'envisager autre chose, essaie ce code pour tester l'erreur sur time:
En réel, la simu avec time n'est pas réaliste (ou alors avec PE5)
Code:; essai DS18B20 et time ; entrée DS18B20 sur B.0, pullup par soft ; LCD série sur B.0 #picaxe 20M2 symbol tempe =b1 symbol memotime =w13 pullup %1 ;pullup sur B.0 pause 300 ;pour LCD serout B.0,N2400,(254,128,"temperature",254,192,"temps s") Do if time<>memotime then readtemp C.0, tempe serout B.0,N2400,(254,140,#tempe," ",254,199,#time," ") memotime=time endif loop
Dernière modification par mag1 ; 30/06/2016 à 23h09.
Si il y a des erreurs ci dessus, c'est que je n'ai pas eu le temps de les corriger...
Bon, le même avec un reset de time par C.7
Par de R de pullup extérieure
Faire un copier coller dans l'éditeur
MMCode:; essai DS18B20 et time ; entrée DS18B20 sur B.0, pullup par soft ; RAZ time par C.7=0 , pullup par soft ; LCD série sur B.0 #picaxe 20M2 symbol RAZ=pinC.7 symbol tempe =b1 symbol memotime =w13 pullup %1000000000000001 ;pullup sur B.0 et C.7 pause 300 ;pour init LCD serout B.0,N2400,(254,1) serout B.0,N2400,(254,128,"temperature",254,192,"temps") Do pause 1 ;pour simu avec PE6, supprimer le; au début if time<>memotime then readtemp C.0, tempe serout B.0,N2400,(254,140,#tempe," ",254,199,#time," s") memotime=time endif if RAZ=0 then ;RAZ time par C.7=0 time=0 endif loop
Dernière modification par mag1 ; 01/07/2016 à 00h29.
Si il y a des erreurs ci dessus, c'est que je n'ai pas eu le temps de les corriger...
Juste pour dire que j'ai pas remis le ; devant pause 1,
"pause 1" est utile pour que la simu PE6 fonctionne avec time (sinon, les secondes durent des heures, bizarre...)
MM
Si il y a des erreurs ci dessus, c'est que je n'ai pas eu le temps de les corriger...
Bon,après quelques essais, time ne donne plus la seconde en présence de readtemp et serout, mais la différence est linéaire et time est utilisable en mesurant le rapport entre sa valeur et le temps réel, suffit de multiplier par un coefficient. Si on affiche le temps en minutes, on ne verra pas beaucoup de différence.
Une solution intéressante est la RTC, il faut alors modifier le schéma pour libérer les broches sda et scl de la liaison i2c. Solution à 1 euro, moins chère, plus fiable, plus pratique (4picots pour enficher la carte) et plus élégante que l'utilisation d'un second 20M2.
Ce n'est que mon avis...
MM
Si il y a des erreurs ci dessus, c'est que je n'ai pas eu le temps de les corriger...
Avec ce coefficient correcteur, l'erreur est environ de -1s par tranche de 10mn:
Le temps de ref n'est plus time, mais afftime
MMCode:; essai DS18B20 et time ; entrée DS18B20 sur B.0, pullup par soft ; RAZ time par C.7=0 , pullup par soft ; LCD série sur B.0 #picaxe 20M2 #no_data symbol baud =N2400_4 symbol RAZ =pinC.7 symbol tempe =b1 symbol modulo =b2 symbol memotime =w13 symbol afftime =w12 pullup %1000000100000000 ;pullup sur C.0 et C.7 pause 500 ;pour le LCD serout B.0,baud,(254,1) serout B.0,baud,(254,128,"temperature",254,192,"temps") Do if time<>memotime then readtemp C.0, tempe memotime=time afftime=time*13/8/59 serout B.0,baud,(254,140,#tempe," ",254,199,#afftime," mn ") endif if RAZ=0 then ;RAZ time par C.7=0 time=0 endif loop
Si il y a des erreurs ci dessus, c'est que je n'ai pas eu le temps de les corriger...
Bonjour,
Je ne sais pas où en est max3852.
Si il repasse, quelques précisions sur ce projet
A quoi servent exactement les (gros) poussoirs bp1 à bp4 ? Sont ils associés à un couple T°, temps?
A quoi servent exactement les petits poussoirs bp5 à dp7 ?
A quoi sert exactement le potar ?
Faut il mémoriser en EEPROM et par une procédure de réglage des couples T°,temps aux gros poussoirs?
Qu'elle est la précision de régulation requise ?
Moyennant un bidouillage, on peut se passer d'une RTC, mais c'est LA méthode facile et efficace d'avoir une bonne base de temps pour 1 euro.
Le recours à un second µC pour cette fonction est à éviter (sinon à proscrire)
La méthode de régulation de température est (semble t il) l'ouverture /fermeture d'une vanne. On ne sait pas quelle sera la vitesse de commutation, mais dans tous les cas, le relais statique est préférable au relais mécanique.
Le schéma qui me semble le plus adapté:
Avec ces précisions, c'est pas très compliqué
MM
Dernière modification par mag1 ; 03/07/2016 à 19h52.
Si il y a des erreurs ci dessus, c'est que je n'ai pas eu le temps de les corriger...