De l'Arduino au langage C standard avec AVR Studio - Page 13
Discussion fermée
Page 13 sur 21 PremièrePremière 13 DernièreDernière
Affichage des résultats 361 à 390 sur 614

De l'Arduino au langage C standard avec AVR Studio



  1. #361
    gegel62

    Re : De l'Arduino au langage C standard avec AVR Studio


    ------

    Hello tous,

    le plus simple pour moi pour l'instant semble donc d'utiliser AVRdude / AVRdudess.

    Pour ce qui est du debugage, la platineAtmega328P-Xmini semble très intéressante. J'imagine que si on met au point un croquis pour une application donnée sur cette platine, on peut recopier le même croquis sur un Arduino (ou plus tard un 328_P nu avec le programmateur qui va bien) et ainsi libérer la platine Xmini pour d'autres applications .
    Je peux envisager cet achat en plus du matériel qui sera (ou serait ?) défini plus ou moins comme standard entre nous. (je changerai de voiture plus tard... ).

    Au fait, simple curiosité de ma part, je suppose que la plupart d'entre nous étudient les micros en vue de réaliser des montages (domotique, robotique, jeux ou autres) et non pas seulement pour le plaisir d'apprendre la programmation ?
    Bien sûr je comprends bien que ce thread est centré sur la programmation, mais ce serait quand même intéressant de savoir ce qui est réalisé par les membres du groupe.
    Pour moi c'est facile: encore rien, je n'ai fait que les exos du MOOC, et encore pas la dernière semaine...
    Mais j'ai en vue:
    - détection et alarme en cas d'extinction de flamme sur ma chaudière et mon chauffe-eau. C'est toujours quand on est sous la douche qu'on voit qu'elle s'est éteinte 12 heures plus tôt...
    - régulation de vitesse avec asservissement, de moteurs universels. Applications domotiques diverses. (on trouve des moteurs puissants et pas chers, j'ai nommé les perceuses premier prix des enseignes de bricolage).
    - si c'est dans mes cordes, ajouter à mon alarme maison l'envoi d'un SMS (ou message vocal) sur mon téléphone portable, en utilisant un Arduino et un module GPRS, que j'ai pris le risque d'acheter déjà.

    @Jean-Marie
    j'aurais donc pu m'appeler aussi gégé45...mais du mois d'octobre, je devrai donc patienter un peu plus

    bonne soirée
    gégé62

    -----

  2. #362
    Biname

    Re : De l'Arduino au langage C standard avec AVR Studio

    Hello,

    C est souvent, illisible, indigeste ! Les opérateurs sur les bits (bitwise operators) en sont un bel exemple. L'ajout de macros en tête de programme (ou un include .h) peut simplifier tout ça.

    A http://efundies.com/avr/avr_bitwise_operations_in_c.htm on trouve
    --------------------------------------
    #define setbit(port, bit) (port) |= (1 << (bit))
    #define clearbit(port, bit) (port) &= ~(1 << (bit))

    As you can see, these macros do exactly what we have talked about above. If you include them in your source code, then you can turn bits on and off with these simple lines:

    setbit(PORTA, PA0);
    clearbit(PORTA, PA7);
    ---------------------------------------
    On doit pouvoir trouver toogle aussi ... un exercice.

    Je n'ai pas testé.
    Il doit y en avoir d'autres permettant l'utilisation de OR XOR et AND ?

    Biname

  3. #363
    Jack
    Modérateur

    Re : De l'Arduino au langage C standard avec AVR Studio

    J'avoue avoir du mal à voir la relation avec ce qui précède ...

  4. #364
    mkh.mourad

    Re : De l'Arduino au langage C standard avec AVR Studio

    un atterrissage erroné

  5. #365
    gegel62

    Re : De l'Arduino au langage C standard avec AVR Studio

    Citation Envoyé par mkh.mourad Voir le message
    un atterrissage erroné
    oui certainement.
    Mais ce qu'il dit peut nous intéresser , je me trompe ?

    allez la Gelbique !!!

    gégé62

  6. #366
    invite03481543

    Re : De l'Arduino au langage C standard avec AVR Studio

    C est indigeste quand on code avec les pieds, c'est vrai pour tout langage...
    Je ne vois vraiment pas ce que vous trouvez de si compliqué dans le C.

  7. #367
    gegel62

    Re : De l'Arduino au langage C standard avec AVR Studio

    Hello tous

    Jour faste, je ne résiste pas au plaisir de partager mes succès.
    J'ai téléversé ton petit prorgamme Jean-Marie (qui allume les leds à tour de rôle) avec Studio 6 et Avrdudess
    Ca marche youpiii
    c'est franchement grâce à vous qui m'avez aidé, je vous dois bien un petit

    D'autre part j'ai retrouvé mon micro, j'ai pu tester Scope que Jean-Marie nous a indiqué tout récemment.
    C'est bluffant de simplicité et d'efficacité. Pour info quand on sauvegarde l'image (après l'avoir figée avec Stop), on a la courbe sous XnView, sous JPG et même la feuille de calcul .xls avec toutes les valeurs échantillonnées.
    Voilà ce qu'on a avec la tonalité du téléphone (en mode HP) à coté du micro

    bonne soirée
    Images attachées Images attachées  

  8. #368
    invitedca01a58

    Re : De l'Arduino au langage C standard avec AVR Studio

    Zut, alors. On est déjà à la page 25 et ma messagerie ne m'a plus prévenu des nouveaux messages depuis un bout de temps. Je me disais que tout le monde était encore en vacances !

    @JP

    Je suis en train de découvrir ton site. Exellent ! (et merci !)

    As-tu trouvé de l'info sur l'Atmel ICE ?




    @ LVPBL

    En parlant de l'erreur du AVR JTAG ICE ...
    Citation Envoyé par LVPBL
    à mon avis ton erreur provient du fait que tu ouvres studio 4 et 6 en même temps. Essaie de faire un reboot du PC et de n'ouvrir que studio 4
    Un moment, j'ai aussi cru que cela pouvait être la cause de l'erreur. J'ai donc rebooté le PC sans ouvrir Studio6. J'avais aussi lu dans le User Guide du JTAG ICE que celui-ci devait être branché avant d'ouvrir Studio4 pour que celui-ci le reconnaisse. J'ai donc respecté cela mais l'erreur continue à se produire.




    @Gégé

    J'ai l'une ou l'autre réalisation à base d'AVR à mon actif.
    - Transformation d'un petit four en étuve à T° réglable (ATmega32 + BASCOM)
    - Minuterie dans un ancien moulin à café (Atmega8 + Assembleur)
    - Afficheur jauge d'essence pour 2CV (Atmega8 + Assembleur)
    - Afficheur LCD comme terminal USART (Attiny2313 + Assembleur)
    Je viens de recevoir le petit module de commande LDC par liaison I2C à base de PCF8574. Ma prochaine tâche sera donc probablement de mettre ce module en oeuvre avec le language C. En effet la plupart des réalisations à base de µC bénéficient grandement d'un afficheur LCD mais le raccordement direct du LCD à l'AVR consomme énormément de pins. Par I2C, on ne consomme que 2 pins, qui de plus peuvent être éventuellement partagées avec d'autres périphériques I2C.

    Je suis très heureux que tu aies pu programmer ton arduino avec AVRDUDESS. Te voilà donc libéré de l'IDE Arduino.

    Très content aussi que tu aies testé le PCscope. Evidemment, ce n'est pas un Hameg mais c'est quand même une belle aide aux bricoleurs que nous sommes.

    @Biname

    Merci pour ton conseil de Macro et de lien. C'est vrai que le programme est plus lisible avec des setbit, clearbit et togglebit qu'avec des signes cabalistiques qui restent encore pour moi assez illisibles, mêmes si cela fait déjà plusieurs mois que j'essaye de m'y habituer.

  9. #369
    JP

    Re : De l'Arduino au langage C standard avec AVR Studio

    Je suis en train de découvrir ton site. Exellent ! (et merci !)
    Ca me fait plaisir si ca peut aider C'est un wiki que tout le monde pour enrichir, donc n’hésite pas à le compléter.
    C'est ce que je vais faire dans les prochains temps. Il a besoin d'une petite mise à jour. Je me suis acheté une petite carte avec un XMEGA256. Ca sera l'occasion de remettre le nez dedans

    As-tu trouvé de l'info sur l'Atmel ICE ?
    Oui, sur le site d'Atmel. Comme le disait laveplusblanc, il supporte la programmation ISP et le débogage JTAG sur les AVR, AVR32 et les ARM (bref tout) et encore moins cher que mon JTAG ICE 3.

    C'est vrai que le programme est plus lisible avec des setbit, clearbit et togglebit qu'avec des signes cabalistiques qui restent encore pour moi assez illisibles, mêmes si cela fait déjà plusieurs mois que j'essaye de m'y habituer.
    C'est des fonctions logiques de base des ET &, des OU |, des inversion ~, des décalage de bit <<. C'est une petit gymnastique qui n'est pas inutile parce que tu tomberas toujours sur des bouts de codes sans macro, chez les puristes ou dans les datasheet.
    Dernière modification par JP ; 18/08/2014 à 18h31.

  10. #370
    Biname

    Re : De l'Arduino au langage C standard avec AVR Studio

    <quote>Merci pour ton conseil de Macro et de lien. C'est vrai que le programme est plus lisible avec des setbit, clearbit et togglebit qu'avec des signes cabalistiques qui restent encore pour moi assez illisibles, mêmes si cela fait déjà plusieurs mois que j'essaye de m'y habituer. </quote>

  11. #371
    Biname

    Re : De l'Arduino au langage C standard avec AVR Studio

    Hello,
    Citation Envoyé par Jean-Marie45 Voir le message
    Merci pour ton conseil de Macro et de lien. C'est vrai que le programme est plus lisible avec des setbit, clearbit et togglebit qu'avec des signes cabalistiques qui restent encore pour moi assez illisibles, mêmes si cela fait déjà plusieurs mois que j'essaye de m'y habituer.
    Tu n'es pas le seul ! Quand on pense que ça se compile en 'sbr reg, bit ou 'cbr reg, bit', il faut se pincer pour ne pas rire. Sur un microcontrôleur, on affecte très fréquemment la valeurs de bits, il faut donc faire simple, on gagne du temps, de l'énergie et on réduit le nombre d'erreurs.
    Quelques liens :
    Des codes exemples AVR utilisant ce genre de macros (Ici : tbi, sbi, cbi pour toogle, set et clear bit) https://kartikmohta.com/tech/avr/tutorial/
    Un calculateur pour baud rates, PWM, Timer, ... un exécutable http://clsql.med-info.com/download.html (déclaré bon par mon antivirus Norton).
    AVR fuse calculator Javascript http://www.engbedded.com/fusecalc/

    Je ne connais pas les AVR(PIC par habitude moi), AVR Studio doit proposer ce genre d'outils ?

    Pour de 'petits' projets en 8 bits, on utilise des variables globales et locales et on utilise des char, unsigned char, int et unsigned int ... le reste est exceptionnel.

    Biname

  12. #372
    gegel62

    Re : De l'Arduino au langage C standard avec AVR Studio

    Citation Envoyé par Jean-Marie45 Voir le message
    J'ai l'une ou l'autre réalisation à base d'AVR à mon actif.
    - Transformation d'un petit four en étuve à T° réglable (ATmega32 + BASCOM)
    - Minuterie dans un ancien moulin à café (Atmega8 + Assembleur)
    - Afficheur jauge d'essence pour 2CV (Atmega8 + Assembleur)
    - Afficheur LCD comme terminal USART (Attiny2313 + Assembleur)
    Hello Jean-Marie,
    Comment as-tu fait la régulation du four, est-ce tout ou rien, ou régul PID ?
    Pour mesurer la température, je suppose que tu utilises une sonde avec ampli, qui donne directement le signal de niveau suffisant, ou bien c'est un thermocouple (qui necessite un ampli) ?

    Bonne soirée
    gégé62

  13. #373
    invitedca01a58

    Re : De l'Arduino au langage C standard avec AVR Studio

    Pourquoi ne suis-je plus informé des nouveaux messages sur le thread ? Pourtant je n'ai pas conscience d'avoir changé un quelconque paramètre !


    Biname, merci pour tes liens. Cela fait longtemps que j'utilise le "fuse calculator" de Engbedded.com mais je ne connaissais pas les autres liens. Je vais ajouter les macros de manipulation de bit dans le squelette de programme que j'utilise quand je démarre un nouveau programme.


    En ce qui concerne l'utilisation d'un afficheur LCD commandé par I2C, j'ai commencé les investigations.

    J'ai trouvé cette page du blog de Davide Gironi. J'ai téléchargé le code renseigné. J'ai déjà dû faire des modifications pour pouvoir compiler le code dans Studio6.2 pour l'ATmega 1284P
    Voici les fuses que j'ai utilisé :

    333.jpg

    Le fichier zip joint contient les répertoires pour compiler avec Studio6.2

    Evidemment, une fois chargé dans le µC, le programme ne fonctionne pas. Il y a certainement des adaptations à faire, d'autant plus que le blog utilise le chip PCF8574 nu alors que j'utilises un module dont le pinout est peut-être différent. Je dois donc commencer par vérifier le pinout ainsi que l'adresse I2C utilisée.
    Fichiers attachés Fichiers attachés

  14. #374
    laveplusblanc

    Re : De l'Arduino au langage C standard avec AVR Studio

    Bonjour, Jean Marie

    Quelques petis commentaires :
    1.
    #define setbit(port, bit) (port) |= (1 << (bit))
    #define clearbit(port, bit) (port) &= ~(1 << (bit))
    sont typiquement des exemples de macro "limite" : il faut toujours "enfermer" les expressions des macros dans des parenthèses, sinon cela peut créer des ambiguïtés dans des expressions du genre "X=2*MACRO(Y);"

    2. Je ne pense pas qu'utiliser un PCF8574 est une très bonne idée pour piloter un LCD :
    - il ne faut que 6 pins pour piloter un LCD, et certaines (par exemples les lignes données) peuvent facilement être multiplexés avec un "clavier" (bouton poussoirs). Donc si l'on a vraiment 4 pin en trop peu par rapport à un PCF8574, acheter un uC avec plus de pins qui ne coutera guère plus cher. Le moins de boitiers est toujours le mieux. Et cela complique (apparemment significativement pour le PCF8574) le soft.
    - Si c'est vraiment indispensable, un simple registre à décalage 74HC595 qui se commande en SPI est (nettement) moins cher et plus répandu. (faire une recherche google sur le sujet). On peut même réduire à un seul fil (j'ai essayé mais cela n'a pas marché, mais cela est fort probablement de ma faute)



    J'ai déjà fait plein de bidules à uC en amateur, en passant par des debuggers et horloges nixie. Je dois avoir une bonne douzaine "developpement board" de plusieurs marques (AVR, MSP430, MC9S08, ARM Cortex M0 et M3, 8051). Ma première réalisation fut un gradateur. Je connais assez bien FreeRTOS et ma prochaine réalisation en cours sera un moniteur (graphique ) de production de mon installation photovoltaïque.

    LVPBL

  15. #375
    invitedca01a58

    Re : De l'Arduino au langage C standard avec AVR Studio

    @Gégé
    Excuse-moi, j'ai oublié de répondre à tes questions sur la régulation du four.
    Je n'ai qu'une idée extrêmement vague de ce qu'est un PID et à l'époque de ma transformation du four, je ne connaissais même pas l'existence de ce concept. J'ai donc régulé de la manière qui me paraissait la plus efficace. A toi de juger si c'est du PID.

    Comme il s'agissait de faire une étuve ne dépassant pas 100°, j'ai d'abord réduit la puissance des résistances en les branchant en série au lieu de parallèle et en intercalant aussi en série une diode de puissance pour ne prendre qu'une alternance sur deux. J'ai de plus isolé le four à la laine de verre.
    Ensuite, étant tout à fait débutant et ignorant le principe même du PWM des µC, j'ai commandé les résistances avec une sorte de PWM maison très lent, fait par software, du genre (mes souvenirs sont imprécis !) une impulsion toutes les 2 secondes, la durée d'impulsion étant variable entre 0 et 2 secondes.
    J'ai alors fait une série d'expériences en mesurant la T° atteinte en régime permanent pour chaque durée d'impulsion. J'ai donc établi une table de conversion entre la T° et la durée d'impulsion. La régulation devenait alors simple: lorsque la T° voulue est dépassée, je règle la durée d'impulsion pour obtenir 1° de moins et lorsque la T° descend sous la T° voulue, je remonte la durée d'impulsion pour viser 1° de plus. La commande des résistances se fait avec un triac.
    Il y avait un autre problème à régler: celui du démarrage. Pour atteindre rapidement la T° voulue, le PWM maison était trop lent. Il fallait donc commencer par un chauffage à plein régime, mais l'inertie des résistances et du four est grande. Donc, pas question de laisser chauffer jusqu'à la T° voulue. J'ai donc dressé une série de courbes montrant l'évolution de la T° du four en fonction de la durée initiale de chauffage. Par exemple si je chauffe 20 secondes, la T° va monter progressivement pendant 120 secondes jusqu'à 28° avant de redescendre doucement. Je sais donc que si je vise 28°, je vais d'abord chauffer à plein régime pendant par exemple 19 secondes, puis couper les résistances jusqu'à 110 secondes et enclencher enfin le PWM maison pour maintenir la régulation fine.
    La sonde thermique est une DS18B20, une sonde dite "One Wire" de Maxim qui fonctionne très bien et donne facilement la T° au dixième de degré.
    Toute la gestion est faite avec un système de menu sur un afficheur LCD de 4 lignes de 20 caractères. On indique la T° voulue et le temps désiré et lorsqu'on lance la chauffe, l'écran montre la T° intérieure de l'étuve et le temps parcouru. Il est possible d'enregistrer 10 programmes différents, conservés dans l'EEPROM.

    Je ne te donne que les grandes lignes. Tu peux trouver les détails ICI.




    @laveplusblanc
    C'est vrai que cela n'est peut-être pas plus compliqué d'utiliser un convertisseur série-parallèle pour commander le LCD. Le 74HC595 est moins cher (mais il faut encore fabriquer un petit PCB à mettre au dos du LCD).
    Comme je possède déjà 2 modules I2C, j'essaye de trouver des avantages à mes modules :
    Il existe pas mal de périphériques communiquant en I2C. Ceux-ci peuvent être placés tous sur le même bus à 2 fils. Il n'y a que l'adresse à changer pour communiquer avec chacun d'eux.




    J'ai investigué les pins de mon module. Le câblage de mon module est effectivement différent du câblage de l'article. J'ai repéré les définitions des pins dans le fichier lcdpcf8574.h et j'ai fait les corrections mais cela ne fonctionne toujours pas car il y a certainement encore des choses à changer. Je ne vais pas y couper : je vais devoir étudier le fonctionnement de l'I2C et me remettre en mémoire le fonctionnement des afficheurs LCD. Tout cela en C que je suis loin de maîtriser. Un bon bouillon en perspective !

  16. #376
    gegel62

    Re : De l'Arduino au langage C standard avec AVR Studio

    Hello Jean-Marie,

    je viens de passer 30 mn à te répondre, et mon Google Chrome s'est fermé, je peux recommencer...arrrgggh !!!

    A ce propos, je vois régulièrement se faire un enregistrement auto de ce qu'on écrit, mais je ne sais pas le retrouver...si une âme charitable peut m'éclairer là-dessus !

    J'ai eu l'occasion aussi de "débrider" un four de cuisine pour traiter des ressorts (300-350°C) ou fondre du plomb (four à 480°C). Ma "régulation" consistait à entr'ouvrir la porte plus ou moins....
    Cela dit il faut absolument connaitre la régulation PID, ce n'est pas difficile, et c'est dommage de rester en tout ou rien avec un uc qui sait tout faire...

    J'en dis quelques mots ici, mais je ne suis pas un spécialiste, et Ferdinand du forum usinages.com a fait un article (22 avril 2012 à vérifier) parfait sur le sujet, avec tous les détails et le programme Arduino.

    Dans l'exemple du four, la régulation PID ajuste à tout moment la puissance de chauffe à ce qui est optimal pour atteindre le plus rapidement la température voulue, y rester, et minimiser les écarts en cas de perturbation extérieure. Il s'agit bien sûr d'un asservissement, l'action à tout instant est fonction de la température lue et de la consigne.
    Par exemple la valeur du ratio ON/OFF du PWM sera directement fonction de la somme (algébrique) de 3 termes:
    -Terme "Proportionnel " représenté par la différence entre mesure et consigne. Si par exemple à l'équilibre tu as un ratio PWM de 50%, ce ratio sera corrigé en plus ou en moins d'une quantité proportionnelle à l'écart.
    - Terme "Dérivée"
    tient compte de la variation instantanée de la température. Permet d'anticiper au mieux sur les perturbations.
    -Terme "Intégrale" tient compte de l'écart qui tend à subsister lorsque c'est stabilisé, afin de réduire ou supprimer cet écart.

    Chacun des trois termes est affecté d'un "coefficient d'importance", une pondération. La somme finale est directement traduite pour déterminer le ratio PWM. Le document de Ferdinand explique bien comment on détermine les coefficients à adopter pour les trois termes, mais on peut aussi travailler empiriquement.

    Un point de détail qui a son importance:
    - la dérivée d'une valeur s'obtient à chaque cycle de calcul par la différence entre "mesure" et "precedente_mesure" par exemple. On peut diviser par l'intervalle de temps, mais c'est inutile, puisqu'après il y a une pondération à faire.
    - l'intégrale s'obtient en faisant la somme (algébrique) des écarts, depuis le début. En effet, si cette fonction joue bien son rôle, elle n'a pas de raison de tendre vers l'infini.

    Au fait, je disais il y a quelques temps que le "Home Drunk" était un bel exercice de régul PID. Disons qu'on essaie de réagir avec la souris comme le ferait une (bonne) régul PID....

    bonne soirée à tous
    gégé62

  17. #377
    mkh.mourad

    Re : De l'Arduino au langage C standard avec AVR Studio

    le PID est très intéressant, dans les contrôleurs industrielle, on ne parle que de ça.
    le P = proportionnel
    I = intégrale
    D = dérive.
    l’intérêt de cette méthode de régulation est de réduire l’écart d'erreur entre la consigne et la grandeur physique mesuré dans un temps minime.

    Nom : CorrecteurPIDclassique.jpg
