Gestion d'un reseau train électrique

PieM

Senior Member
Bonjour,

plusieurs remarques:
prendre l'habitude d'utiliser des symboles pour nommer variables, entrées et sorties. Cela facilite la lecture et permet de modifier les affectations à un seul endroit.

Une phase de démarrage peut atteindre 800 fois 5ms soit 4s !
c'est à dire que pendant ce temps, le picaxe ne sait rien faire d'autre.
Et si il y a un remord, impossible d'arrêter avant la fin de la phase démarrage. Est ce bien judicieux ?

La vitesse est définie à priori par le potard, avant le démarrage. On constate à la fin du démarrage ?
Dans une boucle for a to b ... next , la boucle prend fin quand la valeur b est atteinte; inutile donc de tester if val = potie then exit.

si vous arrêtez le pwm par pwmout C.2, OFF, vous arrêtez la tâche de fond PWM, pour C.2 et C.1.
utilisez
pwmduty C.2, 0
ou bien les entrées D.0 et D.1 qui définissent le sens: les 2 au même niveau provoquent l'arrêt du moteur.

Dans votre prog, il ne sert à rien de balayer tout si vous êtes à l’arrêt !

vous avez un pwmduty en ligne 29 qui est systématiquement modifié par une réinitialisation en ligne 32 qd vous démarrez.
Initialisez par pwmout pwmdiv16, c.2, 255,0 en début, avant le main:

Autre chose, je croyais que les vitesses maxi étaient définies par des valeurs mises en mémoire (vos trimmers du début) et qu'en auto, la commande était simplement arrêt, marche AV, marche AR.
Par contre qu'en mode manuel, vous pouviez faire varier la vitesse en continu.
Donc quel est l'objectif de ce programme ? Car pour moi ce n'est pas clair.

Votre principe d'un BP pour mise en marche et arrêt ne me semble pas très judicieux pour une future automatisation!
Utilisez au moins un flag (0 ou 1) pour savoir si on est en marche ou à l'arrêt; Et c'est son état (modifiable en cas d'automatisation) qui permet de lancer la procédure marche ou arrêt.

Et je répète qu'il faut avoir une vue d'ensemble de ce que doit faire le programme, car ce n'est pas en juxtaposant des petits bouts qu'on fait un programme fonctionnel.
 

zeltron

Senior Member
Donc quel est l'objectif de ce programme ? Car pour moi ce n'est pas clair.
offf l'objectif était juste de faire une rampe de déceleration et accéleration et de me familiariser avec ces commandes
ce qui vous parait evident peux me poser des grosses questions :D
j'ai intégré la commande du pwm( en manu juste avec l'aide du potentiometre ) au sein du gros programme ça me convient très bien comme cela
j'ai placé ça, dans la boucle d'attente de detection d'appuis clavier comme ça j'ai toujours le controle du pwm
View attachment reseau_i2c3.7.bas
maintenant j'ai besoin d'un chti coup de main pour la detection court-circuit
j'ai bien regardé la doc mais j'y comprend que dalle pour la mise en oeuvre certe la traduction en francais est bien sympatique
mais il y peu d'exemple dans la doc et ni sur le net
j'ai vu qu'il y des reférences internes à l'aide de pont diviseurs à mettre en oeuvre mais y'a pas d'exemples
apres mettre le comparateur en service avec compsetup %00000001,0 comment mettre en oeuvre une interruption?
 

alainav1

