BLOC 6 voies

Discutions générales sur le DSPiy et tout ce qui s'y rattache
GoodNoize
Messages : 863
Enregistré le : mar. 27 nov. 2018 17:18
Localisation : Jura

Re: BLOC 6 voies

Messagepar GoodNoize » jeu. 27 juin 2024 21:16

un bout de code pour la gestion de temperature :

Code : Tout sélectionner

int TH_pin[6] = {36, 37, 38, 39, 40, 41}; // config broche des CTN

// Caractéristiques des CTN
const float T0 = 25+273.15; // Température de référence de la CTN en degrés Celsius
const float RT0 = 10000.0; // Résistance de référence à 25°C
const float R0 = 4500.0; // Résistance du diviseur de tension
const float beta = 3435.0; // Valeur bêta de la CTN
uint16_t Vtn[6]; // Codes renvoyés par l'ADC en 12 bits stockés sur 16 bits
float TH[6]; // Températures mesurées et corrigées en degrés C

for (int i = 0; i < 6; ++i) {
    Vtn[i] = analogRead(TH_pin[i]);
    TH[i] = 1 / ((/ T0) + (/ beta) * log((R0 / RT0) * ((1024.0 / Vtn[i]) - 1))) - 273.15; //formule de correction 
    Serial.print("Température CTN ");
    Serial.print(+ 1);
    Serial.print(" : ");
    Serial.println(TH[i]); 
  
}



avec ça je devrait être capable de mesurer les températures.
Reste à l'intégrer dans la loop avec le reste et gérer les priorités.

Aussi j'ai vu qu'on peut "nommer" des fonction dans le setup et les rappeler après dans la loop.
Je pense utiliser ça pour le clignotement de la led.

J'en reviens pas comme ça fais vite des lignes un tout petit pgm. J'ose pas imaginer celui de la sorcière, ou du DSPiy 8|
Modifié en dernier par GoodNoize le ven. 28 juin 2024 07:06, modifié 1 fois.

Avatar de l’utilisateur
thierryvalk
Administrateur du site
Messages : 3771
Enregistré le : jeu. 9 juil. 2015 20:08
Localisation : Belgique

Re: BLOC 6 voies

Messagepar thierryvalk » jeu. 27 juin 2024 21:51

Je me suis permis d’éditer ton message au niveau de la balise pour que ce soit plus beau.
Je devrais dire, encore plus beau. :super:

Le nombre de lignes de code n’est pas un problème.
Tu utilise la fonction analogRead() c’est encore des lignes. Le tout est que ce soit bien écrit. :frime:

Avatar de l’utilisateur
alka
Administrateur du site
Messages : 3098
Enregistré le : mer. 15 juil. 2015 15:18
Localisation : 92
Contact :

Re: BLOC 6 voies

Messagepar alka » ven. 28 juin 2024 10:40

et moi j'ai ajouté une lettre :)
tu as pu vérifier que c'est fiable ?

GoodNoize
Messages : 863
Enregistré le : mar. 27 nov. 2018 17:18
Localisation : Jura

Re: BLOC 6 voies

Messagepar GoodNoize » ven. 28 juin 2024 11:28

Non pas encore vérifié la fiabilité.

Au début je voulais faire un code simplifié avec une seule CTN et ajouter des options petit à petit.
Mais au final, vu que je galère (vraiment, c'est long), j'essai d'optimiser le temps passé dessus.
Je passe mon temps à réécrire le code à chaque fois que je découvre un nouvel élément de langage plus approprié a la situation :mrgreen:

Avatar de l’utilisateur
alka
Administrateur du site
Messages : 3098
Enregistré le : mer. 15 juil. 2015 15:18
Localisation : 92
Contact :

Re: BLOC 6 voies

Messagepar alka » ven. 28 juin 2024 11:37

c'est une bonne approche d'y aller pas par pas


d'ailleurs pourquoi ++i et pas i++ ?
Ca ne change rien dans le cas présent, mais en général faut pas les confondre. On utilise génrélement le deuxième dans une boucle for.

Avatar de l’utilisateur
alka
Administrateur du site
Messages : 3098
Enregistré le : mer. 15 juil. 2015 15:18
Localisation : 92
Contact :

Re: BLOC 6 voies

Messagepar alka » ven. 28 juin 2024 13:39

y'a un truc dans le potage :mrgreen:

j'a mis ton code juste remanié en pur C dans un simulateur en ligne avec 6 exemples de valeurs lues par l'ADC de Vtn de 0 à 4096 (12 bits) :
https://www.onlinegdb.com/TOiA0zb2k

résultat du print :

Vtn1: 0 Temp: -273.149994°C
Vtn2: 500 Temp: 45.808609°C
Vtn3: 1000 Temp: 218.066910°C
Vtn4: 2000 Temp: -nan°C
Vtn5: 3000 Temp: -nan°C
Vtn6: 4096 Temp: -nan°C

Elle vient d'où cette formule ?

Avatar de l’utilisateur
thierryvalk
Administrateur du site
Messages : 3771
Enregistré le : jeu. 9 juil. 2015 20:08
Localisation : Belgique

Re: BLOC 6 voies

Messagepar thierryvalk » ven. 28 juin 2024 14:09

(1024.0 / Vtn[i]) - 1)
Manque de logique :
si la valeur mesurée et 1 => division par zéro
1024 comme constante pour du 12 bits me semble étrange.

