Vitesse readadc10 sur 08M2

DAT44

New Member
Bonjour,
j'envisage de réaliser un ampèremètre 0 à 20 ampères AC avec un 08m2, mais j'ai un doute sur la méthode d’acquisition de la mesure.
je fait une mise en forme sommaire du signal sur le shunt pour obtenir un signal compris entre 0 et 5 volts et center sur 2.5 volts.
Il faut que le 08m2 réalise au minimum 20 readadc10 en 20 millisecondes et que les résultats soient stocker pour analyse et affichage.

Un 08m2 est il capable de réaliser cela ?

Qu'est est le temps pour la réalisation d'un readadc10 et le stockage du résultat ?
 

PieM

Senior Member
mais j'ai un doute sur la méthode d’acquisition de la mesure.
moi aussi ...
Vous voulez mesurer une intensité efficace ou faire un oscillo ?
Un readadc10 est possible en 100 µs, mais le stockage en EEPROM, lui demande plusieurs ms. Si peu de valeurs, l'utilisation de Poke avec la RAM dispo serait le plus rapide je pense.
 

DAT44

New Member
Bonjour,
oui, le but est de mesurer une intensité efficace.
pour simplifier le traitement des données, je pense que je vais utiliser 16 à 32 échantillons pris régulièrement sur une période de 20 mS.

Comment est t'il possible de faire un échantillonnage régulier du courant mesuré sur une période de temps bien précise (ici 20 mS) ?
 

PapyJP

Senior Member
... je vais utiliser 16 à 32 échantillons pris régulièrement sur une période de 20 mS.
Si vous désirez connaître l' évolution de la valeur moyenne du courant au cours du temps, échantillonné toutes les 20 ms ( Est-ce le Pb ? ):
>>> Si vous vous contentez de 16 mesures en 20ms:
1/ Vous avez donc une mesure toutes les 1,25ms. D' après Piem, c' est assez large.
2/ Dans votre boucle d' acquisition des 16 mesures vous utilisez une variable word.
Vous y additionnez chaque mesure dans la boucle (65536 max ça rentre).
3/ En sortie de boucle, vous divisez la valeur de la variable par 16 pour obtenir la moyenne.

>>> Vous pouvez tenter 32 mesures en 20ms:
1/ Vous avez donc une mesure toutes les 625 us. Est-ce suffisant ? à tenter.
2/ Dans votre boucle d' acquisition des 32 mesures vous utilisez une variable word.
Vous y additionnez chaque mesure dans la boucle (65536 max ça rentre encore).
3/ En sortie de boucle, vous divisez la valeur de la variable par 32 pour obtenir la moyenne.
 
Last edited:

PieM

Senior Member
Attention que pour cette fréquence de mesure, il faut faire tourner le Picaxe à 32 MHz.
il serait sans doute préférable de stoker les valeurs en RAM par une instruction poke et d'effectuer la somme en fin de mesure.
l'addition de deux word est plus longue qu'un poke .
 

DAT44

New Member
Bonjour,
Attention que pour cette fréquence de mesure, il faut faire tourner le Picaxe à 32 MHz.
il serait sans doute préférable de stoker les valeurs en RAM par une instruction poke et d'effectuer la somme en fin de mesure.
l'addition de deux word est plus longue qu'un poke .
oui, pas de pb pour augmenter la fréquence, OK pour les poke en RAM, mais pour le timing des readadc10, comment je fait pour les enclencher tout les 1.25 mS ou tout les 0.625 mS ?
 

PapyJP

