GROWDUINO [Zone de partage]


Messages recommandés

Alors mon petit roucass..

 

Je ne sais pas ce que tu as foutu avec ton code, impossible de le compiler avec mon environnement.

je taffe sous sublime_text 3 et comme environnement arduino  V 1.6.8

lors de la compil il me fait une crise de nerf au niveau des librairies.. Contrôle ton environnement

 

Je t'ai mis ma version avec l'ajout dans le code du maintenanceMode, et lui compile parfaitement chez moi

 

l'archive ci-dessous contient le fichier ino

 

MiniGrowduinoV2.ino.zip

 

explication :

 

CYCLIC_1.setActivation(!maintenanceMode);

 

j'active ou je désactive le cyclic_1 en fonction de l'inverse du mode maintenance

si la variable maintenanceMode est à true alors le parametre d'activation sera inversé grâce au point d'exclamation placé devant le paramètre en entrée de la méthode setActivation qui prendra la valeur false et vice et versa

 

CYCLIC_1.run(now.unixtime(),TIMER_1.isWorking());

 

ligne 2 je lance de toute manière la commande run, mais si l'l'objet CYCLIC_1 est désactivé le relais ne commutera pas

 

Edit : pour activer ou désactiver, utiliser la touche 'A' (comme activation) du pavé numérique

 

++

GEN

Modifié par Gen
Lien à poster
Partager sur d’autres sites

Viker... un relais est un interrupteur commandé à distance.

 

au cul du moteur AC tu ne mets rien, par contre à la commande du relais (coté DC) tu mets toujours une diode.

 

si il y a un condensateur sur le circuit, il ne sert que pour le déparasitage ;-)

 

++

GEN

 

alors oui le relais est un interrupteur à distance là je n'apprend rien.

si je pose la question c'est parce que mon intracteur n'arrête pas de me péter mes relais ssr du coup je me demandais que faire et si je devais mettre au cul de l'intracteur quelque chose pour que cela ne pète pas mes ssr.

Sachant que l'intracteur fait 15w et que le ssr est en théorie supporte 2A soit largement plus.

 

Une idée? (sachant, pour info, que c'est le même intracteur qui refusait la régulation avec le circuit régulateur de vitesse universel pour moteur)

 

++ Viker

Lien à poster
Partager sur d’autres sites

tu oublies le facteur de conso interne.. mais normalement le souci de devrait pas venir de là.

Ton SSR a-t'il chauffé ?

 

sinon il te reste l'option d'utiliser un triac en mode full open

 

par contre moi j'utilise des relais pour boîtier électrique 24V de chez schneider et jamais eu de prob sur les extracteurs

 

Donne moi les ref de ton SSR stp que j'y jette une bille

 

J'attends ta réponse

 

++

GEN

Modifié par Gen
Lien à poster
Partager sur d’autres sites

tu oublies le facteur de conso interne.. mais normalement le souci de devrait pas venir de là.

Ton SSR a-t'il chauffé ?

 

sinon il te reste l'option d'utiliser un triac en mode full open

 

Donne moi les ref de ton SSR stp que j'y jette une bille

 

J'attends ta réponse

 

++

GEN

 

Merci Gen.

 

Alors le ssr est un ssr 8 voie high level trigger communément vendu sur allixx

Il ne semble pas avoir chauffé d'aspect extérieur mais il est devenu passant de façon permanente alors qu'il devrait être non passant au repos (non connecté)

 

++ Viker

Lien à poster
Partager sur d’autres sites

Klr le transistor à claqué.. ton moteur était-il souvent sollicité genre plusieurs fois par minutes ?

 

++

GEN

Lien à poster
Partager sur d’autres sites

C'est l'intracteur donc il tourne en permanence.

Il est régulé par minigrowduino par la sortie intra et la rampe de ssr 8 voie.

Il change donc de régime en fonction de la température et par conséquent change de sortie ssr.

 

Mais là je constate que c'est la sortie correspondant à la vitesse là plus élevée qui est morte sachant que vu les températures actuelles il n'a pas du changer de sortie ou alors c'est au changement de sortie qu'il a claqué mais ce n'est que supputation.

 

++

Viker

Lien à poster
Partager sur d’autres sites

je crois savoir d"où vient le problème.. le temps de commutation des relais.

As-tu essayé avec des relais mécaniques ?

Moi à l'origine j'ai prévu le système pour des relais mécaniques, il se peut qu'avec des SSR ça merdouille si l'on augmente pas le temps à vide des relais..

En gros en mettant 500ms cela ne devrait plus poser de problème. avec cette tempo pas de crête d'intensité car le moyeu est encore en train de tourner

 

Si tu édites la classe, et met tous les relais a off + un délais avant de lui relancer une commande cela ne devrait plus poser de prob si cela provient de là.

 

Edit : D'ici demain, je vais faire la modif de la classe et la tester, ensuite vous la mettre à dispo car c'est un peu compliqué pour des débutants de bidouiller les classes, ainsi ceux qui désireraient utiliser des platines SSR pour la commande moteur n'auront pas de blèmes

 

Tiens moi au jus

 

++

GEN

Modifié par Gen
Lien à poster
Partager sur d’autres sites

Ok ça marche Gen, je vais nettoyer l'ordinateur ( suppression des copie) et je vais voir le problème ( je pense que dans la façon dont j'ai ajouter les librerie. )

 

les librairies se mettent dans arduinoxxx/librairies et non dans lib

xxx = version

 

ensuite il faut relancer l'environnement  pour qu'elles soient prises en charge.. cherche une chouille dans les GDW, j'ai expliqué cela, si cela peut t'aider

 