GoodNoize
Messages : 863
Enregistré le : mar. 27 nov. 2018 17:18
Localisation : Jura

Re: BLOC 6 voies

Messagepar GoodNoize » ven. 28 juin 2024 16:17

Comprend pô, faut que je me repenche dessus.
Le monsieur lui ça marche très bien :
https://youtu.be/smGJSL_ghfk?t=363
https://youtu.be/smGJSL_ghfk?t=1114

Avatar de l’utilisateur
alka
Administrateur du site
Messages : 3098
Enregistré le : mer. 15 juil. 2015 15:18
Localisation : 92
Contact :

Re: BLOC 6 voies

Messagepar alka » ven. 28 juin 2024 16:33

problème de physique niveau terminale:
Une thermistance CTN est en série avec une résistance Rs entre 3V3 et 0V.
On mesure la tension Uctn aux bornes de la CTN
Uctn est mesurée linéairementde 0 à 3.1V . On obtient valeur entière Va codée sur 12bits entre 0 et 4096.
La résistance de la CTN varie selon la température selon la formule :
Rctn(T) = Rc e^(B(1/T - 1/298)) avec Rc la résistance à 25°C, T la température en °Kelvin, B=3435.
question : déterminer T selon Va


J'ai donné cet énoncé à chatgpt qui trouve :)

Image

GoodNoize
Messages : 863
Enregistré le : mar. 27 nov. 2018 17:18
Localisation : Jura

Re: BLOC 6 voies

Messagepar GoodNoize » ven. 28 juin 2024 17:10

il a pas un peu de mal le fofo aujourd'hui ? Pas possible de charger des images, et quand j'actualise il y a des lignes qui apparaissent et disparaissent des post d'Alain :gene:

J'ai demandé à copilot il me sort ça :
Image

C'est raccord :
Image

ça commence bien :mrgreen:
Sur la vidéo ça marche tout nickel.
j'ai juste voulu transformer le code pour plusieurs CTN.

Je crois que je me un peu emballé sur ce projet, niveau apprentissage du code.

Avatar de l’utilisateur
alka
Administrateur du site
Messages : 3098
Enregistré le : mer. 15 juil. 2015 15:18
Localisation : 92
Contact :

Re: BLOC 6 voies

Messagepar alka » ven. 28 juin 2024 17:21

c'est la meme formule.
ton youtuber code sur 10bits et toi sur 12. ca change la valeur max à 4096
Je suis un peu plus subtil avec mon prompt chatgpt en lui disant que ça ne mesure que jusqu'à 3.1V et pas jusqu'à 3.3V

Avatar de l’utilisateur
thierryvalk
Administrateur du site
Messages : 3771
Enregistré le : jeu. 9 juil. 2015 20:08
Localisation : Belgique

Re: BLOC 6 voies

Messagepar thierryvalk » ven. 28 juin 2024 17:33

il a pas un peu de mal le fofo aujourd'hui ?

