Voila en gros le circuit auquel je pensais:
Pièce jointe 546773
Salut
+1
J'étais lancé dans mon explication et je suis passé à coté de l’essentiel
Il me semble que plus haut il y a des générateurs de courant qui ont été évoqué, ça me semblerait plus logique. Le principe du générateur de courant c'est qu'il augmente sa tension jusqu’à avoir une circulation de courant identique à la consigne. D'où sont emballement en cas d'ouverture du circuit, il faudrait donc dans ce cas prévoir un dispositif limiteur de tension.
Nous avons aussi des circuits courant au boulot et certain des appareils sont équipés avec des éclateurs qui shunt le circuit courant à la terre si la tension dépasse un certain seuil (600v environs).
Par contre je n'ai jamais prit le temps d'étudier le montage électronique de l'éclateur... ça n'est pas mon domaine, d'autre équipe sont spécialisés (entre autre) dans se secteur.
++
Qwaz
Bonjour,
Déjà merci énormément pour votre contribution .Et je n'avais pas connaissance de ce dispositif même si je pense en avoir déjà vue dans de grosses centrales électrique . Le seul problème c'es que c'est a usage unique.Ne serait il pas mieux d'avoir une résistance qui dissipe la chaleur si le courant est trop important ou quelque chose du genre?
Salut
Non, ça n'est pas à usage unique justement, imaginons que tu veilles limiter la tension à 50v pour rester sur une tension de sécurité (normalement la NFC 15-100 donne une tension de sécurité en milieu humide (piscine) de 50v max).
Un dispositif de limitation de tension deviendra passant lorsque la tension dépassera 50v pour court-circuiter la sortie courant, pour autant il ne se détruit pas, il se "rouvre" lorsque le niveau de tension redescend.
Il y a un hystérésis, si je reprend ce que nous avons au boulot sur des TC (transfo de Courant), le dispositif devient passant à environs 600v et l'isolement réapparait lorsque la tension avoisine 220v.
Je te dis ça de mémoire et je n'ai pas les doc étant à la maison, je serai de garde d'ici une grosse semaine (à moins que nous ayons des pannes d'ici là), j'essaierai de trouver un schéma.
Après le fait qu'il soit à usage unique ne devrait pas être un frein... s'il claque c'est que ton montage n'est pas sécu...
Ton programme devrait surveiller le niveau de tension et couper l'injection en cas de tension trop forte disons 45v, ton dispositif "fusibleshunt" lui devrait rentrer en jeu à une tension supérieur 60v par exemple... c'est un peu au dessus de la NFC15-100 mais voilà le principe serait de faire une sélectivité entre les deux protections (programme et physique).
++
Qwaz
Merci pour ces nouvelles informations , voici donc le nouveau circuit:
Auriez vous connaissance de l'existence d'un ampèremètre (le plus précis possible) compatible Arduino capable de supporter une tension de 40V?
Salut
En regardant sur eBay, je sui tombé sur ça. Il faudrait regarder en détail mais si je comprends bien, ça permet de gérer un boucle de courant de jusqu'à 24mA avec une tension comprise entre 11 et 60v.
Bon par contre c'est pas donné...
Tu trouveras ici un test de ce produit.
Pour la mesure d'un courant, google est ton ami, ou tout autre moteur de recherche. Il existe plusieurs composants "sonde de courant" dont certains semblent avoir des résolutions fines de l'ordre du mA.
Le principe est souvent la mesure d'une chute de tension aux bornes d'une résistance de très faible valeur ohmique (<1ohm) placée en serie avec la charge et capable d'encaisser le courant demandé par celle-ci.
Il y a aussi les sonde à effet hall mais à ce que j'en sais ce type de mesure est facilement perturbable et donc pas très fiable.
++
Qwaz
Bonsoir,
Et merci qwazerty pour cette réponse on ne peut plus constructive .
J'ai regarér le générateur de courant que tu me proposais ,pour le moment je ne sais pas encore car je n'est pas trouvé beaucoup de renseignements dessus à part ton lien et son datasheet. Mais je me demande si seulement des batteries mis en série ne suffirait pas et après mon mosfet s'occupera de réguler le reste??
Voici le schéma du circuit le plus récent :
Voici la listes des composants utilés(pour le moment):
- Arduino uno
-Lcd 1602 et HD44780
-15A 400W MOSFET
-Capteur de courant ACS712 - 30A
- bouton
-Batterie 12V X 3
-AD5422
-bracelets antistatiques
-fusible 5X20 32mA
Voici le code que je viens décrire ,je n'est pas encore pu le tester car je n'ai pas encore reçu les composants(mais il n'y a pas d'erreur de compilation déjà). J'attend vos suggestions .
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104 #include <LiquidCrystal.h> LiquidCrystal lcd(7, 6, 5, 4, 3, 2); const int currentPin = A0; // branchement du capteur de courant int sensitivity = 66; int inputPin1 =A1; //bouton int adcValue= 0; int offsetVoltage = 2500; double adcVoltage = 0; double currentValue = 0; char etat="eteint"; void setup() { Serial.begin(9600); pinMode(11, OUTPUT); pinMode(inputPin1,INPUT_PULLUP); lcd.begin(16, 2); lcd.print(" Current Sensor "); lcd.setCursor(0,1); lcd.print(" with Arduino "); delay(2000); } void loop(){ ////////////////lcd_1602/////////////////////// adcValue = analogRead(currentPin); adcVoltage = (adcValue / 1024.0) * 5000; currentValue = ((adcVoltage - offsetVoltage) / sensitivity); Serial.print("Raw Sensor Value = " ); Serial.print(adcValue); lcd.clear(); delay(1000); //lcd.display(); lcd.setCursor(0,0); lcd.print("ADC Value = "); lcd.setCursor(12,0); lcd.print(adcValue); delay(2000); Serial.print("\t Voltage(mV) = "); Serial.print(adcVoltage,3); lcd.setCursor(0,0); lcd.print("V in mV = "); lcd.setCursor(10,0); lcd.print(adcVoltage,1); delay(2000); Serial.print("\t Current = "); Serial.println(currentValue,3); lcd.setCursor(0,0); lcd.print("Current = "); lcd.setCursor(10,0); lcd.print(currentValue,2); lcd.setCursor(14,0); lcd.print("A"); delay(2500); ///////////////////mosfet////////////////////// if (etat=="eteint"){//lorsque le bouton n'a pas encre été pressé le courant est nul currentValue = 0; analogWrite(11,currentValue); } if ((etat== "allume") and (digitalRead(inputPin1) == 0)){//pour eteindre le systeme lorsqu'il est déjà en fonctionement etat ="eteint"; while (digitalRead(inputPin1)==0){ //permet de rester dans la boucle tant que le bouton est enfoncé } } if ((digitalRead(inputPin1) == 0) and (etat== "eteint")){ //le programme commence lorsque l'on appui sur le bouton etat = "allume"; while (digitalRead(inputPin1)==0){ //permet de rester dans la boucle tant que le bouton est enfoncé } } if (etat == "allume"){ while(currentValue < 20){ //augmente l'intensité du courant jusqu'à 20mA progressivement analogWrite(11, currentValue); currentValue++; delay(500); } if (currentValue > 21){ //baisse l'intensité du courant jusqu'à 20mA analogWrite(11,currentValue); currentValue--; } if (currentValue > 27){ //protection qui stop le systeme currentValue=0; analogWrite(11,currentValue); } } }
Bonsoir,
J'ai du reprendre l'ancien code suites à quelques remarques, le voici:
Erreur de ma part ,j'utilise un Capteur de courant ACS712 - 5A et non 30A!!!!
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87 #include <LiquidCrystal.h> #include <LiquidCrystal_I2C.h> LiquidCrystal_I2C lcd(0x27,16,2); int inputPin1 = A1; //bouton boolean etat = 0; //defini l'etat du systeme : 0 lorque le systme est eteint ,et 1 lorsque le systeme est allume ///////////////////ACS_712///////////////////// const int analogIn = A0; int mVperAmp = 185; int ACSoffset = 2500; int RawValue = 0; double Voltage = 0; double Amps = 0; /////////////////////////////////////////////// void setup(){ pinMode(11,OUTPUT); pinMode(inputPin1,INPUT_PULLUP); lcd.init(); lcd.backlight(); } void loop(){ ///////////////////ACS_712///////////////////// RawValue = analogRead(analogIn); Voltage = (RawValue / 1024.0) * 5000; //converti RawValue en mV Amps = ((Voltage - ACSoffset) / mVperAmp);//converti en A ////////////////lcd_1602/////////////////////// lcd.clear(); //je me place sur la premiere ligne et au 1er caractere lcd.print("Courant ="); lcd.setCursor(10,0); //je me place sur la premiere ligne et au 11eme caractere lcd.print(Amps,3); //le «3» après Amps permet d'afficher 3 chiffres après la virgule lcd.setCursor(14,0); lcd.print("A"); delay(1000); ///////////////////mosfet////////////////////// if ((etat !=0) and (digitalRead(inputPin1) == 0)){//pour eteindre le systeme lorsqu'il est déjà en fonctionement etat = 0; while (digitalRead(inputPin1) == 0){ //permet de rester dans la boucle tant que le bouton est enfoncé } } if ((digitalRead(inputPin1) == 0) and (etat == 0)){ //le programme commence lorsque l'on appui sur le bouton etat = 1; while (digitalRead(inputPin1) == 0){ //permet de rester dans la boucle tant que le bouton est enfoncé } } if (etat != 0){ while(Amps < 0.02){ //augmente l'intensité du courant jusqu'à 20mA progressivement analogWrite(11,Amps); Amps += 0.01; delay(500);//retardement pour que l'intensité augmente de 1 toutes 500ms } if (Amps > 0.024){ //baisse l'intensité du courant jusqu'à 20mA while(Amps > 0.02){ analogWrite(11,Amps); Amps -= 0.001; } } else if ((Amps > 0.02) and (Amps < 0.024)){ //si mon intensité ce trouve entre 20mA et 24mA analogWrite(11,Amps); } else if (Amps > 0.027){ //protection qui stop le systeme Amps = 0; digitalWrite(11,Amps); } } else {//lorsque le systeme est eteint Amps = 0; digitalWrite(11,Amps); } }
Toutes remarques ,ou tentatives d'améliorations sera très apprécié .Merci d'avance.
Bonjour,
Seb201 ? Avec un "Amps += 1" en ligne 61, le sang dans la main ne risque-t-il pas de coaguler ?
Re,
Je regardais ton code pour contribuer un petit peu, parce que c'est quand même une application critique, et forcément je me suis intéressée aux composants, et là !!! Avec le couple ACS712 30A (66mV/A) + arduino (5-10mV de précision), 1/6~1/7, on tourne sur du 150mA de précision. C'est juste pas faisable. Les capteurs à effet Hall, je crois qu'il faut oublier. J'ai croisé une note d'application pour la mesure de faibles courants, https://www.analog.com/media/en/tech...es/an105fa.pdf, mais là pour moi ça devient une affaire d'expérience et de spécialistes.
Cela ne change malheureusement rien,
Car si j'ai bien compris la doc du composant,
dans sa version 5A il ne descend pas en dessous des 110mA. Même avec un amplificateur on reste au dessus des 30mA.Envoyé par https://www.allegromicro.com/-/media/files/datasheets/acs712-datasheet.ashx
Effectivement après vérification ,vous disiez vraie. Apres plusieurs heures de recherches j'ai trouvé ceci :https://media.digikey.com/pdf/Data%2...ookupGuide.pdf . Il faudra de même mettre une bobine de lissage en sortie de mosfet pas encore déterminer pour se rapprocher d'un courant continue.
Dernier version du circuit à ce jour:
Et dernière version du code:
Ainsi quela listes des composants utilés(pour le moment):
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95 #include <Wire.h> #include <LiquidCrystal_I2C.h> LiquidCrystal_I2C lcd(0x27,16,2); const int bouton = 3; bool etat = false; //defini l'etat du systeme :false lorque le systme est eteint ,et true lorsque le systeme est allume ////////////////lcd_1602/////////////////////// int ledState = LOW; unsigned long previousMillis = 0; unsigned long interval = 1000; ///////////////////INA_169///////////////////// const int SENSOR_PIN = A0; // Input pin for measuring Vout const int RS = 10; // Shunt resistor value (in ohms) const int VOLTAGE_REF = 5; // Reference voltage for analog re float current; float sensorValue; /////////////////////////////////////////////// void setup(){ Serial.begin(9600); pinMode(11,OUTPUT); //mosfet pinMode(bouton,INPUT_PULLUP); lcd.begin(); lcd.backlight(); lcd.clear(); } void loop(){ ////////////////lcd_1602/////////////////////// unsigned long currentMillis = millis(); if (currentMillis - previousMillis > interval) { previousMillis = currentMillis; ///////////////////INA_169///////////////////// sensorValue = analogRead(SENSOR_PIN);// Remap the ADC value into a voltage number (5V reference) sensorValue = (sensorValue * VOLTAGE_REF) / 1023; // Follow the equation given by the INA169 datasheet to // determine the current flowing through RS. Assume RL = 10k current = sensorValue*1000 / (10 * RS); // Is = (Vout x 1k) / (RS x RL) (en mA) lcd.setCursor(0,0); lcd.print("Courant = "); lcd.print(current,1); //affiche la valeur avec 1 decimale lcd.print("mA"); } ///////////////////mosfet////////////////////// if ((etat != false) && (digitalRead(bouton) == HIGH)){//pour eteindre le systeme lorsqu'il est déjà en fonctionement etat = false; while (digitalRead(bouton) == HIGH){ //permet de rester dans la boucle tant que le bouton est enfoncé } } if ((digitalRead(bouton) == HIGH) && (etat == false)){ //le programme commence lorsque l'on appui sur le bouton etat = true; while (digitalRead(bouton) == HIGH){ //permet de rester dans la boucle tant que le bouton est enfoncé } } int duty = map(current,0,100,0,255); //de 0 à 100mA if (etat != false){ while(current < 20){ //augmente l'intensité du courant jusqu'à 20mA progressivement analogWrite(11,duty); sensorValue = analogRead(SENSOR_PIN); current = sensorValue*1000 / (10 * RS); duty += 1; delay(250); } if (current > 24){ //baisse l'intensité du courant jusqu'à 20mA while(current > 20){ analogWrite(11,duty); sensorValue = analogRead(SENSOR_PIN); current = sensorValue*1000 / (10 * RS); duty -= 1; } } else if ((current > 20) and (current < 24)){ //si mon intensité ce trouve entre 20mA et 24mA analogWrite(11,duty); } else if (current > 27){ //protection qui stop le systeme current = 0; digitalWrite(11,current); } } else {//lorsque le systeme est eteint current = 0; digitalWrite(11,current); } }
- Arduino uno
-Lcd 1602 et HD44780
-15A 400W MOSFET
-Capteur de courant INA 169
- bouton
-Batterie 12V X 3
-bracelets antistatiques
-fusible 32mA
-bobine de lissage(pas encore choisi)
Bonsoir à tous,
Je souhaiterais rappeler la dangerosité de ce dispositif pour les nouveaux arrivant ,même si cela à déjà été évoqué en début de sujet . Et c'est d'ailleurs pour cela que je demande de l'aide à des gens qui seront beaucoup plus qualifiés que moi (avec mon simple niveau de seconde Annee de Prepa ) à propos de montage TBT immergé , et surtout à propos de leur sécurité . Car après de multiples recherches j'ai trouvé que dans les locaux immergés les tentions ne doivent pas excéder*: alternatif = 12*V et continu = 25*V or la ionophorese utilise du 40V continue. J'ai de même lu une thèses https://images.app.goo.gl/rULkwjjtTUCUJGi7A qui disait que le fonctionnement optimal avait lieux pour des courants de l’ordre de 0,5 mA/cm2 . C'est pourquoi je sollicite votre aide , afin de m'assurer de la sécurité de mon dispositif étant donné ça dangerosité . Je cherche de même à savoir comment faire pour avoir la bonne inductance pour permettre de lisser mon courant en sorti de mosfet. Merci d'avance.
Bonjour,
Et si au lieu de faire passer le courant à travers la main, on travaillait au plus près de la paume avec par exemple l'utilisation d'un tamis électrique. Alors j'ai pensé à la raquette à moustiques et en cherchant des images, j'ai trouvé ça :
![]()
C'est une très bonne idée de ta part ,merci pour cette remarque pertinente néanmoins avec un tel dispositif il y' a seulement un travail surfacique qui qui est effectué . Il faut que je vérifie mais je pense qu'il y a une raison que la main ne soit pas directement en contacte avec l'électrode et de plus je pense que les glandes visées ne seront pas atteintes avec un tel dispositif .Tout ce que je viens de dire est à prendre avec des pincettes ,car je n'ai pas encore vérifié .Mais très inventif et astucieux.
Bonsoir à tous,
Apres plusieurs recherches je viens confirmer ce que j'ai dis dernièrement concernant l'utilisation du tamis électrique . Celui-ci aurait pu être une très bonne alternative néanmoins les glandes sudorales (qui cause l'hyperydrose) se trouve sous la peau .Il est donc nécessaire que le courant ne reste en surface mais transperce l'epiderme afin que le traitement reste efficace . J'ai de même contacté un médecin qui à aidé à la conception de ce genre de machine ,et il m'a confirmé que la main ne devait pas être en contacte direct avec l'électrode car il y a des risques de brûlures . C'est pourquoi un interstice est mis en place au dessus de l'électrode ,et cela permet de même une répartition uniforme de flux de courant qui passe à travers la main.
Vous avez un bloqueur de publicités installé.
Le Club Developpez.com n'affiche que des publicités IT, discrètes et non intrusives.
Afin que nous puissions continuer à vous fournir gratuitement du contenu de qualité, merci de nous soutenir en désactivant votre bloqueur de publicités sur Developpez.com.
Partager