Senior Member
... l'addition de deux word est plus longue qu'un poke ...
@ Piem
>>> Cher Piem
Vous savez que ce problème de temps d' éxécution m' a toujours intéressé. Nous en avons longuement parlé ensemble en 2013.
La première chose à connaître est " quel type de Picaxe " veut utiliser notre ami DAT44.
Il propose un 08M2 semble-t-il.
En effet ( je me réfèrre au tableau .xls que vous avez posté le 18/03/2013 ) les temps d' exécution sont fortement liés au type de Picaxe.
Pour une même instruction ( ou un calcul sur variables ), il y a des disparités de temps d' éxecution qui peuvent atteindre le rapport 1 à 4 suivant les modèles !
Dans ce tableau, il n'y a pas de mesure ' w0=w0 + w1 '
Mais, pour un 28X2, ' POKE $50,b0 ---> 310 us ' vs ' b1=b1+b2 ---> 380 us '
C' est kif-kif.
J' aimerais avoir votre avis sur ce sujet.
Amitiés
 

PieM

Senior Member
PapyJP
j'avais zappé le 08M2 !
Mais, pour un 28X2, ' POKE $50,b0 ---> 310 us ' vs ' b1=b1+b2 ---> 380 us '
C' est kif-kif.
ça c'est à 8 MHz et c'est à peu près identique à l'addition de deux octets, pas des words. Pas certain que le temps soit le même, bien que les calculs internes se fassent sur 16bits.

DAT44 said:
oui, pas de pb pour augmenter la fréquence, OK pour les poke en RAM, mais pour le timing des readadc10, comment je fait pour les enclencher tout les 1.25 mS ou tout les 0.625 mS ?
si le timing doit être précis, il faut passer sur un X2, mettre un quartz (16MHz > 64 avec le PLL) et non un résonateur, utiliser settimer et l'interruption liée. Je ne vois que ça. Mais à tester car le timing est serré!
 

PapyJP

Senior Member
... ça c'est à 8 MHz et c'est à peu près identique à l'addition de deux octets, pas des words ...
Ok, j' avais bien écrit ' b1= b1 + b2 ' ( Pas d' info sur le 08M2 ni sur les w ).
Avez-vous un tableau plus récent ?

>>> Mais il faudrait que DAT44 nous précise son projet.
1/ S'il veut enregistrer finement les variations de courant ( par pas de 1,25 ou 0,625 ms ) pour, par exemple, réaliser un traçé, oui la méthode Poke convient. Mais la RAM sera vite pleine et donc le temps d' acquisition total très réduit !

2/ S' il veut construire un ampèremètre à lecture permanente, avec des mesures moyennées, afficher ( si c' était possible ) 50 mesures/seconde n' a pas de sens.
Mon multimètre Fluke affiche 5 mesures/secondes et c' est dèja difficile à lire si d' autres que le digit de plus faible poids varient.
De toute façon la méthode Poke ne convient pas dans ce cas car, après chaque acquisition de 16 ( 32 ) échantillons, il faut 16 ( 32 ) Peek + les calculs de moyennage + affichage ---> adieu les 50 mesures/seconde.
>>> Alors DAT44 ?
 

DAT44

New Member
Bonjour,
c'est un ampèremètre a affichage instantané de précision moyenne que je souhaite réaliser (2%<précision<5%), j'ai donc besoin d'un timing précis (mais pas ultra précis) sur la période d'acquisition des échantillons.
une fois les 16 à 32 échantillons mémoriser le programme peut prendre tranquillement sont temps pour les mettre en forme, les additionner les transformer et les afficher 1 a 4 fois par secondes en fonction du temps que nécessite le traitement des données, et repartir sur une nouvelle rafale d&#8217;acquisition sur 20 ms.
De toute façon le courant mesuré, devrais avoir une évolution relativement lente, donc les trous, entre les périodes acquisitions(20 mS) ne sont pas trop problématique.
Je suppose qu'il faut utiliser la fonction settimer pour cadencer les 16 à 32 readadc10, durant les 20 mS d&#8217;acquisition, mais franchement je ne voie pas trop comment ?
 

PieM

Senior Member
Je suppose qu'il faut utiliser la fonction settimer pour cadencer les 16 à 32 readadc10, durant les 20 mS d&#8217;acquisition, mais franchement je ne voie pas trop comment ?
je vous ai dit "il faut passer sur un X2, utiliser settimer et l'interruption liée".
quel picaxe vous allez mettre ?