Affichages : 178
Taille : 69,7 Ko
    on peut mixer les trois sans virer le P : P, PI; PD, PID.
    la meilleur est surement la PID, mais on utilise souvent le PI qui est aussi efficace et plus simple que le PID. et ça nécessite beaucoup de ressource de calcule et de mémoire dans un microcontrôleur. dans un attiny je pense pas que c'est faisable.

    la température a une nature de variation très très lente. et ça reste très difficile de réguler on tout ou rien avec un écart d'erreur optimal. mais pour un four de ton projet c'est largement acceptable.

  18. #378
    Biname

    Re : De l'Arduino au langage C standard avec AVR Studio

    Hello,

    Citation Envoyé par Jean-Marie45 Voir le message
    Je ne vais pas y couper : je vais devoir étudier le fonctionnement de l'I2C et me remettre en mémoire le fonctionnement des afficheurs LCD. Tout cela en C que je suis loin de maîtriser. Un bon bouillon en perspective !
    I2C les grandes lignes, 1/2 heures suffira , LCD pareil, ... de toute façon, on oublie les détails d'une fois à l'autre.

    Là aussi, avec de bonnes librairies I2C, LCD, RS232, ... c'est très simple. Recherche avec (AVR TWI Library) ou (AVR LCD Library)
    Il y a ceci pour I2C (TWI en AVR par exemple, je ne la connais pas ?????
    http://homepage.hispeed.ch/peterfleu...ic2master.html
    ou http://www.mikroe.com/download/eng/d...wi_library.htm une doc pour une autre librairie(MikroC)
    Pour LCD
    http://extremeelectronics.co.in/avr-...ule-with-avrs/

    Il faut se choisir les meilleures librairies, AVR Studio doit en proposer ????

    Biname

    Pour mes modestes projets, j'utilise une version stable de GCBasic, gratuit, http://gcbasic.sourceforge.net/help/ avec librairies auto incluses, exemples pour tout. Pas au top pour AVR?????

  19. #379
    Biname

    Re : De l'Arduino au langage C standard avec AVR Studio

    Salut,
    Citation Envoyé par gegel62 Voir le message
    Hello Jean-Marie,

    je viens de passer 30 mn à te répondre, et mon Google Chrome s'est fermé, je peux recommencer...arrrgggh !!!

    A ce propos, je vois régulièrement se faire un enregistrement auto de ce qu'on écrit, mais je ne sais pas le retrouver...si une âme charitable peut m'éclairer là-dessus !

    J'ai eu l'occasion aussi de "débrider" un four de cuisine pour traiter des ressorts (300-350°C) ou fondre du plomb (four à 480°C). Ma "régulation" consistait à entr'ouvrir la porte plus ou moins....
    Cela dit il faut absolument connaitre la régulation PID, ce n'est pas difficile, et c'est dommage de rester en tout ou rien avec un uc qui sait tout faire...

    J'en dis quelques mots ici, mais je ne suis pas un spécialiste, et Ferdinand du forum usinages.com a fait un article (22 avril 2012 à vérifier) parfait sur le sujet, avec tous les détails et le programme Arduino.

    Dans l'exemple du four, la régulation PID ajuste à tout moment la puissance de chauffe à ce qui est optimal pour atteindre le plus rapidement la température voulue, y rester, et minimiser les écarts en cas de perturbation extérieure. Il s'agit bien sûr d'un asservissement, l'action à tout instant est fonction de la température lue et de la consigne.
    Par exemple la valeur du ratio ON/OFF du PWM sera directement fonction de la somme (algébrique) de 3 termes:
    -Terme "Proportionnel " représenté par la différence entre mesure et consigne. Si par exemple à l'équilibre tu as un ratio PWM de 50%, ce ratio sera corrigé en plus ou en moins d'une quantité proportionnelle à l'écart.
    - Terme "Dérivée"
    tient compte de la variation instantanée de la température. Permet d'anticiper au mieux sur les perturbations.
    -Terme "Intégrale" tient compte de l'écart qui tend à subsister lorsque c'est stabilisé, afin de réduire ou supprimer cet écart.

    Chacun des trois termes est affecté d'un "coefficient d'importance", une pondération. La somme finale est directement traduite pour déterminer le ratio PWM. Le document de Ferdinand explique bien comment on détermine les coefficients à adopter pour les trois termes, mais on peut aussi travailler empiriquement.

    Un point de détail qui a son importance:
    - la dérivée d'une valeur s'obtient à chaque cycle de calcul par la différence entre "mesure" et "precedente_mesure" par exemple. On peut diviser par l'intervalle de temps, mais c'est inutile, puisqu'après il y a une pondération à faire.
    - l'intégrale s'obtient en faisant la somme (algébrique) des écarts, depuis le début. En effet, si cette fonction joue bien son rôle, elle n'a pas de raison de tendre vers l'infini.

    Au fait, je disais il y a quelques temps que le "Home Drunk" était un bel exercice de régul PID. Disons qu'on essaie de réagir avec la souris comme le ferait une (bonne) régul PID....

    bonne soirée à tous
    gégé62
    Ah bon, équations différentielles, transformées de Laplace, ... un jeu d'enfant
    Heureusement, les solutions numériques sont (beaucoup beaucoup beaucoup)³ plus simples et avec nos micros, on a la machine numérique, juste qu'en 8 bits pour calculer vite, faut être créatif.
    Une petite librairie ????
    http://www.avrfreaks.net/index.php?n...topic&p=645673
    Je ne la connais absolument pas ???

    Biname

  20. #380
    gegel62

    Re : De l'Arduino au langage C standard avec AVR Studio

    Citation Envoyé par Biname Voir le message
    Salut,


    Ah bon, équations différentielles, transformées de Laplace, ... un jeu d'enfant

    Biname
    hello Biname, ....si j'ai étudié cela dans le temps, je ne l'ai jamais vraiment assimilé (Laplace ) et je ne me permettrai pas de dire cela (encore moins de l'écrire ). Mais il existe des méthodes empiriques pour aider à déterminer les coefficients qui vont bien. Et de toutes façons, méthode théorique de calcul ou méthode empirique, on finit souvent par peaufiner en fonction du résultat constaté. Bon cela dit je n'ai pas une énorme expérience de la régul PID, et le peu que j'ai fait est loin déjà. J'ai un projet sérieux en vue la-dessus, mais je l'ai mis un peu en attente pendant que j'apprends le monde merveilleux des micros et du C...

    J'ai cité plus haut un article de Ferdinand dans le forum Usinages.com, que j'ai en version papier.
    Après cela hier soir je suis allé, mais comme je ne suis pas doué dans ce genre d'exercice , je ne l'ai pas retrouvé. En plus, je crois que son pseudo n'est pas Ferdinand, peut-être Ferdi, je ne sais plus. Et on accédait à cet article par un lien qu'il donnait. Si quelqu'un a l'occasion de le retrouver, merci de le signaler.

    bonne journée
    gégé62

  21. #381
    invitedca01a58

    Re : De l'Arduino au langage C standard avec AVR Studio

    Merci Biname pour tes liens.
    Le programme que j'essaye d'utiliser est effectivement basé sur la librairie de Peter Fleury que tu renseignes. Cette librairie semble réputée.

    Gégé, je n'ai pas non plus pu retrouver l'article de Ferdinand sur Usinages.com.
    Mais je ne pense pas qu'un vrai PID ferait beaucoup mieux que ce que j'obtiens avec mon système : la T° est atteinte en 4 à 5 minutes et il persiste une variation d'environ 0,2° autour de la T° souhaitée. Cette étuve me sert à faire des yahourts, à faire lever la pâte à pain et parfois à du séchage.

  22. #382
    gegel62

    Re : De l'Arduino au langage C standard avec AVR Studio

    Jean-Marie,

    sans aucun doute, pour ton application il n'y a pas besoin de sophistiquer. Mais le PID est intéressant dans le cas où les conditions varient dans le temps.
    Mais c'est toujours utile de connaitre le principe de la régul PID, qui n'est pas compliqué, tu le fais très bien intuitivement avec ta souris quand tu totalises > 80m au Home Drunk....

    Le principe est simple, la résolution mathématique est ardue, pas à la portée de la plupart d'entre nous, mais il y a moyen de s'en passer. D'ailleurs les techniciens qui règlent les appareils de régulation (PID) dont les usines regorgent ne sont pas des matheux, ils connaissent les formules qui vont bien. Et même si certains s'aventurent dans les équa diff et la transformée de Laplace, il y a forcément des imprécisions au niveau des hypothèses, par exemple pour un four, au niveau des échanges de chaleur, de la puissance de chauffe etc...
    Plus de détails en recherchant sur le net: méthode de Strejc, méthode de Ziegler-Nichols

  23. #383
    invitedca01a58

    Re : De l'Arduino au langage C standard avec AVR Studio

    Je reviens un peu à mon LCD commandé par I2C.

    Puisque j'ai un petit analyseur logique, ce serait peut-être le moment de m'en servir pour voir ce qui sort du µC et voir ce qui sort du module PCF8574.

    Donc, mise en place pour un premier essai de l'analyseur.

    Nom : An Log 1er essai.jpg
Affichages : 193
Taille : 120,3 Ko

    A gauche, on voit le petit programme qui sert à tester : une Led s'éclaire pendant 50 ms puis on passe à la Led suivante. Ainsi, tout le PORTD est parcouru en +/- 0,4 seconde.
    Seuls les Chanels 6 à 0 de l'analyseur sont raccordés (j'ai utilisé pour le raccordement un câble plat à 8 voies mais un fil sert à GND).

    Conclusion: excellent outil de mise au point pour moins de 7 € !!!

  24. #384
    gegel62

    Re : De l'Arduino au langage C standard avec AVR Studio

    Finalement, ma source n'était peut-être pas le forum usinages.com.
    J'ai retrouvé cet article, de Ferdinand Piette
    http://www.ferdinandpiette.com/blog/...-avec-arduino/

    mais elle coule pas !

  25. #385
    invitedca01a58

    Re : De l'Arduino au langage C standard avec AVR Studio

    Merci Gégé.
    Effectivement, ce n'est pas tout à fait du niveau débutant.




    J'ai branché l'analyseur logique sur la sortie I2C du µC.
    Devinez ce qu'on voit ...

    RIEN.

    Pas un seul mouvement des pins SCL et SDA !
    Ce n'est pas étonnant que le LCD reste muet.

    Je vais donc devoir investiguer la communication I2C.

  26. #386
    gegel62

    Re : De l'Arduino au langage C standard avec AVR Studio

    Hello, tous

    pour ceux que ça peut intéresser, je trouve très bien fait le cours d'Openclassroom
    http://fr.openclassrooms.com/informa...rogrammer-en-c

    openclassroom est le "nouveau" nom du site très connu "le site du zero"

    Ce cours de langage C n'est pas destiné aux microcontroleurs, mais beaucoup de choses sont valables je suppose, en tous cas j'y apprends beaucoup de choses

    D'après ce que j'ai vu, il y a aussi un MOOC sur ce programme, avec des exercices et une notation avec diplome, comme à Coursera.
    J'en reste pour ma part à la lecture du cours.

    Bonne soirée
    gégé62

  27. #387
    invitedca01a58

    Re : De l'Arduino au langage C standard avec AVR Studio

    Gégé, merci pour l'info. Voilà un certain temps que j'ai téléchargé le bouquin en pdf. Je n'ai pas encore eu le temps de le lire mais un survol m'a laissé une bonne impression.




    Suite de mes périgrinations avec le module I2C

    Les ennuis ont commencé hier avec l'Atmel ICE qui refusait de programmer le µC. Je pouvais toujours lire la signature et les fuses mais pas de programmation de la mémoire flash. Je vais réessayer aujourd'hui.

    J'ai don essayé de faire du debugging avec le simulateur en avançant pas-à-pas dans le programme. Ce n'est certainement pas la bonne méthode. Rien que dans la fonction init, le programme m'entraîne dans des fonctions de plus en plus obscures dont j'ignore le but, puis se boque dans des boucles sans fin (peut-être en attendant une "interrupt" qui ne se produit évidemment jamais). Bref, cette voie ne mène à rien. Du coup, je pense qu'il est plus facile de reconstruire un programme à partir d'éléments compris et maîtrisés que de décortiquer un programme insuffisamment commenté.

    Au final, ce que je veux, c'est pouvoir rediriger le stdout vers l'afficheur LCD et bénéficier des fonctions du genre printf(), etc...
    On a déjà réussi à le faire en redirigeant stdin/out vers le moniteur du PC en passant par la liaison série de l'USART.
    Il y a 2 ans, j'avais construit un petit module constitué d'un LCD (2 lignes de 16 caractères) et d'un ATtiny2313. Ce module se connecte par l'USART. Il était destiné à être adjoint à une carte de développement (que je n'ai pas encore construite).
    Ce serait peut-être finalement la meilleure solution. L'Attiny2313 reçoit simplement par USART 3 commandes possibles et le string formaté à afficher. Les 3 commandes pourraient être:
    1. LCD_clear : efface les 2 lignes et positionne le curseur en début de ligne 1
    2. LCD_goto(x,y) : positionne le curseur en position x = 1 à 16 sur la ligne y = 1 à 2
    3. LCD_scroll : copie la ligne 2 sur la ligne 1 et positionne le curseur en x=1, y=2
    Cela déchargerait vachement le travail du µC principal.
    Vous en pensez quoi ?

  28. #388
    gegel62

    Re : De l'Arduino au langage C standard avec AVR Studio

    CHuuuuttttt !
    tout le monde dort....

  29. #389
    invitedca01a58

    Re : De l'Arduino au langage C standard avec AVR Studio

    Pas moi !

    Je suis en train d'écrire le programme pour un µC à adjoindre au dos d'un afficheur LCD pour que celui se comporte comme un terminal PC.

    Cela prend du temps car étant débutant en C, je commets tout le temps des erreurs de syntaxe que je corrige avec beaucoup de difficulté car les messages d'erreur donnés à la compilation induisent eux-mêmes souvent en erreur. Enfin, c'est comme ça qu'on apprend petit à petit les règles du language.

  30. #390
    invitedca01a58

    Re : De l'Arduino au langage C standard avec AVR Studio

    J'écrivais le programme avec Studio4, pour un Atmega8.
    Comme j'étais à un stade ou le programme compilait sans erreur, j'ai voulu contrôler le déroulement du programme avec le simulateur (pas de debugging on chip actuellement car rien n'est physiquement installé pour travailler avec un Atmega8 et un LCD).

    Lorsque j'ai cliqué sur "debug", Studio4 s'est planté (comme expliqué il y a quelques jours). Il n'y avait pas de JTAG ICE ou d'Atmel ICE branché.
    Je me suis donc dit que je n'y couperais pas et j'ai donc réinstallé Studio4.18 avec sa mise à jour SP3.

    Malheureusement, rien n'a changé.Quand je clique sur "debug", le programme plante !

    Je n'avais plus qu'une solution : importer le projet dans Studio6.2. Là, le simulateur fonctionne.

    Pour aller plus loin dans la compréhension du problème, il me reste à installer Studio4 sur un autre ordinateur et examiner son comportement.

Page 13 sur 21 PremièrePremière 13 DernièreDernière

Discussions similaires

  1. Arduino anti rebond avec arduino
    Par invited0bffa74 dans le forum Électronique
    Réponses: 13
    Dernier message: 23/10/2014, 17h04
  2. Stopper une boucle - Langage Arduino.
    Par Baliethecat dans le forum Programmation et langages, Algorithmique
    Réponses: 2
    Dernier message: 10/04/2014, 06h31
  3. Communication arduino-arduino avec module Xbee
    Par inviteda9a8a4b dans le forum Électronique
    Réponses: 2
    Dernier message: 23/12/2013, 17h24
  4. Utiliser un Arduino UNO R3 avec ATMEL Studio 6
    Par HAYAC dans le forum Électronique
    Réponses: 2
    Dernier message: 27/07/2012, 14h12
  5. Réponses: 15
    Dernier message: 19/07/2012, 22h53
Dans la rubrique Tech de Futura, découvrez nos comparatifs produits sur l'informatique et les technologies : imprimantes laser couleur, casques audio, chaises gamer...