IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Algorithmes et structures de données Discussion :

Pistes pour écriture d'un algorithme pour un circuit imprimé


Sujet :

Algorithmes et structures de données

  1. #1
    Futur Membre du Club
    Homme Profil pro
    Enseignant Chercheur
    Inscrit en
    Décembre 2021
    Messages
    5
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Manche (Basse Normandie)

    Informations professionnelles :
    Activité : Enseignant Chercheur
    Secteur : Enseignement

    Informations forums :
    Inscription : Décembre 2021
    Messages : 5
    Par défaut Pistes pour écriture d'un algorithme pour un circuit imprimé
    Bonjour Chers tous,

    Je travaille dans la recherche (chimie) et je suis plutôt novice en matière de programmation.
    Dans le cadre de mon travail, je suis amené à écrire un algorithme pour un circuit imprimé.
    Compte tenu de mes lacunes en matière de programmation, je souhaite surtout avoir des pistes (langages d'écriture le plus approprié à mon problème, des exemples de ligne de codes, des documents à lire ...) afin de cibler mon apprentissage tout en me formant efficacement à la programmation.

    Mon problème est le suivant:

    Soit la formule suivante :G = a*b*|W|

    "a" est des constante (coefficient) que j'ai obtenu de façon empirique (test sur le terrain).
    "W" est un paramètre naturel (exemple : vitesse de de vent) donc |W| est fluctuant.

    On souhaite faire varier "b" de sorte que la relation G = a*b*|W| reste vraie.

    De façon pratique l'ajustement de "b" est réalisé via un circuit imprimé.
    Ce circuit commande 14 microéléments de puissances différentes.
    Pour pouvoir ajuster "b" il faut réaliser une combinaison de microéléments (parmi ces 14) afin que la puissance apportée à "b" soit suffisante pour maintenir toujours vraie la relation G = a*b*|W| .

    En somme , l'algorithme que je cherche à écrire dois pouvoir faire la manœuvre suivante:

    Réaliser une combinaison (parmi les 14 puissances possibles) qui commandera au circuit imprimé la valeur de "b" à appliquer de sorte que la quantité du facteur naturel reçu "|W|" soit égale à G/(a*b).
    Autrement dit , pour que |W| = G/(a*b), faire la combinaison la plus adaptée;

    NB: je tiens à noter que W étant un facteur naturel, on ne peut pas prévoir à l'avance sa valeur, aussi que sur 1 minute W peut changer une bonne dizaine de fois.

    Merci à tous, pour les conseils et les pistes de réflexion!!

    Manu

  2. #2
    Expert confirmé
    Avatar de Auteur
    Profil pro
    Inscrit en
    Avril 2004
    Messages
    7 660
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2004
    Messages : 7 660
    Par défaut
    Bonjour,

    Dans le cadre de mon travail, je suis amené à écrire un algorithme pour un circuit imprimé.
    l'algorithme est, dans le domaine de l'informatique, destiné au développement d'un programme. Un circuit imprimé est dans le domaine de l'électronique : il s'agit d'une platine avec des pistes en cuivre sur laquelle on vient souder des composants. Il y a une ou plusieurs entrées et sorties.
    On ne fait pas vraiment d'algorithme en électronique.


    Pour ton problème, tu as donc un coefficient b = f(14 paramètres) de plus il faut que ta relation G = a*b*|W| reste vraie. Qu'est-ce que G ? Une donnée provenant d'abaques ? La façon dont tu poses le problème me fait penser à un système à réguler (régulation PID - proportionnelle, intégrale, dérivée) ?

    Je pense qu'un dispositif de type microcontrôleur, avec entrées / sorties pourrait répondre à ton problème.

  3. #3
    Futur Membre du Club
    Homme Profil pro
    Enseignant Chercheur
    Inscrit en
    Décembre 2021
    Messages
    5
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Manche (Basse Normandie)

    Informations professionnelles :
    Activité : Enseignant Chercheur
    Secteur : Enseignement

    Informations forums :
    Inscription : Décembre 2021
    Messages : 5
    Par défaut
    Bonjour Auteur,

    merci pour le retour!

    Bien vu! il s'agit en effet d'un système de régulation, plus précisément un régulateur de débits d'air prélevés. Ce régulateur est piloté par une carte électronique.
    En effet, le circuit n'a pas vocation à lire un programme, mais un "micro-processeur" a été ajouté au circuit pour pouvoir effectuer les commande et lire les programmes via une carte mémoire.

    "G" est tout simplement un débit d'air échantillonné. L'idée est donc de rendre "G" proportionnel à " |W| " (avec la prise en compte de "a" et de "b".)
    L'algorithme permettra d'envoyer l'instruction au régulateur de débits afin que celui-ci prélève un débit d'air "G" de sorte que G = a*b*|W|.
    Selon la valeur de |W|, le régulateur sera amené à faire des combinaisons (14 éléments) ou pas, pour maintenir vraie la relation G = a*b*|W|.

    je reste disponible si besoin de plus de détails

    merci,

    Manu

  4. #4
    Rédacteur/Modérateur

    Homme Profil pro
    Ingénieur qualité méthodes
    Inscrit en
    Décembre 2013
    Messages
    4 229
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Ingénieur qualité méthodes
    Secteur : Conseil

    Informations forums :
    Inscription : Décembre 2013
    Messages : 4 229
    Par défaut
    Tu parles de 14 microéléments avec des valeurs différentes.
    J'imagine que les 14 nombres sont connus. Peux tu nous donner ces 14 nombres. Il y certaines 'configurations' qui vont être très facile à traiter , alors que d'autres sont plus tordues.

  5. #5
    Futur Membre du Club
    Homme Profil pro
    Enseignant Chercheur
    Inscrit en
    Décembre 2021
    Messages
    5
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Manche (Basse Normandie)

    Informations professionnelles :
    Activité : Enseignant Chercheur
    Secteur : Enseignement

    Informations forums :
    Inscription : Décembre 2021
    Messages : 5
    Par défaut
    Bonjour tbc92!

    merci pour le retour,
    voici les valeurs des 14 éléments en question:
    0,28
    0,56
    1,13
    1,69
    2,26
    3,39
    4,52
    6,77
    9,03
    13,55
    18,06
    27,1
    36,13
    54,2


  6. #6
    Rédacteur/Modérateur

    Homme Profil pro
    Ingénieur qualité méthodes
    Inscrit en
    Décembre 2013
    Messages
    4 229
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Ingénieur qualité méthodes
    Secteur : Conseil

    Informations forums :
    Inscription : Décembre 2013
    Messages : 4 229
    Par défaut
    Bon, mauvaise nouvelle, mais pas complètement.

    Par exemple, pour arriver à 54.2, on peut choisir soit simplement 54.2, soit 36.13+18.06
    Mais on est quand même très proche de la configuration idéale.
    Si on se limite aux valeurs 0,28 0,56 1,13 2,26 4,52 9,03 18,06 36,13, on a un rapport du simple au double à chaque fois ... et c'était exactement ce que j'espérais.

    En fait, je pense que tu peux procéder ainsi :
    X est la valeur à 'atteindre'.
    On commence par les valeurs les plus grandes.
    Si X est plus grand que 54.2, alors on utilise le micro-élément 54.2, et on calcule ce qui reste : X=X-54.2
    Et on recommence:
    Si X est plus grand que 36.13, alors on utilise le micro-élément 36.13, et on calcule ce qui reste : X=X-36.13
    Etc etc

    Si on avait eu par exemple 10 12 15 19 24 30 37 45 54 64 75 87 100 114 , cette méthode ne marchait pas : pour faire 67, prendre 64 n'aurait pas été une bonne idée , il vaut mieux prendre 37+30
    Et donc, dans le cas où on a des valeurs plus ou moins quelconques, il faut beaucoup tâtonner. Assez difficile à programmer.

    Avec tes valeurs, l'algorithme proposé semble optimal.

  7. #7
    Futur Membre du Club
    Homme Profil pro
    Enseignant Chercheur
    Inscrit en
    Décembre 2021
    Messages
    5
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Manche (Basse Normandie)

    Informations professionnelles :
    Activité : Enseignant Chercheur
    Secteur : Enseignement

    Informations forums :
    Inscription : Décembre 2021
    Messages : 5
    Par défaut
    Merci !!!
    C'est une très bonne approche en effet!!!
    il faudra donc que l'algorithme soit structuré de sorte que le calcul débute par une comparaison de "W" aux valeurs des microéléments.
    Puis, en fonction de la valeur de laquelle il sera le plus proche (= ou < ou >), ajouter ou retrancher.

    Une question demeure toutefois.

    Exemple:
    supposons que "W"=37.44=X et S = 36.13 le débit (microélément) le plus proche de cette valeur de W.

    on aura dc S= X + (X - 36.13)

    Le microélément S sera donc sollicité pour générer le débit correspondant (soit 36.13 ).
    Par contre comment amener le prog à solliciter en plus un autre microélément pour le delta manquant? sachant surtout :

    1)- qu'il ne peut le faire qu'en réalisant une combinaison seulement qu'avec l'un (ou plusieurs) des microéléments existant, (donc débits fixes)?
    2)- que les microéléments ont des valeurs fixes qui ne vont pas forcement correspondre au delta ?
    3)- que "a" et "b" sont des constantes?

    j'avoue honnêtement que je suis perdu.
    Je souhaite surtout comprendre le principe pour une telle programmation.

    Merci à tous!!!

  8. #8
    Rédacteur/Modérateur

    Homme Profil pro
    Ingénieur qualité méthodes
    Inscrit en
    Décembre 2013
    Messages
    4 229
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Ingénieur qualité méthodes
    Secteur : Conseil

    Informations forums :
    Inscription : Décembre 2013
    Messages : 4 229
    Par défaut
    Puis, en fonction de la valeur de laquelle il sera le plus proche (= ou < ou >), ajouter ou retrancher.
    Non.

    Au départ, on considère que tous les microéléments sont débranchés. Et on va en brancher certains.
    Sur quel critère.
    On veut par exemple obtenir 37.44
    On regarde le micro-élément n°14 , valeur 54,2 ; 54,2 est plus grand que 37.44 donc on ne le prend pas.
    Puis on regarde le micro-élément n°13 , valeur 36,13 ; 36,13 est plus petit que 37.44, donc on branche ce micro-élément. Et une fois qu'on a décidé de le brancher, c'est définitif.
    Du coup, avec les 12 micro-éléments restants, on vise maintenant 37.44-36.13=1.31
    Les micro-éléments n°12 , 11 , 10 .... sont trop grands, le premier qui a une valeur inférieure à 1.31, c'est le n°3, avec une valeur de 1.13
    Ensuite, on se retrouve avec 1.31-1.13=0.18 et tous les microéléments ont une valeur supérieure à 0.18. Donc on n'en branche aucun autre.

    On se retrouve avec 36.13+1.13

    On constate que systématiquement, on se retrouve un petit peu en dessous de la valeur visée.
    Pour éviter ce problème, on peut commencer en disant qu'on vise 37.44 + 0.14 ; on ajoute systématiquement 0.14 ; Pourquoi +0.14 : c'est la moitié du micro-élément le plus petit.
    Et là, on tombera une fois sur 2 un peu en-dessus de la valeur visée, et une fois sur 2 un peu en-dessous.

    37.44+0.14=37.58
    On branche l'élément 36.13 ; reste donc 37.58-36.13=1.45
    Tous les éléments suivants sont supérieurs à 1.45.
    On branche l'élément 1.13 ; reste donc 1.45-1.13=0.32
    Et on branche l'élément 0.28
    Au final 37.44, c'est quasiment 36.13+1.13+0.28

    Tu peux être tenté de faire un peu autrement... mais il ne faut pas.

  9. #9
    Futur Membre du Club
    Homme Profil pro
    Enseignant Chercheur
    Inscrit en
    Décembre 2021
    Messages
    5
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Manche (Basse Normandie)

    Informations professionnelles :
    Activité : Enseignant Chercheur
    Secteur : Enseignement

    Informations forums :
    Inscription : Décembre 2021
    Messages : 5
    Par défaut
    Merci tbc92!!

    C'est en effet une des grandes limites à mon projet.
    Je ne parviendrai pas retomber tout a fait sur la valeur cible.

    Je vais écrire un prog comme tu l'as décrit, peut être qu'au fur et à mesure je verrai les options qui s'offrent à moi.

    Merci et très belles fêtes à tous!

Discussions similaires

  1. [débutant] pistes pour un filtrage de Strings
    Par frett dans le forum Algorithmes et structures de données
    Réponses: 1
    Dernier message: 27/08/2006, 15h59
  2. Recherche de pistes pour un problème d'optimisation
    Par TiKeuj dans le forum Algorithmes et structures de données
    Réponses: 6
    Dernier message: 15/08/2005, 15h50
  3. [VB.net] Piste pour Alias Macro (débutant)
    Par Petit padawan dans le forum Windows Forms
    Réponses: 3
    Dernier message: 26/07/2005, 20h17
  4. [SRC] Cherche piste pour TLabel orientable
    Par Kaejar dans le forum C++Builder
    Réponses: 16
    Dernier message: 08/06/2005, 17h13

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo