initiation picaxe pour systeme de jalonnage

JRTEC

Senior Member
Bonjour

je suis un novice , et je me suis lance ans la fabrication d un boitier de jalonnage

sur abcelectronique j ai ouvert 2 discusions :
l une sur mon syteme de jalonnage au depart base sur un CD4017 : http://www.abcelectronique.com/forum/showthread.php?t=69154
puis une personne m a expliquer le potentiel des picaxes du coup j ai revu ma position pour artir sur la fabrication de ce boitier avec un LCD : http://www.abcelectronique.com/forum/showthread.php?p=657463#post657463

je remets ici donc mon schema qui a encore quelques erreur de hardware

la prise ISO 11786 equipant mon tracteur me permet de recuperer des info sans montage necessaire de capteurs
Le capteur ILS dont je faisait allusion ici : http://www.abcelectronique.com/foru...54&page=1&pp=10
est remplace par l info de la position du relevage arriere du tracteur car celui relevant le combine de semis me permets de recupere rla meme info au meme moment

sur l ecran a 2 ligne j ai l intention de faire afficher les info suivantes

" JALONNAGE "X" /4"
" surface"XX,X"ha"

le but etant d afficher une info sur la position du jalonnage et une info sur la surface semée

Pour la surface , l info sera prise sur les 130 ( ou 100 d aulleur suivant la norme)impulsiosn par metre , et pour un outil de 3 m de large , sera compter uniquement lors que le outil sera par terre ( position relevage a 0 volts )

explication entre vitesse theorique et reelle : un tracteur dans un champs suivant l effort de traction patine cela pouvant alle a 30 % parfois , si comme une voiture la vitesse etait prise sur les roues ( vitesse theorique parcelles de 10 ha se transformere en 13 ha ( au fait 1 ha = 10 000m² ), l interet de remonte ces information c est pour les boitiers qui dose une quantite d engrais par exemple cela evite les surdossages, dons en option les on peux avoir une option de RADAR, donnant une lecture de la vitesse par mesure via desondes au sols , mais cela a une limite pour etre precis : 15km/h

normalement vu vos explication lorsque le picaxe comptera la surface , il ne sera pas en train de compter des impulsions de passage par contre lorsque le comptage de surface sera interompu par la leve des bras il ne contera plus de surface mais la il comptera une impulsion de plus pour le jalonnage si il est en position je lui demande d alimenter pendant 2 secondes une sortie , si il est en position meme temps mais une autre sortie
Tout le temps que durera la position 2 et la position 3 j aimerai que la diode este alumer , cependant est il possible de la faire clignoter du temps du pilotage du moteur ( les 2 secondes ) ?

d autre evolutions ? pourquoi mais lad ans l instant je n en ai pas d autre en tete qu une alimentation pernanente surune patte pour alimenter une electrovanne de jalonnage de preleve , mais a l heure par besoin car semoir pas equipe, et je cherhce toujours une capteur capacitf , cependant je vais recevoir des capteurs inductif capable de voir si une bouteille d eau est plaien deau ou vide donc capable de detecter autre chose que de metalique


cependant je viens de faire mon programme

j aimerai votre avis

je me pose quelques problemes:

consernant l affichage de la surface je l aimerai sous le format 2 chiffres avant la virgule et 2 apres , par ex 10.23 ha

ma bloque de conpatge de surface tourne sans termpo pour pourvoir compter chaque impulsions ( qui represente 1/130 de m ), je vais avoir pour une vitesse de 10 km/h environ 400 Hz, pensez que ma bloque pourra suivre ?

bizarrement en mode test , mon affichage LCD marche bien tant que l entree 4 n est pas modifie ( blocage de comptage) : affichage sur 2 lignes , la premiere laposition de jalonnage la seconde la surface , des que je je change C4, la l affichage du LCD se fait uniquement sur la seconde logne , est ce un bug de picaxe editor ou un bug de mon programme ?

une autre chose , j avais cru comprendre que par exemple C3 pouvait servir d entre comme de sortie , mais dans l etat actuelle de mes connaissances je n arriverai que a en faire une entre or j aimerai en faire une sortie


par avance merci
 

Attachments

PieM

Senior Member
Bonjour

et bienvenue...

dans l'immédiat, il y a pour ce qui me concerne de nombreuses questions, avant d'apporter une réponse...
N'ayant pas trop le temps de parcourir l'autre forum, pourriez vous reposter ici les infos permettant d'expliciter ce qu'est le jalonnage, pour un béotien comme moi , et le fonctionnement de votre système ?

Sinon:
- a quoi sert le moteur de votre schéma ?
- les diodes 1N4148 sont des diodes signal. monter plutôt des 1N4001 ...4007
- d'où viennent les info plots 2 et 4 ? contacts secs (sans tension) ?
- l'afficheur du schéma est un afficheur à commande parallèle et ne correspond pas au programme qui parle d'un afficheur série! (serout)
- diode N4148 (à l'envers) sur le 15 de l'afficheur ? c'est la commande du rétroéclairage, normalement avec un potar. Revoir la doc...

Je pense que le flowchart de P. Editor, est à revoir sérieusement en fonctions des infos que vous donnerez sur le fonctionnement du système.
C'est un peu la limite de ce type de programmation qui peut conduire à un programme "tuyau de poêle" :rolleyes:

Vous commandez un moteur via une tempo ... il n'y a pas de fin de course ?
Il est possible de mesurer le déplacement (impulsions ) en faisant autre chose en parallèle. Quelles sont les vitesses (km/h) mini maxi à prendre en compte?
A quoi va servir le capteur capacitif ? niveau de la trémie? ( j'ai des doutes sur un inductif qui mesure de l'eau !!)

consernant l affichage de la surface je l aimerai sous le format 2 chiffres avant la virgule et 2 apres , par ex 10.23 ha
pas de problème pour ça ...
C.3 est parfaitement accessible en tant que sortie. Il s'agit là encore d'une limitation liée au mode flowchart.

De quel matériel disposez vous ? le picaxe ? l'afficheur ?

A partir de vos infos, on refera un petit organigramme pour bien fixer les idées, avant de programmer quoique ce soit .

Désolé de poser autant de questions, mais ce petit projet très intéressant est d'un domaine un peu inconnu pour moi, même s'il m'est arrivé souvent de concevoir des machines spéciales...

Il y a une petite erreur concernant votre formule de calcul de la surface ... 130 est en diviseur : chaque impulsion correspond à 1/130 de m.
De plus si vous affichez des 1/100 d'ha, il faut faire le calcul directement en ares.
 
Last edited:

MGU

Senior Member
Bonjour,

Je vois que JRTEC a posté sur ce forum. Je suis responsable de cette initialisation aux picaxes.
J'ai eu le même post sur un forum d'électronique et j'ai fait les mêmes réponses.

J'ai découvert le jalonnage: traces non semées que l'on voit dans les champs qui servent de repères pour les traitements ensuite.

Ici, le jalonnage est fait sur un cycle de 4 aller retour, avec traces sur les passages 2 et 3.

Il faut donc compter les passages et régler le semoir pendant le demi tour (moteur on, moteur off) avant et après ces passages.
Il n'y a pas de fin de course, j'ai proposé un polyswitch.

Prévoir la possibilité d’incrémenter ou de bloquer le comptage manuellement.

Le picaxe est un 20M2, l'afficheur un LCD 1602 parallèle.

Les infos: signal 0v ou 3 v pour la position du semoir (levé, baissé)

Par de problèmes jusque là.
Il faut aussi calculer la surface semée:

Le signal fourni par le tracteur est une série d'impulsions (130 par mètre).

Je voulais compter ces impulsions par une interruption sur C.3.

Je simule par un générateur d'impulsions de 5 v et 50µs de 0 à 400Hz

Mais le comptage est aléatoire et quelques conseils me seraient utiles, je n'ai pas beaucoup d'expériences avec les interruptions

Pièces jointes le programme original avec comptage défaillant (pour info)

Un programme simplifier pour tester le comptage des impulsions qui ne fonctionne pas mieux.
Y a t il des contraintes sur les impulsions provoquant les interruptions?

Merci

MM
 

Attachments

BESQUEUT

Senior Member
je n'ai pas beaucoup d'expériences avec les interruptions
Je n'ai pas non plus une grosse expérience, mais au vu de la doc :
- la détection des interruptions est interrompue dès que l'on entre dans "interrupt" (point N°2 page 216 du tome 2)
==> il y a potentiellement des impulsions perdues pendant cette période,
Je ne comprends pas à quoi sert la "pause 1"
La variable "pulse" explose à 255, soit dès 2m parcourus...
A priori, on travaille plutôt sur des changements d'état que sur des états : la raison est expliquée dans le manuel ... Si l'état ne change pas pendant l'interruption, alors une nouvelle interruption est déclenchée dès la sortie de "interrupt" pour la même impulsion !
Il y a sur le forum anglais des exemples de code qui alternent la détection d'un état haut et d'un état bas pour contourner ce problème.
Celà dit, avec des impulsions de 50µs, je ne suis pas sur que celà puisse marcher...
Quand vous dites "comptage aléatoire" qu'observez-vous ?
Quelque chose me dit que c'est comme le "background receive" : c'est du Canada Dry...
Si c'est confirmé, il faut soit utiliser un processeur qui dispose d'interruptions hardware, soit utiliser un compteur externe (74LS393...)
 
Last edited:

MGU

Senior Member
Merci pour la réponse,

j'essaie de compter des impulsions avec un 20M2 au moyen d'interruption.

Je génère ces impulsions avec un générateur BF, signal carré, suivi d'un monostable (555)

J'ai donc des impulsions de 50µs à une fréquence variable de 0 à 400Hz,(je ne sais pas si elles doivent avoir un durée minimum mais l'interruption détecte ici le front montant).

Dans le programme d'interruption il y a uniquement l'incrémentation d'un compteur.
Pour être sûr de ne pas compter la même impulsion 2 fois, j'ai ajouté une pause 1 (125 µs à 32MHz).
L'impulsion est à 0 lorsque l'on sort de la routine.
A 400H, T = 2500µs, je pensais avoir le temps de tout compter

Le programme principal est une pause de 1 seconde
Résultat attendu: 200 à 200 Hz , 100 à 100 Hz etc au moins
mais à chaque déclenchement, le comptage est différent.

Je vais revoir ma méthode de test.
Si vous avez un test plus sûr ...

MM
 
Last edited:

BESQUEUT

Senior Member
Il me semble qu'un Picaxe standard (4Mhz) interprète environ 1000 instructions par seconde.
A 32 Mhz, il interpete une instruction toutes les 125 µs, et c'est à ce moment qu'il évalue l'état du port. (voir la doc citée ci-dessus)
Un petit chronogramme montre qu'il a une certaine probabilité de détecter l'interruption, mais c'est aléatoire...
A moins qu'un spécialiste du Picaxe ne me détrompe, il faut réserver ces puces à l'enseignement et aux applications simples.
Il semble que la série X gère de vraies interruptions hardware (flags). Si le modèle de Picaxe n'est pas figé, il y a peut-être une piste de ce coté.

En supprimant le 555, et donc en attaquant directement le signal carré, on a plus de chances de détecter la bascule. Mais il faut une fois détecter un état haut, une fois un état bas (et supprimer la pause 1). Encore faut-il que le matériel réel délivre bien un signal carré...

c est la fonction count qui me gene j ai l impression que durant le comptage le processeur ne fait rien d autre et qu il ne sera pas capable de voir si je relevge l outil a ce moment la.

Je suggère de traiter le relevage comme une interruption. Il faut donc modifier le masque, et dans "interrupt" chercher ce qui a causé l'interruption.

Pour le reste, il faut soit se tourner vers des microcontroleurs acceptant un langage compilé ou assembleur, soir faire appel à un circuit externe (comme suggéré ci-dessus).
 
Last edited:

MGU

Senior Member
Je vais allonger l'impulsion pour voir.

Si c'est un problème de vitesse, un diviseur de fréquence en amont

Avec le picaxe, s'essaie de faire simple, pour moi, et l'utilisateur final à part ce problème, le reste est OK.
 

PieM

Senior Member
Bonjour,

Merci pour l'explication du jalonnage ...

Je crains que l'utilisation des interruptions sur un M2 conduise malheureusement à ce type de galère. L'idéal (?) serait sans doute d'utiliser un X2 avec des entrées INT un peu plus "hard"

Je n'ai pas regardé en détail le programme qui me semble très bien structuré. (Pourquoi ne pas utiliser les symboles définis au début, dans le corps du programme ? il serait plus lisible ...)
Mais j'aurais une remarque à faire sur l'analyse du problème, si je l'ai bien compris, en ayant une approche un peu différente.

De fait, je considèrerais que l'essentiel du programme consiste à faire du comptage. tout le reste n'est qu'accessoire.
Donc pendant que la passe du tracteur se fait, on compte les impulsions. les condition d'arrêt du comptage (action manuelle relevage ou BP etc ... ) conduisant à la séquence calcul, affichage, action moteur etc ...
A la limite c'est cet arrêt comptage qui pourrait être sur interruption !

L'affichage indiquant la passe en cours n'a pas besoin d'être réactualisé en cours de passe.
Et l'indication de surface peut très bien n'être mise à jour qu'en fin de passe.

Je crois que cela simplifierait le problème.

Concernant le fin de course du moteur, vu le schéma, il est très facile d'intégrer une résistance de faible valeur entre moteur et masse commune, afin de mesurer par une entrée ana, la surintensité en fin de course.


Concernant l'affichage, pour décomposer une variable word en ses composantes ascii, utilisez la commande bintoascii: BINTASCII surf, b10,b9,b8,b7,b6 b6 contenant les unités et b10 les dizaines de milliers.
 

PieM

Senior Member
Je regardais votre programme simplifié:

Code:
interrupt:
	
	inc puls		'incrémenttation compteur impulsions
	pause 1
	setint %01000,%01000 'reset interruption hig sur C.3 
	return
Si on prends pour exemple un 18M2 à 4 MHz, l'incrémentation de puls va demander plus de 500 µs, la pause 1200 µs, le setint , je ne sais pas, et le return, près de 3 ms !!
Donc tout est fait pour passer à coté de pulses !

On est loin d'un Pic + assembleur ! La rançon d'un système interprété...
 

PieM

Senior Member
En complément, si le choix du 20M2 n'est pas définitif, il serait préférable de s'orienter sur un 28X2 qui permet de traiter le problème grâce à son compteur externe sur C.0 .
 

MGU

Senior Member
Merci PieM

Mais le 20M2 tourne à 32MHz

Donc, je divise tout par 8
3000/8=375

et j'enlève la pause (j'avais peur d'aller trop vite)
375-150 = 225
Je mets le setint après le retour
Le return,... je le laisse.

On arrive largement en dessous de 200 µs (Non ?)
A 400 Hz, la période fait 2500µs avec une impulsion de 50µs, je pensais qu'il y avait le temps.

Mais bon, si le test ne fonctionne pas, s'est qu'il y a une erreur quelque part
 

PieM

Senior Member
Merci PieM

Mais le 20M2 tourne à 32MHz SORRY, pas fait attention

Donc, je divise tout par 8
3000/8=375

et j'enlève la pause (j'avais peur d'aller trop vite)
375-150 = 225
Je mets le setint après le retour
Le return,... je le laisse.

On arrive largement en dessous de 200 µs (Non ?)
A 400 Hz, la période fait 2500µs avec une impulsion de 50µs, je pensais qu'il y avait le temps.

Mais bon, si le test ne fonctionne pas, s'est qu'il y a une erreur quelque part
Attention à ceci: dans le cas du programme, c'est la pause 8000 qui subit les interruptions.
In the case of the interrupted pause, wait, play or tune command, any remaining time delay is ignored and the
program continues with the next program line.

Donc, à priori, après la première interruption, c'est le setint OFF qui est exécuté.

Mettre le setint après le retour n'est pas permis. Il faut que le retour setint soit à l'intérieur de la routine interrupt.

Le problème ici peut venir aussi du fait que nous ne sommes pas avec une "vraie" interruption hardware et que des temps perturbateurs masquent certainement des pulses de 50 µs ...

C'est pourquoi je parlais d'utiliser plutôt un 28X2 qui possède des HINT, et qui a en plus une entrée comptage hardware.
 
Last edited:

MGU

Senior Member
Bon sang mais s'est bien sûr...
Si le retour se fait APRÈS la pause, çà pouvait pas marcher!
Effectivement, ce test comptait un par un.
Je vais essayer une bouche et continuer de tester. ça peut toujours servir.



merci
 
Last edited:

JRTEC

Senior Member
bonjour

j a i telecharger vos programmes: je comprend pas tout mais j essaye lol

ici :
arretcompte:
att: If pinC.6=1 then
pause 10 'Arret comptage
att1: If pinC.6=1 then att1 'Attente relachement
bit0=bit0 + 1 'V et V pause

Pourquoi l arret de comptage provoque l incrementation du passage ? le but est justement qu il ne bouge pas
pause 10 : c est a dire ? le picaxe attend ? si c est le cas , cela me gene un peu car pendan ce temps la il faut qu il continu de compter la surface

on est ok que pendant les pause et les att le picaxe me fait rien
il n y a qu une seule chaine

perso pour la surface j etais parti sur ce principe ( qu il reste a formuler correctement )


1ha
100are
10 000m²
B0 = impulsion
B1 surface en m²/ 3
Mettre b1 = 0 et b2 = 0
Compter impul b0
Si b1 = 130 -> ajouter 1 a b2 et remettre b0=0
Sinon recomptez b0
Si b3 =100 (300M²) -> ajouter 3 a w0 (are) remettre b1=0

si w0 est une variable qui peualler a 65 535
cela me va bien car au niveua de la surface maxi 9 999 ares je l aurai remis a zero avant

je remet mes programmes non corriger car affichage non correcete par rapport au lcd et d autre chose
 

Attachments

JRTEC

Senior Member
au debut du programme

"bit0=1: high C.2 'Initialisation bloqué" cependant c2 est une entre sur mon plan cela ne veut pas dire de mettre du courant a C2 comme une sortie ? et bit1 je ne comprend pas
 

JRTEC

Senior Member
jalonnage 20 m 2.JPGce n est vraiment pas digeste en basic , peut on gerer l affichage LCD en flow chart tel que l ecran connecte sur mon schema ?
 

JRTEC

Senior Member
j ai n ai pas de 28X2 et je n en n acheterai pas , j ai deja acheter un stock de 8m2 a 20m2 , vu la faible chose que je demande a ces processeurs je le remet pour etre clair : compter d un cote des impulsion de surface ( 130 imp / m sur une largeur de travail de 3m ), arretr de compter si le relevage st en l air et a ce moment compter en boucle de 1 a 4
 

PieM

Senior Member
ce n est vraiment pas digeste en basic , peut on gerer l affichage LCD en flow chart tel que l ecran connecte sur mon schema ?
Si vous voulez programmer un afficheur parallèle avec un flowchart, bon amusement ...
Peut être aurait-il fallut acheter vos composants, en fonction du problème à résoudre et de votre niveau en programmation, plutôt que l'inverse...

vu la faible chose que je demande a ces processeurs je le remet pour etre clair : compter d un cote des impulsion de surface ( 130 imp / m sur une largeur de travail de 3m ), arretr de compter si le relevage st en l air et a ce moment compter en boucle de 1 a 4
"La faible chose", en l'occurence, a tout de même l'air de poser des problèmes puisque MGU semble vous avoir déjà apporté des réponses dans un autre forum.
Concernant votre programme, je suis désolé mais il est incapable d'effectuer un comptage à 400 Hz.

D'autre part, pour votre calcul de surface , la surface en m2 est égale au nombre d'impulsions divisé par 130 et multiplié par 3.

J'ai proposé une approche en #8 qui permettrait de résoudre le problème. Si elle ne vous paraît pas viable dites le.
Je n'ai pas trop compris finalement ce que vous attendiez de nous ... Si c'est uniquement pour nous demander pourquoi votre programme ne marche pas sans tenir compte de nos remarques, et du travail fait en particulier par MGU, je crains que ce soit sans espoir.
 

BESQUEUT

Senior Member
A 400 Hz, la période fait 2500µs avec une impulsion de 50µs, je pensais qu'il y avait le temps.
Mais bon, si le test ne fonctionne pas, s'est qu'il y a une erreur quelque part
Je vais me répéter, mais sommes-nous certains que le signal réel est constitué d'impulsions de 50µs ?
En effet, comme ce modèle de Picaxe ne gère pas l'interruption hardware, il ne fait que regarder l'état du port de temps en temps. Donc avec un créneau de 50 µs toutes les 2500 µs, il a une chance sur 50 de détecter l'impulsion. Ce serait bien différent si le signal était carré ou à peu près !
Comme indiqué plus haut également, il me semble que le plus performant serait de se passer du setint ou de le réserver à la détection du relevage : une simple boucle sans fin peut assurer le comptage et la détection du relevage.
Si la détection des impulsions de 50µs est une obligation, je ne vois rien d'autre qu'un circuit externe à 0,60 € pour préparer le travail de façon très fiable en amont du Picaxe. Accessoirement, ce circuit constituera un bon fusible en cas de problème électrique (pas impossible sur un tracteur en service...)
 

JRTEC

Senior Member
rebonjour

je me suis mal exprimé , veuillez m en excuser

oui j aimerai de l aide pour developper un programme le but est de comprend ce que je fait et comment marche le principe

effectivement si le processeur n est pas capable de gerer un info qui rentre a un niveau de 400mhz tout s ecroule !! lol

mais alors pouvez m eclaicir sur un point s il vous plait les 32MHZ dont vous faites allusion en #11 correspondent a quoi ? ce n est un frequence interne de calcul ?

#8 : si la sulution est d actualiser l affichage du compteur de surface a ce que je comprend cla me va tres bien , cette info n est qu a titre indication a titre perso

" Peut être aurait-il fallut acheter vos composants, en fonction du problème à résoudre et de votre niveau en programmation, plutôt que l'inverse...
" : comme je le dis en #1 je suis un novice cependant cela ne m empeche pas d essayer de comprendre , perso je suis plus dans la mecanqiue pur, mais le picaxe me semblai interessant vis a vis de sa simplicite de programmation

"D'autre part, pour votre calcul de surface , la surface en m2 est égale au nombre d'impulsions divisé par 130 et multiplié par 3 "
la division par 130 bien c est le nombre d impulsion par m parcouru la multiplication par 3 , c est la largeur de l outil
 

BESQUEUT

Senior Member
les 32MHZ dont vous faites allusion en #11 correspondent a quoi ?
C'est la fréquence à laquelle tourne le PIC. Le PICAXE est un interpréteur : il lui faut des centaines ou des milliers d'instructions PIC pour interpréter une instruction PICAXE ==> d'où la différence colossale de vitesse... Ceci n'empêche pas de réaliser certains traitements à la vitesse du PIC, mais si et seulement si l'instruction PICAXE ad-hoc existe. Par exemple, une commande I2C va générer l'appel et des sous-routines en langage PIC pour gérer le protocole I2C.
Il faut comprendre aussi qu'entre chaque instruction PICAXE, le PIC réalise quelques opérations de base, comme par exemple vérifier l'état des ports si on lui a paramétré un setint...
le seul cas où le PIC est vraiment tranquille pour faire tourner de l'assembleur, c'est quand il est en pause au niveau Picaxe... C'est pourquoi, il y a pas mal d'exemples de démo qui incluent des pauses "parce que ça marche mieux comme ça... évidement". A mon sens, si ça peut avoir un intérêt pédagogique, c'est rarement utile dans le monde réel : un programme en pause ne fait rien par définition. Autant le mettre dans une boucle sans fin et gérer soi même ce qu'il y a à faire.
 

BESQUEUT

Senior Member
si le processeur n est pas capable de gerer un info qui rentre a un niveau de 400mhz tout s ecroule
Euhhhh ??? On parle bien de 400 hz ?
A mon avis c'est possible avec un picaxe à 32 Mhz pour peu que le signal soit à peu près carré ou pré-traité et qu'il ne fasse à peu près que ça.
 

PieM

Senior Member
Si, le picaxe en 32 MHz est capable de compter à une fréquence de 200 kHz soit 500 fois plus rapidement que votre besoin. le problème est qu'il ne peut faire que ça à un instant donné, compte tenu du Picaxe choisi. D'autre µC multi-coeur sont capables de faire plusieurs actions simultanées, pas le Picaxe.

Le problème ici n'est donc pas un problème de Picaxe mais de programme .

C'est pour cela que je parlais d'une autre approche qui consiste à faire un programme qui ne fait que compter les impulsions tout pendant qu'on est en phase de semage.
Une simple instruction count dans une variable word permet d'engranger plus de 65000 impulsions soit plus de 500m, sans faire de calcul !
Ce n'est que lorsque le semoir est relevé, que l'on incrémente le nombre de passe, que l'on calcule la surface et que l'on affiche le tout, qu'on allume les diodes que l'on veut etc ...

Concernant votre calcul de surface, je faisais référence à votre programme dans lequel vous avez une équation où vous multipliez des impulsions par des mètres: b1=b1+((1*130)*3/10000)
en outre les parenthèses ne sont pas autorisées.

Concernant votre schéma, aux remarques déjà faites j'ajouterai:

L'entrée info relevage n'est pas correcte: le transistor monté de cette façon ne permet de piloter une entrée correctement.
L'émetteur du transistor doit être à la masse, et le collecteur relié à +5V par une R de 1k par exemple. L'idéal dans l'interfaçage de tension d'origines différentes est d'utiliser un opto-coupleur.

L'entrée de comptage n'est pas correcte non plus. Si les impulsions sont une mise à la masse (?), il faut polariser l'entrée du picaxe par une résistance dite pull up entre +5V et l'entrée.
 
Last edited:

PieM

Senior Member
Je confirme ce que j'avais écrit et effacé ...

L'entrée info relevage peut être reliée directement au Picaxe via une résistance de 330 Ohms par exemple en limitation. Avec éventuellement une zéner de protection, bien que ce ne soit pas une garantie totale...
Explication: l'entrée Picaxe du type TTL considère un niveau haut à partir de 2.0V si l'alim est > 4.5V.
 

MGU

Senior Member
Bonjour,

et merci a ceux qui s’intéressent à "notre" problème;

JRTEC voulait à l'origine un système de gestion du jalonnage: comptage des passe et positionnement du moteur de trémie;

Tout cela fonctionne avec le programme.

Le calcul de la surface semée a monté la barre un peu plus haut. Le coeur du programme est le comptage de ces impulsions dont on ne connait rien sinon la fréquence max de 400Hz.
Je suis d'accord avec le #8. Si la gestion de l'affichage est trop lourde, elle peut être différée dans les phases de non comptage.
Il faut tout de même pendant le semage surveiller la levée du semoir et les poussoirs "Arret" et "+1".

Actuellement, je teste la possibilité de compter de façon continue par une interruption des impulsions à 400Hz, (voir si il faut calibrer leur durée etc).
Autre solution en effet, une fonction count en boucle arrêtée par un interruption.

A suivre

MM
 

JRTEC

Senior Member
C'est pour cela que je parlais d'une autre approche qui consiste à faire un programme qui ne fait que compter les impulsions tout pendant qu'on est en phase de semage.
Une simple instruction count dans une variable word permet d'engranger plus de 65000 impulsions soit plus de 500m, sans faire de calcul !
Ce n'est que lorsque le semoir est relevé, que l'on incrémente le nombre de passe, que l'on calcule la surface et que l'on affiche le tout, qu'on allume les diodes que l'on veut etc ...

Concernant votre calcul de surface, je faisais référence à votre programme dans lequel vous avez une équation où vous multipliez des impulsions par des mètres: b1=b1+((1*130)*3/10000)
en outre les parenthèses ne sont pas autorisées.
je suis tout a fait d accord d ailleur MGU m avais deja fait cette remarque et je vous en remercie c est pour cela que en #14 j avais propose cette formulation

" B0 = impulsion
B1 surface en m²/ 3
Mettre b1 = 0 et b2 = 0
Compter impul b0
Si b1 = 130 -> ajouter 1 a b2 et remettre b0=0
Sinon recomptez b0
Si b3 =100 (300M²) -> ajouter 3 a w0 (are) remettre b1=0

si w0 est une variable qui peualler a 65 535
cela me va bien car au niveua de la surface maxi 9 999 ares je l aurai remis a zero avant"

w0 etant une variable jusqu a 65535 si je ne dis pas de betisse
et d ailleur je ne suis pas au CM² pres , si il faut attendre que b1 soit a 130 ce n est pas un probleme
 

JRTEC

Senior Member
Il faut tout de même pendant le semage surveiller la levée du semoir et les poussoirs "Arret" et "+1".
Merci a Mr MM qui me suit depuis le debut !
afin d aleger la boucle , le +1 manu ne peut etre surveiller uniquement lors que le semoir est relevé , cette commande ne permets qu un calage correcte de la position de jalonnage et ceci ce produit rarement , exemple on fini une parcelle en passage 3, et il faudra attaquer la suivante en 1 , donc cette fonction si elle n est que active le semoir en l air , cela me va bien meme tres bien , elle evite des erreur de manipe durant l utlisation , par contre la fonction arret doit etre elle active durant le semis , mais on est pas au cm pres , si vis a vis de la formulation que j ai donne cette fonstion est introduite dans la boucle de comptage des 130 impulsion ( cequi permet de passe tout de suite sur des metres ) pas de probleme

merci pour votre interet

j ai deja d autre idée d application pour picaxe
 

JRTEC

Senior Member
consernat les signaux , je ne retrouve plus dans post c etait mais une personne me disai qui fallait qu il soit un minimum traite

pour info ces signaux sont donnes par des centrales electroniques donc je presume que le signal est propre

pour info , sur le tracteur ou je veux utilise cela , ( et je peux dire que je le connais bien par le cote professionnele que j exerce ( pas agruiculteur , l autre professio que j ai ) la cedntrale de transmission qui surveille da transmission a variation continu , recupere des information de l ordre de 5500 implusions par M ( on est une lecture d un pignon de boite de vitesse bien a avant reduction finale ) et cette centrale retranscris ce siganal a la prise donc les information corresponde a une norme : ISO 11786

j ai assez recherche sur le net cette norme mais sans resultat , j espere pouvoir recupere un descriptif clair
 

PieM

Senior Member
Je pense donc que la solution d'un programme principal, avec une fonction count xx, 65535 ..... devrait être une solution. Toutefois, dans ce cas précis, il n'y a pas intérêt à travailler avec une fréquence de 32 MHz, le comptage devant se faire pendant le plus longtemps possible avant rebouclage ( qui risque de faire perdre des pulses).
Quant au signaux levée du semoir et les poussoirs "Arret" et "+1"., les mettre sur interruption.

Il est vrai que connaitre la durée de l'impulsion de l'odomètre serait un plus ...

Dans le doute concernant les signaux externes , ne pas hésiter à passer par des opto-coupleurs. solution simple et sûre !

@ MGU :

Actuellement, je teste la possibilité de compter de façon continue par une interruption des impulsions à 400Hz, (voir si il faut calibrer leur durée etc).
un retour d'expérience là dessus serait très intéressant .. Merci :)
 

PieM

Senior Member
Voici ce que dit la norme ISO 11786

5 Data signals
5.1 Signal characteristics
The signal characteristics for true and theoretical ground speed, PTO rotational speed and linkage are
so specified as to be compatible with CMOS logic as defined in JEDEC1), powered from the tractor
battery with a minimum voltage of 10 V.
5.2 True ground speed and theoretical ground speed
5.2.1 The signal shall be a square wave with a duty
cycle between 20 % and 80 %, and with rise and fall
times less than 1 ms.
5.2.2 The signal level of the square wave “mark” (high) shall be greater than 6,3 V and the “space”
(low) shall be less than 1,5 V
. The output source impedance at “space” (low) shall be 100 7 ± 10 7.
The load impedance shall be greater than 3 k7.
5.2.3 At speeds greater than 1 km/h, the speed shall be represented by 130 pulses/m ± 5 %
(130 Hz/m/s ± 5 %) in a standard calibration test.

5.3 PTO rotational speed
5.3.1 The signal shall be a square wave with a duty cycle between 20 % and 80 %, and with rise and fall
times less than 1 ms.
5.3.2 The signal level of the square wave “mark” (high) shall be greater than 6,3 V and the “space”
(low) shall be less than 1,5 V. The output source at “space” (low) shall be 100 7 ± 10 7. The load
impedance shall be greater than 3 k7.
5.3.3 At rotational speeds greater than 2 r/s, the speed shall be represented by 6 pulses per
revolution (6 Hz/r/s).
5.4 In-work/out-of-work
The in-work signal shall be represented by a voltage less than 1,5 V and the out-of-work signal by a
voltage greater than 6,3 V. The output source impedance at the in-work position shall
be 100 7 ± 10 7. The load impedance shall be greater than 3 k7.
NOTE 3 Leading and trailing edges of the linkage up/down signal may be corrupted by switch bounce.
5.5 Linkage position
The signal voltage varies linearly corresponding to the height of the linkage position. The signal shall
be 0 V representing the lowest position and 10 V representing the highest position. The load
impedance shall be greater than 3 k7.
6 Power supply
Power shall be supplied to pin 6 from the tractor battery via the ignition switch.
The maximum current drawn from pin 6 shall be 5 A.
The supply shall be fused at 10 A.


Je persiste à penser que la mise en place d'opto-coupleurs pour les infos externes ne serait pas superflue !
 

JRTEC

Senior Member
Voici ce que dit la norme ISO 11786

5 Data signals
5.1 Signal characteristics
The signal characteristics for true and theoretical ground speed, PTO rotational speed and linkage are
so specified as to be compatible with CMOS logic as defined in JEDEC1), powered from the tractor
battery with a minimum voltage of 10 V.
5.2 True ground speed and theoretical ground speed
5.2.1 The signal shall be a square wave with a duty
cycle between 20 % and 80 %, and with rise and fall
times less than 1 ms.
5.2.2 The signal level of the square wave “mark” (high) shall be greater than 6,3 V and the “space”
(low) shall be less than 1,5 V
. The output source impedance at “space” (low) shall be 100 7 ± 10 7.
The load impedance shall be greater than 3 k7.
5.2.3 At speeds greater than 1 km/h, the speed shall be represented by 130 pulses/m ± 5 %
(130 Hz/m/s ± 5 %) in a standard calibration test.

5.3 PTO rotational speed
5.3.1 The signal shall be a square wave with a duty cycle between 20 % and 80 %, and with rise and fall
times less than 1 ms.
5.3.2 The signal level of the square wave “mark” (high) shall be greater than 6,3 V and the “space”
(low) shall be less than 1,5 V. The output source at “space” (low) shall be 100 7 ± 10 7. The load
impedance shall be greater than 3 k7.
5.3.3 At rotational speeds greater than 2 r/s, the speed shall be represented by 6 pulses per
revolution (6 Hz/r/s).
5.4 In-work/out-of-work
The in-work signal shall be represented by a voltage less than 1,5 V and the out-of-work signal by a
voltage greater than 6,3 V. The output source impedance at the in-work position shall
be 100 7 ± 10 7. The load impedance shall be greater than 3 k7.
NOTE 3 Leading and trailing edges of the linkage up/down signal may be corrupted by switch bounce.
5.5 Linkage position
The signal voltage varies linearly corresponding to the height of the linkage position. The signal shall
be 0 V representing the lowest position and 10 V representing the highest position. The load
impedance shall be greater than 3 k7.
6 Power supply
Power shall be supplied to pin 6 from the tractor battery via the ignition switch.
The maximum current drawn from pin 6 shall be 5 A.
The supply shall be fused at 10 A.