Senior Member
bonjour,
pour moi un element de securité ne doit pas faire partie du programme (mais ce n'est que mon avis !)
un petit circuit avec des composant discrets doit suffire
par exemple on mesure la tension aux bornes d'une resistance de 0,1 ohms mise en serie avec le circuit et un comparateur (lm311 par exemple )se charge de declencher l'action souhaitée quand la tension est dépassé , on trouve pas mal d'exemple sur le net .
je reviens aussi sur une idée déjà émise et qui à fait ses preuves chez les ferrovipathes . une lampe à filament de tugsten en serie dans le circuit ,quand la lampe s'allume c'est qu'il y a court circuit par exemple si on à un circuit alimenté en 12V et que la lampe utilisée est type feu de voiture 21W .l'intensité dans le circuit ne depassera jamais 21/12 = 2A environ
voila juste quelques idées
maintenant si tu veux faire ça avec un picaxe la methode reste la même :
mesurer la tension aux bornes d'une resistance en serie dans le circuit et faire une action en cas de depassement .
cordialement
Alain
 

PieM

Senior Member
Si j'ai un court circuit chez moi pendant mon absence, je ne sais pas si une lampe qui s"allume sera d'un grand secours...
d'autre part, une lampe de 21W a une résistance à froid d'environ 3.8 à 4 Ohms. c'est à dire que pour disposer de 1A sous 12V, il faut une tension de 16V !

mesurer la tension aux bornes d'une resistance en serie dans le circuit et faire une action en cas de depassement .
C'est ce dont on parle depuis le début avec le L298, sa broche current sensing. et en utilisant les comparateurs internes du picaxe qui sont indépendants du programme.
Et en tout dernier recours, il y a le fusible sur la partie alim puissance.
 

alainav1

Senior Member
Bonjour,
c'est vrai que je ne suis pas ce post depuis le debut (13 pages c'est pas evident quand on a pas commencé au debut) .
ce dont je parle c'est d'une experience de club avec des anciens montages simplement pour vous faire profité de ce que j"ai vu et qui marche (dans la configuration ci dessous) .
l'alimentation classique d'un tranfo de train du commerce est d'environ 16V et la consommation normale est moins d'un ampere (pour un petit circuit dit classsique de quelque wagons ).
la lampe est utile quand "on joue " au train ,dés le court circuit la lampe s'allume et on sait que c'est un court cicuit .
maintenant si un L298 est pourvu d'une broche current sensing je suppose que cette broche est une image de l'intensité surement une tension ? )qu'il faut comparer avec une variable (peut etre un potentiometre qui permet de la faie varier ?
mais j'avoue mon ignorance donc je vais suivre ce post pour mourir moins idiot (quoi que ??)
quand il faut proteger de l'intensité un element et que le temps de reponse ne doit pas etre trop rapide (protection d'un moteur et non pas d'une carte electronique ) j'utilse un polyswitch pas tres precis , utilisable pour des tension faibles (entre 30 et 70v suivant le polyswitch utilisé , on ne peux donc pas l'utiliser sur le 230V )
.c'est un fusible qui se réarme donc trés pratique .(mais je suppose que vous connaissez ce composant )
quand au fusible sur l'alim de la partie puissance le L298 ne va t il pas exploser avant le fusible ?
 
Last edited:

zeltron

Senior Member
maintenant si un L298 est pourvu d'une broche current sensing je suppose que cette broche est une image de l'intensité surement une tension ? )qu'il faut comparer avec une variable (peut etre un potentiometre qui permet de la faie varier ?
oui c'est une tension mais comme c'est un signal carré pulsé les valeurs récupérées sont un peu hasardeuses d'apres ce que je peux voir
ça me fait penser à la mise au point du clavier...
soit il faut la comparer avec une tension de référence à l'aide du pont diviseur interne du picaxe
ou faire une valeur moyenne de la conversion analogique de l'entrée?
pour un courant théorique de 335 mA je recupere une tension de 0.2mv avec une valeur moyenne sur 6 mesures de la borne ADC de 85 pointe à 230
pour 615 mA tension de 0.35 mV valeur moyenne 126 pointe à 248
pour 818 mA tension de 0.5 mv valeur moyenne 88 ... pointe à 230...
pour 1A tension 0.65 mV valeur moyenne 83 ... pointe à 230...
je pense qu'il faut faire une valeur moyenne comme le clavier sur 20 mesures ?
car avec le comparateur ça va déclencher trop souvent la sécurité?
et encore ce sont des valeurs relevées à l'aide de résistances donc sans les pollutions du moteur
 
Last edited:

alainav1

Senior Member
bonjour,
je ne connais pas en detail le schemas du l298 mais il me semble necessaire de declencher dés le premiere dépassement d' intensite car je suppose que le l298 est équipé de transistor FET MOS et que pour les protéger il ne faut pas qu'il voit une surintensité même un temps tres court .(alors qu'un moteur s'en accommode )donc moyenner la valeur est ce une bonne idée ?

il faut donc definir ce que l'on veux proteger pour savoir avec quelle vitesse il faut le faire ?
les specialistes donneront un avis avisécar ça dépasse mes compétences .
cordialement
Alain
 

zeltron

Senior Member
oui c'est sur
disons que le comparateur pourrait détecter le cour-circuit
et la valeur moyenne une surcharge de courant
j'ai trouvé ça comme info c'est un peu plus explicite que la doc
compsetup for 28x2 PIC18F52K22

