Aller au contenu


hmnrobots

Inscrit(e) (le) 01 juin 2009
Déconnecté Dernière activité déc. 03 2014 08:04
-----

#53727 Asservissement et temps de réaction du programme...

Posté par hmnrobots - 25 février 2013 - 11:00

Bonjour, après pas mal de creusage de tête je viens vous donner ma langue au chat!

J'ai un problème! Lol

Je suis toujours entrain de préparer mon robot tondeuse sous arduino. La partie déplacement est presque fini et paraît être assez stable!
Je suis entrain de préparer la partie coupe, pour cela je vais utiliser 3 disques de coupe propulsé par 3 moteur brushless.

Ma première volonté est d'asservir chaque moteur afin que le moteur regul sa vitesse en fonction du bourage de l'herbe et qu'il soit capable de relancer le moteur en cas de calage du brushless. Pour cela il faut compter le nombre de tour minutes etc...

Mais je problème est là: si je créer un objet pour compter la vitesse moteur pendant, ex: 500ms, le programme ne va faire que cela pendant ce temps là, et si un obstacle surgit devant, il ne le verra pas puisse qu'il ne vérifie pas les sonars, il compte la vitesse du brushless! Et cela X3, car 3 moteurs! J'ai peur que le robot n'ai trop de temps de latence!

Deuxième volonté si je n'arrive pas à faire la première! : pour éviter de compter le nombre de tour pour en déduire une vitesse, il faudrait juste savoir si le moteur tourne, afin de le relancer si calage. J'ai bien pensé à un capteur à effet hall, mais est ce que le champ magnétique d'un moteur varie significativement quand il tourne pour être détecté par le capteur? La solution du capteur de courant est trop cher! Car 3 moteurs à équiper!

Comment faire en sorte que mon programme ne soit pas ralentit par des delay pour qu'il est le temps de compter!?

Merci d'avance pour toutes vos idées!

;-)

Sur le même projet mais toujours en train d'essayer de l'améliorer;
Pour ma part je n'utilise pas l'Arduino mais un PIC avec un RTOS (noyau temps réel de CCS sommaire et non préemptif) et aussi et surtout les interruptions : lorsqu'un obstacle arrive il faut le prendre en compte immédiatement.Je ne sais pas si la gestion des interruptions est dispo sous arduino.
Pour le moteur de coupe, il n'est toujours pas régulé en vitesse, je ne fais (encore) que mesurer le courant absorbé afin de détecter un bourrage.Je pense ajouter bientôt un asservissement de vitesse mais qui sera confié à un autre petit PIC (629) qui recevra ses ordres par I2C; Dans mon cas l'unité centrale ne peut pas tout faire.
Souvent la solution pour les asservissement de vitesse c'est d'envoyer le capteur de vitesse dans une entrée compteur, lequel compteur sera géré par interruption au dépassement ou lu à intervalles réguliers.Traiter ne serait ce qu'une interruption par tours à 3000 RPM monopoliserait beaucoup l'UC.
Pour conclure je dirais recherche de gestion et utilisation des compteurs sous arduino et gestion des interruptions à moins qu'un RTOS préemptif n'existe (lequel fonctionnera d'ailleurs par interruptions).

je viens de voir que la gestion des interruptions est possible sous arduino: par ex


La solution du capteur de courant est trop cher! Car 3 moteurs à équiper!

le capteur c'est une résistance de 0.1ohm ,1 switch 4066 pour choisir la voie et 1 aop ad626


#51800 Générateur de fonction

Posté par hmnrobots - 29 novembre 2012 - 07:53

MAIS ARRÊTE DE ME CRIER DESSUS !
Je posterais le montage quand ça sera moins le chantier et quand ça marchera.

Mais le principe, je l'ai déjà énoncé plus haut.
J'ai un trigger de Schmitt que j'ai refait à l'aide de transistor.
Pour la partie intégration, j'ai voulu remplacer l'AOP intégrateur par un circuit à transistor qui charge et décharge une capa à courant constant.(afin de gagner en fréquence)
Le générateur de courant constant est commandé grâce à une tension

DESOLE JE NE CRIE PAS MAIS JE N AI QUE DES MAJUSCULES ICI
CELA DIT BRAVO POUR CE MONTAGE