Audiyofan
Audiyofan




Poster un nouveau sujet Répondre au sujet  [ 14 messages ] 
Auteur Message
 Sujet du message: DC detector
MessagePosté: Jeu 10 Mar 2005, 23:57 
Hors ligne
Site Admin

Inscription: Dim 30 Mai 2004, 14:54
Messages: 437
Localisation: Plein sud
Salut !

Un pic equipé d'une frequencemetre peut t'il detecter le DC ?

je par sur le principe de la tres basse frequence, le pic coupe le relais si il y a par exemple moin de 15hz...


voyé ?


bye


Haut
 Profil  
 
 Sujet du message:
MessagePosté: Jeu 10 Mar 2005, 23:57 
Hors ligne
Site Admin

Inscription: Dim 30 Mai 2004, 14:54
Messages: 437
Localisation: Plein sud
pour la frequence, c'est à determiner...


Haut
 Profil  
 
 Sujet du message:
MessagePosté: Ven 11 Mar 2005, 00:20 
Hors ligne
Site Admin

Inscription: Dim 30 Mai 2004, 14:54
Messages: 437
Localisation: Plein sud
1er code

http://www.melabs.com/resources/samples ... ounter.zip

Code:
    ' Pulse counter
    ' =============
    '
    ' File name : Count_Display.bas
    ' Company : Mister E
    ' Programmer : Steve Monfette
    ' Date : 27/12/2004
    ' Device : PIC16F84A-20/P
    '
    '
    ' This program display to 3 x 7 segments dislay the result of
    ' pulses count on PORTA.4 pin/sec.
    '
    '
    ' Hardware connection :
    ' ---------------------
    '      1. 3 X 7 segments display on PORTB<7:0>
    '      2. 3 X PNP transistor on PORTA<3:0> to drive common anode
    '         of each 7 segments display
    '
    '
    ' Programming mode and PIC define
    ' -------------------------------
    '
   @ __config _HS_OSC & _WDT_ON & _PWRTE_ON
    ' HS oscillator
    ' Enable watch dog timer
    ' Enable power up timer
    '
    DEFINE OSC 20 ' use 20 MHZ oscillator


    ' I/O Definition
    ' --------------
    '
    TRISA = %11110000 ' PORTA  : <2:0> outputs to common Anode of 7 segment
                      '                1. PORTA.0 More significant
                      '                2. PORTA.2 Less significant
                      '        : PORTA.4 input for signal
                      '
    TRISB = 0         ' PORTB connected to 7 segments
                      '       B0 : segment a
                      '       B1 : segment b
                      '       B2 : segment c
                      '       B3 : segment d
                      '       B4 : segment e
                      '       B5 : segment f
                      '       B6 : segment g
                      '       B7 : segment decimal dot
                     

    ' Internal EEPROM definition
    ' --------------------------
    '
    data @0,192,249,164,176,153,146,130,248,128,144 ' table to convert
                                                    ' numbers to 7 segments
                                                    ' pattern output when
                                                    ' drive invert
                                                   


    ' Interrupt and register definition
    ' ---------------------------------
    '
    OPTION_REG = %1111000   ' TMR0 clock source : RA4/T0CKI
                            ' increment on low to high transition
                            ' Prescaler assign to WDT
                            ' WDT rate 1:1
                            '
    INTCON = %10100000      ' Enable global interrupt
                            ' Disable EE write interrupt
                            ' Enable TMR0 overflow interrupt

       
    ' Variable definition
    ' -------------------
    '
    DisplayPort  var PORTB   ' Port for 7 Segments     
    ClockInput   var PORTA.4 ' Input pin for signal
    _7Seg1       con 14      ' enable more significant 7 segment display
    _7Seg2       con 13      ' enable mid significant 7 segment display
    _7Seg3       con 11      ' enable less significant 7 segment display
    Digit_1        var byte    ' Hundreds digit
    Digit_2        var byte    ' Tenth digit
    Digit_3        var byte    ' Unit digit
    ToBeDisplay    var word    ' Result of count to be send to 7 segment display
    Display      var byte    ' Temp variable
    DisplayLoop  var byte    '
    Delay        var word    ' Variable for Delay loop
    OverFlowVar  var word    '
    Thousands    var bit    ' Flag for count >= 1000 & < 10 000
    TenThousands var bit    ' Flag for count >= 10 000

    ' Variable and software initialisation
    ' ------------------------------------
    '
    tobedisplay = 0 ' set initial value of count
    TMR0 = 0        ' reset prescaller
    on interrupt goto SetVarToBeDisplay
   
