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é

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre confirmé
    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
    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 252
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 44
    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 252
    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+

  3. #3
    Membre confirmé
    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
    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 252
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 44
    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 252
    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+

  5. #5
    Membre confirmé
    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
    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 252
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 44
    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 252
    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) ?

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