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 ---
Tout ce qui n'a pas de catégorie !
générateur d' impulsions pour moteur pas a pas
ducran lapoigne
Avatar de l’utilisateur
Débutant
Débutant
Messages : 96
Enregistré en : septembre 2015

#11 Message par ducran lapoigne » lun. 9 avr. 2018 09:10

effectivement, l' appellation 'impulsion négative' n' est pas correcte

soit au repos, la tension de sortie est 0 volts et l' impulsion prend un niveau +5v pendant 10 uS c' est ce que j' appelle positive

ou bien:

au repos, la tension de sortie est 5 volts et l' impulsion prend un niveau 0v pendant 10 uS c' est ce que j' appelle négative

faudra que je trouve un autre nom :-D

par exemple "impulsion front montant" / "descendant"

générateur d' impulsions pour moteur pas a pas
Temps-x
Avatar de l’utilisateur
Expert
Expert
Messages : 2595
Enregistré en : juillet 2016
Localisation : Terre

#12 Message par Temps-x » lun. 9 avr. 2018 16:14

Bonjour ducran lapoigne, et tout le forum,

Ok, je comprends mieux comme tu l'expliques, avec un petit schéma si j'ai bien compris.

Code : Tout sélectionner




////////////////////////// Modulation de largeur d'impulsion positive //////////////////////////  



   * * * * * *   * * * * * *   * * * * * *
   *         *   *         *   *         *
   *         *   *         *   *         *
---*
         *---*         *---*         *--- 



////////////////////////// Modulation de largeur d'impulsion négative //////////////////////////



 * *         * * *         * * *         * * * 
   
*         *   *         *   *         *   *
   *         *   *         *   *         *   *
   *---------*   *---------*   *---------*   *--



////////////////////////////////////////////////////////////////////////////////////////////////              
 


Comme tu partages pas mal de code, je t'en mets un, sans aucun tableau, regarde la simplicité du code.

Code : Tout sélectionner


choix_vitesse

      bsf ADCON0
,ADON                     ; on lance l’acquisition (charge du condensateur)
      nop             
      nop                                 
; pause, temps de charge du condensateur
      nop
      bsf ADCON0
,GO                       ; lancer la conversion A/D

      btfsc ADCON0
,GO                     ; si le bit GO est à 1 on va à la ligne 1        
      goto 
$-D'1'                         ; convertion n'est pas terminer     
      bcf ADCON0,ADON                     ; fin de conversion, éteindre convertisseur

      movfw ADRESH 

      movwf vitesse       

delay_total
      call delay_10µs
      decfsz vitesse,F
      goto $-D'
2'

      return
;********************************************************************************************** 
delay_10µs

      movlw D'
3
      movwf loop1
      
      decfsz loop1,F
      goto $-D'
1'

      return



En pourrais utiliser ADRESL et ADRESH pour 1023 ce qui augmenterais la fréquence.



==> A+
:roll: Les requins, c'est comme le langage ASM, c'est le sommet de la chaîne alimentaire. :wink:

générateur d' impulsions pour moteur pas a pas
ducran lapoigne
Avatar de l’utilisateur
Débutant
Débutant
Messages : 96
Enregistré en : septembre 2015

#13 Message par ducran lapoigne » lun. 9 avr. 2018 22:40

bonsoir tempsx et le forum

bien vu pour le code, j' avais déja essayé une variante mais sans table on n' est pas linéaire

dans mon cas, je me suis fixé une gamme de frequence de 50HZ à 2,5 KHZ
quand mon potentiomètre est a mi-course, je lis 1,25 KHZ

si tu as une astuce sans table, je suis preneur :wink:

PS: pas de modulation de largeur d' impulsion, les pulses sont calibrées a 10 uS seule la fréquence change

générateur d' impulsions pour moteur pas a pas
Temps-x
Avatar de l’utilisateur
Expert
Expert
Messages : 2595
Enregistré en : juillet 2016
Localisation : Terre

#14 Message par Temps-x » mar. 10 avr. 2018 01:26

Bonsoir ducran lapoigne, et le forum

Je me repose une question :roll: pour toi

50 Hz et égal à 10000 µs ou 20000 µs

2500 Hz et égal à 200 µs ou 400 µs

==> A+
:roll: Les requins, c'est comme le langage ASM, c'est le sommet de la chaîne alimentaire. :wink:

générateur d' impulsions pour moteur pas a pas
ducran lapoigne
Avatar de l’utilisateur
Débutant
Débutant
Messages : 96
Enregistré en : septembre 2015

#15 Message par ducran lapoigne » mar. 10 avr. 2018 08:51

T= 1/F (T en ms, F en KHZ)

pour 50 HZ T=1/0,050 = 20 ms ou 20000 uS

pour 2500 HZ T= 1/2,5= 0,4 ms ou 400 uS

générateur d' impulsions pour moteur pas a pas
Temps-x
Avatar de l’utilisateur
Expert
Expert
Messages : 2595
Enregistré en : juillet 2016
Localisation : Terre

#16 Message par Temps-x » mar. 10 avr. 2018 16:09

Bonjour,

Ok, donc tes tops corresponds à la moitié de l'impulsion

soit 10000 µs pour 50 hertz
soit 200 µs pour 2500 hertz

Ok, avec la méthode d'interruption ça te laisse le temps de tout faire, mais pourquoi un tableau

Suffit de multiplier la valeur par 40 avec le résultat trouvé dans ADRESH

