bonjour,
oui là j'ai fait une erreur mon montage utilisait un MAX 509 qui lui tolère une référence alternative et j'ai abusivement supposé que le MAX537 faisait de mème,désolé.
j'ai refait un schéma que je t'envoie par mail.
JR
-----
bonjour,
oui là j'ai fait une erreur mon montage utilisait un MAX 509 qui lui tolère une référence alternative et j'ai abusivement supposé que le MAX537 faisait de mème,désolé.
j'ai refait un schéma que je t'envoie par mail.
JR
l'électronique c'est pas du vaudou!
Bonjour,
Oui, du coup avec un condo en sortie du tl82 pour ajouter la demi tention d'alim v+, plus en entrée des autres tl82 , ça fonctionne comme ça le dac travail toujours avec une tension positive.
Autre questions,
3 questions :
dans la partie A407_generator (la variable A407G_data) attend quoi comme plage de valeur de 0 à 360 (degres) ou de 0 à 8192 (table des sinus) ?
dans ce module, je ne comprends pas le "set data & flag", pourquoi ce flag ?
pour ensuite faire des le debut de la boucle wait data : "and dval,data_mask ' remove flag "
pour : "shr dval,#3 ' reduce 16 bits to 13"
ça veut dire qu'il faut que je multiplie mon angle x 8 avant de la charger dans la variable A407G_data ?
car au final je voudrais avoir les valeurs x y z pour des valeurs d'angle de 0 à 259 degrés.
Bonne journée
Eric
et de temps en temps le dac me génère des valeurs étatiques:
Bonsoir
la valeur attendue est entre 0 = 0° et $FFFF = 359,9999° donc 16 bitsdans la partie A407_generator (la variable A407G_data) attend quoi comme plage de valeur de 0 à 360 (degres) ou de 0 à 8192 (table des sinus) ?
le flag sert a detecter une nouvelle valeur à traiter, comme la valeur utile couvre de 0 à $FFFF il fallait bien un moyen de detecter une nouvelle entrée pour eviter de tourner à vide et de voir la valeur être modifiée avant sa prise en compte, le module écrase la valeur à la fin du traitement.dans ce module, je ne comprends pas le "set data & flag", pourquoi ce flag ?
pour ensuite faire des le debut de la boucle wait data : "and dval,data_mask ' remove flag "
la valeur reçue par le bus Arinc est , si ma mémoire est bonne, codée sur 16 bits.pour : "shr dval,#3 ' reduce 16 bits to 13"
ça veut dire qu'il faut que je multiplie mon angle x 8 avant de la charger dans la variable A407G_data ?
si tu récupères des valeur erratiques essayes de baisser la fréquence du SPI, mais surtout jettes un oeuil aux signaux d'icelui, maintenant que tu as un beau Siglent 4 traces c'est presque du plaisir.
Je vois avec plaisir que tu t’accroches et que tu avances bien.
JR
l'électronique c'est pas du vaudou!
j'aime comprendre, donc c'est jusqu'a ....
les signaux sortant du dac, ne correspond pas à l'angle que je transmet.
quand j'ajoute 1 degré à l'angle, le signal sortant des dac fonts des bons,
Les 3 signaux devant varier de -100% à +100% en fonction de l'angle, angle + 0 , +120, +240.
quand j'incrémente l'angle de 1, le signaux ne suivent pas.
Et comme je n'ai pas encore compris le pavé A407G_entry, ben ... suis dans le noir.
Bonne soirée
Eric
bonjour,
si tu modifies la valeur angulaire plus rapidement que 400Hz alors il est normal qu'il y ait discontinuité, pour bien faire il faudrait faire les mises à jour lors du passage à zéro du signal de référence 400Hz, çà je l'avais oublié.
Comme il reste normalement 1/2 TL082 j'ai rajouté un pseudo comparateur (en fait un ampli à grand gain) qui génère un signal carré synchrone du 400Hz de référence qui sera utilisé pour synchroniser le chargement des valeurs.
Une chose à ne pas oublier, je ne me souviens plus si je l'avais précisé, les entrées du Propeller ne sont pas 5V tolérantes il faut donc adapter les signaux logiques 5V en 3,3V,des resistance de 3,9k (min) en série avec les signaux feront le boulot en limitant le courant dans les diodes de clamp(+-500µA max).
nouveau schéma aussi par mail.
A429_v4.pdf
Je recogite le code.
JR
l'électronique c'est pas du vaudou!
Re
le nouveau code, je ne l'ai pas testé car il y a longtemps que j'ai démonté la breadboard mais cela devrait fonctionner.
j'ai rajouté l'entrée de référence et je teste le front descendant du signal carré avant de prendre en compte la nouvelle consigne. Ne sont modifiés que A429to407_cst.spin et A407_Generator.spin
429to407.zip
JR
l'électronique c'est pas du vaudou!
Bonsoir,
ok, je vais tester, mais je crois que je me suis mal exprimé, quand je disais fait des bons, je détails :
Dans une boucle du prog principal, je faisais +1 pour l'angle, 1 fois par seconde, donc pas rapide du tout, et là toute les secondes je vois les tensions changer du tout au tout, sur les 3 sortie du dac,
alors qu'elle devraient évoluer faiblement à chaque degré, chaque seconde.
si j'arrete mon incrémentation de l'angle, plus de changement des tensions, normal.
je me demande si il n'y a pas un pb dans les valeurs transmise au dac 537.
Eric
Bonjour,
il faut changer la constante _BIT_407 je l'ai laissée pour des DACs 8bits (12bits SPI), il faut mettre 16 ce qui est la longueur du mot SPI attendu.
JR
l'électronique c'est pas du vaudou!
bonsoir,
en relisant le code il faut corriger:
mid_val long $400 >> (16-_BIT_407)' Dacs mid scale
par
mid_val long $800 >> (16-_BIT_407)' Dacs mid scale
ce n'est pas fondamental mais c'est mieux!
JR
l'électronique c'est pas du vaudou!
Bonjour,
merci pour l'update, oui cela permet de partir avec 0 de tension sur les 3 phase te temps de faire le premier calcul de déphasage.
Bon quelles que news,
j'ai galéré longtemps car mes signaux en sortie de dac ne reflétaient pas mes valeurs d'angle, et hier soir , la lumière fut.
Après avoir refait un programme qui chargeait juste des valeurs dans les dacs inspection des signaux spi et valeurs de sortie des dacs, toujours les memes pb
re verif du cablage et là , inversion du signal CLK et CS (ça marche moins bien ) en entree du dac, d'ou mes valeurs ératiques.
ensuite, je reprendre le prog d'origine, et la des valaurs trés faible voir nul en sortie de dac.
je me re plonge dans pasm et là je ne comprend pas la raison du shr dval,#3 car on est deja en 12 bits en entrée du dac (12 bits d'angle qui varie de 0 8191), donc je remouve le shl
and dval,data_mask ' remove flag
'shr dval,#3 ' reduce 16 bits to 13
mov eval,dval ' save
call #get_sin ' return offset binary 0(-1) to $FFF(+1)
Bingo, ça marche !!
Maintenant j'ai de belle traces
Ref,ph1 en entrée, sortie1 de aop
Par contre il me reste une question :
l'emplitude des signaux suivent bien les sinus de chaque phase, mais la phase est soit à 0 soit à 180 quand le signal est en opposition de phase,
il n'y a jamais de déphasage de 120° entre les phases, normal ?
là par exemple, à mi valeur, en opposition de phase, mais à 180 pil
bonsoir,
oui c'est normal le déphasage est entre les modules de l'enveloppe :
les signaux sont bien sin(teta), sin(teta+120), sin(teta+240)a un facteur multiplicatif prés : A*sin(wt) w = 2*Pi*400.
Tu as eu raison d'adapter le code car le mien était prévu pour du 16 bits en entrée ce que j'avais précisé je crois.
Donc le succès n'est plus très loin!
JR
l'électronique c'est pas du vaudou!