compsetup %0000000000, %00000000
|||||||||| ||||||||_Bit 0: Bit 0 of 32 tap off posistions
|||||||||| |||||||__Bit 1: Bit 1 of 32 tap off posistions
|||||||||| ||||||___Bit 2: Bit 2 of 32 tap off posistions
|||||||||| |||||____Bit 3: Bit 3 of 32 tap off posistions
|||||||||| ||||_____Bit 4: Bit 4 of 32 tap off posistions
|||||||||| |||______Bit 5: Not used - set to 0
|||||||||| ||_______Bit 6: Not used - set to 0
|||||||||| |________Bit 7: Enable ladder
||||||||||
||||||||||____________Bit 0: Enable Comparitor 1 - ADC0 is - and ADC3 is +
|||||||||_____________Bit 1: Enable Comparitor 2 - ADC1 is - and ADC2 is +
||||||||______________Bit 2: Comparator 1 is inverted (when set to 1)
|||||||_______________Bit 3: Comparator 2 in inverted (When set to 1)
||||||________________Bit 4: Change in comparator 1 makes change to flag when set to 1
|||||_________________Bit 5: Change in comparator 2 makes change to flag when set to 1
||||__________________Bit 6: Comparator 1 compared to IVR when set to 1
|||___________________Bit 7: Comparator 2 compared to IVR when set to 1
||____________________Bit 8: Comparator 1 set to 1.2v refrence
|_____________________Bit 9: Comparator 2 set to 1.2v refrence

c'est pour un 28x2 ça doit être identique sur le 40 x2
 
Last edited:

PieM

Senior Member
oui c'est une tension mais comme c'est un signal carré pulsé les valeurs récupérées sont un peu hasardeuses d'apres ce que je peux voir
ça me fait penser à la mise au point du clavier...
soit il faut la comparer avec une tension de référence à l'aide du pont diviseur interne du picaxe
ou faire une valeur moyenne de la conversion analogique de l'entrée?
Mais dans tous les cas il faut mettre un filtre RC avant d'attaquer l'entrée ana. mettre la constante de temps mini en fonction de la fréquence choisie pour le PWM.
Sinon, le comparateur verra toujours la tension crête.

j'ai trouvé ça comme info c'est un peu plus explicite que la doc
compsetup for 28x2 PIC18F52K22
Ben c'est exactement ce qu'il y a sur la doc... !?

il faut :
Code:
'Config comparateur1 entrée ADC0 ===================
'           |-V divider
'           | |-Vref fixe/divider
'           | | |-compflag 
'           | | |   |-comp1
compsetup %0001010001, %10000111
'                       |  |---|valeur en 1/32 de Vcc
'                       |V ladder on
setintflags %00010000, %00010000
 
Last edited:

zeltron

Senior Member
et bien je suis étonné pour une fois pas trop de galere! merci chef! ça marche plutot bien! :D:p:rolleyes:
reste à peaufiner quelques détailles notamment je ne parviens pas à réactiver l'interruption dans son sous programme
je sais pas si je lis la bonne doc mais avec setintflags ils n'en parlent pas...
et si je réactive par compsetup %0001010001,%10000100
setintflags %00010000, %00010000 ça ne marche pas non plus... y'a un truc...
 

zeltron

Senior Member
je dirais même plus c'est super!
j'ai fait un gros court-circuit de bourrin et bé le fusible n'a même pas eu le temps d'avoir peur!
que j'avais déjà l'alarme sur display et la coupure du l298 reste plus qu'a mettre un chti buzzer!
 

alainav1

Senior Member
tu peux nous mettre un petit resumé de la partie qui gere le court ciruit pour resumer tout ça !
ce serait simpat un sous programme à ensemble à archiver
cordadialement
Alain
 

PieM

