Bienvenue aux nouveaux arrivants sur FantasPic !

- Pensez à lire les règles durant votre visite, il n'y en a pas beaucoup, mais encore faut-il les respecter .
- N’hésitez pas à faire des remarques et/ou suggestions sur le Forum, dans le but de l'améliorer et de rendre vos prochaines visites plus agréables.
- Vous pouvez regarder votre "panneau de l'utilisateur" afin de configurer vos préférences.
- Un passage par "l'utilisation du forum" est recommandé pour connaître les fonctionnalités du forum.

--- L’équipe FantasPic ---
Forum général sur l'Assembleur !

Modérateur : mazertoc

[Projet] Testeur TTL avec 7segs bicolore
F6FCO
Avatar de l’utilisateur
Expert
Expert
Messages : 2846
Âge : 99
Enregistré en : décembre 2017
Localisation : Banlieue sud de Klyntar
Contact :

#1 Message par F6FCO » sam. 20 déc. 2025 14:52

Salut les gens,
Encore un autre testeur TTL. Pas vraiment besoin parce qu'en ai déjà plusieurs mais j'étais obligé de le faire quand j'ai découvert cet afficheur 7 segs bicolore chez Aliex, çà me démangeait.
https://fr.aliexpress.com/item/10050073 ... pt=glo2fra
et puis pas un enième projet inutile car c'est l'instrument de mesure que j'utilise le plus dans mes projets, pour vérifier des niveaux sur pins ou traces PCB il remplace avantageusement et plus simplement l'oscillo, l'analyseur logique ou le multimètre, on pose la pointe sur la pin ou la trace à tester et il indique immédiatement l'état haut ou bas, une seule main occupée et qui évite des câbles de mesure qui traînent sur le projet.

J'en ai déjà fait plusieurs avec des 16F88, recherche sur le forum, mais je n'en ai plus et le Père Noel n'a plus l'air d'en fabriquer, cette fois j'ai utilisé un 18F2525.
Affiche un L rouge pour une mesure d'état bas et un H vert pour état haut. J'avais aussi implémenté une led jaune pour la zone grise mais elle ne sert plus.

Rappel des niveaux TTL:
0 à 0.8v état bas
0.8 à 2v zone grise hors TTL
2 à 5v état haut


Mesure sur AN0 (A0), en dessous de 0.8v (0x29 sur AN0) affiche état bas, en dessus de 2v (0x69) affiche état haut. En début de projet entre 0.8 et 2v il éteignait l'afficheur et allumait une led jaune pour afficher la zone grise (piste coupée, pin HS sans tension, etc.), mais j'ai du utiliser cette zone grise pour le fonctionnement et garder le testeur éteint hors mesure.

Petit moment de galère: Dés le départ tout fonctionnait nickel si ce n'est qu'il affichait un état bas hors mesure (quand le testeur était posé sur la table par exemple). Pas tolérable, en mesure on n'aurait jamais été sur d'un vrai état bas. Petit coup d'oscillo et visu d'une tension résiduelle sinusoidale près du zéro en non utilisation, peut-être due au chevelu de la breadboard mais pour avoir un outil robuste j'ai voulu traiter ce souci. J'ai tenté diverses routines asm pour la détecter et la gérer mais rien de probant, elle faisait toujours ch*** le monde.
Finalement j'ai résolu le problème en ajoutant un pont diviseur avec deux R de très forte valeur pour avoir un courant faible sur la pointe de touche, 1M/470k qui hors mesure ramène la tension présente sur AN0 à 1.2v en pleine zone grise et afficheur éteint par code. Tout roule, le faible courant dans le pont diviseur fait qu'un vrai état haut ou bas mesuré prend le pas et s'affiche correctement.
Si je me retrouve un jour en mesure avec afficheur éteint, la question se posera de vérifier si on est en vraie zone grise (entre 0.8 et 2v, ce qui arrive très rarement) ou sur un point inerte, il faudra sortir le multimètre ou l'oscillo pour lever le doute, on peut vivre avec.

Petit afficheur bien sympa:

KYX-5161_a.JPG

KYX-5161_b.JPG


Le schéma ultra simple:

IMG_20251220_0002.jpg


Projet sur platine dev et breadboard, pour la mise au point AN0 est branchée sur le pot 10k de la platine DEV:

