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 le langage C !

Modérateur : Jérémy

voltmètre PIC18F4550
pseudomehdi
Membre
Membre
Messages : 9
Enregistré en : octobre 2015

#11 Message par pseudomehdi » lun. 28 déc. 2015 22:02

ah d'accord, je pensait qu'une instruction durerait un cycle d'horloge, je vais refaire le calcule, merci
bonne soirée

voltmètre PIC18F4550
pseudomehdi
Membre
Membre
Messages : 9
Enregistré en : octobre 2015

#12 Message par pseudomehdi » lun. 28 déc. 2015 22:06

non pour le moment du lancement de l'échantillonnage je suis sure que je peut le faire quand je veut, le graphe je tes dis que c'était juste un exemple les valeurs sont différente de mon signale
Modifié en dernier par pseudomehdi le lun. 28 déc. 2015 22:24, modifié 2 fois.

voltmètre PIC18F4550
pseudomehdi
Membre
Membre
Messages : 9
Enregistré en : octobre 2015

#13 Message par pseudomehdi » lun. 28 déc. 2015 22:13

bon, je viens de refaire le calcul, il suffit d'ajouter 4 instructions de 0.4us ça fait 1.6us , et le résultat devient 625, y'a pas une grande différence je trouve

voltmètre PIC18F4550
Guest
Confirmé
Confirmé
Messages : 800
Enregistré en : mars 2017

#14 Message par Guest » mar. 29 déc. 2015 09:59

Bonjour

Je te propose cela MA MÉTHODE:

Tu fais une lecture dans une boucle (N=nb échantillonnage) du CAN, la tu as 2 possibilités
......1/ tu ranges cela dans un tableau
......2/ tu ranges cela dans une variable que tu additionnes après chaque lecture CAN
je préféré la 2 et continue mon raisonnement sur la 2
fin de boucle
Tu fais la moyenne de ton résultat par nombre échantillonnage
Tu fais le carré de ta variable
et enfin tu multiplies le résultat de tout cela par le pas de quantification

Pour le pas regarde ICI viewtopic.php?f=10&t=137 j'ai ma méthode optimisation du pas

POURQUOI
Jusqu’à la multiplication tu n'as que des nombres hexa assez facile pour le jeux instruction d'un 18F ,les flottants sont très lourd a manipuler pour ce 18F qui dit lourd dit consommation de cycles cela doit se chiffrer a plusieurs mS ( faire un test avec TON compilateur)
ET surtout réduit les erreurs que tu accumules avec TON flottant

Nous sommes la dans l'optimisation de la méthode, il doit bien y en avoir d'autres, il va de soit que c'est qui choisi ;)

Autre problème:
La mesure de onde résiduelle au niveau CAN va être ridicule, je te laisse calculer le pas en fonction de la tension d'entrée de cette onde résiduelle, la ta précision va en prendre un sacre coup derrière il y a le pas de quantification qui va venir grignoter cela

D'ou ma question comment mesures tu, onde résiduelle et SI c'est cela ta priorité,

Tes mesures vont être cyclique ? si oui il faudra réduire d'autant ton échantillonnage car la tu nous montres une seule lecture.

Pour le 10ms ,cela si bien sur, 50Hz, ne représente d'une 1/2 période alors que l'onde est sur la période donc 20mS,

A+

voltmètre PIC18F4550
mazertoc
Passioné
Passioné
Messages : 201
Enregistré en : juillet 2015
Localisation : Auvernha

#15 Message par mazertoc » mar. 29 déc. 2015 15:29

pseudomehdi a écrit :bon, je viens de refaire le calcul, il suffit d'ajouter 4 instructions de 0.4us ça fait 1.6us , et le résultat devient 625, y'a pas une grande différence je trouve

A 20 MHz une instruction "normale" assembleur dure 1 Tcy soit 0,2 µs.

voltmètre PIC18F4550
paulfjujo
Avatar de l’utilisateur
Expert
Expert
Messages : 2597
Âge : 73
Enregistré en : juillet 2015
Localisation : 01800
Contact :

#16 Message par paulfjujo » mar. 29 déc. 2015 20:22

bonsoir,


sous mikroC 18F2550 avec PLL active et FOSC=48MHz
cycle=4/48=0.083µS
ADC mesure remplacee par tempo 6µS ( 64 TOSC at 48MHz)

Code : Tout sélectionner


 _asm nop
;
 for (i=; i<671 ; i++)       //671
 {
 Delay_us(6);//x = ADC_Read(0);
 x*=0.00488759;
 y=x*x;
 v=v+y;
 }
 _asm Nop



