J’ai réalisé un ampli tout simple U vers I.
Un préampli micro à tester.
J’ai commencé le squelette d’un soft tournant sur un µC.
L’avantage du µC est d’avoir ADC et DAC hyper rapide, mais faible résolution (12 bits).
L’inconvénient majeur est le manque de vitesse au niveau calculs et qu’il faut tout coder en dur.
Par contre faire une PID est plus simple que sur le DSP du DSPiy.
Je suis donc retourné dans SigmaStudio pour voir s’il était possible de faire une PID.
SigmaStudio c’est très simple, mais la doc est, je trouve, relativement incomplète.
Pour une PID :
P : c’est simple, c’est l’erreur.
I : I=I+erreur, il faut donc mémoriser I, j’ai trouvé un bloc s’appelant « Sample And Hold », cela devrait corresponde mais pas certain. Suffirait d’un feedback et d’un block +.
D : c’est l’erreur du sample précédent, donc suffit d’avoir un délai de 1.
Pour I, en général on rajoute des limites, on la fait saturer à un certain niveau défini. A voir, mais le Standard Clip devrait le faire.
Ensuite on passe ces 3 paramètres dans des volumes pour ajuster les K et l’on additionne.
Une autre solution pour cette intégrale serait d’utiliser un biquad, je me plante peut être complètement et donc demande vérification.
Si l’on met les coefficients suivants : B0=1 B=0 B2=0 A2=0 A1=-1, n’obtiendrait ‘on pas l’intégrale recherchée ?
Par contre j’ai déjà fait des PID sur des moteurs, chauffage… mais je n’ai aucune idée dans l’audio le rapport entre la fs et le résultat de cette PID.
Absorbeur actif autonome
- thierryvalk
- Administrateur du site
- Messages : 3584
- Enregistré le : jeu. 9 juil. 2015 20:08
- Localisation : Belgique
Re: PID
thierryvalk a écrit :
Une autre solution pour cette intégrale serait d’utiliser un biquad, je me plante peut être complètement et donc demande vérification.
Si l’on met les coefficients suivants : B0=1 B=0 B2=0 A2=0 A1=-1, n’obtiendrait ‘on pas l’intégrale recherchée ?
J'ai regardé un peu sur internet, j'ai rien trouvé qui semblait utiliser des biquads.. Et en fait je comprend pas ce que ça ferait avec ces coefficients
- thierryvalk
- Administrateur du site
- Messages : 3584
- Enregistré le : jeu. 9 juil. 2015 20:08
- Localisation : Belgique
Re: Absorbeur actif autonome
En fait un intégrateur sous Sigmastudio semble hyper simple.
On utilise un feedback et un additionneur.
Le feedback va reprendre la valeur à T-1 et l'additionner à la valeur à T0 et devenir la valeur de T-1 pour le sample suivant.
Si nécessaire on va mettre en forme le signal d'entrée via un gain et l'on peut créer une saturation a n'importe quel niveau via un HardClip ou SoftClip.
Malheureusement le simulateur de SigmaStudio ne semble pas bien gérer les Feedback, je testerais sur la carte d'évaluation ou sur un DSPiy.
On utilise un feedback et un additionneur.
Le feedback va reprendre la valeur à T-1 et l'additionner à la valeur à T0 et devenir la valeur de T-1 pour le sample suivant.
Si nécessaire on va mettre en forme le signal d'entrée via un gain et l'on peut créer une saturation a n'importe quel niveau via un HardClip ou SoftClip.
Malheureusement le simulateur de SigmaStudio ne semble pas bien gérer les Feedback, je testerais sur la carte d'évaluation ou sur un DSPiy.
- alka
- Administrateur du site
- Messages : 2951
- Enregistré le : mer. 15 juil. 2015 15:18
- Localisation : 92
- Contact :
Re: Absorbeur actif autonome
exactement comme un intégrateur simple en code : une addition ! (dt = 1 dans ton exemple)
faut quand même multiplier par un coeff Ki et ajouter au P et D.
Je trouve l'explication du PID sur wikipedia anglais plutot bien faite. C'est orienté asservissement en position et plutot clair, et même des idées pour optimiser les coeffs.
exemple en pseudo code (setpoint = cible)
faut quand même multiplier par un coeff Ki et ajouter au P et D.
Je trouve l'explication du PID sur wikipedia anglais plutot bien faite. C'est orienté asservissement en position et plutot clair, et même des idées pour optimiser les coeffs.
exemple en pseudo code (setpoint = cible)
previous_error = 0
integral = 0
start:
error = setpoint - measured_value
integral = integral + error*dt
derivative = (error - previous_error)/dt
output = Kp*error + Ki*integral + Kd*derivative
previous_error = error
wait(dt)
goto start
- thierryvalk
- Administrateur du site
- Messages : 3584
- Enregistré le : jeu. 9 juil. 2015 20:08
- Localisation : Belgique
Re: Absorbeur actif autonome
Oui, une simple adition, mais je bloquais sur le fait de garder le résultat en mémoire qui n'a lieu d'être vu le principe du feedback.
La boucle, elle faite par le HP -> Micro.
Voici ce qui devrait faire la dérivée :
Avec filtre optionnel pour calmer le jeu.
La boucle, elle faite par le HP -> Micro.
Voici ce qui devrait faire la dérivée :
Avec filtre optionnel pour calmer le jeu.
- alka
- Administrateur du site
- Messages : 2951
- Enregistré le : mer. 15 juil. 2015 15:18
- Localisation : 92
- Contact :
Re: Absorbeur actif autonome
bien joué j'ai du mal aussi a penser a sigmastudio comme un éditeur graphique de code qui agit sur un flux de données.
ca donne des idées pour un autre projet en gestation
ca donne des idées pour un autre projet en gestation
- thierryvalk
- Administrateur du site
- Messages : 3584
- Enregistré le : jeu. 9 juil. 2015 20:08
- Localisation : Belgique
Re: Absorbeur actif autonome
Mi simulation, j’ai fait un projet sous sigmastudio qui simule +- mon HP via des filtres.
Je rente un signal Pink-noise que je mixe avec ce qui représente le micro captant la sortie de cet HP.
Ensuite filtres puis PID parallèle et enfin bouclage dans le HP.
Fonctionne sur la carte d'évaluation de l'ADAU1701
voici les courbes en jouant un peu avec tout :
Le signal In est à 80dB, en mauve le résultat de l'atténuation réalisée, donc serait le signal résultant capté par le micro qui représente l'erreur.
En rouge la sortie P, en vert la sortie I et enfin D en cyan.
Ça fonctionne +-, faut voir en contexte plus réel avec le tube.
Sachant que le signal n'est pas du Pink-noise mais surtout des fréquences plus basses dues aux modes.
Je rente un signal Pink-noise que je mixe avec ce qui représente le micro captant la sortie de cet HP.
Ensuite filtres puis PID parallèle et enfin bouclage dans le HP.
Fonctionne sur la carte d'évaluation de l'ADAU1701
voici les courbes en jouant un peu avec tout :
Le signal In est à 80dB, en mauve le résultat de l'atténuation réalisée, donc serait le signal résultant capté par le micro qui représente l'erreur.
En rouge la sortie P, en vert la sortie I et enfin D en cyan.
Ça fonctionne +-, faut voir en contexte plus réel avec le tube.
Sachant que le signal n'est pas du Pink-noise mais surtout des fréquences plus basses dues aux modes.
- alka
- Administrateur du site
- Messages : 2951
- Enregistré le : mer. 15 juil. 2015 15:18
- Localisation : 92
- Contact :
Re: Absorbeur actif autonome
En cherchant tout a fait autre chose, je suis tombé sur ça : comment utiliser un HP pour réduire du bruit a 100Hz et a 200Hz (dans leur cas, du bruit de transfos). Ils disent absorbtion autour de 90%. A voir en situation réelle.
ca s'appelle Shunted loudspeaker.
http://www.iiav.org/icsv21/content/pape ... 215371.pdf
ca s'appelle Shunted loudspeaker.
http://www.iiav.org/icsv21/content/pape ... 215371.pdf
- thierryvalk
- Administrateur du site
- Messages : 3584
- Enregistré le : jeu. 9 juil. 2015 20:08
- Localisation : Belgique
Re: Absorbeur actif autonome
Un peu le même principe de Lissek, qui est d'ailleurs dans les références.
Retourner vers « DSPiy général »
Qui est en ligne
Utilisateurs parcourant ce forum : Aucun utilisateur enregistré et 5 invités