@ PapyJP: non je n'ai pas fait d'autres mesures pour le tableau.
 

DAT44

New Member
Bonjour,
je vous ai dit "il faut passer sur un X2, utiliser settimer et l'interruption liée".
quel picaxe vous allez mettre ?
comme je n'ai pas besoin d'une hyper précision, je souhaiterai rester sur un 08M2, si possible ?
Pour l'instant, je n'ai pas de X2, mais des M et et des M2 en stock.
Comme settimer et readadc10 sont (normalement) fonctionnel sur le 08M2, a priori je préfère rester sur ce celui-ci, le coté sportif de ce choix me plait également beaucoup aussi, sans compté le coté budgétaire et compacité du montage.
 

BESQUEUT

Senior Member
Si la précision n'est pas fondamentale, pourquoi ne pas faire vos ReadADC10 bêtement dans un FOR NEXT ?
Vous mettez une sortie ON juste avant et OFF juste après,
vous mesurez le créneau obtenu et vous divisez par le nombre d'échantillons pour constater une vitesse d'échantillonnage.

Si j'ai bien compris, l'intensité varie cycliquement à 50hz, ce qui explique la période de 20ms

(Cela dit, ce n'est pas le secteur 220V ou un autre signal sinusoïdal, parce que dans ce cas le calcul est tout simple et il n'y a pas besoin de tout ce bazar...)

Si ça va trop vite, vous pouvez faire un peu plus de mesures.

Si ça ne va pas assez vite, de toutes façons, vous ne pourrez pas aller plus vite même avec des interruptions...
La seule solution est de diminuer le nombre de mesures.

Une fois ça fait, vous pouvez encore ajuster en introduisant un pauseus dans la boucle.
Par exemple, si 17 mesures prennent 19 ms
alors 18 mesures prennent 20.11 ms
Il faut rester sur 17 mesures et ajouter une pause de 59 micro secondes
 
Last edited:

DAT44

New Member
Bonjour,
je vais voir cela ce soir, si possible, et je revient vers vous un peu plus tard, après les tests, merci.
 

DAT44

New Member
Bonjour,
(Cela dit, ce n'est pas le secteur 220V ou un autre signal sinusoïdal, parce que dans ce cas le calcul est tout simple et il n'y a pas besoin de tout ce bazar...)
en fait je pense, que le signal réel sera très proche, d'un signal sinus pur 50Hz.
Pour un tel signal, qu'elle est la bonne approche ?
 

PieM

Senior Member
comme je n'ai pas besoin d'une hyper précision, je souhaiterai rester sur un 08M2, si possible ?
Pour l'instant, je n'ai pas de X2, mais des M et et des M2 en stock.
Comme settimer et readadc10 sont (normalement) fonctionnel sur le 08M2, a priori je préfère rester sur ce celui-ci, le coté sportif de ce choix me plait également beaucoup aussi, sans compté le coté budgétaire et compacité du montage.
setttimer n'existe pas sur les M2.
si vous n'avez pas besoin d'un timing précis, alors faites des mesures à la volées.
En stockant en RAM par des poke vous pouvez faire vos 16 mesures en 6.05 ms donc un peu plus de 50 mesures en 20 ms. (mesuré sur un 14M2 à 32 MHz)
En faisant la somme des valeurs à chaque mesure, il faut 6.20 ms pour 16 mesures, donc très comparable.
Si le signal est sinusoïdal alors Valeur max / racine 2

@ PapyJP : la somme de deux words met bien le même temps que la somme de deux octets. En faisant attention que w1 = w2 +w1 met 50% de temps en plus que w1 = w1 + w2 !
 
Last edited:

jojojo

Senior Member
Last edited:

DAT44

New Member
Bonjour,
merci a chacun, je n'ai pas encore pris le temps de faire mes propre test !
je considère donc la phase d&#8217;acquisition comme résolut.

je passe donc au traitement des données en RMS (racine de la moyenne de la somme des carrés)