Sais pas, mais peut-être qu'il est compatissant ou qu'il a choppé mon Covid. :(

Avatar de l’utilisateur
alka
Administrateur du site
Messages : 3098
Enregistré le : mer. 15 juil. 2015 15:18
Localisation : 92
Contact :

Re: BLOC 6 voies

Messagepar alka » ven. 28 juin 2024 17:49

oh ça existe toujours le covid ? il est comment : comme 90% ou comme les 10% ?

sinon, un lien avec le code qui est bon
https://onlinegdb.com/Y-p8-BcdZ

c'est fou comme j'ai galéré sur un détail : j'avais arrondi T0=298 et ca n'en fait plus un float ! Avec T0=298.0 ca va mieux.

Avatar de l’utilisateur
thierryvalk
Administrateur du site
Messages : 3771
Enregistré le : jeu. 9 juil. 2015 20:08
Localisation : Belgique

Re: BLOC 6 voies

Messagepar thierryvalk » ven. 28 juin 2024 19:23

Pour le fun, pourrais-tu demander à ton pot chatgpt le code à l’ancienne:
Uniquement des nombres entiers :-/

GoodNoize
Messages : 863
Enregistré le : mar. 27 nov. 2018 17:18
Localisation : Jura

Re: BLOC 6 voies

Messagepar GoodNoize » ven. 28 juin 2024 19:52

Et beh je croyais que c'était fini le covid. J'espère qu'il est moins méchant, remet toi bien !

Merci Alain.
Je vais essayé de mesurer une température avec une CTN sur la breadboard. Voir ce que ça donne.

Avatar de l’utilisateur
alka
Administrateur du site
Messages : 3098
Enregistré le : mer. 15 juil. 2015 15:18
Localisation : 92
Contact :

Re: BLOC 6 voies

Messagepar alka » ven. 28 juin 2024 20:09

thierryvalk a écrit :Pour le fun, pourrais-tu demander à ton pot chatgpt le code à l’ancienne:
Uniquement des nombres entiers :-/
je n'aime pas le contrarier :mrgreen:
c'est assez rare qu'il trouve juste du premier coup une réponse de ce genre.
Je lui demande parfois de m'aider pour du html/css/js parce que je me perds dans la syntaxe. Il me fait des réponse fausses a répétition.
Il est aussi capable de produire du code parfaitement faux. Il faut avoir une bonne idée de ce que ça devrait etre pour le challenger et finir par avoir la bonne réponse.
Je sais que pas mal de pros l'utilise et je suis perplexe? Peut etre que la version payante est meilleure.

Bref, j'ai pondu une v3 de mon code et je ne sais pas où la poster.

ici peut etre https://www.dspiy.be/forum/viewtopic.php?p=10981#p10981

GoodNoize
Messages : 863
Enregistré le : mar. 27 nov. 2018 17:18
Localisation : Jura

Re: BLOC 6 voies

Messagepar GoodNoize » ven. 28 juin 2024 21:10

Bon J'ai testé et l'ESP me renvoyai des valeurs dans les choux. 12° et une valeur qui décroit si je chauffe.
Et je me suis aperçu que niveau hardware j'ai pas fais la même chose que le youtubeur.

Il envoie le 5V dans la CTN et R0 au Gnd
Moi c'est l'inverse sur mon schéma kicad. 5V dans R0 et CTN au 0V comme vous m'avez conseillé.
Ducoup ça marche pas :mrgreen:

En inversant, l'ESP me parle et me renvoie une valeur de 21°.
Avec la formule d'Alain j'ai 18,5°
Je peux mesurer des températures avec mon multimètre et lui il me dis 27°.
Le mercure old school de mamie analogique me dis 23°

Bon je vais me fier au mercure hein, le numérique toussa :langue:

--> Etalonner méthode cochon et tricher sur les 273 qu'on soustrait. Vérifier sur plusieurs valeurs si ça joue.
--> Revoir la formule pour pouvoir câbler comme vous préconisez niveau hardware

GoodNoize
Messages : 863
Enregistré le : mar. 27 nov. 2018 17:18
Localisation : Jura

Re: BLOC 6 voies

Messagepar GoodNoize » ven. 28 juin 2024 21:15

J'ai fais ça :



Code : Tout sélectionner

void setup(){
  Serial.begin(115200);                 // démarre la sortie série
  delay(1000);                          // attends 1sec que le port Série démarre (lent sur ma carte)

}

void loop(){
  // Caractéristiques des CTN
    const float T0 = 25.0+273.0; // Température de référence de la CTN en degrés K
    const float RT0 = 10000.0; // Résistance de référence à 25°C
    const float R0 = 4638.0; // Résistance du diviseur de tension
    const float beta = 3435.0; // Valeur bêta de la CTN
    int Vtn;
    float TH1;
    float TH1_alka;

Vtn = analogRead(36);
TH1 = 1 / ((1/T0)+(1/beta)*log((R0/RT0)*((4096.0/Vtn)-1)))-273.0;

float k = (R0/RT0) * (3.3/(Vtn * 3.1/4096.0) -1);     // calcul intermédiaire
TH1_alka = -273 + 1/( 1/T0 + (1/beta) * log(k) );      // en °C
        

        Serial
.print(" T = ");
        Serial.println(TH1);
        Serial.print(" T_alka = ");
        Serial.println(TH1_alka);
        delay(1000);

}


et le moniteur série renvoie :

T = 20.34
T_alka = 18.21


Retourner vers « DSPiy général »

Qui est en ligne

Utilisateurs parcourant ce forum : Aucun utilisateur enregistré et 8 invités