Etat bas 0 à 0.8v, L rouge affiché
0bas.jpg


Juste au début zone grise, afficheur éteint
1zg.jpg


Juste en limite max de zone grise, afficheur éteint
2zg.jpg


Etat haut 2 à 5v, H vert affiché
3haut.jpg


Reste plus qu'à sortir Eagle pour pondre un circuit imprimé en forme de stylo.

Code asm:

Code : Tout sélectionner



        Errorlevel
-302                 ; Supprime le message "Ensure that bank bits are correct" 
        list            p
=18f2525        ; processeur utilisé 
        
#include        <p18f2525.inc>        ; Définitions des constantes PIC
    ;#include    <LCD_18F.inc>        ; définitions des constantes LCD
    
 CONFIG OSC 
= INTIO67                         ; Oscillateur interne 8MHz 
 CONFIG IESO 
= OFF                            ; Délai au démarrage (ON/OFF)
 CONFIG BOREN = OFF                           ; Reset si chute de tension (ON/OFF)
 CONFIG PWRT = ON                              ; Délai au démarrage (ON/OFF)
 CONFIG BORV = 0                              ; Tension de reset en 1/10ème Volts 
 CONFIG WDT 
= OFF                             ; Mise hors service du watchdog (ON/OFF)
 CONFIG PBADEN = OFF                          ; PORTB<4:0> les broches sont configurées comme E/S numériques lors de la réinitialisation
 CONFIG LPT1OSC 
= OFF                         ; Timer1 configuré pour un fonctionnement plus puissant
 CONFIG MCLRE 
= ON                            ; Mclr configuré comme entrée
 CONFIG STVREN 
= ON                           ; Reset sur débordement de pile (ON/OFF)
 CONFIG LVP = OFF                             ; Programmation basse tension autorisée (ON/OFF)
 CONFIG XINST = OFF                           ; L'extension du jeu d'instructions et le mode d'adressage indexé sont désactivés(mode hérité)
 CONFIG DEBUG = OFF                           ; Debugger hors service
 CONFIG CP0 = OFF                             ; Code protection sur block 0 (ON/OFF)
 CONFIG CP1 = OFF                             ; Code protection sur block 1 (ON/OFF)
 CONFIG CP2 = OFF                             ; Code protection sur block 2 (ON/OFF)
 CONFIG CPB = OFF                             ; Code protection sur bootblock  (ON/OFF)
 CONFIG CPD = OFF                             ; Code protection sur eeprom (ON/OFF)
 CONFIG WRT0 = OFF                            ; Protection écriture block 0 (ON/OFF)
 CONFIG WRT1 = OFF                            ; Protection écriture block 1 (ON/OFF)
 CONFIG WRT2 = OFF                            ; Protection écriture block 2 (ON/OFF)
 CONFIG WRTB = OFF                            ; Protection écriture bootblock (ON/OFF)
 CONFIG WRTC = OFF                            ; Protection écriture configurations (ON/OFF)
 CONFIG WRTD = OFF                            ; Protection écriture zone eeprom (ON/OFF)
 CONFIG EBTR0 = OFF                           ; Protection lecture de table block 0 (ON/OFF)
 CONFIG EBTR1 = OFF                           ; Protection lecture de table block 1 (ON/OFF)
 CONFIG EBTR2 = OFF                           ; Protection lecture de table block 2 (ON/OFF)
 CONFIG EBTRB = OFF                           ; Protection lecture de table bootblock (ON/OFF)



Code : Tout sélectionner

;**********************************************************************
;
                                                                    
;            Testeur avec afficheur 7 segs KYX5161 bicolore
;                      F6FCO - dec 2025          
;                                                                     
;**********************************************************************

#include <Fusibles_18F2525.asm>



#define vert        LATB,2 ; Etat logique haut
#define rouge        LATB,1 ; Etat logique bas
#define    digit_a        LATC,7
#define digit_b        LATB,0
#define digit_c        LATA,3
#define digit_d        LATA,4
#define digit_e        LATA,5
#define digit_f        LATC,6
#define digit_g        LATC,4
;#define digit_dp    LATC,6



    CBLOCK 0x00C               
    w_temp         
:1        ; Sauvegarde du registre W
    status_temp     
:1        ; Sauvegarde du registre STATUS
    Reg_1        
:1
    Reg_2        
:1
    Reg_3        