Senior Member
je dirais même plus c'est super!
j'ai fait un gros court-circuit de bourrin et bé le fusible n'a même pas eu le temps d'avoir peur!
que j'avais déjà l'alarme sur display et la coupure du l298 reste plus qu'a mettre un chti buzzer!
C'est bien, tu te débrouilles comme un chef, chapeau ! je vois qu'il est réglé à 625mv ? La R sur le L268 est de combien ?
Concernant la réactivation de l'interruption, elle doit se faire avant le return en fin du s/prog interrupt, mais après s'être assuré que les conditions d'interruptions (court circuit) n'existent plus .
en toute logique soit on attend que la condition de CC ait disparu et on redémarre, (pas l'idéal) soit on en profite pour utiliser un BP quelconque pour réarmer.
La sortie du comparateur est également visible en interrogeant la variable qui s'appelle compvalue ; pour le comparateur1 (sur ADC0) c'est le bit 0 qui change d'état.

Il faudra voir à l'utilisation, mais il est possible de modifier par programme, le seuil de déclenchement en fonction du duty du pwm, pour améliorer la sensibilité. mais là je commence à pinailler...

Indépendamment de la fonction disjoncteur, on peut continuer à surveiller l'entrée ADC0 par un readadc10 pour savoir par exemple la charge du réseau, s'il y a une loco dessus ou si elle n'est pas en train de pousser une vache sur la voie...
 

zeltron

Senior Member
moi comme un chef! eh bé! disons que quand je vois toutes ces petites cartes clignoter je suis ravie
j'en oublie même le train ;)
et puis (pour alainav1) je m'attendais à une grosse quantitées de lignes mais non
c'est la syntaxe du post de PIEM ci dessus
qui renvoie au sous programme interrup qui doit être placé en fin de programme sinon le display affiche des hieroglyphes!!! (c'est marqué dans la doc voyez je la lis :eek:
c'est ça 625 mv exactement!
la resistance est de 0.85 o
ça déclenche un peu en dessous de 1.4A
la loco est autour des 600mA..
J'ai utilisé un rc tres faible pour avoir un temps de réponse rapide 1uf 1k (244 hz)la tension n'est pas super lissée mais y'a pas l'air d'avoir de déclenchement intempestifs
au besoin je l'augmenterai un peu
Concernant la réactivation de l'interruption, elle doit se faire avant le return en fin du s/prog interrupt, mais après s'être assuré que les conditions d'interruptions (court circuit) n'existent plus .
en toute logique soit on attend que la condition de CC ait disparu et on redémarre, (pas l'idéal) soit on en profite pour utiliser un BP quelconque pour réarmer.
c'est exactement ce que j'ai fait
je demande sur le display d'activer l'inverseur de sens de marche loco quand la recherche du défaut est trouvé
mais la commande setintflags ne réactive pas l'interrup... j'ai bidouillé plein de code mais ça veux pas! et pourtant placé avant le return....
finalement il ne reste plus que ça comme pb...y'a plus qu'a reseter!
 
Last edited:

zeltron

Senior Member
je vais finir par m'ennuyer! enfin surtout de vous car tout est presque deverminé :(
le reste c'est copier coller et jouer de la perceuse... pour un ans ou 2 :D
 

zeltron

Senior Member
ok je sais il est 4h 53 je ferai mieux de dormir!
mais une idée me trote dans la tête comme je n'ai pas envie dans finir avec ce pwm
la tension max du moteur est de 8v je remarque que le pwm est bien efficace au ralenti mais pas au démarrage
suivant l' encrassement des voies et des roues la tension de seuil au démarrage est assez forte
est cette pauvre loco à tendance a partir comme une balle apres un rapport cyclique de décollage 40 à 50 % qui est trop fort pour un bon ralentie
pourquoi ne pas mettre un frere jumeaux l298 en entrée du shield l 298 existant
avec un bon filtre rc en entrée pour booster de maniere temporaire la tension de démarrage genre 11v afin de décoller la pulpe et secouer tout ça genre orangina
puis de ramener une tension d'entrée shield à 8v quand le potie vitesse est à genre 70%
parceque la vitesse je m'en fiche ce qui compte c'est les ralenties comme disait ma grand mere!
de cette maniere le moteur ne souffrirait pas de trop?
pourquoi faire simple ? et je pourrai donc continuer à vous prendre la tête :confused:
 

zeltron

Senior Member
d'autant qu'il me faut 3 pwm donc 2 cartes l298 un pwm inutilisé
s'ils sont commandés par un pwm en entrée ça fait racine carré de 27* 2068 -1 = 6 ;)
donc que 3 cartes l298 et aucun ne se tourne les pouces!
ça pose peut être un casse tête au niveau des commandes car ils seront pilotés par 2 picaxes et dépendent de leurs tensions respectives en entrée mais c'est pas sur...ou je dis des conneries et je vais me recoucher?
 

PieM

Senior Member
pourquoi ne pas mettre un frere jumeaux l298 en entrée du shield l 298 existant
Mauvaise idée ! on ne peut pas empiler des L298. la tension de ref doit être le 0V pour les deux.
En principe, le démarrage se fait en appliquant la tenson maxi pendant un temps très court via un pulsout , avant initialisation du PWM.
Comme la commande est en pwm, je pense qu'il n'y a pas de problème à monter la tension au delà de 8V. Le moteur est donné pour 8V en continu, pour des raisons d'échauffement.

c'est le cas d'un moteur pas à pas qui est donné pour une tension de 6V par exemple mais qui doit fonctionner sous 12V pour obtenir ses caractéristiques de couple en fonctionnement. C'est le driver qui gère la limitation de courant.
 

alainav1

Senior Member
bonjour,
j'ai eu le même probleme au demarrage basse vitesse j'ai contourné le probleme de la façon suivante
au demmarrage 'envoi une impulsionde pwm de 100%.
voici lse 2 lignes decode pour un autre langage (pour un pic 16F) mais facilement adaptable
PWMduty 1, 1000
PWMduty 1, 1000
WaitMs 100
on execute ce code au demarrage
cordialement
Alain
 
Last edited:

PieM

Senior Member
mais la commande setintflags ne réactive pas l'interrup... j'ai bidouillé plein de code mais ça veux pas! et pourtant placé avant le return....
finalement il ne reste plus que ça comme pb...y'a plus qu'a reseter!
Attention que le flag des comparateurs (donc l'interruption) fonctionne d'une façon particulière: il est activé en cas de changement d'état de la sortie comparateur, c'est à dire passage de 0 à 1 ou l'inverse.

et il faut penser à le remettre à 0 avant la réactivation !
 

jojojo

Senior Member
Je reviens sur les problèmes de démarrage.

Pour obtenir un couple "péchu", à basse vitesse, il est TRES important, de connaitre précisément la préférence du moteur, en terme de fréquence, pour bien adapter le PWM.

Et pas forcément s'en tenir au "bruit" de la bête.

Avec des moteurs brushed, classiques, basse tension, on a des surprises ... On trouve les meilleurs couples, entre 400 hz et 15 khz !...

Et, quand on se penche, sur les DS des dits moteurs ... RIEN ! (Quoique, pour les locos, je ne sais pas ...)

Donc, empirisme.

Si vous récupérez, à titre d'exemple, un moteur de vibreur de GSM (8 mm X 4 mm), il se régale à presque 20Khz !

Petite expérience perso (Je précise, rien de scientifique démontré, là-dessus, mais ...) : Il semble, que plus le moteur est "petit", plus il apprécie une fréquence PWM élevée. Et, lycée de Versailles ...

Mais, j'ai vu des exceptions ...
 

zeltron

Senior Member
pour repondre en vrac aux differentes remarques ci dessus
j'ai un peu testé le duty à 100% au démarrage voir poste #120
avec pwmout pwmdiv16, c.2, 255,1023' init pwm et demarrage
pauseus 900'accoup pour un meilleur démarrage
mais soit je n'ai pas su mettre cette technique en valeur ou ce n'est pas top pour mon application
mais je vais retester
j'ai testé à 2 khz le moteur ne démarre pas, à 1khz ce n'est pas top ensuite j'ai testé à 244 hz et c'est le meilleur pour l'instant

la solution est peut être d'alimenter le l298 en 12v mais afin d'éviter une surchauffe en pleine vitesse du moteur
de modifier l'image du potie vitesse par une mise à l'echelle de ce potie je ne sais pas si c'est possible?
si oui comment faire ci dessous?

il faudrait appliquer à la place d'une progression linéaire du potie un pic pwm (tension genre 12v) au début de la course du curseur potie
apres une rapide descente une tres tres lente progression pwm puis le potie à fond ne donnerait que 70% du pwm
afin d'avoir une tension max vers 8v
ça doit être top non?
 

PieM

Senior Member
il faudrait appliquer à la place d'une progression linéaire du potie un pic pwm (tension genre 12v) au début de la course du curseur potie apres une rapide descente une tres tres lente progression pwm puis le potie à fond ne donnerait que 70% du pwm afin d'avoir une tension max vers 8v

Oui c'est possible mais je ne comprends pas trop: ce n'est plus le programme qui gère l'accélération de démarrage ?
parce que ça veut dire qu'il faut interdire un démarrage si le potard n'est pas à 0!
 

alainav1

Senior Member
bonjour,
pour les basses vitesse le problème rencontré ce n'est que lorsque l'on part de zero (il faut" décoller "le train des rails )
une impulsion de 0,1 s à vitesse maxi permet donc de donner une impulsion de départ . (il faut peut etre ajuster cette valeur suivant les cas ? mais pour moi ça marche et j'ai adopté cette technique )
 

zeltron

Senior Member
Oui c'est possible mais je ne comprends pas trop: ce n'est plus le programme qui gère l'accélération de
alors pour ce 1er pwm c'est juste une commande en manu qui depend du potie (c'est juste pour les manoeuvres du dépot)

pour les 2 autres pwm ça sera soit comme ci dessus
ou au choix en auto avec commande d'itineraire et rampe démarrage et acceleration
c'est pour cela que je teste les 2 méthodes
poste #145 ok je vais continuer de tester
Oui c'est possible
oui alors comment avec des conditions if?
des selects case?
une macro?
une fonction graphique?
ou un autre truc que je n'imagine même pas :D
 

PieM

Senior Member
Pour une manoeuvre en manuel je trouve cette solution bien compliquée !
Il faut sélectionner le sens avec l'inverseur, s'assurer que le potard est à 0, appuyer sur le BP de marche, et agir sur le potard.
La simple action sur le potard permettait de tout faire.

avec pwmout pwmdiv16, c.2, 255,1023' init pwm et demarrage
pauseus 900'accoup pour un meilleur démarrage
le pauseus 900 correspond à 4.5 ms ! c'est bien trop peu...
 

zeltron

Senior Member
non depuis il n'y a plus de bouton poussoir c'était un essais et depuis je me suis rangé du coté de votre idée
(même si je dis parfois l'inverse j'écoute et j'applique vos pertinentes remarques)
un potie et un inverseur sens
oui j'ai essayé de tout faire avec un potie en copiant un peu votre code pour l'étalonnage
du pont avec le potie
mais je n'ai pas trop aimé
puis depuis je suis passé à 4mhz donc les pauses ont changées
mais c'est vrai que je ne fais pas assez attention aux valeurs de pauses
 

PieM

Senior Member
A tester:

J'ai ajouté des lignes #define et des symboles (à généraliser : on verra ça dans le programme complet)
Donc 2 flags :
1 qui ne permet pas un démarrage si le potard n'a pas été mis à 0 avant
et 1 qui correspond à l'initialisation du démarrage à 100%

une variable taux_potie qui est la mise à l'échelle de la valeur potard. (de 0 à 100%)

Code:
[color=Navy]#define [/color][color=Black]marche_AV    [/color][color=Blue]high D.1  [/color][color=Black]: [/color][color=Blue]low D.0[/color]
[color=Navy]#define [/color][color=Black]marche_AR    [/color][color=Blue]high D.0  [/color][color=Black]: [/color][color=Blue]low D.1[/color]
[color=Navy]#define [/color][color=Black]arret        [/color][color=Blue]pwmduty PWM_reseau1[/color][color=Black], [/color][color=Navy]0[/color]
[color=Green]'======== entrees sorties ================[/color]
[color=Blue]symbol PWM_reseau1   [/color][color=DarkCyan]= [/color][color=Blue]C.2
symbol Ana_reseau1   [/color][color=DarkCyan]= [/color][color=Navy]6 [/color][color=Green]'pour l'ana, c'est le numero de canal qu'il faut prendre[/color]
[color=Blue]symbol Ana_touche    [/color][color=DarkCyan]= [/color][color=Navy]5[/color]
[color=Blue]symbol [/color][color=Purple]sens_loco     [/color][color=DarkCyan]= [/color][color=Purple]pinD.3[/color]
[color=Green]'============ variables ===================[/color]
[color=Blue]symbol [/color][color=Purple]flag_init     [/color][color=DarkCyan]= [/color][color=Purple]bit14[/color]
[color=Blue]symbol [/color][color=Purple]flag_marche   [/color][color=DarkCyan]= [/color][color=Purple]bit15[/color]
[color=Blue]symbol [/color][color=Purple]touche     [/color][color=DarkCyan]= [/color][color=Purple]b2[/color]
[color=Blue]symbol [/color][color=Purple]potie      [/color][color=DarkCyan]= [/color][color=Purple]w21[/color]
[color=Green]'============= constantes =================[/color]
[color=Blue]symbol taux_potie [/color][color=DarkCyan]= [/color][color=Navy]70     [/color][color=Green]' mise à l'echelle potentiometre vitesse (0 à 100)
'=========== initialisation ===============[/color]
[color=Blue]setfreq m4
pwmout pwmdiv16[/color][color=Black], [/color][color=Blue]PWM_reseau1[/color][color=Black], [/color][color=Navy]255[/color][color=Black],[/color][color=Navy]0 [/color][color=Green]'on initialise avec une valeur 0[/color]
[color=Purple]flag_marche [/color][color=DarkCyan]= [/color][color=Navy]0[/color]
[color=Purple]flag_init [/color][color=DarkCyan]= [/color][color=Navy]0[/color]

[color=Green]'############ prog vitesse manu #####################################[/color]
[color=Blue]do
readadc Ana_touche [/color][color=Black], [/color][color=Purple]touche   [/color]
[color=Blue]readadc10 Ana_reseau1[/color][color=Black], [/color][color=Purple]potie[/color]
[color=Blue]if [/color][color=Purple]potie [/color][color=DarkCyan]< [/color][color=Navy]100  [/color][color=Blue]then [/color][color=Black]: arret : [/color][color=Purple]flag_marche [/color][color=DarkCyan]= [/color][color=Navy]1 [/color][color=Black]: [/color][color=Purple]flag_init [/color][color=DarkCyan]= [/color][color=Navy]1
   [/color][color=Blue]if [/color][color=Purple]sens_loco [/color][color=DarkCyan]= [/color][color=Navy]0 [/color][color=Blue]then [/color][color=Black]: marche_AV [/color][color=Green]'si a l'arret, on peut changer de sens
   [/color][color=Blue]else [/color][color=Black]:marche_AR
   [/color][color=Blue]endif
elseif [/color][color=Purple]flag_marche [/color][color=DarkCyan]= [/color][color=Navy]1 [/color][color=Blue]then
   if [/color][color=Purple]flag_init [/color][color=DarkCyan]= [/color][color=Navy]1 [/color][color=Blue]then   [/color][color=Green]'on sort de l'arrêt
      [/color][color=Blue]pwmduty PWM_reseau1[/color][color=Black], [/color][color=Navy]1023[/color][color=Black]: [/color][color=Blue]pause [/color][color=Navy]50 [/color][color=Black]:[/color][color=Purple]flag_init [/color][color=DarkCyan]= [/color][color=Navy]0 [/color][color=Green]'on demarre à 100% 
   [/color][color=Blue]else  [/color][color=Green]'on est déjà en marche
      [/color][color=Purple]potie [/color][color=DarkCyan]= [/color][color=Blue]taux_potie [/color][color=DarkCyan]/[/color][color=Navy]2 [/color][color=DarkCyan]* [/color][color=Purple]potie [/color][color=DarkCyan]/ [/color][color=Navy]50 [/color][color=Green]'mise a l'echelle 
      [/color][color=Blue]pwmduty PWM_reseau1[/color][color=Black], [/color][color=Purple]potie 
   [/color][color=Blue]endif 
endif
loop while [/color][color=Purple]touche [/color][color=DarkCyan]> [/color][color=Navy]250[/color]
 
Last edited:

zeltron

Senior Member
merci bien!
c'est vraiment très sympa!
je suis en train :D de mettre ça au point j'ai déjà fait beaucoup d'essais
la 1er conclusion est que le départ avec duty max est un plus pour le démarrage,mais ce n'est pas efficace à 100%
et visuellement c'est pas top
j'ai retiré la pause 50 car la loco fait des bons de 5 cm..!!!
même sans pause c'est déjà violent:D et comme vu l'efficacité pas la peine de diminuer le duty...
je pense qu'il n'y aura pas de miracle malheureusement
 

alainav1

Senior Member
la qualité des rails (proprete ..) et le type de moteur sont aussi des parametres importants pour le deplacement de la loco (rapport de vitesse du moteur ,qualité des engrenage ..)
l'electronique ne resoud pas tout .
avant de faire des manoeuvres à basse vitesse il faut que le moteur ait deja tourné . Je ne sais pas l'expliquer mais c'est du vecu par tous le membes du club .
 

zeltron

Senior Member
avant de faire des manoeuvres à basse vitesse il faut que le moteur ait deja tourné . Je ne sais pas l'expliquer mais c'est du vecu par tous le membes du club .
tu as tout à fait raison j'ai déjà remarqué moi aussi ça! il faut que le moteur soit chaud
pour le type de moteur et le réducteur malheureusement à cette echelle y'a pas le choix!
j'ai un moteurs 5 poles plus souples pour un bon ralenti
et un 3 poles qui est plus rapide mais plus difficile
mais cette alim dois fonctionner avec tout je ne pinaille pas je ferais une vidéo quand j'aurais le meilleur résultat
et pour les pignons il faudrait 2 dents en moins sur le moteur ça existe en kit pour les camions à l'échelle 1/14 pour augmenter le couple
mais le pignons est de la taille du moteur Z :D ;)

pour la mise à l'echelle du potie c'est mieux avec le code de PIEM mais bien que j'ai encore plein d'essais à faire avant de conclure je pense que y'a pas trop de difference avec le transfo marklin d'origine

c'est assez decevant je pense qu'il faudrait tester avec une fréquence à 100hz ça pourrait être meilleure
avant j'avais fait une alim à base de 555 à 25hz qui donnait un meilleur résultat
je ne sais pas si avec des pulsouts et mon application c'est possible de faire du pwm pour descendre à 100hz???
y'a encore un truc de possible c'est de faire un asservissement proportionnel en fonction de la FCEM mais je ne sais pas si ça ameliore le schmilblick
y'a aussi la possibilité de faire varier la fréquence à la place du rapport cyclique il parait que c'est meilleur pour un control loco à basse vitesse...
afin y'a encore pas mal de truc à voir
 
Last edited:

PieM

Senior Member
Je pense que ce qu'il faut, c'est définir le couple fréquence /duty idéal pour avoir le démarrage optimum. (avec un 555 éventuellement ou un 08M2 à très basse fréquence)
Ensuite on verra comment l'obtenir, mais ce sera vraisemblablement par un picaxe dédié ( 08M2)
 

alainav1

Senior Member
Bonjour,
a mon avis il n'y a aucun probleme pour faire un pwn par des pulsout
j'ai fais un programme pour commander des servo moteur (aiguillages )parametrable avec 3 potentiometres (vitesse du servo, amplitude du bras vers la droite , amplitude du bras vers la gauche )
pour le pwm c'est le même principe .(ce programme est dispo sur la page de mon site pic et picaxe )
seul bemol pendant que le µP fait ça in ne fait rie d'autre . (dans mon cas c'est pas un probleme ) et si tu dédies un µP à cette fonction (la vitesse ) ça doit marcher .
por info
en regardant avec un analyseur logique j'ai constaté un ecart avec les tempo .exemple il faut une tempo de 12mS pour 19 en reel (surement le temps des instruction basic ) mais pour ton application c'est pas dramatique .
cordialement
Alain
 

zeltron

Senior Member
bien ok avec #153 et #154
mais un 08 m ne risque t'il pas d'être un peu juste il y a l'inverseur de sens , le potie, la détection de court-circuit?
enfin je retourne à mes tests ;)et réparer mon ancienne alim pwm avec ses transistors 3055 grillés!:eek:
en attendant voici une lecture interessante trouvé sur le net
http://amfn.nice.free.fr/
puis cliquer sur le coté gauche (montage à base de pic)
puis cliquer sur picalim une alimentation à base de pic
 
Last edited:

alainav1

Senior Member
le 08m2 ne supporte apparemment pas la fonction compsetup
sinon sans cette fonction il ne doit pas y avoir de probleme
un pot pour gerer la vitesse (ou la vitesse et le sen )
une sortie pwm
un interrupteur de sens ( si ce n'est pas gerer par le pot )

si tu repares ton alim pwm avec de 3055 pourquoi ne pas remplacer le 3055 par un Nmos ?
 

PieM

Senior Member
mais un 08 m ne risque t'il pas d'être un peu juste il y a l'inverseur de sens , le potie, la détection de court-circuit?
Il ne faut pas tout mélanger. tout d'abord, il faut être conscient que le picaxe dédié doit être en mesure de communiquer avec le picaxe principal.
ce qui veut dire que fabriquer un pwm continu avec des pulsout n'est sans doute pas la solution.
Un pwm très basse fréquence (60Hz) est possible qu'avec une fréquence d'horloge de 4 MHz. (et pwmdiv64) On peut même descendre à 2Hz avec une fréquence du µC de 310kHz!

La gestion du court circuit n'a aucune raison d&#8217;être gérée par ce picaxe. Elle reste sur le 40X2

Il faut penser à l'avenir avec la partie automatisme. En mode auto, la gestion des phases accélération et décélération par contre doivent se faire sur ce picaxe à partir d'une info marche/arrêt.
En mode manu, c'est le potard qui continue à gérer la vitesse comme maintenant.

PS: je ne pense pas que la régulation par la FCEM soit à la portée du picaxe .
 

zeltron

Senior Member
Un pwm très basse fréquence (60Hz) est possible qu'avec une fréquence d'horloge de 4 MHz. (et pwmdiv64) On peut même descendre à 2Hz avec une fréquence du µC de 310kHz!
:D non de diou c'est maintenant que vous me le dite :D
depuis le temps que j'éssais de descendre en dessous de 244hz
l'assistant pwm n'offre pas la possibilite pwmdiv64 et elle n'est pas autorisé par la verification de picaxe editor...

pour ma vielle alim j'abandonne! ça me saoule de passer + de 2 h pour un truc qui ne va pas me servir
mais j'ai eu l'occasion de mesurer sa fréquence c'est 50hz à l'époque ça marchait bien
je ne suis pas convaincu par ce que je peux lire sur les haute fréquence pwm certain monte jusqu'a 32khz
mais j'ai encore fait des essais plus les fréquences sont élevées moins ça marche bien

et j'ai comparé par rapport au transfo d'origine marklin pour du z (il délivre alegrement 12 v7 en pleine vitesse en charge pour un moteur soit disant de 8v max...) et bien y'a pas photo le transfo est meilleur que le pwm
la je dis y'a de la monnaie à rendre et l'honneur est en jeu :mad::D sinon je vais bouffer mon fer à souder!

PS: je ne pense pas que la régulation par la FCEM soit à la portée du picaxe .
pas grave déjà une bonne fréquence et son duty ça devrait le faire!
 
Top