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 ---
- 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 ---
générateur d' impulsions pour moteur pas a pas
- ducran lapoigne
Débutant- Messages : 96
- Enregistré en : septembre 2015
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
par exemple "impulsion front montant" / "descendant"
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
par exemple "impulsion front montant" / "descendant"
générateur d' impulsions pour moteur pas a pas
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.
Comme tu partages pas mal de code, je t'en mets un, sans aucun tableau, regarde la simplicité du code.
En pourrais utiliser ADRESL et ADRESH pour 1023 ce qui augmenterais la fréquence.
A+
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+
générateur d' impulsions pour moteur pas a pas
- ducran lapoigne
Débutant- Messages : 96
- Enregistré en : septembre 2015
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
PS: pas de modulation de largeur d' impulsion, les pulses sont calibrées a 10 uS seule la fréquence change
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
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
générateur d' impulsions pour moteur pas a pas
- ducran lapoigne
Débutant- Messages : 96
- Enregistré en : septembre 2015
générateur d' impulsions pour moteur pas a pas
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.
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.
A+
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.
A+
générateur d' impulsions pour moteur pas a pas
- ducran lapoigne
Débutant- Messages : 96
- Enregistré en : septembre 2015
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
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
Bonjour ducran lapoigne, et le forum,
D'accord, j'ai du zappé quelque ligne , ta méthode dans ce cas là est la meilleur, si je trouve mieux je m’empresserais de mettre le code.
pour le partage, et la patience que tu m'as accordé.
A+
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 , ta méthode dans ce cas là est la meilleur, si je trouve mieux je m’empresserais de mettre le code.
pour le partage, et la patience que tu m'as accordé.
A+
Modifié en dernier par Temps-x le mer. 11 avr. 2018 22:11, modifié 1 fois.
générateur d' impulsions pour moteur pas a pas
- F6FCO
Expert- Messages : 1420
- Âge : 70
- Enregistré en : décembre 2017
- Localisation : Furtif je suis.
- Contact :
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
générateur d' impulsions pour moteur pas a pas
Retourner vers « Coin Fourre-tout »
Qui est en ligne
Utilisateurs parcourant ce forum : Aucun utilisateur enregistré et 126 invités