:1
    conchita    
:2        ; variable bonne à tout faire
    ENDC                                      

    org    0x000             
; Adresse de départ après reset
     bra        init            
; Adresse 0: initialiser

; ------------------------  Routines Interruptions                            
    
;sauvegarder registres    
    org     0x008            
; adresse d'interruption
    movwf   w_temp          ; sauver registre W
    swapf    STATUS,w        ; swap status avec résultat dans w
    movwf    status_temp        ; sauver status swappé
    
    ; Interrupt MSSP
    btfss    PIR1,SSPIF        ; <3>
    bra    restorereg        
    call    intMSSP            ; on vient d'
avoir une int MSSP, on la traite
        
    
;restaurer registres
restorereg
    swapf    status_temp
,w        ; swap ancien status, résultat dans w
    movwf   STATUS            
; restaurer status
    swapf   w_temp
,f        ; Inversion L et H de l'ancien W, sans modifier Z
    swapf   w_temp,w          ; Réinversion de L et H dans W, W restauré sans modifier status
    retfie              ; return from interrupt

intMSSP
    movff    SSPBUF,PORTB
    bsf    SSPCON1,CKP        ; on relâche l'
horloge
    bcf    PIR1
,SSPIF        ; <3> raz flag d'interrupt                         
    return
    
    
    
; ------------------------ Init

init
    clrf    EEADR            ; diminue la consommation
    ; init oscillateur
    movlw    0xff            ; Horloge interne 8Mhz
    movwf    OSCCON
          
          movlw    0x07
          movwf    CMCON            ; mode comparateur désactivé

    movlw    b'
00000001'        
    movwf    TRISA
    clrf    PORTA
    clrf    LATA

    movlw    b'
00000000'        
    movwf    TRISB
    clrf    PORTB
    clrf    LATB
    
    movlw    b'
00000000'        ;         
    movwf    TRISC
    clrf    PORTC
    clrf    LATC

    ; init interruptions
    bsf    RCON,IPEN
    bsf    INTCON,GIE        ; <7> int non masquées activées
    bsf    INTCON,PEIE        ; <6> int périphériques non masquées activées
    bsf    PIE1,SSPIE        ; <3> MSSP activé
    bcf    PIR1,SSPIF        ; <3> flag interrupt à zéro
    bsf    SSPCON1,SSPEN        ; <5> pins I²C en mode SDA/SCL
    
    ; init conversion AD
    clrf    ADCON0
    bsf    ADCON0,ADON        ; convertisseur ON        

    movlw    b'
00001110'        ; AN0 en entrée analogique
    movwf    ADCON1
    
    movlw    b'
00001110'
    movwf    ADCON2            ; ADFM droite
                    ; ACQT=10
                    ; ADCS=10
                    
        
    


    


    ; vers main
; -----------------------------------
            



Code : Tout sélectionner


    
#include    <Testeur_KYX5161_Init.asm>

main
    
; démarrage conversion
    bsf    ADCON0
,GO    
loop1
    btfsc    ADCON0
,GO
    bra    loop1
    
; en dessous de 0.8v (0x29) -- > état TTL bas
    
; au dessus de 2v (0x66) --> état TTL haut
    call    tempo10ms
    
    
; test si on est au dessus de 2v (état logique haut)
test_h    movff    ADRESH,WREG        
    sublw    0x69        
; limite min état haut
    btfsc    STATUS
,C
    bra    test_b
    bra    affiche_etat_haut
    
    
; test si on est en dessous de 0.8v (état logique bas )
test_b    movff    ADRESH,WREG
    sublw    0x29        
; limite max état bas
    btfss    STATUS
,C
    bra    test_z
    bra    affiche_etat_bas

    
; test zone grise
test_z    movff    ADRESH
,WREG
    sublw    0x29        
; limite min zone grise
    btfsc    STATUS
,C
    bra    fin
    sublw    0x69        
; limite max zone grise
    btfsc    STATUS
,C
    bra    fin
    bra    extinction_zone_grise
fin    bra    main


affiche_etat_haut         
; au-dessus de 2v
    nop
    bcf    rouge
    bsf    vert
    bcf    digit_d
    bsf    digit_c
    bsf    digit_b
    bsf    digit_f
    bsf    digit_e
    bsf    digit_g
    bra    main
    
