Passionnés de bricolage ? Recevez toutes les semaines notre newsletter pour plein d'astuces, conseils et vidéos !

Ma newsletter
MESSAGE A L'ORIGINE DE LA DISCUSSION
le 31/03/2020 à 11h08

coupe circuit pour courant continue

Bonjour à tous,
Je cherche un dispositif coupe circuit à partir de 30mA qui puisse supporter 40V en DC.
Voici le schéma du circuit.
Merci d'avance.
citer répondre

Liste des réponses

le 03/04/2020 à 19h48
coupe circuit pour courant continue
Bonjour,

Mes interrogations ne s'adressent qu'a vous, je ne veux pas d'un lien, tout ce qu'il y a dans cette page je le connais, mais je n'ai toujours pas de réponse. Il faut bien comprendre que si je pose une question, c'est à vous que je la pose, Arduino je pense en avoir fait le tour. Vous faites des copier/coller sans comprendre et lorsque vous aurez un Bug vous ne saurez pas le résoudre. Ce n'est pas ça la prog, un exemple n'est pas toujours adapté à vos besoins et c'est surtout pour vous expliquer un fonctionnement.

Je vous redemande à vous, que représente "int ACSoffset = 2500; " ? C'est important pour la suite.

Pour le reste on a fait un grand pas. On n'affecte pas un état à un "char", ça va poser de gros problèmes, mais il y en a toujours un. Je vous donne la réponse codée dans ce paragraphe.

Vous n'avez pas compris les "compound" !

Si je vous dis "x = !x" ça devrait vous aider à simplifier grandement. Un bon code est un code simple et léger.

Je vous ai également précisé que l'on n'utilise pas d'entrées analogiques en logiques, sauf lorsque l'on n'en a plus de dispo.

Cdt
citer répondre
le 03/04/2020 à 23h58
coupe circuit pour courant continue
Bonjour,
Je n'ai pas fait de bête copier coller j'ai pris le temps d'essayer de bien comprendre le code meme si il y a peut être encore des zones d'ombres. Donc pour répondre à votre question d'après les expliquations donné sur le lien que je vous ai envoyé il est dit que "int ACSoffset = 2500; " est la tension que l'on retrouve sur le V out lorsque le courant est nul.Et c'est donc pour cela que nous soustrayons cette valeur de la tension mesuré.

Pour ce qui concerne le char c'est mon prof de si qui m'avais dis d'écrire char etat=... .Mais en compilant j'ai bien vue les erreurs ,même si elles n'empêchaient pas que la compilation soit vérifié . Je comprend parfaitement la rigueur que vous appliqué pour la programmation .Mais sachez tout de même que je suis encore novice ,j'ai commencé seulement cette année et j'ai appris de moi même par curiosité .

Sachez que j'essaye de faire de mon mieux pour mener ce projet à bien.
citer répondre
le 04/04/2020 à 15h38
coupe circuit pour courant continue
Bonjour,

Ce n'est pas la réponse que j'attendais, tant pis.

Je manque surtout de temps, donc on va un peu écourter.

En programmation il y a une notion très importante à ne jamais oublier, la charge mémoire. Il y a de multiples façons de s'en accommoder.

Lorsque vous affectez ou assignez une variable, essayez de quantifier les données qu'elle va contenir pour lui donner le bon type.

On va revenir sur "etat". Le premier type affecté était char, grosse erreur et dans tous les sens. Un type "char, est un caractère( "A" <> "a") le type était en définitive un tableau de caractères qui changeait tout le temps et donc le µC ne comprenait rien. Le deuxième type que vous affectez est un "int", pensez vous que ce soit le bon ? Réfléchissez à la fonction que vous voulez obtenir. Deux états "en marche" et "Arrêt", le meilleur type n'est pas le booléen "bool" ? Ce type ne prend que deux états "false" et "true" (en minuscule), une erreur courante et de lui affecter 0 ou 1, ce qui fonctionne également mais si une erreur se produit, un débordement mémoire ou autre, toutes les valeurs autre que 0 seront vraies. Il occupe tout de même 1 octet en mémoire, en principe on gère ça au niveau bit ce qui permet de gérer 8 valeurs, mais c'est plus facile pour vous avec bool.