Je persiste à penser que la mise en place d'opto-coupleurs pour les infos externes ne serait pas superflue !
La vous m impressionner vous avez trouvez cela ?
 

JRTEC

Senior Member
pourtant une remarque si je peux , au niveau du 5.4 j ai personnellement relevé 0v entre la borne 4 et la masse bras en bas et 3v bras en haut , mesure a l aide d un simple voltemetre , mais sur un autre tracteur equipe de la meme prise
 

PieM

Senior Member
pourtant une remarque si je peux , au niveau du 5.4 j ai personnellement relevé 0v entre la borne 4 et la masse bras en bas et 3v bras en haut , mesure a l aide d un simple voltemetre , mais sur un autre tracteur equipe de la meme prise
Oui, c'est en effet curieux ... car 3V n'est pas toujours reconnu comme un niveau haut en électronique.
C'est pour cela que dans le doute , sachant que la norme prévoit des niveaux pouvant être plus haut, il y a intérêt à sécuriser les liaisons entrée picaxe.

Concernant la norme, voir :View attachment BS ISO 11786-1995.pdf je ne sais plus sur quel site je l'ai trouvé ..:rolleyes:
 

MGU

Senior Member
Bonsoir,

A là, chapeau!

J'avais cherché cette norme, sans rien trouver.

