[Programmation] Programmation sur PIC
Répondre à la discussion
Affichage des résultats 1 à 20 sur 20

Programmation sur PIC



  1. #1
    MatMacMat

    Programmation sur PIC


    ------

    Bonjour à tous,

    Je vous expose le problème, j'ai crée un petit montage Nom : montage FRE.jpg
Affichages : 383
Taille : 107,2 Ko

    Mon but est de pouvoir afficher sur 4 digit une fréquence, pour cela je la convertit en tension à l'aide du LM331 et ensuite j'utilise l'ADC0804 pour avoir la valeur de la fréquence en numérique ( soyez indulgent svp, ce n'est surement pas très élégant comme façon de faire mais je n'ai pas énormément d'expérience)

    J'ai chercher plusieurs solutions sur internet, notamment à l'aide d'un 74185 mais comme celui ci est obsolète ( ou alors à des prix non raisonnable) je préfère ne pas m'y attarder.
    J'ai vu aussi la possibilité d'utilisé une mémoire qui à chaque adresse donnerait une valeur ( mais j'aimerais quelque chose de plus précis)

    Bref après deux trois jours de recherche je dois bien m'avouer que la solution qui revenait le plus était d'utiliser un micro-contrôleur, et c'est tout là le Hic

    Je sais qu'il existe plusieurs famille et j'aimerais utiliser un PIC, c'est purement arbitraire mais il faut faire un choix ^^, le soucis c'est que je n'ai AUCUNE connaissance là dedans. Je ne sais pas quelle PIC utilisé étant donnée le nombre et les différents types qu'il existe.

    J'imagine qu'il me faut de tout manière un PIC avec 8 entrées minimum du à mes 8 bits de l'ADC.

    Je n'attends pas vraiment de réponse précise dans le choix du composant, je cherche plus à savoir comment programmer ce genre de circuit, pour info je sais un peu programmer sur arduino, j'ai deux trois notions en C.

    Mais j'ai vu par exemple sur un PIC ayant un port A et B, qu'il faut initialiser les ports en sortie ou en entrée avec cette commande :" TRISA : 110110 ",etc..., et donc ma question serait de savoir si vous auriez un site à me conseiller ou des livres ou n'importe quel support d'ailleurs, où ce genre de chose est expliqué en détails. J'ai lu quelque part que le site de Bigonoff était excellent pour ça mais malheureusement plus en ligne.

    Bref, désolé pour le pavé et en vous remerciant de vos réponses,

    -----

  2. #2
    gienas
    Modérateur

    Re : Programmation sur PIC

    Bonjour MarMacMat et tout le groupe

    Citation Envoyé par MatMacMat Voir le message
    … pour cela je la convertit en tension à l'aide du LM331 …
    As-tu vérifié que ce premier étage remplissait bien sa fonction attendue?

    La datasheet donne exactement "l’inverse": on entre une tension variable et continue, et le LM331 sort une fréquence variable.

  3. #3
    MatMacMat

    Re : Programmation sur PIC

    Bonjour,

    Oui j'ai vérifié ( seulement à l'aide de la simulation proteus pour le moment) et cet étage fonctionnement correctement.

    test LM331 1.jpg

    test lm331 2.jpg

    Le signal rouge sur l'oscillo ne me sert juste qu'a reperer le 0V.

    Pour info j'ai utiliser cette configuration du LM331 pris dans la datasheet

    LM331 montage.jpg

    Voilà voilà,

  4. #4
    mag1

    Re : Programmation sur PIC

    Bonjour,
    Il y a évidemment des remarques et des questions.
    Dans le principe, convertir du numérique en analogique pour le reconvertir en numérique ne semble pas la bonne démarche.
    A partir du moment où on utilise un µC, on peut se passer des conversions.
    Si tu ne connais rien aux µC, il y a la voie royale en passant par l'assembleur, BigOnOff etc.. et tu en prends pour des mois d'apprentissage.
    La voie intermédiaire et abordable pour le néophyte est l'arduino ou le picaxe. Spécialement développés pour les débutants et qui feront très bien le travail.
    Questions: Quelle plage de fréquence du signal à mesurer.
    Quelle est la nature du signal, forme, amplitude, etc
    Pour l'affichage, il y a de tout, en quatre digits, le TM1637 facilite les câblages.
    Perso, j'utilise des picaxes, les µC plus simples d'emploi et de programmation (basique de collégien). Pas de biblio (comme arduino), mais des commandes spécifiques (comptage, etc).
    Plus de détails si intéressé...
    Un peu de lecture et de démo:
    http://electromag1.wifeo.com/les-pic...leur-basic.php
    application TM1637: http://electromag1.wifeo.com/minuter...eur-tm1637.php
    A suivre...
    MM
    Si il y a des erreurs ci dessus, c'est que je n'ai pas eu le temps de les corriger...

  5. A voir en vidéo sur Futura
  6. #5
    nornand

    Re : Programmation sur PIC

    bjr: tu trouveras les cours de bigonoff ici -> http://www.abcelectronique.com/bigon...6778&fic=part1

  7. #6
    mag1

    Re : Programmation sur PIC

    Et donc, ce que je propose ressemblerait à un truc comme ça:
    A modifier, sans doute..
    Nom : compteur pulses.JPG