j'ai donc 16 à 32 échantillons de 10 bits:
extraction de la valeur absolu du signal, bon la c'est simple, je test si la valeur est inférieur a 512 (courant négatif), si oui : échantillon= 512-échantillon, sinon : échantillon= échantillon-512, après traitement, il me reste donc dans chaque échantillons, la valeur absolue du courant sur 9 bits.
il me faut maintenant élever touts les échantillon au carré donc sur 18 bits, additionner tous les échantillons donc 22 à 23 bits (en fonction du nombre d'échantillons) , et extraire la racine carré de la somme, donc retour en 12 bits.

Avez vous des algorithmes à me proposer, pour un 08m2, pour élever au carré un nombre coder sur 9 bits ?

Avez vous des algorithmes à me proposer, pour un 08m2, pour additionner des nombres coder sur 23 bits ?

Avez vous des algorithmes à me proposer, pour un 08m2, pour calculer la racine carré d'un nombre coder sur 23 bits ?
 

DAT44

New Member
Bonjour,
le prix "PIC" un peu :mad:

- Bon en fait pour le passage au carré des échantillons, j'ai vu "**" donc c'est ok
- Pour l'addition des mots de 23 bits, il faut que je gère le débordement en addition de word 16 bits, si quelqu&#8217;un a un exemple, je suis preneur :)
- Pour le calcul Sqrt, je réfléchit à un algo dichotomique, mais si il existe du tout fait, je suis également preneur :)
 
Last edited:

BESQUEUT

Senior Member
j'ai donc 16 à 32 échantillons de 10 bits:
extraction de la valeur absolu du signal, bon la c'est simple, je test si la valeur est inférieur a 512 (courant négatif), si oui : échantillon= 512-échantillon, sinon : échantillon= échantillon-512, après traitement, il me reste donc dans chaque échantillons, la valeur absolue du courant sur 9 bits.
il me faut maintenant élever touts les échantillon au carré donc sur 18 bits, additionner tous les échantillons donc 22 à 23 bits (en fonction du nombre d'échantillons) , et extraire la racine carré de la somme, donc retour en 12 bits.

Avez vous des algorithmes à me proposer, pour un 08m2, pour élever au carré un nombre coder sur 9 bits ?

Avez vous des algorithmes à me proposer, pour un 08m2, pour additionner des nombres coder sur 23 bits ?

Avez vous des algorithmes à me proposer, pour un 08m2, pour calculer la racine carré d'un nombre coder sur 23 bits ?
Le raisonnement n'est pas bon.
le nombre de bits à prendre en compte pour le résultat et pour les opérations intermédiaires ne dépends pas de la nature des opérations mais uniquement de la précision (nombre de chiffres significatifs) du résultat attendu.
Bien évidement la précision du résultat ne peut être meilleure que celle des données.
Avec 32 échantillons sur 10 bits, et compte tenu de la loi de composition des erreurs, vous ne pouvez pas espérer mieux que 12 bits.
La loi de composition des erreurs ne permet de gagner des bits en multipliant les mesures que si le signal à mesurer est constant (ou de forme parfaitement connue), ce qui n'est pas votre cas.
Donc, vous ne pouvez pas espérer mieux que 10 bits, et même 9 puisque le bit de signe est supprimé.

Donc les calculs intermédiaires sur 23 bits ne sont pas indispensables.
Qui plus est, pour de petits courants, par exemple exprimés sur 4 bits, le résultat final ne peut être exprimé sur plus que 4bits. 5 ou 6 bits.
Donc vous pouvez vous contenter des 16 bits les plus significatifs dans chaque calcul.

Pour le calcul de la racine carrée, il y a ici plusieurs propositions.
La méthode de Héron d'Alexandrie est ma préférée.

Vous trouverez ici
des implémentations sur différents Picaxes.
Notez en bas de page la méthode de Héron d'Alexandrie, qui après 20 siècles montre toujours sa redoutable efficacité !
Le problème essentiel demeure la division sur plus que 8 bits qui n'est pas native sur un Picaxe.

Cest un ampèremètre a affichage instantané de précision moyenne que je souhaite réaliser (2%<précision<5%),...
Avec 6 bits, vous avez déjà une précision meilleure que 2%
Dans ce cas, le calcul de la racine sur 8 bits est très largement suffisant.
 
Last edited:

BESQUEUT

Senior Member
Une seule mesure par cycle de 20 ms.
Même si l'affichage est souhaité "instantané", il n'est nullement besoin de rafraichir 50 fois par seconde.
5 fois par seconde, c'est déjà difficilement perceptible...

Si j'ai bien compris, la période de 20 ms est uniquement motivée par le besoin d'échantillonner une période entière d'un signal à 50 hz, (pas plus, pas moins, sinon il n'y a aucun calcul possible)
A noter que comme sur un Oscillo, la mesure d'un signal périodique peut aussi se faire sur plusieurs périodes.
Par exemple, si P est la période, on peut faire 16 mesures aux temps
t0
t0+p+p/16
t0+2(p+p/16)
t0+3(p+p/16)
...
t0+15(p+p/16)