Pour la mise en route et l'arrêt, j'utiliserais une interruption, qui permettra d'interrompre le fonctionnement à tout moment. Donc une interruption avec un sous programme qui contiendrait une fonction "NOT", (etat = !etat). A chaque appel, changement de valeur de "etat". Pas besoin de contrôler si marche ou arrêt on inverse simplement l'état. Attention il faut gérer l'arrêt proprement sinon big problem de gestion mémoire.

Les broches doivent être définies comme des "const". Je le répète les entrées analogiques ......en dernier recours.

Pourquoi deux fois la bibliothèque LiquidCrystal.

La gestion du courant si dans son ensemble n'est pas bonne, sera trop lente, incrémenter de 1 à chaque tour, si le courant a pris 100mA vous allez trouver le temps long. Il faut décrémenter ou inverse de la valeur du dépassement plus ou moins un coeff pour déterminer les variations intempestives. Laisser une marge de variation et un temps de latence avant intervention sinon ça va vite devenir ingérable.

Pour le "And" préférez "&&".

Pour en revenir au type de variables, regardez "mVperAmp" sa valeur est de 185 elle peut être de 100 ou 66 pour les différents CI, utiliser un "int" qui prend 2 octets en mémoire, la logique veut que l'on va lui préférer un "byte qui lui ne prendra qu'un octet, sur un petit programme pas de problème mais lorsque on frise le full memory, 1 octet est 1 octet. C'est comme ça pour toutes les variables, mais attention il faut pas se tromper, le compilateur ne verra rien, mais le 328 ne sera pas content. Les bonnes habitudes ça se prend au début.

Char etat = "Allumé", on utilise ceci pour afficher des caractères. Si on doit afficher ce mot dans 10 sous-programmes sans passer par une variable, si vous décidez de modifier en "Démarré", il faut chercher tous les endroits ou est inscrit celui-ci, alors qu'avec une variable on ne le change qu'une fois et à chaque appel la modif est exécutée. Quand on programme, il faut penser à tout, mémoire, temps, maintenance, etc....

Continuez à faire état de votre avancement, je ne répondrais pas systématiquement mais je lirais sans faute. Je conserve le lien ou vous publiez vos listings.

Bon, faut vraiment que j'y aille ! J'ai écrit un peu vite il y a peut-être des erreurs ou incohérences n'hésitez pas à m'en faire part.

Cdt
citer répondre
le 04/04/2020 à 17h51
coupe circuit pour courant continue
Gérard22 a écrit: :
Bonjour,

Que représente "int ACSoffset = 2500; " ?

Cdt


Bonjour, je pense qu'il a mal compris le fonctionnement du capteur d'intensité !!! Il enlève 2500 à la valeur lue, mais si par hasard le capteur voit une intensité négative, le résultat risque d'être surprenant !

Ces capteurs quand l'intensité est nulle sortent 2500 mV.
pour -5A, il donne 0V et pour 5A on a 5V.

il vaudrait mieux faire

pinCapteur=Ax ---->remplacer x par le numéro de la broche où est branché le capteur)
map(analogRead(pinCapteur), 0, 1024 , -5000, 5000)
citer répondre
le 06/04/2020 à 15h02
coupe circuit pour courant continue
Bonjour,

J'ai 5' à vous consacrer.

J'espère que ce coup-ci vous êtes convaincu que l'ACS712 n'est pas le meilleur choix.

Ça n'empêche pas de continuer à décortiquer malgré mes interventions sans action sur votre code, ça servira peut-être à d'autres.