Affichages : 289
Taille : 37,3 Ko
    MM
    Si il y a des erreurs ci dessus, c'est que je n'ai pas eu le temps de les corriger...

  8. #7
    webscience

    Re : Programmation sur PIC

    Bonjour,

    donc ma question serait de savoir si vous auriez un site à me conseiller
    Un site en Français pour microcontrôleur Pic : https://www.fantaspic.fr/

    A+

  9. #8
    mag1

    Re : Programmation sur PIC

    SUITE #4

    Et donc le programme ressemblerait à un truc comme ça:
    En fait le plus gros st l'a gestion de TM1637
    On compte pendant une seconde et on affiche
    J'ai rien essayé. Vidéo de démo si intéressé
    Code:
    ;comptage pulses MM 09/07/2022
    #picaxe 08M2
    ;Broches I/O ***************
    symbol entr= C.3
    symbol clk= pinC.2
    symbol dio= pinC.1 
    ;Bytes **********************
    symbol Octet=b0    ;octet dans b0; le test est sur bit0
    symbol Chiffre=b1
    symbol i=b2
    symbol j=b3
    symbol dp=b4
    ;Words *****************************
    symbol Div=w12
    symbol Npuls=w13 ; nombre de 4 chiffres à afficher
    ;Initialisation TM1634 *********************************************************    
    ;symbol TypeAdr=$40 ; adressage auto-incrémenté par défaut=>en commentaite
    symbol AdrDep=$c0 ; adresse du 1er digit (poids fort)
    symbol RegLum=$8c ; réglage luminosité $80 + 8(allumé, 0:éteint) + 0 à 7(intensité)  
        setfreq m16        ;pas plus pour garder time en secondes (si necessaire)
        pullup %1110    ;activation des résistances pullup sur
        dirs=%01111        ;pour activer les valeurs I/O pin
        dp=$80            ;pour allumage DP
    ;clk=1: dio=1: dio=0    ; I2CStart  
    ;Octet=TypeAdr        ;Mode d'adresse, en REM cause incrémenation auto par défaut
    ;gosub I2CEnvoiOctet
    ;clk=0: dio=0 : clk=1 : dio=1 ;I2CStop
        clk=1: dio=1: dio=0    ; I2CStart    ;
        Octet=RegLum        ;Réglage luminosité
        gosub I2CEnvoiOctet
        clk=0: dio=0 : clk=1 : dio=1 ;I2CStop
    ;***** comptage pulses ************************************
    	do
    		count entr,1000,Npuls
    		gosub affich
    	loop
    ;******* Découpage du nombre en chiffres ************
    Affich:
        clk=1: dio=1: dio=0    ; I2CStart    ;
        Octet=AdrDep        ;synchro adresse départ
        gosub I2CEnvoiOctet
        div=1000        ;initialisation diviseur pour 4 chiffres
        for j=1 to 4
          Chiffre=Npuls/Div
          gosub DecTo7seg        ;octet contiendra la descrption de chiffre en segments
          gosub I2CEnvoiOctet
          Npuls=Npuls//Div    ;on garde le reste de la division
          Div=Div/10            ;prochain diviseur
        next j
        clk=0: dio=0 : clk=1 : dio=1 ;I2CStop
        return
    ;******* Envoi des chiffres (octet) bit à bit dans le registre ********
    I2CEnvoiOctet:    ;lecture de b0 bit à bit de bit0 à bit8 poids faible en tête.
        for i=1 to 8 ; envoi de l'octet
            clk=0
            dio=bit0        ;la broche dio prend la valeur de bit0       
            Octet = Octet/2        ;décalage à droite => bit1 devient bit0
            clk=1
        next i
        clk=0 : clk=1 : clk=0     ; traitement ACK
        return
    ;****** Conversion des chiffres en segments
    DecTo7seg:
        lookup Chiffre,($3f,$06,$5b,$4f,$66,$6d,$7d,$07,$7f,$6f), Octet ; 0-9 uniquement
        return
    MM
    PS, j'ai oublié la pullup sur C.3
    Dernière modification par mag1 ; 09/07/2022 à 14h57.
    Si il y a des erreurs ci dessus, c'est que je n'ai pas eu le temps de les corriger...

  10. #9
    mag1

    Re : Programmation sur PIC

    Ben non, elle y est
    MM
    Si il y a des erreurs ci dessus, c'est que je n'ai pas eu le temps de les corriger...

  11. #10
    MatMacMat

    Re : Programmation sur PIC

    Bonsoir,

    Merci Mag1 pour le temps que vous avez consacrez à mon sujet, mais je pense que je vais essayer d'utiliser un pic sans passer par un picaxe. En commancant tout bêtement en faisant les tests sur la simulation de Proteus.

    Je vais utiliser les liens que Nornand ( merci pour le fichier de BigOnOff, ce fichier doit être assez rare ^^) ainsi que le lien de WebScience où il semble y avoir de la matière pour pouvoir commencer en douceur et approfondir le sujet.

    Merci encore à vous tous. Bon week end !

  12. #11
    mag1

    Re : Programmation sur PIC

    Citation Envoyé par MatMacMat Voir le message
    Merci Mag1 pour le temps que vous avez consacrez à mon sujet, mais je pense que je vais essayer d'utiliser un pic sans passer par un picaxe. En commancant tout bêtement en faisant les tests sur la simulation de Proteus.
    Ok, tu fais comme tu veux, à l'occasion je ferai une vidéo de test en assemblant les quelques composants du schéma.
    Il faut savoir le but rechercher, apprendre à programmer un pic, ce qui signifie du temps et un investissement non négligeable ou faire simplement un fréquencemètre de 0 à 9999 Hz sur 4 digits....c'est pas pareil.
    Bonne bidouille
    MM
    Dernière modification par mag1 ; 09/07/2022 à 22h12.
    Si il y a des erreurs ci dessus, c'est que je n'ai pas eu le temps de les corriger...

  13. #12
    mag1

    Re : Programmation sur PIC

    Mon but est de pouvoir afficher sur 4 digit une fréquence
    Bonjour,
    J'avais annoncé une vidéo, j'avais 5mn, c'est fait
    https://youtu.be/YT6dK0hbK0M

    C'est une réponse à la question posée en#1, rien d'autre.
    Le schéma est le même, avec une zener 4V5 sur l'entrée pour limiter l'amplitude du signal.
    Le code est le même, sauf que à 16MHz, l'unité de comptage est de 250µs, on compte jusqu'à 4000 pour une seconde.
    résolution, le Hz, précision, quasiment 1 Hz
    Gamme de mesure, de 0 à 9999 Hz, au delà, on affiche "-OL-" (C'est pas sur la vidéo)
    Le comptage tient en une ligne, le reste est pour la gestion du TM1637

    Il y aura peut être une réponse, lorsque notre ami MatMacMat aura fini de digérer Bigonoff...
    MM
    Dernière modification par mag1 ; 22/07/2022 à 16h40.
    Si il y a des erreurs ci dessus, c'est que je n'ai pas eu le temps de les corriger...

  14. #13
    umfred

    Re : Programmation sur PIC

    Si tu pars sur un PIC, tu peux en prendre un qui possède un convertisseur Analogique/Numérique, ainsi la valeur numérique sera lisible directement dans les registres du PIC; sinon, il faudra relier les sorties de ton CAN sur un des ports du PIC. Après, il faut voir ce que tu choisis comme afficheur 4 digits pour affiner ton choix.

  15. #14
    MatMacMat

    Re : Programmation sur PIC

    Bonjour,

    Je ne m'attendais pas à de nouvelles réponses sur ce post alors je me dis que je vais quand même vous tenir au courant de ce qui l'en ai.

    J'ai continuer sur mon idée de travailler à l'aide d'un PIC ( même si je me rend bien compte que comme vous le disiez Mag1 " Il faut savoir le but rechercher " , et effectivement je me lance dans quelque chose qui me dépasse) . Bref je ne me laisse pas abattre et j'ai donc commencez.

    Changement de route je n'utilise plus de 7 segments mais un afficheur LCD LM016L, jusque là c'est OK. Comme l'a mentionné umfred j'utilise un Micro possédant un ADC pour pouvoir faire ma petite manip et afficher ( avec une précision à couper au couteau ^^) ma fréquence.

    Ensuite encore un changement de direction, le LM331 que j'utilise pour convertir ma fréquence en tension me semble trop lent, et l'affichage en pâti, j'opte donc pour changer ce circuit par un LM2907 qui je trouve est beaucoup plus rapide.

    Petit HIC, lorsque j'alimente celui-ci en 5V la formule ( VOUT = fIN × VCC × R1 × C1 ) sortie de la datasheet ne fonctionne plus, celle-ci me semble OK lorsque j'utilise un VCC de 15V

    Je me dis pas de problème je pars sur un alim secteur 220/18V et à l'aide d'un régulateur je crée une tension de 15V que j'utiliserais pour alimenter le 555 ainsi que les ampli op et le LM2907.

    Seulement là je me heurte à ma non expérience et je me rend compte que Proteus refuse de lancer la simulation. Et je ne vois pas pourquoi ?

    Lorsque je remplace les alims (sorties du régulateur) des circuits par des alims DC externe (je suis toujours sur proteus) le montage alors fonctionne. Cela viendrait-il du fait que mon régulateur ne supporte pas d'alimenter mes différents circuits (pourtant j'ai remplacer ce régulateur par un LM317 et ça ne fonctionne quand même pas )? Je ne comprends pas pourquoi et je n'ai pas vraiment de notions sur les régulateur de tensions.

    Bref, voilà voilà j'ai l'impression d'être revenu en arrière où il n'est plus question d'afficher une fréquence mais de trouver comment alimenter mon circuit

    Nom : Capture d’écran 2022-07-23 191458.jpg
