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

Embarqué Discussion :

Modification/ programmation attiny13


Sujet :

Embarqué

  1. #1
    Nouveau membre du Club
    Homme Profil pro
    electricien
    Inscrit en
    Janvier 2013
    Messages
    200
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Nord (Nord Pas de Calais)

    Informations professionnelles :
    Activité : electricien
    Secteur : Bâtiment

    Informations forums :
    Inscription : Janvier 2013
    Messages : 200
    Points : 34
    Points
    34
    Par défaut Modification/ programmation attiny13
    Bonjour, je suis à la recherche du connaisseur pour m'aider à comprendre et modifier un programme pour attiny13

    Les fichiers on était récupéré à cette adresse :http://libstock.mikroe.com/projects/...13-and-ds18b20

    J ai commander ceci pour la programmation
    http://fr.aliexpress.com/item/USB-IS...967931731.html

    http://fr.aliexpress.com/item/New-Pr...610451320.html

    http://fr.aliexpress.com/item/Free-s...619910814.html

    J'ai installé le logiciel Atmel studio, puis j'ai simplement ouvert le code .c je me retrouve donc avec ceci

    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
    Code:
    // Roman Toropov
    // Termostat
    
    char duty;
    unsigned int temp2write;
    
    void main() {
    
       DDB0_bit = 1;
       // duty = 0;
       PWM1_Init(_PWM1_FAST_MODE, _PWM1_PRESCALER_1, _PWM1_NON_INVERTED, 0);
    
     //--- Main loop
      do {
        //--- Perform temperature reading
        Ow_Reset(&PORTB, 2);                         // Onewire reset signal
        Ow_Write(&PORTB, 2, 0xCC);                   // Issue command SKIP_ROM
        Ow_Write(&PORTB, 2, 0x44);                   // Issue command CONVERT_T
        Delay_us(120);
    
        Ow_Reset(&PORTB, 2);
        Ow_Write(&PORTB, 2, 0xCC);                   // Issue command SKIP_ROM
        Ow_Write(&PORTB, 2, 0xBE);                   // Issue command READ_SCRATCHPAD
    
        temp2write =  Ow_Read(&PORTB, 2);
        temp2write = (Ow_Read(&PORTB, 2) << 8) + temp2write;
    
        //--- Format and display result on Lcd
      // if (temp2write & 0x8000) {
         // text[0] = '-';
         // temp2write = ~temp2write + 1;
         // }
    
      // Extract temp_whole
      temp2write = temp2write >> 4 ;
    
                 // min duty 20  max 30
      // if ((temp2write < 46) && (temp2write > 35)) { duty = (temp2write - 35) * 12; }
      if (temp2write > 37) { duty = (temp2write - 37) * 5 + 20; }
    
      if (temp2write > 45) { duty = 255; }
      if (temp2write < 38) { duty = 0; }
    
      PWM1_Set_Duty(duty);
    
      Delay_ms(3000);
    
      } while (1);
    
    }
    Je souhaiterais avoir une broche qui lorsque la temperature et supérieur a une consigne max alors il permutte une broche de 0 a 5v ou de 5v a 0(possibilité de choisir le sens de consigne dans le code )
    pendant un temps donné en seconde mais également un seuil de temperature de réarmement

    exemple délais 30 sec temperature 27
    si les 30 seconde sont atteint mes que le temperature dépasse toujours 27 alors il recommence le délais

    Cela et il possible ? Je precise que je n y connais rien et que je me lance dans l aventure .

    Merci de votre comprehension et pour vos explication .

  2. #2
    Modérateur

    Avatar de Vincent PETIT
    Homme Profil pro
    Consultant en Systèmes Embarqués
    Inscrit en
    Avril 2002
    Messages
    3 190
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 43
    Localisation : France, Pas de Calais (Nord Pas de Calais)

    Informations professionnelles :
    Activité : Consultant en Systèmes Embarqués
    Secteur : High Tech - Électronique et micro-électronique

    Informations forums :
    Inscription : Avril 2002
    Messages : 3 190
    Points : 11 573
    Points
    11 573
    Par défaut
    Salut,

    Tous les liens sont morts ou cassés ! Du coup on ne sait pas du tout ce que tu veux nous montrer.


    Citation Envoyé par moijerem Voir le message
    Cela et il possible ?
    Oui c'est possible !


    Citation Envoyé par moijerem Voir le message
    Je precise que je n y connais rien et que je me lance dans l aventure .
    Alors ça va être comme ci, toi, tu expliquais à un fleuriste où il doit acheter un TGBT comment il doit le poser et le câbler tout en étant conforme à la NF C 15-100.
    Ce n'est jamais évident ne serait ce que parce qu'on ne parle pas le même langage.


    Citation Envoyé par moijerem Voir le message
    J'ai installé le logiciel Atmel studio, puis j'ai simplement ouvert le code .c je me retrouve donc avec ceci

    Code c : 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
    Code:
    // Roman Toropov
    // Termostat
     
    char duty;
    unsigned int temp2write;
     
    void main() {
     
       DDB0_bit = 1;
       // duty = 0;
       PWM1_Init(_PWM1_FAST_MODE, _PWM1_PRESCALER_1, _PWM1_NON_INVERTED, 0);
     
     //--- Main loop
      do {
        //--- Perform temperature reading
        Ow_Reset(&PORTB, 2);                         // Onewire reset signal
        Ow_Write(&PORTB, 2, 0xCC);                   // Issue command SKIP_ROM
        Ow_Write(&PORTB, 2, 0x44);                   // Issue command CONVERT_T
        Delay_us(120);
     
        Ow_Reset(&PORTB, 2);
        Ow_Write(&PORTB, 2, 0xCC);                   // Issue command SKIP_ROM
        Ow_Write(&PORTB, 2, 0xBE);                   // Issue command READ_SCRATCHPAD
     
        temp2write =  Ow_Read(&PORTB, 2);
        temp2write = (Ow_Read(&PORTB, 2) << 8) + temp2write;
     
        //--- Format and display result on Lcd
      // if (temp2write & 0x8000) {
         // text[0] = '-';
         // temp2write = ~temp2write + 1;
         // }
     
      // Extract temp_whole
      temp2write = temp2write >> 4 ;
     
                 // min duty 20  max 30
      // if ((temp2write < 46) && (temp2write > 35)) { duty = (temp2write - 35) * 12; }
      if (temp2write > 37) { duty = (temp2write - 37) * 5 + 20; }
     
      if (temp2write > 45) { duty = 255; }
      if (temp2write < 38) { duty = 0; }
     
      PWM1_Set_Duty(duty);
     
      Delay_ms(3000);
     
      } while (1);
     
    }
    Ce programme n'a pas l'air complet et si je fais un gros résumé il modifie le rapport cyclique d'un signal PWM (MLI en français) en fonction d'une température et accessoirement il l'affiche sur un afficheur LCD. D'après le premier lien que tu as posté, il s'agit d'un programme de MicroElktronica qui est un outil super fermé avec des bibliothèques déjà faite mais surtout typiques et intégrées à cet l'outil. C'est surement pour ça que je ne vois aucun #include <quelque_chose.h>


    Citation Envoyé par moijerem Voir le message
    Je souhaiterais avoir une broche qui lorsque la temperature et supérieur a une consigne max alors il permutte une broche de 0 a 5v ou de 5v a 0(possibilité de choisir le sens de consigne dans le code )
    pendant un temps donné en seconde mais également un seuil de temperature de réarmement

    exemple délais 30 sec temperature 27
    si les 30 seconde sont atteint mes que le temperature dépasse toujours 27 alors il recommence le délais
    Ok pour le cahier des charges mais il n'est pas encore assez complet pour répondre.
    - Est ce que la sonde de température est déportée plus loin que l'électronique où bien tu mesures la température localement ?
    - Je suppose que tu n'as pas besoin d'affichage contrairement au programme que tu as posté ?

    Pourquoi je dis ça ?
    Imaginons que tu souhaites mesurer la température à l'endroit où se trouve l'électronique (le micro-contrôleur) alors le choix d'un Attiny13 est une erreur car tu devras y connecter un capteur de température. Alors que si tu prends plutôt un Attiny25, lui, il a un capteur de température interne donc plus besoin d'en mettre un à côté.

    Le Attiny 13 ou 25 n'ont pas beaucoup de broches, 8 au total, donc faut être sur de ne pas avoir oublié un truc à la fin. Genre si tu oublies de dire qu'il y a un afficheur LCD a gérer alors tu peux passer tout de suite à un micro plus gros en nombre de broche. Tu vois ce que je veux dire ?

    A+
    La science ne nous apprend rien : c'est l'expérience qui nous apprend quelque chose.
    Richard Feynman

  3. #3
    Nouveau membre du Club
    Homme Profil pro
    electricien
    Inscrit en
    Janvier 2013
    Messages
    200
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Nord (Nord Pas de Calais)

    Informations professionnelles :
    Activité : electricien
    Secteur : Bâtiment

    Informations forums :
    Inscription : Janvier 2013
    Messages : 200
    Points : 34
    Points
    34
    Par défaut
    Merci pour cette réponse complete , cela fait plaisir de voir une personne qui essaye de me comprendre .

    Pour le tgbt (transfo general basse tension pas de souci pour moi ni pour le normes =) ) blague a parts

    Je n est pas besoin afficheur
    Je peut utiliser un autre code celui ci me permettait juste de montre une partit de ce que je souhaite (je suis partit sur ce câblage )

    Ma sonde doit être déporté( moin de 20 cm mais placé dans un bloque alu , d ou le choix de la ds18B20 et e l attiny13

    J ai besoin d une broche qui commute a partir d une certaine temperature (appelé temperature limite), une fois cette limite atteinte le programme passe une broche en états hauts (5v ) attend un certain delay avant de re-controlé la temperature . Si la température et passe en dessous d une temperature ideal alors il passe cette broche en low sinon il recommence le delay puis contrôle de nouveaux

    J ai besoin d une broche qui me fera varier la vitesse d un ventilateur via un mosfet
    J i également besoin d une broche qui pourrais m allumer une led orange pour prévenir d une surchauffe et une le rouge lorsque la temperature limite et atteinte

    pour le temperature j ai donc
    Temp1 déclenchement du ventilo (ventillo 1%
    Plage1 plage entre la temperature de declenchement et la fin de la courbe (ventillo 100%) (exemple temp1 20°) + (plage1=12,5°) = (ventillo 100%(valeur 32,5°)
    plage2 seuil de coupure apres le ventillo a 100% (exemple 32,5+ plage 2 (10°) = 42,5 action coupure via la broche de ''coupure" 0/5V
    temp3 seuil de remise en service (exemple 25°)
    Led orange alumé a seuil de coupure -5°
    Led rouge alumé seuil coupure atteint

    pour les broche j ai donc
    1 pour le data de la sonde ds18B20
    1 pour le moufte du ventilo
    1 pour le coupure (signal 0/5V)
    1 pour une led orange
    1 pour une led rouge

    J espère avoir étais claire =)

    Je tente de nouveaux les lien

    http://fr.aliexpress.com/item/New-Pr...610451320.html

    http://fr.aliexpress.com/item/USB-IS...967931731.html

    http://fr.aliexpress.com/item/Frress...294887967.html
    je tente pour voir

    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
    
    
    
    #include <OneWire.h> // Inclusion de la librairie OneWire
     
    //#define DS18B20 0x28     // Adresse 1-Wire du DS18B20     //sans avoir besoin de fixer l adresse de la sonde connecter 
    #define BROCHE_ONEWIRE 7 // Broche utilisée pour le bus 1-Wire
      
    
    
    int Temp1 = 0;      //declenchement ventillo
    int temp2 = 0;    // fin de courbe ventillo 
    int temp3 = 0;    // seuil coupure
    int temp4 = 0;   // seuil remise en service
    int outputPinsonde = ;//broche sonde ds18B20
    int outputPinLedorange = ;//broche led orange
    int outputPinLedorange = ;//broche led rouge
    int outputPinventillo = ;//broche mosfet ventillo
     
    
    void setup() {
    
    }
    
    void loop() {
      
    }
    Merci a toi d essayer de me comprendre , je suis ouvert a tout les simplification possible et logique , a ce que je voit tu travaille de nuit aussi non ?

  4. #4
    Modérateur

    Avatar de Vincent PETIT
    Homme Profil pro
    Consultant en Systèmes Embarqués
    Inscrit en
    Avril 2002
    Messages
    3 190
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 43
    Localisation : France, Pas de Calais (Nord Pas de Calais)

    Informations professionnelles :
    Activité : Consultant en Systèmes Embarqués
    Secteur : High Tech - Électronique et micro-électronique

    Informations forums :
    Inscription : Avril 2002
    Messages : 3 190
    Points : 11 573
    Points
    11 573
    Par défaut
    Citation Envoyé par moijerem Voir le message
    Je n est pas besoin afficheur
    Ma sonde doit être déporté( moin de 20 cm mais placé dans un bloque alu , d ou le choix de la ds18B20 et e l attiny13
    J ai besoin d une broche qui commute a partir d une certaine temperature (appelé temperature limite), une fois cette limite atteinte le programme passe une broche en états hauts (5v ) attend un certain delay avant de re-controlé la temperature . Si la température et passe en dessous d une temperature ideal alors il passe cette broche en low sinon il recommence le delay puis contrôle de nouveaux
    J ai besoin d une broche qui me fera varier la vitesse d un ventilateur via un mosfet
    J i également besoin d une broche qui pourrais m allumer une led orange pour prévenir d une surchauffe et une le rouge lorsque la temperature limite et atteinte

    Exemple
    pour le temperature j ai donc
    Temp1 déclenchement du ventilo (ventillo 1%
    Plage1 plage entre la temperature de declenchement et la fin de la courbe (ventillo 100%) (exemple temp1 20°) + (plage1=12,5°) = (ventillo 100%(valeur 32,5°)
    plage2 seuil de coupure apres le ventillo a 100% (exemple 32,5+ plage 2 (10°) = 42,5 action coupure via la broche de ''coupure" 0/5V
    temp3 seuil de remise en service (exemple 25°)
    Led orange alumé a seuil de coupure -5°
    Led rouge alumé seuil coupure atteint
    Si je résume, lorsque la température augmente, tu souhaites générer un signal PWM allant de 1% à 100% correspondant respectivement à Tmin et Tmax. Si la température continue de monter et que tu te rapproches de Tcritique, tu allumes une LED orange pour prévenir que tu vas passer une broche à 1 (ou à 0). Si jamais tu atteints Tcritique, alors tu allumes une LED rouge et tu passes une broche à 1 (ou à 0).

    A ce moment là j'imagine que la température va descendre.

    Si la température diminue alors tu souhaites qu'arriver à Trestart le processus redémarre et recommence au début de mon résumé.

    A quoi sert le delay que j'ai souligné dans ton message d'origine ? J'ai l'impression que tu peux t'en passer.


    Citation Envoyé par moijerem Voir le message
    pour les broche j ai donc
    1 pour le data de la sonde ds18B20
    1 pour le moufte du ventilo
    1 pour le coupure (signal 0/5V)
    1 pour une led orange
    1 pour une led rouge
    Ok

    Pour le programmateur et l'adaptateur je ne les connais pas, je n'ai pas d'avis dessus et quant au régulateur de tension ça dépend de ce que tu alimentes, en plus de l'électronique.

    D'ailleurs :
    La sortie de coupure doit alimenter quoi ? Tu ne pourras tirer que 40mA maximum dessus.
    Le montage va être alimenter par quoi ? Le secteur ? Une batterie ?


    Citation Envoyé par moijerem Voir le message
    je tente pour voir

    Code C : 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
     
    #include <OneWire.h> // Inclusion de la librairie OneWire
     
    //#define DS18B20 0x28     // Adresse 1-Wire du DS18B20     //sans avoir besoin de fixer l adresse de la sonde connecter 
    #define BROCHE_ONEWIRE 7 // Broche utilisée pour le bus 1-Wire
     
     
     
    int Temp1 = 0;      //declenchement ventillo
    int temp2 = 0;    // fin de courbe ventillo 
    int temp3 = 0;    // seuil coupure
    int temp4 = 0;   // seuil remise en service
    int outputPinsonde = ;//broche sonde ds18B20
    int outputPinLedorange = ;//broche led orange
    int outputPinLedorange = ;//broche led rouge
    int outputPinventillo = ;//broche mosfet ventillo
     
     
    void setup() {
     
    }
     
    void loop() {
     
    }
    Là tu passes de MikroElektronica à Arduino (ça se voit tout de suite à setup et loop) alors que tu as Atmel Studio.... je ne comprends plus mais il faut que tu choisisses un outil de développement !

    A+
    La science ne nous apprend rien : c'est l'expérience qui nous apprend quelque chose.
    Richard Feynman

  5. #5
    Nouveau membre du Club
    Homme Profil pro
    electricien
    Inscrit en
    Janvier 2013
    Messages
    200
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Nord (Nord Pas de Calais)

    Informations professionnelles :
    Activité : electricien
    Secteur : Bâtiment

    Informations forums :
    Inscription : Janvier 2013
    Messages : 200
    Points : 34
    Points
    34
    Par défaut
    Si je résume, lorsque la température augmente, tu souhaites générer un signal PWM allant de 1% à 100% correspondant respectivement à Tmin et Tmax. Si la température continue de monter et que tu te rapproches de Tcritique, tu allumes une LED orange pour prévenir que tu vas passer une broche à 1 (ou à 0). Si jamais tu atteints Tcritique, alors tu allumes une LED rouge et tu passes une broche à 1 (ou à 0).

    A ce moment là j'imagine que la température va descendre.

    Si la température diminue alors tu souhaites qu'arriver à Trestart le processus redémarre et recommence au début de mon résumé.

    A quoi sert le delay que j'ai souligné dans ton message d'origine ? J'ai l'impression que tu peux t'en passer.
    Tu a tout a fait raison le delay ne sert a rien dans ce cas de figure , je voix que tu a compris le principe de ce que je recherche

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    D'ailleurs :
     La sortie de coupure doit alimenter quoi ? Tu ne pourras tirer que 40mA maximum dessus.
     Le montage va être alimenter par quoi ? Le secteur ? Une batterie ?
    Le montage sera alimente via un transformateur dc 12v suivi d un régulateur 5v
    Pour ce qui est de la broche elle commande la broche "en" de ce composant (x5)Donc logiquement aucun souci ?
    http://www2.st.com/content/ccc/resou...CD00185795.pdf

    Pour ce qui est du code il va falloir m aider :/ désolé .J essaye de faire au mieux

  6. #6
    Modérateur

    Avatar de Vincent PETIT
    Homme Profil pro
    Consultant en Systèmes Embarqués
    Inscrit en
    Avril 2002
    Messages
    3 190
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 43
    Localisation : France, Pas de Calais (Nord Pas de Calais)

    Informations professionnelles :
    Activité : Consultant en Systèmes Embarqués
    Secteur : High Tech - Électronique et micro-électronique

    Informations forums :
    Inscription : Avril 2002
    Messages : 3 190
    Points : 11 573
    Points
    11 573
    Par défaut
    Citation Envoyé par moijerem Voir le message
    Le montage sera alimente via un transformateur dc 12v suivi d un régulateur 5v
    Pour ce qui est de la broche elle commande la broche "en" de ce composant (x5)Donc logiquement aucun souci ?
    http://www2.st.com/content/ccc/resou...CD00185795.pdf
    Il te sert à quoi le STCS2A ?

    Pour qu'une LED brille bien elle a besoin de 15 à 20mA et
    Chaque broche du Attiny peut fournir ce courant. Donc tu peux directement connecter les LED rouge et orange sur deux broches du micro (avec des résistances de limitation bien entendu)

    Comme tu souhaites piloter un transistor MOSFET avec le PWM je ne vois l'intérêt du STCS2A ? A moins que tu voulais piloter le ventilateur avec (car le STCS2A à un MOSFET à l'intérieur) ?
    La science ne nous apprend rien : c'est l'expérience qui nous apprend quelque chose.
    Richard Feynman

  7. #7
    Nouveau membre du Club
    Homme Profil pro
    electricien
    Inscrit en
    Janvier 2013
    Messages
    200
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Nord (Nord Pas de Calais)

    Informations professionnelles :
    Activité : electricien
    Secteur : Bâtiment

    Informations forums :
    Inscription : Janvier 2013
    Messages : 200
    Points : 34
    Points
    34
    Par défaut
    Citation Envoyé par Vincent PETIT Voir le message
    Il te sert à quoi le STCS2A ?

    il me sert a réguler des led de puissance qui non rien a voir avec les led pour l information

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    Pour qu'une LED brille bien elle a besoin de 15 à 20mA et 
    Chaque broche du Attiny peut fournir ce courant. Donc tu peux directement connecter les LED rouge et orange sur deux broches du micro (avec des résistances de limitation bien entendu)
    Je suis tout a fait d accord avec toi

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Comme tu souhaites piloter un transistor MOSFET avec le PWM je ne vois l'intérêt du STCS2A ? A moins que tu voulais piloter le ventilateur avec (car le STCS2A à un MOSFET à l'intérieur) ?
    Le stc2a me pilote les led de puissance et le attiny me pilote le ventillo via le mosfet ( il joue le role de thermostat intelligent )

  8. #8
    Modérateur

    Avatar de Vincent PETIT
    Homme Profil pro
    Consultant en Systèmes Embarqués
    Inscrit en
    Avril 2002
    Messages
    3 190
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 43
    Localisation : France, Pas de Calais (Nord Pas de Calais)

    Informations professionnelles :
    Activité : Consultant en Systèmes Embarqués
    Secteur : High Tech - Électronique et micro-électronique

    Informations forums :
    Inscription : Avril 2002
    Messages : 3 190
    Points : 11 573
    Points
    11 573
    Par défaut
    D'accord pour le STCS2A.

    Bien évidemment tu te doutes que je ne connais pas tous les micro-contrôleurs qui existent et je n'ai pas non plus tous les outils de programmation qu'on peut trouver.
    Je vais t'aider mais il ne va pas falloir aller trop vite car même si j'ai travaillé sur différents micro (Freescale, NXP, Texas Instruments et Microchip) c'est bien Atmel que je connais le moins :

    - Je dois apprivoiser ton Attiny13
    - Comprendre le protocole 1Wire du capteur de température

    Tous les micro se ressemblent mais il y a quand même quelques subtilités.
    C'est donc toi qui va tester !
    La science ne nous apprend rien : c'est l'expérience qui nous apprend quelque chose.
    Richard Feynman

  9. #9
    Nouveau membre du Club
    Homme Profil pro
    electricien
    Inscrit en
    Janvier 2013
    Messages
    200
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Nord (Nord Pas de Calais)

    Informations professionnelles :
    Activité : electricien
    Secteur : Bâtiment

    Informations forums :
    Inscription : Janvier 2013
    Messages : 200
    Points : 34
    Points
    34
    Par défaut
    Pas de souci , c est déjà bien gentil de m aider . je suis donc ton manœuvre

  10. #10
    Nouveau membre du Club
    Homme Profil pro
    electricien
    Inscrit en
    Janvier 2013
    Messages
    200
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Nord (Nord Pas de Calais)

    Informations professionnelles :
    Activité : electricien
    Secteur : Bâtiment

    Informations forums :
    Inscription : Janvier 2013
    Messages : 200
    Points : 34
    Points
    34
    Par défaut
    Pour la ds18b20 , comme il y n y en a qu une sur 1 seul broche . Si je ne dit pas de bêtise pas besoin de précisé l adresse Mac de chaque sonde si on ne depasse pas 1 composant par broche . Car dans la conception que j envisage je vais Faire fabrique une 30 de plaque et j aimerais ne pas avoir à renseigné chaque adresse de chaque sonde . Logiquement c est possible je te laisse mon confirmé . Dans le code précédent le dev précise simplement' la broche ou le composant et connecter

  11. #11
    Modérateur

    Avatar de Vincent PETIT
    Homme Profil pro
    Consultant en Systèmes Embarqués
    Inscrit en
    Avril 2002
    Messages
    3 190
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 43
    Localisation : France, Pas de Calais (Nord Pas de Calais)

    Informations professionnelles :
    Activité : Consultant en Systèmes Embarqués
    Secteur : High Tech - Électronique et micro-électronique

    Informations forums :
    Inscription : Avril 2002
    Messages : 3 190
    Points : 11 573
    Points
    11 573
    Par défaut
    Citation Envoyé par moijerem Voir le message
    Pour la ds18b20 , comme il y n y en a qu une sur 1 seul broche . Si je ne dit pas de bêtise pas besoin de précisé l adresse Mac de chaque sonde si on ne depasse pas 1 composant par broche . Car dans la conception que j envisage je vais Faire fabrique une 30 de plaque et j aimerais ne pas avoir à renseigné chaque adresse de chaque sonde . Logiquement c est possible je te laisse mon confirmé . Dans le code précédent le dev précise simplement' la broche ou le composant et connecter
    C'est aussi comme ça que j'ai compris.

    On va commencer par étape pour que ce soit plus simple pour toi et surtout pour moi qui n'ait pas le matos sous les yeux.

    Voici un programme test pour Atmel Studio, il n'est pas de moi mais il me paraît être une très bonne base de départ. J'ai vérifié la configuration des registres et pour moi il fonctionne.
    Code C : 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
    // 9.6 MHz, built in resonator
    #define F_CPU 9600000
    #define LED PB1 
     
     
    #include <avr/io.h>
     
    void adc_setup (void)
    {
        // Set the ADC input to PB2/ADC1
        ADMUX |= (1 << MUX0);
        ADMUX |= (1 << ADLAR);
     
        // Set the prescaler to clock/128 & enable ADC
        // At 9.6 MHz this is 75 kHz.
        // See ATtiny13 datasheet, Table 14.4.
        ADCSRA |= (1 << ADPS1) | (1 << ADPS0) | (1 << ADEN);
    }
     
    int adc_read (void)
    {
        // Start the conversion
        ADCSRA |= (1 << ADSC);
     
        // Wait for it to finish
        while (ADCSRA & (1 << ADSC));
     
        return ADCH;
    }
     
    void pwm_setup (void)
    {
        // Set Timer 0 prescaler to clock/8.
        // At 9.6 MHz this is 1.2 MHz.
        // See ATtiny13 datasheet, Table 11.9.
        TCCR0B |= (1 << CS01);
     
        // Set to 'Fast PWM' mode
        TCCR0A |= (1 << WGM01) | (1 << WGM00);
     
        // Clear OC0B output on compare match, upwards counting.
        TCCR0A |= (1 << COM0B1);
    }
     
    void pwm_write (int val)
    {
        OCR0B = val;
    }
     
    int main (void)
    {
        int adc_in;
     
        // LED is an output.
        DDRB |= (1 << LED);  
     
        adc_setup();
        pwm_setup();
     
        while (1) {
            // Get the ADC value
            adc_in = adc_read();
            // Now write it to the PWM counter
            pwm_write(adc_in);
        }
    }
    Et voilà le schéma de câblage de base pour ce programme.

    Nom : Capture du 2016-05-11 22:27:08.png
Affichages : 678
Taille : 17,6 Ko

    De gauche à droite :
    R1 et C2 permet un démarrage propre du micro, c'est à dire un démarrage une fois l'alimentation +5V stable et pas un démarrage du micro en même temps que le démarrage de l'alimentation car là on peut voir des choses bizarres. Au premier démarrage C2 sera déchargé (vide), il y aura donc 0V à ses bornes et le micro sera maintenu en RESET. Puis la tension aux bornes de C2 va augmenter de manière exponentielle à raison de (R1 * C2 = 1ms) et arrivera un moment, vers 5ms, C2 sera chargé à +5V ce qui relachera la broche RESET du micro et celui-ci démarrera proprement.

    R3 et la LED L1 vont permettre de voir/simuler le signal PWM qui sera destiné au MOSFET de puissance pour le ventillateur. Lorsqu'on envoi un signal PWM qui varie de 1% à 100% sur une LED, on voit sa luminosité varier ce qui permet de voir si le PWM fonctionne. R3 permet de limiter le courant à 20mA dans la LED.

    R2 est un simple potentiomètre linéaire qui permettra de simuler le futur capteur de température. Ça valeur n'a pas trop d'importance pour les tests mais il vaut mieux ne pas dépasser les 100k car l'entrée PB2, au quel il est relié, demande du courant pour fonctionner correctement.

    C1 est un condensateur de découplage de l'alimentation +5V, il est un réservoir d'énergie au cas où l'alimentation aurait des légères variations/creux de tension etc... au quel cas c'est lui qui y paliera.

    R2 simule, le temps des tests, le capteur de température.
    L1 simule, le temps des tests, le ventillateur.

    Avec ce programme et mon schéma tu devrais pouvoir faire varier la luminosité de L1 (futur ventillateur) en jouant avec la vis sur le potentiomètre (futur capteur de température).

    A tout hasard tu n'as pas un oscilloscope pour tester ?

    A+

    ps : Tu es de où dans le Nord Pas de Calais ? Moi à 15km au SUD de Arras.
    La science ne nous apprend rien : c'est l'expérience qui nous apprend quelque chose.
    Richard Feynman

  12. #12
    Nouveau membre du Club
    Homme Profil pro
    electricien
    Inscrit en
    Janvier 2013
    Messages
    200
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Nord (Nord Pas de Calais)

    Informations professionnelles :
    Activité : electricien
    Secteur : Bâtiment

    Informations forums :
    Inscription : Janvier 2013
    Messages : 200
    Points : 34
    Points
    34
    Par défaut
    Malheureusement non ancien nordiste réfugier dans le sud sur Toulouse . Pour ce qui est de l oscilloscope j en est un pas de souci j ai tout compris hormis que l on simule le capteur ds18b20 comme une variation de courant alors que c est un capteur numérique ?

  13. #13
    Modérateur

    Avatar de Vincent PETIT
    Homme Profil pro
    Consultant en Systèmes Embarqués
    Inscrit en
    Avril 2002
    Messages
    3 190
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 43
    Localisation : France, Pas de Calais (Nord Pas de Calais)

    Informations professionnelles :
    Activité : Consultant en Systèmes Embarqués
    Secteur : High Tech - Électronique et micro-électronique

    Informations forums :
    Inscription : Avril 2002
    Messages : 3 190
    Points : 11 573
    Points
    11 573
    Par défaut
    Ok pour l'oscillo (ça aidera).

    Oui, on va d'abord simuler le capteur numérique par un potentiomètre (analogique) branché sur le micro. Mais ça c'est dans un premier temps après que le PWM soit validé ensuite on remplacera le code + le potentiomètre par un code qui gère la sonde DS18B20.

    Croit moi il vaut mieux passer par cette étape car d'expérience je peux te dire que si on implémente tout d'un coup (PWM + Algorithme + gestion du 1-Wire + les LED indicateurs etc...) et que ça couille et bien on se retrouve avec un problème indémerdable par ce qu'on ne sait pas par quel bout le prendre et pire encore par moment tu penses trouver le problème et tu en génères un autre sans t'en rendre compte. Vu qu'on fait tout à distance laisse tombé, on pourrait y passer des heures.

    Généralement, lorsqu'on débute en programmation ou même en électronique, on fait tous la même erreur. On essaye de faire le tout d'un coup, tête baissé sur le clavier, et vu que ça marche jamais la première fois et bien à la fin on ne s'y retrouve plus dans la 100ène de ligne de programme et on tourne en rond un long moment. C'est comme ci un débutant, dans ton métier, essayait d'amener tous les câbles de son installation au niveau de son tableau électrique et seulement quand il a fini, il se décide de faire son repérage... il est mal... toi tu aurais été prudent et en tant que pro, tu fais ton repérage en allant et pas à la fin. C'est ce que je fais aussi en te faisant remplacer le DS18B20 par un simple potentiomètre analogique pour valider le PWM et le futur algorithme du thermostat à seuil
    La science ne nous apprend rien : c'est l'expérience qui nous apprend quelque chose.
    Richard Feynman

  14. #14
    Modérateur

    Avatar de Vincent PETIT
    Homme Profil pro
    Consultant en Systèmes Embarqués
    Inscrit en
    Avril 2002
    Messages
    3 190
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 43
    Localisation : France, Pas de Calais (Nord Pas de Calais)

    Informations professionnelles :
    Activité : Consultant en Systèmes Embarqués
    Secteur : High Tech - Électronique et micro-électronique

    Informations forums :
    Inscription : Avril 2002
    Messages : 3 190
    Points : 11 573
    Points
    11 573
    Par défaut
    Au fait, si c'est pas indiscret, c'est pour faire quoi exactement ?

    Un ventilateur + Led de puissance + une sonde de température sur un bloc d'alu + des indicateurs ????? Je vois pas bien la finalité.
    La science ne nous apprend rien : c'est l'expérience qui nous apprend quelque chose.
    Richard Feynman

  15. #15
    Nouveau membre du Club
    Homme Profil pro
    electricien
    Inscrit en
    Janvier 2013
    Messages
    200
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Nord (Nord Pas de Calais)

    Informations professionnelles :
    Activité : electricien
    Secteur : Bâtiment

    Informations forums :
    Inscription : Janvier 2013
    Messages : 200
    Points : 34
    Points
    34
    Par défaut
    Actuellement je suis au boulots et j attend toujours le programmateur j espère le recevoir bientôt j ai hâte et j aimerais aussi comprendre le code pour un jour espèrè partir de 0

    C est pour un gros projecteur à led
    Et crée une gestion de la température du dissipateur ainsi qu une sécurité

  16. #16
    Modérateur

    Avatar de Vincent PETIT
    Homme Profil pro
    Consultant en Systèmes Embarqués
    Inscrit en
    Avril 2002
    Messages
    3 190
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 43
    Localisation : France, Pas de Calais (Nord Pas de Calais)

    Informations professionnelles :
    Activité : Consultant en Systèmes Embarqués
    Secteur : High Tech - Électronique et micro-électronique

    Informations forums :
    Inscription : Avril 2002
    Messages : 3 190
    Points : 11 573
    Points
    11 573
    Par défaut
    D'accord, je comprends mieux le régulateur de tension maintenant !
    Tiens moi au jus dès que tu as reçu ton matos.

    A+
    La science ne nous apprend rien : c'est l'expérience qui nous apprend quelque chose.
    Richard Feynman

  17. #17
    Nouveau membre du Club
    Homme Profil pro
    electricien
    Inscrit en
    Janvier 2013
    Messages
    200
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Nord (Nord Pas de Calais)

    Informations professionnelles :
    Activité : electricien
    Secteur : Bâtiment

    Informations forums :
    Inscription : Janvier 2013
    Messages : 200
    Points : 34
    Points
    34
    Par défaut
    Il me tarde peut être demain on croise les doigts

  18. #18
    Modérateur

    Avatar de Vincent PETIT
    Homme Profil pro
    Consultant en Systèmes Embarqués
    Inscrit en
    Avril 2002
    Messages
    3 190
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 43
    Localisation : France, Pas de Calais (Nord Pas de Calais)

    Informations professionnelles :
    Activité : Consultant en Systèmes Embarqués
    Secteur : High Tech - Électronique et micro-électronique

    Informations forums :
    Inscription : Avril 2002
    Messages : 3 190
    Points : 11 573
    Points
    11 573
    Par défaut
    Pour le code, je te l'expliquerai et de toute façon tu sera amené à mettre les doigts dedans ne serait ce que pour les réglages.

    Qu'est ce qui chauffe exactement ? J'imagine que ce n'est pas les LED de puissance (puisque ce n'est pas incandescent) mais plutôt le régulateur qui doit donner du courant aux LED ?

    Tout ça, les problèmes de température et de dissipateur, ça se calcul avec les docs constructeurs des composants.
    Le moment venu on pourra y regarder si tu veux.

    Allez je te laisse bosser et moi je vais me coucher

    ps : Je ne travaille pas de nuit mais je suis un couche tard, je bosse chez ERDF. J'étais développeur de matériel électronique et "je suis devenu un peu électricien aussi"

    On bosse la nuit dans le bâtiment ?
    La science ne nous apprend rien : c'est l'expérience qui nous apprend quelque chose.
    Richard Feynman

  19. #19
    Nouveau membre du Club
    Homme Profil pro
    electricien
    Inscrit en
    Janvier 2013
    Messages
    200
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Nord (Nord Pas de Calais)

    Informations professionnelles :
    Activité : electricien
    Secteur : Bâtiment

    Informations forums :
    Inscription : Janvier 2013
    Messages : 200
    Points : 34
    Points
    34
    Par défaut A
    Je travaille dans l aéronautique sur l a350 de airbus au rec (rework electrical)
    On parle de 75w de led sur une surface de 120x80 , tu comprend donc la nécessiter d avoir un contrôle sur les petit bêtes
    Pas de souci pour le calcul du dissipateur thermique , ce sera avec plaisir . On pourra par la suite échanger via d autre moyen Skype ou autre c est toujours sympa de faire des connaissances et je T expliquerais tout le projet qui découle derrière celui ci

  20. #20
    Nouveau membre du Club
    Homme Profil pro
    electricien
    Inscrit en
    Janvier 2013
    Messages
    200
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Nord (Nord Pas de Calais)

    Informations professionnelles :
    Activité : electricien
    Secteur : Bâtiment

    Informations forums :
    Inscription : Janvier 2013
    Messages : 200
    Points : 34
    Points
    34
    Par défaut
    Pour info je n est toujours rien reçus

Discussions similaires

  1. [FB4] Aide modification programme
    Par bensefaj dans le forum Flex
    Réponses: 5
    Dernier message: 18/07/2013, 09h48
  2. empecher modifications programme sas
    Par herkitz dans le forum Administration et Installation
    Réponses: 4
    Dernier message: 23/08/2010, 18h16
  3. Modification programme portCOM
    Par cyriltec dans le forum C#
    Réponses: 1
    Dernier message: 12/03/2010, 11h34
  4. Programme de modification de XML en fonction de conditions
    Par greg2 dans le forum XML/XSL et SOAP
    Réponses: 2
    Dernier message: 31/07/2006, 08h20

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