Go Down

Topic: domotique arduino : 8 relais + 3 DS18B20 + email + téléinfo + NTP + delesteur (Read 18 times) previous topic - next topic

zoroastre

Yep!

Quote
ou peut-il le faire tout seul même si déjà planté ?


Il faut utilisé un watchdog. C'est un timer qui attend un signal à période régulière. Si le signal n'arrive pas sous le delai choisi, l'arduino reboot automatiquement.

Quote
Threshold value   Constant name   Supported on
15 ms   WDTO_15MS   ATMega 8, 168, 328, 1280, 2560
30 ms   WDTO_30MS   ATMega 8, 168, 328, 1280, 2560
60 ms   WDTO_60MS   ATMega 8, 168, 328, 1280, 2560
120 ms   WDTO_120MS   ATMega 8, 168, 328, 1280, 2560
250 ms   WDTO_250MS   ATMega 8, 168, 328, 1280, 2560
500 ms   WDTO_500MS   ATMega 8, 168, 328, 1280, 2560
1 s   WDTO_1S   ATMega 8, 168, 328, 1280, 2560
2 s   WDTO_2S   ATMega 8, 168, 328, 1280, 2560
4 s   WDTO_4S   ATMega 168, 328, 1280, 2560
8 s   WDTO_8S   ATMega 168, 328, 1280, 2560


Code: [Select]
#include <avr/wdt.h>

int t = 0;

void setup() {
 //wdt_enable(WDTO_2S);
 
 Serial.begin(9600);
 setupWatchdog();
 Serial.println("Setup complete");
 
}

void loop() {
 
 Serial.println(t);
 t = t + 200;
 delay(t);
 
 wdt_reset();
 
}

void setupWatchdog()
{
cli();
wdt_reset();
MCUSR &= ~(1<<WDRF);
WDTCSR = (1<<WDCE) | (1<<WDE);
WDTCSR = (1<<WDIE) | (0<<WDP3) | (1<<WDP2) | (1<<WDP1) | (0<<WDP0);
sei();
}


EDIT1 : Le watchdog est réglé sur 1 seconde, je crois, et comme je ne retrouve plus mes billes...
EDIT2 : Le code est fonctionnel, mais il faut savoir que le bootloader par defaut ne gère pas le watchdog, il faut donc le changer. En testant le code, j'ai une rallonge de cycle d'environ 20/30 ms...(visible avec t = t + 20;)


@+

Zoroastre.
Veuillez indiquer [RESOLU] dans l'entête du titre en éditant votre premier message ;)

zoroastre

Yep!

Un watchdog est une bascule ou un interrupteur qui recoit à intervalle régulière un signal de vie. Si le signal n'arrive pas, on reset le programme.

En cas de gros plantage hardware et si effectivement tu veux te prémunir plutôt de ces cas là, documentes toi sur le NE555 (ou 555 timer). C'est un timer hardware qui peut agir directement sur le reset de l'arduino via un petit montage avec une diode, capa et résistances.. Tu envoies régulièrement un signal digital pour remettre à zero le timer du 555.

Le timer est à calculer par contre, la valeur des resistances et de la capa sont la clé ...voir le second lien ;)

http://www.practicalarduino.com/news/id/471
http://www.playwitharduino.com/?p=291

@+

Zoroastre.
Veuillez indiquer [RESOLU] dans l'entête du titre en éditant votre premier message ;)

zoroastre

Yep!

En l'etat de mes connaissances sur le sujet et si mes informations sont toujours à jour, je dirais :

Le watchdog intégré à l'arduino à l'avantage de pouvoir être positionner à plusieurs endroits du code (routine critique par exemple). Cette methode semble avoir été adopté par plusieurs utilisateurs.
Cependant, elle réclame une modification du bootloader, celui par defaut génère des problèmes de timing, elle n'a pas à mon gout de retours suffisant des utilisateurs (fonctionnement à long terme).Elle n'est pas recommandé par avr, elle modifie les fuses de l'arduino (modification interne des paramètres de fonctionnement du microcontrolleur).

Le watchdod hardware, quant à lui, a pour avantage d'être externalisé. C'est un reset complet de la carte qui est effectué. Cependant, les résistances et le condensateur doivent être calculé selon deux paramètres bien distinct. Tout d'abord, le temps entre deux contrôles du bon fonctionnement de la carte. Ensuite, les temps de charge et décharge du condensateur. Ce dernier calcul imposera un delais au niveau du programme.

Il peut découler de ces deux aspects, un troisième qui est celui des composants s'articulant autour de l'arduino. Car certains composants apprecieront plus un reset hardware qu'un reset soft (et inversement).

A ce jour, j'ai testé le watchdog interne sans modification du bootloader. Le truc c'est que mon programme est fonctionnel et a peu de chance de planter...
Il faudrait quasiment génerer un programme qui plante à coup sur dans un laps de temps raisonnable (Avis au amateur  :smiley-eek-blue: ) afin de pouvoir réellement testé le chien de garde.

A choisir, la methode du 555 est certainement plus sûr, peu couteuse et facilement modifiable/ajustable.

Pour finir, je dirais qu'à mon humble avis, chaque projet devrait posséder un watchdog et que l'une ou l'autre méthode devrait faire le sujet d'une expertise plus poussée tant cette fonctionnalité est interessante et utile.