affiche_etat_bas        
; en-dessous de 0.8v
    nop
    bcf    vert
    bsf    rouge    
    bcf    digit_c
    bcf    digit_b
    bcf    digit_g
    bsf    digit_f
    bsf    digit_e
    bsf    digit_d
    bra    main
    
extinction_zone_grise        
; entre 0.8 et 2v
    
;bsf    led_jaune
    bcf    digit_a
    bcf    digit_b
    bcf    digit_c
    bcf    digit_d
    bcf    digit_e
    bcf    digit_f
    bcf    digit_g
    bra    main

tempo10ms
; Délai 20 000 Cycles de la machine
; Durée du délai 10 millisecond
; Fréquence de l'oscillateur 8 MHZ
            movlw       .248
            movwf       Reg_1,1
            movlw       .26
            movwf       Reg_2
            decfsz      Reg_1,F,1
            bra         $-2
            decfsz      Reg_2
            bra         $-6
            nop
            return



    ;#include    <Testeur_KYX5161_routines.asm>
    
    

    END                          

Vous n’avez pas les permissions nécessaires pour voir les fichiers joints à ce message.
Modifié en dernier par F6FCO le dim. 21 déc. 2025 11:13, modifié 1 fois.
Une porte nand prend 2 bits en entrée... :eek:

[PROJET] Testeur TTL avec 7segs bicolore
gwion
Expert
Expert
Messages : 1121
Enregistré en : février 2022

#2 Message par gwion » sam. 20 déc. 2025 15:22

Bonjour la foule,

Joli projet Jean-Claude.
Pour l'histoire de l'état bas qui s'affiche au repos, on peut imaginer de détecter quand la sonde est en main.
Le topissime du topissime pour une sonde comme celle-ci serait de pouvoir l'alimenter sur pile ou encore mieux par batterie rechargeable. Et la cerise sur le gâteau, le nec plus ultra du topissime : ne pas raccorder de fil de masse. Mais bon là je rêve :-)

[PROJET] Testeur TTL avec 7segs bicolore
Gérard
Avatar de l’utilisateur
Expert
Expert
Messages : 1937
Âge : 67
Enregistré en : septembre 2015
Localisation : Alsace - Haut-Rhin

#3 Message par Gérard » sam. 20 déc. 2025 16:17

Bonjour à tous,

J"aime bien, encore une bonne idée de JC.
Tu es décidément trop fort.
Impatiant de voir le résultat.

:bravo:
Le 18/04/19 je suis devenu papy de jumeaux, le 01/09/23 une petite cousine des jumeaux est née.

[PROJET] Testeur TTL avec 7segs bicolore
F6FCO
Avatar de l’utilisateur
Expert
Expert
Messages : 2846
Âge : 99
Enregistré en : décembre 2017
Localisation : Banlieue sud de Klyntar
Contact :

#4 Message par F6FCO » sam. 20 déc. 2025 16:52

Merci, maintenant je vais m'amuser avec Eagle, çà fait aussi partie du plaisir.
Alimenter avec une pile j'y ai bien pensé, j'ai justement une pile 9v rechargeable par USB, et comme tu dis il faut le fil de masse avec pince croco.
Tous ceux que j'ai construits jusqu'à maintenant ont une alim 5v à piquer sur la breadboard par deux fils Dupont mâles donc gnd par l'alim, avec risque d'inversion un jour de cerveau limité, çà m'est arrivé une fois déjà. Ici l'idée était de se piquer directement sur le +12v qui alimente toujours mes projets avec une diode en série pour éviter les erreurs, mais encore limité au développement de projet.
Intégrer la pile 9v permettrait de le rendre portable et les 0.7v bouffés par la diode avant le 7805 ne seraient pas un pbm.
Allez on part la-dessus, il sera juste un peu plus gros que prévu et un fil à la patte :-D

Et en poussant le bouchon un peu plus loin on pourrait même intégrer un ces afficheurs flèche pour marquer les changements de niveau, parfaitement inutile donc indispensable https://fr.aliexpress.com/item/10050059 ... in_prod%3A (dommage qu'il ne soit pas bicolore), mais on va rester simple quand même.
Une porte nand prend 2 bits en entrée... :eek:

[PROJET] Testeur TTL avec 7segs bicolore
gwion
Expert
Expert
Messages : 1121
Enregistré en : février 2022

