Sortie qui passe 1 une fois le cable usb déconnecté

Bonjour,
Voilà mon problème.

Sur papier cela doit fonctionner

En fonction d'une valeur analogique prise sur A0 j'actionne ou pas une sortie entre certaines valeurs.

exemple il faut que A0 dépasse les 150 pour avoir out1=1
et que A0 descente en dessous de 100 pour passer out1 = 0
en résumé
150 - 100 égal 50 d’hystérésis.

le problème est le suivant.
tant que le cable usb est branché cela fonctionne. nikel

mais dès que je le débranche de la carte pour laisser la carte fonctionner en autonomie, la sortie out1 passe à 1.
alors que les valeurs ne devraient le permettre.

j'ai beau changer les valeurs ...c'est systématique,

j'ai changé de carte, idem.

a noté que j'ai un alim externe 5v ( ancien chargeur de téléphone)

Avez-vous une idée ?

Bonjour 4en1

4en1:
a noté que j'ai un alim externe 5v ( ancien chargeur de téléphone)

Avez-vous une idée ?

5v branché où, comment?

Cordialement,
bidouillelec

Tu le branche où ton chargeur ?
Si c'est sur la pin 5V de la carte arduino, (au fait c'est quelle carte nous n'avons pas de don de double vue), cela devrait fonctionner.
Si c'est sur l'entrée Vin ou jack (on ne connait pas la carte) c'est impossible que cela fonctionne.

Entre Vin/jack il y une diode (ou pas : cela dépend de la carte) et un régulateur à qui il faut mettre au minimum en entrée une tension supérieure à la sortie plus 1V ou 1,5V.
Sur Vin/Jack la tension qui pose le moins de problème est 9V. Il existe des "blocs chargeurs" 9V 1A ou 2 A.

Un conseil : pour poser des questions avec le maximum de chance pour avoir une réponse rapide IL FAUT LIRE LES MESSAGES EPINGLES.

Merci
le chargeur 5Vdc est branché directement sur la carte uno avec le bon embout.
Comme on connecte un portable
voir

Je n'utilise donc pas de patte d'entrée.

Donc le problème viendrait de la tension qui serait trop basse , ce qui décallerait alors ( peut-être) mes seuils de commutation dans ma boucle infinie.
Vos réponses se tiennent bien

j'ai peut-être une chute de tension due à la faible tension 5vdc et à l'intensité que demande la carte,
l'alim s'écroulle peut-être.....

Je vais testé avec du 9vdc, si c'est la tension préférée des cartes :wink: Mercii

le chargeur 5Vdc est branché directement sur la carte uno avec le bon embout.

Embout Jack je suppose, sur l'entrée VIN. Ce n'est pas possible. Il faut 7V minimum sur VIN.

Je vais testé avec du 9vdc

Ou 5V sur la broche 5V.

@+

Comme je l'ai écrit et qu'hbachetti a rappelé tu peux te connecter directement sur la pin 5V de la carte.

C'est un fonctionnement possible mais qui n'a pas été sécurisé comme la bascule USB/Vin.
La seule imposition est que dans ce cas il ne faut rien brancher sur Vin et ne pas raccorder l'USB à un PC.

Non pas de branchement sur la pate Vin

j'ai trouvé une transfo 12 vdc 1,25 a avec le jack, nikel.

j'ai refais des tests à midi, je pense que le problème venait bien de l'alim 5vdc, pas assez de tension et/ou peut-être aussi pas assez puissante.

j'arrive à faire commuté au moment ou je veux avec ou sans USB.

Super !