Par exemple si tu veux 50 hertz, qui corresponds à 10000 µs sur demi alternance.

Code : Tout sélectionner



 255  x 40 
= 10200 µs
 254  x 40 
= 10160 µs
 253  x 40 
= 10120 µs
 252  x 40 
= 10080 µs
 251  x 40 
= 10040 µs
 250  x 40 
= 10000 µs     
 249  x 40 
= 9960 µs
 
...................
 ...................
 ...................
 ...................
 ...................
10 x 40 = 400 µs
9  x 40 
= 360 µs
8 x 40 
= 320 µs 
5 x 40 
= 200 µs
4 x 40 
= 160 µs
3 x 40 
= 120 µs
2 x 40 
=  80 µs
1 x 40 
=  40 µs

65535 
- 10000 µs = 55535

Le Timer1 devra être incrémenté  à 55535 pour 50 hertz
 


D'autre par tu ne peux pas avoir toute la gamme de fréquence qui va de 50 Hz à 2500 Hz, car ça te fait
2450 pas pour chaque fréquence, et vu le convertisseur de ce Pic qui à un maximum de 1024 pas, c'est pas possible.

Il faudrait un encodeur rotative avec 4 digits pour la demande de fréquence, avec une un algorithme mathématique. :wink:

==> A+
:roll: Les requins, c'est comme le langage ASM, c'est le sommet de la chaîne alimentaire. :wink:

générateur d' impulsions pour moteur pas a pas
ducran lapoigne
Avatar de l’utilisateur
Débutant
Débutant
Messages : 96
Enregistré en : septembre 2015

#17 Message par ducran lapoigne » mar. 10 avr. 2018 20:51

bonsoir, tempsx .... et le forum

je pense qu' on se comprend mal depuis le début pour ce que je souhaite obtenir:

la durée de l'impulsion doit toujours être 10 uS

si on désigne une période, elle sera = à Ton + Toff

exemple 50 HZ: durée période = 20000 uS -> Ton (durée impulsion) = 10 uS et Toff = 19990 uS

a 2500 HZ: durée période = 400 uS -> Ton (durée impulsion) = 10 uS et Toff = 390 uS

si j' utilise ton code: avec la formule qui relie la frequence et le temps (on va prendre les lignes à la fin)
pour 40 uS :F = 1/t = 25KHZ
pour 80 uS :F = 1/t = 12,5 KHZ
pour 120 uS :F = 1/t = 8,33 KHZ
pour 160 uS :F = 1/t = 6,25 KHZ
pour 200 uS :F = 1/t = 5 KHZ

un potentiomètre a une course de +/- 270 degrés , pour simplifier disons 255
au début: degré 0 du potentiomètre : 25 KHZ
au 1er degré du potentiomètre = 12,5 KHZ
au 2 eme degré du potentiomètre = 8,33 KHZ
etc ....

ce que je désire est une variation linéaire de la fréquence en fonction de la position du potentiomètre d' ou la table

++ sur le forum
Antoine

générateur d' impulsions pour moteur pas a pas
Temps-x
Avatar de l’utilisateur
Expert
Expert
Messages : 2595
Enregistré en : juillet 2016
Localisation : Terre

#18 Message par Temps-x » mer. 11 avr. 2018 13:42

Bonjour ducran lapoigne, et le forum,

ducran lapoigne a écrit :
Source du message ce que je désire est une variation linéaire de la fréquence en fonction de la position du potentiomètre d' ou la table


D'accord, j'ai du zappé quelque ligne :oops:, ta méthode dans ce cas là est la meilleur, si je trouve mieux je m’empresserais de mettre le code.

Merci ! pour le partage, et la patience que tu m'as accordé. :wink:

==> A+
Modifié en dernier par Temps-x le mer. 11 avr. 2018 22:11, modifié 1 fois.
:roll: Les requins, c'est comme le langage ASM, c'est le sommet de la chaîne alimentaire. :wink:

générateur d' impulsions pour moteur pas a pas
F6FCO
Avatar de l’utilisateur
Expert
Expert
Messages : 1413
Âge : 70
Enregistré en : décembre 2017
Localisation : Furtif je suis.
Contact :

#19 Message par F6FCO » mer. 11 avr. 2018 18:35

Temps-x a écrit :Il faudrait arrivé à ça :
123.png


Bonjour,
Tu es sur de ton schéma ? parce que d'après tout ce que j'ai vu jusqu'à présent les pulses étaient constants en largeur, mais peut-être il y a t'il les deux méthodes. J'ai ouvert justement un sujet sur une rampe à largeur constante.
http://www.alciro.org/alciro/Plotter-Ro ... _26_fr.htm
Une porte nand prend 2 bits en entrée... la cochonne !!! :langue:

générateur d' impulsions pour moteur pas a pas
Temps-x
Avatar de l’utilisateur
Expert
Expert
Messages : 2595
Enregistré en : juillet 2016
Localisation : Terre

#20 Message par Temps-x » jeu. 12 avr. 2018 02:54

Bonjour F6FCO, et le forum,

Ok, pour ne pas polluer je passe sur le poste que tu as ouvert.

==> A+
:roll: Les requins, c'est comme le langage ASM, c'est le sommet de la chaîne alimentaire. :wink:


Retourner vers « Coin Fourre-tout »

Qui est en ligne

Utilisateurs parcourant ce forum : cyril13110 et 39 invités