while(Amps < 0.20){ //augmente l'intensité du courant jusqu'à 20mA progressivement
analogWrite(11, Amps);
Amps+=0.001;
delay(500);//retardement pour que l'intensité augmente de 1 toutes 500ms
}


Cette partie de code par exemple ne peut pas fonctionner en l'état.
Vous faites une boucle while pour incrémenter une variable et écrire une broche PWM, OK, mais vous ne pensez pas qu'il faut aussi contrôler la valeur du courant en réel à chaque tour ? "Amps" est une variable qui représente une grandeur mesurée et calculée à un instant "T", elle ne représente pas une mesure en temps réel dans la boucle, vous incrémentez une variable pas une mesure. Je passerais par une autre variable pour l'incrément. Le courant est dû à la résistance de votre main dans un liquide, celle-ci n'est pas stable, vous incrémentez de 1 "patate", mais comment va se comporter le courant lui-même ? Donc on incrémente et on contrôle. En plus delay(500) 10 secondes pour arriver à 20mA un peu long, si en plus d'incrémenter de 1"patate", le courant augmente en réalité de 20mA, vous allez trouver le temps vraiment long avant que le code corrige dans l'autre sens, avec le temps qui va avec bien sur.

Alors je parle de patates pourquoi ? Vous augmentez le pas PWM de 0.001, vous pensez qu'il va comprendre. Vous confondez un courant mesuré avec un pas PWM, il faut adapter les valeurs fonction de leurs utilisations. C'est bien pour ça que l'ACS712 pose un souci pour l'affectation d'une échelle, ce serait faisable mais compliqué, de toutes façons la question ne se pose plus. Deux fréquences PWM disponibles selon les broches, à étudier. La fonction analogWrite() à revoir.

Vous ne pensez pas qu'il est temps pour vous de vous pencher sur la référence du langage, quand on utilise un terme, on la consulte si on ne la connait pas par cœur. Lorsque je programme, j'ai la référence sur un écran et l'interface sur l'autre, très pratique.

Ensuite il va falloir simplifier pour gagner du temps machine, compliqué sous ce langage mais faisable.

Pour un code sans erreurs !!! Et il y en a d'autres ! Si j'ai un peu de temps je gratterais peut-être une petite ébauche.

Cdt
citer répondre
le 06/04/2020 à 17h44
coupe circuit pour courant continue
Bonjour,
Pour commencer merci à vous de me consacrer ce temps ci . Effectivement je me suis trop précipitée, le analogwrite() fonctionne avec des valeurs entre 0 et 255. En ce concerne l'acs712 il est mis de coté pour ce projet car pas assez précis ,et après plusieurs heures de recherche j'ai trouver ceci: https://www.digikey.fr/product-detail/fr/sparkfun-electronics/SEN-12040/1568-1004-ND/5140769 .Je vais me replonger dans tout ça .Et je repensait à un truc , je vais devoir mettre une bobine de lissage en sortie de mosfet pour lisser le courant.

citer répondre
bouton_charte bouton_faq

A découvrir sur Bricoleurdudimanche

Nos bricoleurs ont du talent !
Suivez en vidéo les aventures de nos bricoleurs : conseils, astuces et réalisations
Voir nos vidéos
Le guide de la construction maison
Plus de 190 vidéos bricolage, pour apprendre à construire sa maison soi même !
Regarder les vidéos
Envie de changer de cuisine ?
Envie d'une cuisine équipée et sur-mesure ? Rendez-vous sur Cuisine Plus pour réaliser la cuisine idéale !
Découvrir nos cuisines
DIY, inspirez-vous de nos idées déco !
Pas assez de budget pour votre déco ? Découvrez nos conseils pour la créer vous-même ! Soyez créatifs !
Voir nos conseils

Le sondage de la semaine

Pour vous l’indispensable en cuisine c’est ?
Membres en ligne
Membres :

ztvucj , aurelien62530 , Pozidriv , peuchere

Visiteurs non identifiés : 316
keyboard_arrow_up