#5 Message par gwion » sam. 20 déc. 2025 18:30

Plutôt que de mettre une diode genre 1N400x, on peut employer une Schottky pour gagner un peu sur la chute de tension.
Ou le nec plus ultra, un petit MOSFET à faible Rds qui ne va pas provoquer de chute de tension.

https://octopart.com/fr/pulse/p/protecting-your-circuit

Pour la sonde sur pile ou batterie, la détection de la prise en main permet de minimiser la consommation. Voir le super TTP223 ou si on veut taper dans le haut de gamme un CAP1203 de Microchip.

[PROJET] Testeur TTL avec 7segs bicolore
gwion
Expert
Expert
Messages : 1121
Enregistré en : février 2022

#6 Message par gwion » sam. 20 déc. 2025 19:45

N'oublions pas non plus les MCU 3,3V.
Un inverseur pour choisir la plage de tension ?
Un bouton "calibration" pour mesurer la tension d'alim avec la sonde et en déduire les intervalles haut/bas ?

[PROJET] Testeur TTL avec 7segs bicolore
gwion
Expert
Expert
Messages : 1121
Enregistré en : février 2022

#7 Message par gwion » dim. 21 déc. 2025 10:20

Après une nuit là dessus, il me semble que le mieux pour l'alimentation soit un élément 18650, pour rester dans le compact. Au pire 2 en série.
Et si on avait un stand pour reposer la sonde qui ferait en même temps chargeur, ce serait magnifique non ? Et en prime un bon plan pour savoir en permanence où trouver cette p...n de sonde de m...e :sifflotte:
J'ose à peine suggérer d'ajouter un éclairage de la pointe de touche, de peur d'abuser :langue:

[PROJET] Testeur TTL avec 7segs bicolore
F6FCO
Avatar de l’utilisateur
Expert
Expert
Messages : 2846
Âge : 99
Enregistré en : décembre 2017
Localisation : Banlieue sud de Klyntar
Contact :

#8 Message par F6FCO » dim. 21 déc. 2025 10:56

Peut-être un caraboutsizeur monté en inverse pour atomiser le courant induit dans le fluxomètre ? ce qui permettrait de quantiser le surplus de tension parallèle dans la 1N4148, et hop! on est tranquille.

Quand il est comme çà le mieux c'est de le laisser causer 8-)
Une porte nand prend 2 bits en entrée... :eek:

[Projet] Testeur TTL avec 7segs bicolore
Gérard
Avatar de l’utilisateur
Expert
Expert
Messages : 1937
Âge : 67
Enregistré en : septembre 2015
Localisation : Alsace - Haut-Rhin

#9 Message par Gérard » dim. 21 déc. 2025 11:28

F6FCO a écrit :Peut-être un caraboutsizeur monté en inverse pour atomiser le courant induit dans le fluxomètre ? ce qui permettrait de quantiser le surplus de tension parallèle dans la 1N4148, et hop! on est tranquille.


Je suis d'accord avec toi, mais tu devrais te procurer un radiomètre, on ne sait jamais, peut-être que les produits asiatiques émettent des ondes gamma... :eek:

F6FCO a écrit :Quand il est comme çà le mieux c'est de le laisser causer 8-)


Je pense à une intervention du Dr. Emmett Brown.
Mais que fait Marty? Est il parti avec ET?
Le 18/04/19 je suis devenu papy de jumeaux, le 01/09/23 une petite cousine des jumeaux est née.

[Projet] Testeur TTL avec 7segs bicolore
F6FCO
Avatar de l’utilisateur
Expert
Expert
Messages : 2846
Âge : 99
Enregistré en : décembre 2017
Localisation : Banlieue sud de Klyntar
Contact :

#10 Message par F6FCO » dim. 21 déc. 2025 12:16

Bah suis pas inquiet, c'est rien qu'une petite crise, il nous en fait régulièrement.
Je me rends compte que mon schéma à main levée plus haut est incomplet, j'ai oublié les npn qui pilotent les anodes communes. Je vais corriger çà et rajouter une résistance en dur sur le dp qui servira de led témoin de fonctionnement, çà évitera de le laisser allumé hors projet..
Une porte nand prend 2 bits en entrée... :eek:


Retourner vers « Langage ASM »

Qui est en ligne

Utilisateurs parcourant ce forum : Aucun utilisateur enregistré et 15 invités