si tu taffes sous LINUX assure toi que les fichiers ont les droits d'accès par l'environnement

 

++

GEN

Modifié par Gen
Lien à poster
Partager sur d’autres sites

Je viens de faire la modif pour le fichier motorDriver.cpp

 

je dois encore la tester, mais cela ne devrait pas poser de problème.

 

Cette modif sera intégrée à la dernière mise à jour sur le post #1 de ce fil de discussion dès les tests terminés.

#include "MotorDriver.h"
#include <Arduino.h>
#include <Wire.h>
#include <avr/pgmspace.h>

MotorDriver::MotorDriver(int address,bool relayMode)
{
    _I2cAddress = address;    
    _reverse = relayMode;
}

void MotorDriver::begin()
{
    byte defaultValue[2]={ALL_UP,ALL_DOWN};
    byte motorsAdr[2]={EXTRA,INTRA};
    Wire.begin();
    for(byte i = 0; i<=1; i++)
    {
        Wire.beginTransmission(_I2cAddress);
        Wire.write(i);
        Wire.write(0x00); // define I/O in output
        Wire.endTransmission();
        Wire.beginTransmission(_I2cAddress);
        Wire.write(motorsAdr[i]);
        Wire.write(defaultValue[_reverse]);  // define original relay status
        Wire.endTransmission();
    }    
}

void MotorDriver::setSpeed(int motorSelected, int speed)
{
    if(speed > 7){speed = 7;}
    if(speed < 0){speed = 0;}
    Wire.beginTransmission(_I2cAddress);
    Wire.write(motorSelected);
    if(_reverse)
    {
        Wire.write(inverted_speed[0]);
    }    
    else
    {
        Wire.write(normal_speed[0]);
    }    
    Wire.endTransmission();

    delay(500);
    
    Wire.beginTransmission(_I2cAddress);
    Wire.write(motorSelected);
    if(_reverse)
    {
        Wire.write(inverted_speed[speed]);
    }    
    else
    {
        Wire.write(normal_speed[speed]);
    }    
    Wire.endTransmission();
}

++

GEN



 

Lien à poster
Partager sur d’autres sites

Ok ça marche, je suis sous Windows directement avec l'ide, je pense que c'est du fait que les librairies était toutes dispersés

 

klr, c'est la seule explication

 

passe sur sublime_text c'est un peu galère à installer mais après c'est que du plaisir à comparer au GUI préhistorique de l'IDE adruino

 

++

GEN

Lien à poster
Partager sur d’autres sites

je crois savoir d"où vient le problème.. le temps de commutation des relais.

As-tu essayé avec des relais mécaniques ?

Moi à l'origine j'ai prévu le système pour des relais mécaniques, il se peut qu'avec des SSR ça merdouille si l'on augmente pas le temps à vide des relais..

En gros en mettant 500ms cela ne devrait plus poser de problème. avec cette tempo pas de crête d'intensité car le moyeu est encore en train de tourner

 

Si tu édites la classe, et met tous les relais a off + un délais avant de lui relancer une commande cela ne devrait plus poser de prob si cela provient de là.

 

Edit : D'ici demain, je vais faire la modif de la classe et la tester, ensuite vous la mettre à dispo car c'est un peu compliqué pour des débutants de bidouiller les classes, ainsi ceux qui désireraient utiliser des platines SSR pour la commande moteur n'auront pas de blèmes

 

Tiens moi au jus

 

++

GEN

 

Ce que tu appelles la classe moteur c'est la librairie?

 

et du coup est-ce que ce changement est pertinent?

 

void MotorDriver::setSpeed(int motorSelected, int speed)

{

    if(speed > 7){speed = 7;}

    if(speed < 0){speed = 0;}

    Wire.beginTransmission(_I2cAddress);

    Wire.write(motorSelected);

    if(_reverse)

    {

        Wire.write(inverted_speed[0]);

       delay(500);

       Wire.write(inverted_speed[speed]);

    }    

    else

    {

       Wire.write(normal_speed[0]);

       delay(500);

       Wire.write(normal_speed[speed]);

    }    

    Wire.endTransmission();

 

Edit: ah bah le temps d'écrire le message et je vois que tu as déja posté la modif :P

 

 

++

Viker

Modifié par Viker
Lien à poster
Partager sur d’autres sites

Pas assez rapide LOL

 

ton code n'aurait pas fonctionné car le circuit attend 2 bytes c'est pour cela qu'il faut faire un end transmission et un begin transmission, mais en gros l'idée y était

 

++

GEN

Modifié par Gen
Lien à poster
Partager sur d’autres sites

héhé trop rapide Gen!

 

et oui j'ai compris en regardant ton code qu'il faut un begin et un end transmission pour chaque commande.

Bon et bien en attendant confirmation de ta part après test je m'en vais changer le ssd cramé.

 

++

Viker

Modifié par Viker
Lien à poster
Partager sur d’autres sites

Gen y a un moyen de mettre les menu de sublime text en français car je suis déjà nul en français alors en anglais j'y comprends rien

 

J'ai installer le dictionnaire français mais ça a rien changer.

Modifié par Roucass
Lien à poster
Partager sur d’autres sites

Bon bah je laisse tomber pour ce week-end, trop prise de tête, le fichier que tu m'a envoyer quand je l'est compiler il m'a trouver une erreur sur void Cyclic. Stop qui n'est plus utiliser, du coup je l'est supprimer dans le CCP et le h et maintenant il me ressort 20 erreur par rapport au cyclic

Modifié par Roucass
Lien à poster
Partager sur d’autres sites
Invité
Ce sujet ne peut plus recevoir de nouvelles réponses.