Dans ce cas, on a tout le temps qu'on veut pour faire les mesures et les enregistrer en mémoire.

Si le signal n'est pas périodique ou si sa fréquence n'est pas connue, la démarche complète me semble invalide.
 
Last edited:

DAT44

New Member
Bonjour,
oui, pour pour l'affichage que je n'ai pas encore traité, je pense que un affichage par seconde est suffisant.
je préféré sur échantillonner un peu pour avoir un rendu plus harmonieux sur l'afficheur, sinon je sauterais de grand pas en grand pas, ce qui serait moche.
Je compte utiliser un afficheur 7 segments à 4 digit multiplexé.
 

BESQUEUT

Senior Member
Si le signal est sinusoïdal alors Valeur max / racine 2
Vous mesurez tout ce que vous pouvez pendant une seconde, vous prenez le max en valeur absolue à chaque fois, vous mettez à l'échelle et vous affichez le résultat.
Si le signal est parasité, il faut en plus filtrer les parasites : retenir les 3 dernières valeurs et ne garder que les valeurs n-1 qui ne diffèrent pas trop de n et de n-2

Ou, dans le genre "apacher" une diode, un condo, un potar et un bête voltmètre ?

Je note quand même le piège classique du titre de thread qui ne reflète en rien l'objectif de l'auteur, et même qui repeint d'erreur les contributeurs...
 
Last edited:

DAT44

New Member
Bonjour,
je vient de faire les tests d&#8217;acquisition, en poussant la fréquence au maxi (32Mhz), je peut stocker 35 échantillons en mémoire en 20 mS, donc pour l&#8217;acquisition c'est bon.
Code:
#picaxe08m2	
setfreq m32			'réglage horloge à 32 MHz
'************* Noms de variables *************


symbol CB=w2		
symbol I=b6
symbol DS=C.1

'-----------------------------------------------------------------------------------------		
debut:
	gosub gest_ac_conv
	gosub gest_aff
	gosub gest_ac_conv
	gosub gest_extinction
	goto debut
'-----------------------------------------------------------------------------------------		
gest_extinction:
	low DS
	return
'-----------------------------------------------------------------------------------------		
gest_ac_conv:
	
	for I=30 to 98 step 2  ' 35 acquisitions en 20 mS
	readadc10 C.4,CB
	poke I,WORD CB
	next I	
	
	return	
'-----------------------------------------------------------------------------------------		
gest_aff:
	high DS
	 
	return
 

MGU

Senior Member
Bonjour,
je vient de faire les tests d’acquisition, en poussant la fréquence au maxi (32Mhz), je peut stocker 35 échantillons en mémoire en 20 mS, donc pour l’acquisition c'est bon.
Code:
#picaxe08m2	
setfreq m32			'réglage horloge à 32 MHz
'************* Noms de variables *************


symbol CB=w2		
symbol I=b6
symbol DS=C.1

'-----------------------------------------------------------------------------------------		
debut:
	gosub gest_ac_conv
	gosub gest_aff
	gosub gest_ac_conv
	gosub gest_extinction
	goto debut