le chronoDebugger MIKROC donne entre les NOP => 141 754 cycles soit 11.81 ms
si tu veux mesurer 1 periode 20mS ( 2 arches du redressé 50Hz bi-alternances ) // à 10mS tu change à chaque fois d'alternance
ce pourrait etre jouable en
verifiant que l'ADC suit bien .. à 48MHz
et augmentant le nb d'echantillon pour avoir 20mS

le probleme de la resolution faiblarde .. c'est autre chose
le proble de conversion flottant -> ascii (string) .. encore une autre chose.
Aide toi, le ciel ou FantasPic t'aidera

voltmètre PIC18F4550
Guest
Confirmé
Confirmé
Messages : 800
Enregistré en : mars 2017

#17 Message par Guest » mar. 29 déc. 2015 20:35

bonsoir

Paul le temps échantillonnage n'a rien a voir avec Fosc, même a 48MHz il sera quoi que tu fasses de 14µS voir +, il est égale au TACQ+Tconv

A+

voltmètre PIC18F4550
Guest
Confirmé
Confirmé
Messages : 800
Enregistré en : mars 2017

#18 Message par Guest » mer. 30 déc. 2015 10:40

bonjour

Mille excuses PAUL tu as raison pour les 6µs du CAN comme dab j'ai tendance a rester sur le 16F
ci joint ce que moi je trouve avec le XC8 en CYCLES MACHINE sorti CAN max 1023;
Rien que la division 871cycles

temps.png


Je ne prend pas en compte le temps échantillonnage ni déclenchement CAN et transfert donnée

quand a augmenter la vitesse AMHA c'est un mauvais reflex

il y a aussi une erreur sur le calcul de la moyenne de échantillonnage en sorti (T=v/671) c'est T=v/670) et
je trouve 25v au lieu de 5 V en principe le calcul est:

Somme du nombre échantillonnage, divisé par le nombre échantillonnage, et la je trouve bien 5v, y est déclaré un long

voila bien plus court 23034 cycles :)

Code : Tout sélectionner

for (i=0 ; i<670 ; i++)
{
x = 1023;
y=y+x;
}
v=y*0.00488759;
T = (v/670);// T = Veff



A+
Vous n’avez pas les permissions nécessaires pour voir les fichiers joints à ce message.
Modifié en dernier par Anonymous le mer. 30 déc. 2015 13:58, modifié 6 fois.

voltmètre PIC18F4550
paulfjujo
Avatar de l’utilisateur
Expert
Expert
Messages : 2597
Âge : 73
Enregistré en : juillet 2015
Localisation : 01800
Contact :

#19 Message par paulfjujo » mer. 30 déc. 2015 11:35

Bonjour,

maï a écrit :Paul le temps échantillonnage n'a rien a voir avec Fosc, même a 48MHz il sera quoi que tu fasses de 14µS voir +, il est égale au TACQ+Tconv
.......
Mille excuses PAUL tu as raison pour les 6µs du CAN comme dab j'ai tendance a rester sur le 16F
....


:?: J'aurai pourtant tendance à te donner raison ,car j'avais d'ailleurs un doute la-dessus, au vu de ceci dans la datasheet :

Code : Tout sélectionner

Assumes TAD Min. = 0.8 μs

à eclaircir ... il est vrai que le timing "analogique" est incompresible.

avec FOSC=48MHz
en rectifiant ADC time à 14µS, on arrive à environ 18.68mS pour les 671 echantillons
soit environ 718 echantillons pour 20 mS..
et je trouve 224 200 cycles pour les 671 echantillons ... BIZARRE ce rapport avec XC8 presque 5 fois plus !
et 909 cycle pour la division ..
XC8 n'est plus optimisé apres la periode d'essais de 60 jours ,Michrochip il le donne à 25% de sa capacité ,par rapport
à la version pro payante , cela pourrait expliquer ?


on ne connait pas l'amplitude reelle du signal ?
si en plus il faut un diviseur de tension pour le ramener dans la gamme 0 à 5V
la resolution sera pourave, voir inutilisable.

à+
Aide toi, le ciel ou FantasPic t'aidera

voltmètre PIC18F4550
Guest
Confirmé
Confirmé
Messages : 800
Enregistré en : mars 2017

#20 Message par Guest » mer. 30 déc. 2015 11:47

Dans ton bout de code charge x de 1023 en sortie de ton code tu dois avoir 5V ;) sinon pas bon.
Dans Ton code tu parts avec une variable a zero cela doit changer beaucoup de chose et dans ta boucle tu es toujours a ZERO

Pour l'amplitude demandé toujours pas de réponse,

Paul je revendique le DROIT a l'erreur :lol:


Retourner vers « Langage C »

Qui est en ligne

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