MERCI ( car je n'aurais trouvé de suite!! )

pas assez de tension et/ou peut-être aussi pas assez puissante.

Pas assez de tension pour commencer.
Il est impossible à un régulateur de fonctionner si la tension à l'entrée n'est supérieure à la tension de consigne en sortie.

Pas tout à fait d'accord.

Le 7133-1 par exemple est un régulateur assez extraordinaire.
Il équipe les bien connus détecteurs de présence HC-SR501.
La diode de protection en série fait chuter la tension d'alimentation de 550mV.
Voir ICI une petite étude que j'ai mené.

Lorsqu'on alimente le module en 3.7V, la tension de sortie du régulateur est de 3.15V, c'est à dire 3.7V - 0.55V.
Lorsqu'on alimente le module en 3.3V, la tension de sortie du régulateur est de 2.75V, c'est à dire 3.3V - 0.55V.

C'est à dire que le régulateur a un drop-out de 0V quand sa tension d'entrée est égale ou inférieure à sa tension de consigne.
Cela sent l'étage de sortie à MOSFET avec faible RDSon à plein nez.

Et ces régulateurs sont très bon marché, et existent en boîtiers TO92 pour les bidouilleurs.

HT7133-1 : 30mA
HT7533-1 : 100mA
HT7333-1 : 150mA

@+

En fonction du niveau de l''entrée, J'ai pu piloter un relai statique de puissance nikel.

mais dès que je débranche le cable usb , c'est le datalog qui ne fonctionne plu ., sinon tant que j'ai l'alim 12vdc + le cable usb,
j'arrive en enregistrer les donneés entrantes , mais dès que je débranche le port usb du pc.
Plouff .. plus rien.. comme si la carte ne pouvait pas fonctionner en autonomie avec son alin pourtant 12vdc et 1,25 ampère.

J'ai une carte uno et un shield ethenet avec une carte SD...

cela ressemble à ce post :
http://forum.arduino.cc/index.php?topic=207519.0
mais moi j'ai plus de 10vdc.. donc

je crains que cela ne soit pas une bonne solution.

J'ai eu le même problème.

La solution est très simple: Tu découpe ton câble USB tu branche le fil rouge de l'USB au + d'une batterie 5V (l'USB fonctionne en 5V) et le fil noir au - de cette même batterie. Les autres fils de l'USB tu t'en fous ""

sinon c'est mon code, mais comme cela fonctionne avec le cable usb, pourquoi sans sa plante ??
il doit manquer un truc !

J'ai une carte uno et un shield ethenet avec une carte SD...

Quand tu nous aura tout dit ...

ENC28J60 ? W5100 ?

Alimenté comment ? Sur le 3.3V de la UNO ?

@+

J'en connais un qui ferait bien de lire le message épinglé "Règles du forum francophone".

Hello 4en1

Il faut absolument étudier quelques cours d'électricité avant de faire des montages .
Arduino n'est pas tout à fait Lego.

Cordialement,
bidouilleelec

Merci, pour les parties: élec, je me débrouille encore assez bien, électronique n'est pas mon domaine de prédilection, la programmation, j'ai commencer il y a un peu plus de 36 ans sur Alice, Oric, TRS 80. en basic et après en turbo pascal sur les tout premier X286 à 20 Mhz ( de mémoire) cela vous donne l'age de mes pauvres os :wink:
De mémoire ZX 81.... je crois que les inventeurs de l'arduino n'est pas nés...
Mais je n'ai jamais trop approfondi la programmation pure et dure dans le code.
Après j'avoue mes lacunes, le langage et Arduino c'est tout un monde que je découvre, oui un peu comme les légos, ce n'est pas faux.
Alors après si j'ai enfreins, une règle ou deux, Merci de me dire lequel cela serait sympa, si c'est bien plus, alors oui je vais les lire :wink:
Bon wk :wink:

Alors j'ai eu un peu de temps à consacrer à mon projet.

point 1 c'est bien un problème d'alim, à mon age la vue baisse de manière régulière donc mon alim était une 12vac et non une 12 vdc.
ce point n'étant pas tout à fait réglé. voir après.

je suis passé avec une alim 12vdc, mais visiblement elle est encore trop faible.
une fois l'usb débranchée ma référence +5vdc de l'entrée analogique doit baisser légèrement, car j'ai l'état des sorties qui sont fonctionnelles avec l'usb et une fois que je débranche , paf cela me coupe tout.
je remets le pc et hop cela repart. les comparateurs fonctionnent.

c'est incroyable ce que demande en énergie cette petite carte !!! Le problème est en cours de résolution.

j'ai donc repris mon programme et simplifié au max et retirant l'enregistrement du data.

la carte est une W5100. pour le moment je laisse cela de coté.
trois problèmes appairassent.

1
la mesure varie beaucoup en fonction de la température de la cellule, ( c'est normal), mais je ne pensais pas à ce point..
du coup cela décale le comparateur entre le matin et le soir et le midi ou la consigne basse est vite atteinte;
cela se traduit par une coupure des sorties alors que cela doit passer à l'état 1.
il me faudra peut-être intégrer une variable température pour compenser.
mais je sais que ma mesure restera fausse et donc je me demande si je vais continuer dans cette voie.....

2
le second problème reste cette coupure quand l'usb est déconnecté.
Il me faut donc une alim en conséquence.

3
la qualité de la cellule, j'utilise de l'amorphe et cette technologie capte très bien dans le difu ( quand il y a des nuages)
donc la corrélation entre les cellules poly cristallines et amorphe n'est pas aisée.
je pense changer d'emplacement ou même de technologie afin de pouvoir piloter si le projet doit continuer.

Merci à vous pour vos commentaires précédents :wink:

le

Je pense avoir résolu ce problème d'alimentation.
j'ai pris une alimentation 230vac / 12vdc 2 ampères de disque dur externe.
la tension reste presque stable entre 4,91 et 4,93vdc
donc les seuils de basculement reste "stable" et ne font pas trop de yoyo.

je n'ai pas encore intégré la température du capteur qui risque de me jouer des tours,
si c'est le cas, j'optimiserai le programme en prenant en compte ou j'opterai pour une modification de seuil de commutation.

/*
  Programme d'autorisation de chauffe 
  on lit la valeur de l'ensoleillement et on autorise ou pas le collage du relais
  
sensorValue est la vameur vue sur l'entrée analogique A1
irradiation est la valeur de l'irradiation solaire 
  
 */
int relais = 9;           // the pin 9 that the relais output is attached to
int led = 7;           // the pin 7 that the led output is attached to

void setup() {
  // initialize serial communication at 9600 bits per second:
  Serial.begin(9600);
  
  pinMode(relais, OUTPUT);
  pinMode(led, OUTPUT);
  digitalWrite(led, LOW);       // on actionne la led pour la chauffe
  digitalWrite(relais, HIGH);   // on actionne le relais pour la chauffe

}

// the loop routine runs over and over again forever:
void loop() {
  // read the input on analog pin A3:
  float sensorValue = analogRead(A3);
  // Convert the analog reading (which goes from 0 - 1024) to a voltage (0 - 4,96V):
  
  int irradiation = sensorValue*( 4.91 / 1023 * 10000);    // print out the value you read:

Serial.println(irradiation);  // à 8:09 18666  21236 à 11:20 affiche la valeur lue de l'irradiation calculée



  if (irradiation < 21300 ) { // 21020 avant !1900 2070 à 15:24
        digitalWrite(led, LOW);      // on actionne la led pour la chauffe
        digitalWrite(relais, HIGH);   // on actionne le relais pour la chauffe
        
        delay(5000); // attente de 5 sec que le nuage soit passé ;) 
        }
        
  else 
    if (irradiation > 21600 ) {           // valeur de hyteresis = 300 
        Serial.println("CHAUFFE à 100%");    // affiche la valeur lue de l'irradiation calculée
        digitalWrite(led, HIGH);       // on actionne la led pour la chauffe
        digitalWrite(relais, LOW );     // on arrete le relais pour la chauffe

  
    
  }
  delay(500);  // et j'attends une demi seconde
  
}

Oui c'est très simpliste, mais c'est mon premier et il fonctionne ( pour le moment)
donc je fais de l'eau chaude que quand l'ensoleillement est supérieur à la consommation de la résistance de chauffe.
et quand un nuage passe, il faut que je coupe vite la chauffe, et j'attends que le nuage passe.
c'est pour éviter les cycles très courts que j'ai opté pour une tempo de 5 s.
dès que j'ai l'autorisation la tempo n'est que de 0,5 seconde entre deux mesures.

Je ne voulais pas trop que l'on aide, et trouver des solutions par moi-même.

Voilà ! je fais de l'eau chaude avec du soleil. Moi cela me va.

je sais et me doute bien qu'il y a d'autres améliorations possibles, mais je souhaitais aussi me familiariser avec la uno.

Maintenant si vous avez des questions ou des idées que je puisse comprendre.. N'hésitez pas :wink:
et encore merci pour votre aide ! Même si je suis long à comprendre vos réponses :grin: :grin:

Bonjour 4en1

Merci de donner des nouvelles.
Une remarque très mineure:
pour garder la "précision" apportée par l'utilisation de float sensorValue ,
à la place de

int irradiation = sensorValue * ( 4.91 / 1023 * 10000);  // print out the value you read:

je ferais

int irradiation = ( (sensorValue *  4.91 ) * 10000) ) / 1023;  // print out the value you read:

Cordialement,
bidouilleelec

Bonjour,

Le problème c'est surtout que dès que sensorValue est supérieur à 682, le résultat ne tient plus sur un entier.

C'est le problème que j'ai remarqué et je ne comprends pas pourquoi.
Vous avez raison, j'ai x 10000 pour avoir un "range" plus grand et affiner mon réglage. Mais en vain.

Je vais essayer et vous tiens au courant.

int irradiation = ( (sensorValue * 4.91 ) * 10000) ) / 1023;

Merci Merci.

des nouvelles bin.... 10 morts à 40 kms de chez moi dans l'aude avec une élévation des cours d'au de 7 m en quelques heures....

Donc oui il y a bien une urgence climatique, et même si c'est une molécule d'eau dans l'océan mon petit programme ...et bien je vais le peaufiner.
je vous ferai aussi des photos de tout cela :wink:

C'est la même chose.
Il faut que tu déclares irradiation comme unsigned int ou long ou float.