'-----------------------------------------------------------------------------------------		
gest_extinction:
	low DS
	return
'-----------------------------------------------------------------------------------------		
gest_ac_conv:
	
	for I=30 to 98 step 2  ' 35 acquisitions en 20 mS
	readadc10 C.4,CB
	poke I,WORD CB
	next I	
	
	return	
'-----------------------------------------------------------------------------------------		
gest_aff:
	high DS
	 
	return
Bonjour,

Petite remarque qui demandera confirmation:

L'usage des gosub est recommandée pour structurer un programme et le découper en éléments utilisés plusieurs fois.

Mais dans l'exemple si dessus, je pense qu'il n'est pas rentable d'utiliser un gosub pour une seule ligne de programme comme high ou low DS, l'aller/retour prenant un temps non négligeable.

MM
 

BESQUEUT

Senior Member
je viens de faire les tests d&#8217;acquisition, en poussant la fréquence au maxi (32Mhz), je peux stocker 35 échantillons en mémoire en 20 mS, donc pour l&#8217;acquisition c'est bon.
Super !
Mais je ne sais toujours pas à quoi ça sert ?
Aucune réponse ou remarque sur mes différents posts.
Attendez vous une aide quelconque de notre part ?
 

PieM

Senior Member
Bonjour,

Petite remarque qui demandera confirmation:

L'usage des gosub est recommandée pour structurer un programme et le découper en éléments utilisés plusieurs fois.

Mais dans l'exemple si dessus, je pense qu'il n'est pas rentable d'utiliser un gosub pour une seule ligne de programme comme high ou low DS, l'aller/retour prenant un temps non négligeable.

MM
Remarque judicieuse. Un gosub return demande beaucoup de temps ! Donc à eviter dans ce genre de programme.
d'autre part, le poke demande pratiquement autant de temps que de faire le calcul de la somme. Ce qui économise du temps entre deux séries de mesures.
 

DAT44

New Member
Bonjour BESQUEUT,
je veut réaliser un ampèremètre, pour le "fun", je veut réaliser une version RMS, plus simple serait sans doute aussi efficace mais moins drôle.
les infos déjà reçu, mon bien aider, je vous en remercie.

Par contre je n&#8217;arrive pas a transcrire en basic PICAXE ,la méthode de Héron d'Alexandrie ,ceci a t'il déjà été fait ?
 

DAT44

New Member
Bonjour,
Bonjour,

Petite remarque qui demandera confirmation:

L'usage des gosub est recommandée pour structurer un programme et le découper en éléments utilisés plusieurs fois.

Mais dans l'exemple si dessus, je pense qu'il n'est pas rentable d'utiliser un gosub pour une seule ligne de programme comme high ou low DS, l'aller/retour prenant un temps non négligeable.

MM
oui, j'en est bien conscience, j'ai recycler ici un bout de programme, j'ai utiliser ce programme juste pour valider le timing d’acquisition, j’obtiens sur la patte 6 une fréquence de 25 hertz ce qui valide mon timing.
 

DAT44

New Member
Bonjour,
Remarque judicieuse. Un gosub return demande beaucoup de temps ! Donc à eviter dans ce genre de programme.
d'autre part, le poke demande pratiquement autant de temps que de faire le calcul de la somme. Ce qui économise du temps entre deux séries de mesures.
je souhaite réaliser un ampèremètre RMS, il ne faut donc pas additionner les échantillons, mais les échantillon au carré, se qui prend trop de temps sur la phase d'acquisition, je préfère donc stocker les échantillon en mémoire (relativement rapidement) et et les traiter tranquillement ensuite.

J'ai ré-écrit le programme de test pour le timing , le résultat est idem, 35 échantillons de 10 bits stocker en mémoire, sur une période de 20 mS:

Code:
#picaxe08m2	
setfreq m32			'réglage horloge à 32 MHz
'************* Noms de variables *************


symbol CB=w2		
symbol I=b6
symbol DS=C.1