MainLoop:

    ' MainLoop
    ' ---------
    '
    ' 1. display the result of the count on RA4 pin
    ' 2. refresh display
    ' 3. reset Timer0
    ' 4. reload prescaler.
    '
    ' Duration of the procedure : 1 sec
    '           fine tuned by DelayBetweenEachDisplay Sub
    '
    ' Looping 1 sec and get results of the pulse count in
    ' TMR0 + OverFlowVar
    '
    DisplayRefresh:
   '
    ' Testing amount of count
    ' -----------------------
    '
    ' Get the result of count and place decimal point flag
    ' on the according 7 segments
    '
    If tobedisplay>=1000 then
       tobedisplay=tobedisplay/10
       if tobedisplay>=1000 then
          tobedisplay=tobedisplay/10
          Thousands=0
          TenThousands=1
       else
          TenThousands=0
          thousands=1
       endif
     else
       thousands=0
       tenthousands=0
    endif
    '
    ' convert digit to 7 segment output pattern
    ' -----------------------------------------
    display=ToBeDisplay dig 2 ' Read hundreds digit
    read display,digit_1      ' Convert hundreds
   if thousands==1 then digit_1=digit_1 & $7F ' enable decimal dot
                                              ' by clearing PORTB.7

    display=ToBeDisplay dig 1 ' Read tenths digit
    read display,digit_2      ' Convert tenths
    if tenthousands==1 then digit_2=digit_2 & $7F ' enable decimal dot                          '
                                                  ' by clearing PORTB.7
                                                 
    display=ToBeDisplay dig 0 ' Read units digit
    read display,digit_3      ' Convert units
    '
    '
    ' Send digit to 7 segments
    ' ------------------------
    for displayloop = 0 to 111 ' loop for about 1 sec

        ' display hundreds
        ' ----------------
        PORTA=_7seg1        ' enable hundreds 7 segment
        displayport=digit_1 ' display
        gosub DelayBetweenEachDigit
       
        ' display tenth
        ' -------------
        PORTA=_7seg2        ' enable tenth 7 segment
        displayport=digit_2 ' display
        gosub DelayBetweenEachDigit
       
        ' display units
        ' -------------
        PORTA=_7seg3        ' enable unit 7 segment
        displayport=digit_3 ' display
        gosub DelayBetweenEachDigit
       
    next
    tobedisplay = OverFlowVar + TMR0
    OverFlowVar = 0 ' Reset OverFlowVar
    TMR0 = 0        ' reset prescaller
    goto DisplayRefresh


DelayBetweenEachDigit:

    ' DelayBetweenEachDigit
    ' ---------------------
    ' Produce delay of about 3 mSec
    '
    ' Fine tuned with MPLAB StopWatch to get MainLoop = 1 sec
    '
   for delay=1 to 307
       @ nop
   next
   @ nop
   @ nop
   @ nop
   @ nop
   @ nop
   @ nop
   @ nop
    return


    disable
SetVarToBeDisplay:
    '
    ' SetVarToBeDisplay
    ' -----------------
    ' interrupt routine of TMR0 overflow
    '
    ' Reset prescaller
    ' Reset overflow flag
    '
    OverFlowVar = OverFlowVar + 256
    INTCON.2 = 0 ' clear overflow flag
    TMR0 = 0     ' reload TMR0
    resume


Haut
 Profil  
 
 Sujet du message:
MessagePosté: Sam 23 Avr 2005, 22:15 
Hors ligne
Inscrits

Inscription: Mer 15 Sep 2004, 17:54
Messages: 2
pas la peine d'aller si loin !

un gros filtre passe bas en sortie

(genre resistance de 220k pour pas perturbe la sortie et un condo de 10µF)
attaquant un AOP (pour pouvoir faire une offset de 2.5V) dont la sortie attaque le PIC sur un des ADC !


Haut
 Profil  
 
 Sujet du message:
MessagePosté: Dim 24 Avr 2005, 13:29 
Hors ligne
Site Admin

Inscription: Dim 30 Mai 2004, 14:54
Messages: 437
Localisation: Plein sud
le condo ne va pas se charger tout seul sans DC ?


Haut
 Profil  
 
 Sujet du message:
MessagePosté: Dim 24 Avr 2005, 17:58 
Hors ligne
Membre Assidu

Inscription: Mer 01 Oct 2003, 22:09
Messages: 140
Localisation: Haut Rhin
y a des systemes tout fait ...pk te faire chier ??


Haut
 Profil  
 
 Sujet du message:
MessagePosté: Dim 24 Avr 2005, 18:56 
Hors ligne
Inscrits

Inscription: Mer 15 Sep 2004, 17:54
Messages: 2
Un condensateur laisse passer l'alternatif, donc forcement tous va passer a la masse... (c'est cette caracteristique qu'on utilise pour les condo de liaison, le continue est bloquer et l'alternatif passe)

Ux86 : peut être qu'il veut faire comme moi, un PIC qui gere l'alumage (SoftStart, la tempo des HP), l'extinction (l'anticloque), la protection thermique...


