jeudi 13 mars 2014

Vers le contrôle en boucle fermé

Aujourd'hui j'ai essayé de fusionner le code du capteur de barre, avec le code de la commande des moteurs, l'objectif étant d'obtenir un contrôle en boucle fermé de la barre (angle et bordé-choqué).

Malheureusement, je suis tombé sur un problème d'incompatibilité d'une librairie utilisée pour l'encodeur linéaire (pinchangeint) et de la librairie utilisée pour communiquer avec la carte de contrôle des moteurs (softwareSerial)
http://forum.arduino.cc/index.php?topic=91264.5;wap2

Comme je disposais déjà de 2 arduinos, j'ai essayé de contourner le problème en utilisant les 2 arduinos et en rajoutant une communication de l'un à l'autre. Pour cela, le plus simple me paraissait de sortir une valeur analogique sur l'un et de venir la lire sur l'autre. Malheureusement cela me donnait 0 ou 5V de manière alternative, mais pas la valeur attendue. Cela est peut-être dû à la modulation pwm et à l'absence de filtre passe-bas. 

Du coup, j'ai utilisé le protocôle I2C qui était présenté comme une solution standard pour discuter entre plusieurs arduinos. Je me suis basé sur :
http://www.instructables.com/id/I2C-between-Arduinos/step3/Programming/
Les codes de ce tutoriel ne fonctionnent cependant pas, mais les exemples d'utilisation existent de base dans les exemples arduino.

J'ai utilisé des résistances de pull up de 10kOhm.

Cela fonctionne mais demande d'avoir deux arduinos.

J'ai continué les recherches ce soir, et j'ai trouvé une solution logicielle au problème de compatibilité des librairies.
http://code.google.com/p/arduino-pinchangeint/wiki/Bugs

Aucun commentaire:

Enregistrer un commentaire