'-----------------------------------------------------------------------------------------		
debut:
	low DS
	for I=30 to 98 step 2 ' 35 acquisitions en 20 mS
	readadc10 C.4,CB
	poke I,WORD CB
	next I	
	high DS
	for I=30 to 98 step 2 ' 35 acquisitions en 20 mS
	readadc10 C.4,CB
	poke I,WORD CB
	next I
	goto debut
 

MGU

Senior Member
Bonjour BESQUEUT,
je veut réaliser un ampèremètre, pour le "fun", je veut réaliser une version RMS, plus simple serait sans doute aussi efficace mais moins drôle.
les infos déjà reçu, mon bien aider, je vous en remercie.

Par contre je n’arrive pas a transcrire en basic PICAXE ,la méthode de Héron d'Alexandrie ,ceci a t'il déjà été fait ?
J'arrive à ça, le héron du picaxe est un peu court sur pattes...
 

Attachments

BESQUEUT

Senior Member
Bonjour BESQUEUT,
je veut réaliser un ampèremètre, pour le "fun", je veut réaliser une version RMS, plus simple serait sans doute aussi efficace mais moins drôle.
les infos déjà reçu, mon bien aider, je vous en remercie.

Par contre je n&#8217;arrive pas a transcrire en basic PICAXE ,la méthode de Héron d'Alexandrie ,ceci a t'il déjà été fait ?
Ah OK : c'est à titre d'exercice donc.
Relire #23 : dernier lien, bas de page, sous la dénomination :
iterative Babylonian method
Methods_of_computing_square_roots
sinon, sur un X2, SQR existe
Ca peut aussi servir sur le simulateur à contrôler votre programme.
 
Last edited:

BESQUEUT

Senior Member
j&#8217;obtiens sur la patte 6 une fréquence de 25 hertz ce qui valide mon timing.
Voir #14
1) les gosubs sont inclus dans votre chronométrage, ce qui fausse le temps effectivement consacré aux mesures,
2) Du fait du nombre entier de mesures, il y a une erreur aléatoire de l'ordre de 1/nombre de mesures
Si vous visez une précision à 2%, vous êtes déjà out.
Cette dernière peut être compensée en ajoutant un pauseus entre chaque mesure de façon à ce que les mesures soient régulièrement espacées.
Tout ceci suppose que le signal est périodique et que sa fréquence est de 50hz.
Sur un véritable instrument, on ne peut pas avoir de tels pré-requis.
 

DAT44

New Member
Bonjour,
Voir #14
1) les gosubs sont inclus dans votre chronométrage, ce qui fausse le temps effectivement consacré aux mesures,
2) Du fait du nombre entier de mesures, il y a une erreur aléatoire de l'ordre de 1/nombre de mesures
Si vous visez une précision à 2%, vous êtes déjà out.
Cette dernière peut être compensée en ajoutant un pauseus entre chaque mesure de façon à ce que les mesures soient régulièrement espacées.
Tout ceci suppose que le signal est périodique et que sa fréquence est de 50hz.
Sur un véritable instrument, on ne peut pas avoir de tels pré-requis.
oui, merci, j'ai ré-écrit le code en #33, je vais voir si je trouve un période-mètre pour affiner le timing d&#8217;acquisition.
De tout façon ce projet reste ludique et personnel, il n'a pas vocation à être commercialisé.
Pour une adaptation en 60 hz, je vais y réfléchir mais bon pour l'instant, je suis en France, je ne croie pas que l'on passe en 60 HZ tout de suite.
Il me reste une patte de libre sur le 08M2, je vais peut être l'utiliser pour une détection du passage à zéro de la tension ?
 

PieM

Senior Member
Votre acquisition dans la boucle for next des 35 valeurs word demande 21.405µs
avec 33 le temps est de 20.180 µs.
Ne pas utiliser de pauseus qui n'a aucune précision aux faibles valeurs de timing: pauseus 5 qui devrait donner 50 µs à 4MHz en donne en fait 1044 !
 
Top