Le rapport cyclique n'est pas vraiment défini (entre 20 et 80%). Je laisserai peut être le monostable pour éviter les surprises.

Pour l'interface, j'avais prévu un simple transistor pour mettre les signaux au niveau de l'alim.

Pour les tests interruptions, manque de temps, mais aux premiers tests, avec une interrupt minimale (inc + setint), j'en récupère une sur deux environ quelconque soit la fréquence entre 100 et 400 Hz. Pourquoi?

Je crois que le count + interruptions sera plus sûr. Même avec un rafraîchissement de l'affichage à chaque boucle il ne devrait pas y avoir beaucoup de pertes qui de toutes façons compensent les erreurs dues au patinage (0 à 30%) .

MM
 

BESQUEUT

Senior Member
Le rapport cyclique n'est pas vraiment défini (entre 20 et 80%). Je laisserai peut être le monostable pour éviter les surprises.
Pour les tests interruptions, manque de temps, mais aux premiers tests, avec une interrupt minimale (inc + setint), j'en récupère une sur deux environ quelconque soit la fréquence entre 100 et 400 Hz. Pourquoi?
Voir #4, #6, #12, #19, #22
Vous ne semblez toujours pas convaincu que les impulsions de 50µs sont trop courtes (rapport cyclique de 1/50 alors qu'au pire vous indiquez un rapport cyclique de 1/4) et que l'approche n'est pas optimale. Et pour faire bonne mesure, vous persistez à ajouter un monostable "pour éviter les surprises" qui ne va que proroger le problème de la configuration de test au système réel. Si vous tenez à "mettre en forme" le signal, utilisez un compteur externe comme indiqué plus haut...

Pour l'interface, j'avais prévu un simple transistor pour mettre les signaux au niveau de l'alim
Nous ne doutons pas de la qualité de l'instrument générateur d'impulsions. C'est après (connectique et câbles de liaison) que ça peut se compliquer, surtout sur un engin soumis aux vibrations, à l'humidité et utilisant des tensions de 12 ou 24V sous une forte intensité... C'est pourquoi l'utilisation d'un opto-coupleur est recommandée.
A bon entendeur salut : ceci est mon dernier post sur le sujet.
 

PieM

Senior Member
Bonjour,

Le rapport cyclique n'est pas vraiment défini (entre 20 et 80%). Je laisserai peut être le monostable pour éviter les surprises.

Pour les tests interruptions, manque de temps, mais aux premiers tests, avec une interrupt minimale (inc + setint), j'en récupère une sur deux environ quelconque soit la fréquence entre 100 et 400 Hz. Pourquoi?

Je crois que le count + interruptions sera plus sûr. Même avec un rafraîchissement de l'affichage à chaque boucle il ne devrait pas y avoir beaucoup de pertes qui de toutes façons compensent les erreurs dues au patinage (0 à 30%) .

MM
Effectivement ce type d' interruption semble pris en défaut dès que le timing est un peu serré ! Mais je pense que l'analyse risque d'être difficile à faire à moins qu'un Technical nous éclaire ...

Si on utilise la fonction count, une mise en forme avec un monostable n'est sans doute pas nécessaire, car même 20% de la période est supérieur au minimun accepté par un count avec un Picaxe à 4 MHz.

Je pensais aussi à une fonction qui manque dans ce projet: c'est la mise en EEPROM de la valeur du comptage en cours et du N° de passe.
ça permet de reprendre le travail après la pause casse croute par exemple.
Il est même possible de déclencher automatiquement cette mémorisation sur coupure du contact du tracteur.
De la même façon, un BP de remise à zéro du compteur surface serait sans doute à prévoir.

Même avec un rafraîchissement de l'affichage à chaque boucle il ne devrait pas y avoir beaucoup de pertes
De toute façon, les calculs et l'affichage se faisant quand le semoir est relevé, il n'y a aucune perte car on est plus en comptage sur l'odomètre.

Ici, le jalonnage est fait sur un cycle de 4 aller retour, avec traces sur les passages 2 et 3. (#3)
Pour bien préciser , il s'agit bien :
passe 1 - un aller semoir complet
passe 2 - un retour semoir réglé
passe 3 - un aller semoir réglé
passe 4 - un retour semoir complet
soit un cycle de 12 m de large ?

petite question: le fin de course relevage est un contact sur la position haute ou sur la position basse ?
 

JRTEC

Senior Member
oui oui c est une cycle de 12 m ( pour pulverisateur de 12 m )

il n y a pas de fin de course sur les bras c est l unité electrique qui genere le signal ON / OFF , en fonction des differents reglage de relevage ( course maxi , position actuelle des bras )j ai la plan electrique du vehicule mais je ne pense pas que cela vous aide cependant si vous le voulais c est avec plaisir
 
Top