Affichages : 214
Taille : 203,4 Ko

  16. #15
    mag1

    Re : Programmation sur PIC

    même si je me rend bien compte que comme vous le disiez Mag1 " Il faut savoir le but rechercher "
    Bonjour,
    On est entre amis...en général, on se tutoies.
    Quelques questions fondamentales:
    Tu veux programmer un PIC, ok, mais en quel langage? Assembleur? C?
    Le schéma que tu envisages, avec une double conversion, ne donnera pas une très grande précision. Quelle es celle que tu recherches
    Tu dis, "la conversion me semble très lente, l'affichage en pâti..." Sur quoi te bases tu ? Une simulation n'est jamais la réalité.
    Quelle vitesse de rafraîchissement vises tu ?
    Sur ma vidéo, il est de 1 seconde (temps de comptage). Une variation rapide devient vite illisible.
    Alors, un LCD 1602 ? Chiche...
    MM
    Si il y a des erreurs ci dessus, c'est que je n'ai pas eu le temps de les corriger...

  17. #16
    antek

    Re : Programmation sur PIC

    Citation Envoyé par MatMacMat Voir le message
    J'imagine qu'il me faut de tout manière un PIC avec 8 entrées minimum du à mes 8 bits de l'ADC.
    La résolution du ADC ne nécessite pas une sortie par bit !
    Le résultat est stocké dans un registre interne.

    Pour la mesure elle-même, le plus simple est de mesurer la période (avec les timers).

    Le cours de Bigonoff est en effet excellent, et cela n'oblige pas à partager sa diatribe.
    L'électronique c'est comme le violon. Soit on joue juste, soit on joue tzigane . . .

  18. #17
    Forhorse

    Re : Programmation sur PIC

    N'espère pas simuler totalement ton montage, déjà ça demande trop de ressources, et ensuite c'est inutile.
    Il faut décomposer le montage par bloc ou par fonctions et les simuler séparément.
    Quand toutes les fonctions fonctionnent de façons satisfaisantes en simulation, il faut les assembler pour de vrai et voir ce que ça donne, et apporter les corrections nécessaires, quitte à repasser par la case simulation.
    Simuler un étage d'alimentation n'a aucun intérêt.
    Tu dois te concentrer sur la fonction utile de ton montage (même si on peut douter de l’intérêt d'un convertisseur fréquence tension vu le but recherché en utilisant un µC...) et sur le développement software
    Tout projet flou conduit à une connerie précise !

  19. #18
    mag1

    Re : Programmation sur PIC

    Bonjour,
    Je n'ai pas encore bien compris le but rechercher.
    Si c'est de construire un fréquencemètre, il y a des solutions simples avec des µC simples
    Si c'est d'appendre à programmer des PIC, il faut réfléchir aux différents langages : ASM, C,C++, basic, autres, il y en a beaucoup et l'ASM n'est pas le plus facile. Dans ce cas, mets le fréquencemètre de côté et commence par faire clignoter une led avec le langage choisi, ça te donnera l'envie de continuer.
    Ce n'est que mon avis.
    Pour info:
    Nom : fréqmètre LCD.JPG
Affichages : 208
Taille : 72,0 Ko
    MM
    Si il y a des erreurs ci dessus, c'est que je n'ai pas eu le temps de les corriger...

  20. #19
    MatMacMat

    Re : Programmation sur PIC

    Bonjour,

    Non le but est de faire un petit fréquencemètre avec un signal carré, triangle et "sinusoïdale. Le langage que j'utilise est le C (J'ai quelques notions mais très peu). Mais l'objectif est de faire un petit montage électronique dans le but de pratiquer. Le µC n'était à la base pas du tout prévu, mais après je me suis dit que ce serait bien de mettre un affichage de la fréquence en plus de points de tests.

    Pour le fait d'allumer une led, ou bien lire l'état d'un BP. Je l'ai déjà fait, j'ai un petit peu pratiquer.

    La solution de fréquencemètre par µC est surement bien plus propre et plus élégantes que mon usine à gaz, mais comme mon but est de crée de petits montages électronique je préfère ne pas l'utiliser.

    Plus haut Antek à dit : " Pour la mesure elle-même, le plus simple est de mesurer la période (avec les timers)".

    Je vais essayer de m'orienter vers cette solution, je ne connais pas les timers, du moins que de nom mais je vais m'informer et voir si je suis capable de réussir à en faire quelque chose. Après si vous avez des conseils je suis preneur, mais je ne souhaite pas avoir la solution, j'aimerais réussir par moi même, je me dis que c'est le meilleurs moyen d'apprendre.

    Je vous avoue que de convertir ma fréquence en tension pour calculer la fréquence me plaisait beaucoup, mais avec vos retours je me rend compte que cette solution est tout sauf bonne .

    En vous remerciant = ) ,

  21. #20
    antek

    Re : Programmation sur PIC

    Citation Envoyé par MatMacMat Voir le message
    Après si vous avez des conseils je suis preneur, mais je ne souhaite pas avoir la solution, j'aimerais réussir par moi même, je me dis que c'est le meilleurs moyen d'apprendre.

    Je vous avoue que de convertir ma fréquence en tension pour calculer la fréquence me plaisait beaucoup . . .
    Suivre les cours Bigonoff du début à la fin sans rien sauter, et dans trois mois t'es au top

    C'est justifié si tu as besoin d'une représentation analogique de la fréquence.
    L'électronique c'est comme le violon. Soit on joue juste, soit on joue tzigane . . .

Discussions similaires

  1. Programmation PaC
    Par invitec5c48aa8 dans le forum Habitat bioclimatique, isolation et chauffage
    Réponses: 3
    Dernier message: 22/07/2020, 11h57
  2. quelle est la difference entre programmation procedurale et la programmation orientee objet
    Par invite430abc62 dans le forum Programmation et langages, Algorithmique
    Réponses: 9
    Dernier message: 27/01/2016, 12h34
  3. programmation
    Par invite3cb6216c dans le forum Programmation et langages, Algorithmique
    Réponses: 1
    Dernier message: 03/05/2015, 16h08
  4. Programmation en C PWM
    Par invite6b988c3c dans le forum Électronique
    Réponses: 6
    Dernier message: 05/12/2011, 15h21
  5. programmation pic+led
    Par invitea39e55a1 dans le forum Électronique
    Réponses: 11
    Dernier message: 04/07/2008, 08h33
Dans la rubrique Tech de Futura, découvrez nos comparatifs produits sur l'informatique et les technologies : imprimantes laser couleur, casques audio, chaises gamer...