Haut
 Profil  
 
 Sujet du message:
MessagePosté: Dim 24 Avr 2005, 19:18 
Hors ligne
Membre Assidu

Inscription: Mer 01 Oct 2003, 22:09
Messages: 140
Localisation: Haut Rhin
faudrait déjà que son aleph fonctionne correctement lol

pour la protection je disais qu'il y avait des schema éprouvé pour ca ... donc à utiliser

apres .... il peut metre un PIC pour là où il veut


Haut
 Profil  
 
 Sujet du message:
MessagePosté: Dim 24 Avr 2005, 22:06 
Hors ligne
Site Admin

Inscription: Dim 30 Mai 2004, 14:54
Messages: 437
Localisation: Plein sud
CloudStrife a écrit:
Ux86 : peut être qu'il veut faire comme moi, un PIC qui gere l'alumage (SoftStart, la tempo des HP), l'extinction (l'anticloque), la protection thermique...


exactement ;)

tout est ok, manque le DC Protection, et la temperature mais pas vraiment besoin


Haut
 Profil  
 
 Sujet du message:
MessagePosté: Dim 24 Avr 2005, 22:08 
Hors ligne
Site Admin

Inscription: Dim 30 Mai 2004, 14:54
Messages: 437
Localisation: Plein sud
UltimateX86 a écrit:
pour la protection je disais qu'il y avait des schema éprouvé pour ca ... donc à utiliser


ouai mais sur un AX c different je pence !
il faut gerer le DC Offset, et 2x la detection du continu


Haut
 Profil  
 
 Sujet du message:
MessagePosté: Dim 24 Avr 2005, 22:11 
Hors ligne
Membre Assidu

Inscription: Mer 01 Oct 2003, 22:09
Messages: 140
Localisation: Haut Rhin
MaXx a écrit:
UltimateX86 a écrit:
pour la protection je disais qu'il y avait des schema éprouvé pour ca ... donc à utiliser


ouai mais sur un AX c different je pence !
il faut gerer le DC Offset, et 2x la detection du continu


c'est la même chose :roll:


Haut
 Profil  
 
 Sujet du message:
MessagePosté: Dim 24 Avr 2005, 22:41 
Hors ligne
Site Admin

Inscription: Dim 30 Mai 2004, 14:54
Messages: 437
Localisation: Plein sud
oui bien sur :roll:

sans parler de la difference entre -/+ (pke pas de masse...)


Haut
 Profil  
 
 Sujet du message:
MessagePosté: Dim 24 Avr 2005, 22:52 
Hors ligne
Inscrits

Inscription: Jeu 26 Aoû 2004, 17:04
Messages: 35
Localisation: Grenoble
Bonsoir, voici mon très humble avis.

15Hz me parait sacrément haut pour une composante "DC".

Dans les détection DC que j'ai vu ici ou là, les schémas divergent selon le but recherché juste après l'extraction de la composante "DC" (en général par un simple filtre RC). Les protections DC cascadent en général avec une fonction seuil (ex: changement d'état d'un transistor), alors que les rattrapages d'offset appliquent une fonction linéaire à la composante DC (ex: intégrateur).

Je ne connais pas les PICs, encore moins leurs capacités de détection de fréquence. En tout cas, c'est pas très naturel pour moi bosser dans le domaine fréquentiel avec un signal large pour extraire et traiter des évênements de très très basse fréquence (<5Hz). Ex: les problèmes de latence de détection, la dérive de l'acquisition, que sais-je encore... Ca me parait plus simple et pas beaucoup plus couteux de bosser en temporel sur la composante DC extraite. De ce point de vue, j'imagine que c'est presque le même code que la gestion thermostatée d'un ventilo.

Yoghourt

_________________
Dzharis: raaaaaah lovelyyyy!


Haut
 Profil  
 
 Sujet du message:
MessagePosté: Lun 25 Avr 2005, 20:47 
Hors ligne
Membre Assidu

Inscription: Mer 01 Oct 2003, 22:09
Messages: 140
Localisation: Haut Rhin
regarde le schema interne d'un ths4131

regarde la sortie surtout :)

il faudrait ca sur une ampli


Haut
 Profil  
 
Afficher les messages postés depuis:  Trier par  
Poster un nouveau sujet Répondre au sujet  [ 14 messages ] 

Heures au format UTC + 1 heure


Qui est en ligne

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


Vous ne pouvez pas poster de nouveaux sujets
Vous ne pouvez pas répondre aux sujets
Vous ne pouvez pas éditer vos messages
Vous ne pouvez pas supprimer vos messages
Vous ne pouvez pas joindre des fichiers

Aller à:  
Powered by phpBB © 2000, 2002, 2005, 2007 phpBB Group
Traduction par: phpBB-fr.com