@+

Zoroastre.
Veuillez indiquer [RESOLU] dans l'entête du titre en éditant votre premier message ;)

bluemax2001

 La page web a un peu grossi donc elle est en cours d'amaigrissement pour s'afficher en pleine page et sur un smartphone.

 Y a t il un courageux équipé d'un 2560 + W5100 (encore mieux LCD HD44780 4*20 + 8 relais + téléinfo + ds18b20) qui serait d'accord pour tester ce sketch ? Juste pour me donner son avis et des conseils  :)

PS : même si une (ou aucune) option présente, le fait de me donner un avis sur la présentation peut suffire.



A voir : DS18B20 bloqué sur 85°C - test à poursuivre du v21 - présentation
           Précision : Là il n'est pas branché sur la téléinfo






Artouste


A voir : DS18B20 bloqué sur 85°C

85° avec des 18B20 c'est typique d'un probleme de ligne 1wire, les 18B20 sont alimentés en parasite ?
quelle distance ?

zoroastre

Yep!

Si si on suit. Et comme tu te débrouilles trés bien tout seul...  XD

Reste plus qu'à mettre tout çà dans une jolie boite et préparer un full Tuto.

@+

Zoroastre.
Veuillez indiquer [RESOLU] dans l'entête du titre en éditant votre premier message ;)

bluemax2001

Je ne suis pas seul, sinon je serais au même point que sur le précédent forum =(

Pour la boite, je vais faire dans une boite de dérivation IP55 même si je n'ai pas encore l'idée définitive pour placer le LCD.

J'utilse (prix à venir) :
- Arduino Mega 2560
- W5100...........................15,09
- Téléinfo : - 6N138+74LS132+ divers composants
               - SFH620-a + 2 résistances (en test) ******1€
- LCD 4*20 HD44780..............6€
- 2 DS18B20.......................2€
- Relais complet******************9,06€ (ebay)
- DS1307.......................... 1,50€ les 5 chips (ou 6,76 complet avec pile)
- Télécommande..................6,42€
- proto shield mega + pins femelles longues   .......acheté avec mega 2560 + 2€ les pins
- prises RJ11.......................5€ les 10
- alim. externe 5v mini 5A.......11€
- fil stap..........................3,40€ les 16

Fpin (sauf composant elec. dif.)


albertrand

Bonjour, Bluemax2001.

Quote
J'ai découvert aussi des connecteurs femelles avec des pins longues pour réaliser mon shield sans devoir souder les mâles d'un côté et les femelles de l'autre


Peut-tu me donnée l'adresse de ce connecteurs car j'ai du mal a en trouver.
En plus très intéressent  sujet.
Merci d'avance,
albertrand.
« Ungibus et Rostro » (De bec et d'ongles)


Artouste


Je cherche en urgence cette librairie :
avr/pgmspace.h

où puis je la download ?

merci



normalement elle est installée avec le telechargement
chez moi en 022 elle est là
C:\arduino\hardware\tools\avr\avr\include\avr
et en 1.0 là
C:\arduino-1.0\hardware\tools\avr\avr\include\avr

bluemax2001



Mon multi shield

Téléinfo en haut à droite + RJ11
1-wire à gauche + 2xRJ11 + 1 DS18B20 soudé
R10k pour LCD
et au fond le DS1307

Artouste


Nous sommes le dimanche 24/11/2058 à 17h18

Et non, c'est mon DS1307 qui doit déconner. Me faut donc revoir ce point (hard ou soft ?) et régler la gestion du temps pour mes commandes différées.



bonjour
tout n'est pas perdu , là le 24 c'est bon !  :smiley-mr-green:

j'ai un ds1307 qui tourne autonome dans un tiroir depuis ~1 mois , je regarderais semaine prochaine ce qu'il rend

legeantvert

Bonjour à vous,

je suis en cours de développement d'un projet à base d'arduino reprenant une bonne partie des éléments que vous utilisez et à base de STANTOR avec IDE 1.0 (Arduino Mega + Shield Ethernet + écran LCD + 3*DS18B20 + DHT11 + RTC + 8 Relais)

Avez vous ouvert un espace de partage de votre code? Ce dernier pourrai vraiment m'intéresser, j'ai actuellement des problèmes de gestion du serveur éthernet qui plante aléatoirement si je laisse tourner la partie rafraîchissement des capteurs et affichage sur LCD.

Serait il possible d'avoir votre projet afin de m'en inspirer?

Merci d'avance.

Artouste



Nous sommes le dimanche 24/11/2058 à 17h18

Et non, c'est mon DS1307 qui doit déconner. Me faut donc revoir ce point (hard ou soft ?) et régler la gestion du temps pour mes commandes différées.



bonjour
tout n'est pas perdu , là le 24 c'est bon !  :smiley-mr-green:

j'ai un ds1307 qui tourne autonome dans un tiroir depuis ~1 mois , je regarderais semaine prochaine ce qu'il rend

bonjour
petit retour sur le ds1307
ds1307 initialisé le 7/11/2011 (hé oui, le temps passe vite, presque 4 mois et pas ~1   :smiley-mr-green:) , tourne en autonome depuis
reconnecté aujourd'hui
retard ds1307/NTP = 1'50"

Go Up