« Reparation CharlyRobot » : différence entre les versions
(51 versions intermédiaires par 4 utilisateurs non affichées) | |||
Ligne 1 : | Ligne 1 : | ||
== Les Montages Electroniques == | |||
===Puissance=== | |||
[[File:CharlyPuiss.jpg|400px]] | |||
===Alimentation=== | |||
[[File:CharlyPuiss.jpg|400px]] | |||
===Panneau de contrôle=== | |||
[[File:CharlyPanno.jpg|400px]] | |||
===Breakout de commande=== | |||
[[File:CharlyBreak.jpg|400px]] | |||
===BeagleBone=== | |||
[[File:CharlyBeagle.jpg|400px]] | |||
==Moteurs== | ==Moteurs== | ||
grandeurs nécessaires pour la configuration de LinuxCNC : | grandeurs nécessaires pour la configuration de LinuxCNC : | ||
Ligne 4 : | Ligne 16 : | ||
{| class="wikitable" | {| class="wikitable" | ||
|- | |- | ||
! voltage !! 65 !! 48 !! 24 !!12 | ! voltage !! 65 !! 48 !! 24 !! 12 | ||
|- | |- | ||
| tours/min || 3000 || 2215 || 1108 || 554 | | tours/min || 3000 || 2215 || 1108 || 554 | ||
Ligne 12 : | Ligne 24 : | ||
| '''MAX_VELOCITY''' mm/s*|| '''250''' || '''185''' || '''92''' || '''46''' | | '''MAX_VELOCITY''' mm/s*|| '''250''' || '''185''' || '''92''' || '''46''' | ||
|- | |- | ||
|'''MAX_ACCELERATION'''mm/s²**|| '''3750''' || '''2769''' || '''1385''' || ''' | | '''MAX_VELOCITY''' mm/min*|| '''15000''' || '''11100''' || '''5550''' || '''2775''' | ||
|- | |||
|'''MAX_ACCELERATION'''mm/s²**|| '''3750''' || '''2769''' || '''1385''' || '''6925''' | |||
|- | |- | ||
|'''BASE_THREAD_PERIOD'''ns***|| '''20 000''' || '''27 000''' || '''55 000''' || '''110 000''' | |'''BASE_THREAD_PERIOD'''ns***|| '''20 000''' || '''27 000''' || '''55 000''' || '''110 000''' | ||
|} | |} | ||
<nowiki>*</nowiki>x et y vis pas de 5mm et Z pas de 2,5mm | <nowiki>*</nowiki>x et y vis au pas de 5mm et Z au pas de 2,5mm | ||
<nowiki>**</nowiki> Accélération ??? 15 "fois" la vitesse ??? | <nowiki>**</nowiki> Accélération ??? 15 "fois" la vitesse ??? : a determiner empiriquement | ||
<nowiki>***</nowiki> Basé sur la période d'une impulsion (quadrature donc /4 | <nowiki>***</nowiki> Basé sur la période d'une impulsion (quadrature donc /4 ) | ||
Encodeur 1000 imp/tr(en quadrature donc *4) soit '''800''' imp/mm ('''INPUT_SCALE''') pour X et Y et '''1600''' imp/mm ('''INPUT_SCALE''') pour Z | Encodeur 1000 imp/tr(en quadrature donc *4) soit '''800''' imp/mm ('''INPUT_SCALE''') pour X et Y et '''1600''' imp/mm ('''INPUT_SCALE''') pour Z | ||
Ligne 30 : | Ligne 44 : | ||
Dimension de la zone de travail 515*515mm '''MIN_LIMIT'''&'''MAX_LIMIT''' | Dimension de la zone de travail 515*515mm '''MIN_LIMIT'''&'''MAX_LIMIT''' | ||
==IO== | |||
== LinuxCNC sur BeagleBone == | |||
===Intro=== | |||
Après pas mal de recherche, le portage est deja fait pour cette carte. Un gros travail a été fait pour décorrélé linuxcnc de la couche temps réel et de la distrib. On repart donc logiquement du travail effectué [http://blog.machinekit.io/ ici (blog)] et [https://groups.google.com/forum/#!forum/machinekit google group ]. | |||
Comme nous utilisons des servo-moteur, nous allons devoir recompiler le noyau pour qu'il prenne en compte l'EQEP (fonction présente sur le chip TI dédiée à la gestion des encoder). Encore une fois beaucoup de travail déjà réalisé [https://github.com/Teknoman117/beaglebot/tree/master/encoders ici] | |||
il en sera de même pour l'ehrpwm. | |||
on pourra peut-être implémenter aussi la gestion PID dans les PRU dispos sur la carte. | |||
<s>Il serait aussi intéressant de voir comment utiliser le port HDMI tout en désactivant les PIN IO LCD (nécessaire pour gerer les 3 cannaux EQEP.</s> : impossible | |||
Pour finir, la fabrication d'un pupitre de contrôle (deplacement des axes, un potar pour les Jog et un bouton d'arret d'urgence), permettra de faciliter l'utilisation de la machine... | |||
allez y a plus qu'à | |||
===Compilation du noyau pour supporté xenomai et eqep=== | |||
*creation d'un rep de travail | |||
'''mkdir bbb''' | |||
'''cd bbb''' | |||
* téléchargement du package Beaglbone* | |||
'''git clone https://github.com/RobertCNelson/linux-dev''' | |||
* télechargement du package temps reel (xenomai ici, mais rtai marcherait aussi((en théorie>> non testé))) | |||
'''wget http://download.gna.org/xenomai/stable/xenomai-2.6.3.tar.bz2''' | |||
'''tar xvjf xenomai-2.6.3.tar.bz2''' | |||
*téléchargement des drivers eqep : | |||
[[:File:beaglebot-master.zip]] ou sur https://github.com/Teknoman117/beaglebot/ | |||
* compilation du noyau | |||
'''cd linux-dev''' | |||
'''git checkout origin/am33x-v3.8 -b am33x-v3.8''' | |||
'''./build_kernel.sh''' >>> s'il y a des pb , installer les packages manquants ( par exemple avec apt-get). Il est peuetre necessaire d'installer un cross compilateur/ou si vous voulez en utiliser un specifique : nano system.sh et completer la ligne CC= avec le chemin vers le CrossCompilateur | |||
Ici, le script télécharge les sources, (c'est long !! >> si vous les avec déjà qqpart il faut l'indiquer dans le fichier system.sh)). Ensuite le menu de configuration du noyau apparait. normalement, il n'y a pas de partie temps réel. Je pensais aussi que eqep n’était pas dispo, mais si (devices driver -> misc il est bien présent). | |||
* installation du temps reel | |||
'''cd KERNEL/''' | |||
'''patch -p1 < ../../xenomai-2.6.3/ksrc/arch/arm/patches/beaglebone/ipipe-core-3.8.13-beaglebone-pre.patch''' | |||
'''patch -p1 < ../../xenomai-2.6.3/ksrc/arch/arm/patches/ipipe-core-3.8.13-arm-3.patch''' | |||
'''patch -p1 < ../../xenomai-2.6.3/ksrc/arch/arm/patches/beaglebone/ipipe-core-3.8.13-beaglebone-post.patch''' | |||
'''cd ../../xenomai-2.6.3/scripts/''' | |||
'''./prepare-kernel.sh --arch=arm --linux=../../linux-dev/KERNEL/kernel/''' | |||
'''cd ../../linux-dev/''' | |||
'''./tool/rebuild.sh'''>>> Dans le menu configuration l'onglet temps réel apparaît. | |||
* remplacement du noyau de l'image initiale machinekit : | |||
brancher la carte µsd contenant l'image machinekit, via un adaptater usb (commande dmesg pour obtenir le nom ((sdd par exemple) | |||
dans le fichier system.sh : decommenter ZRELADDR=0x80008000 et indiquer le noom de la carte dans MMC= (par exemple :/dev/sdd)puis execution du script | |||
'''./tool/install_kernel.sh''' | |||
*si besoin | |||
'''git config --global user.email "you@example.com"''' | |||
'''git config --global http.proxy http://x.x.x.x:xxx''' | |||
si le pb de résolution de nom persiste : modifier dans le script les @ git:// en http://(ou https://) | |||
=== utilisation des canaux eqep (gestion des encoder)=== | |||
Ca fonctionne. | |||
les instructions sont [https://github.com/Teknoman117/beaglebot/encoder ici] | |||
=== utilisation des canaux pwm === | |||
ça fonctionne aussi | |||
'''attention''' pour pouvoir modifier la frequence lorsque l'on utilise les 2 canaux d'un paire, il faut recompiler en applicant ce [https://randomlinuxhacks.wordpress.com/2014/09/16/changing-pwm-period-on-beaglebone-black/ patch]. Puis, lors de l'initialisation configurer la période souhaitée, puis activer les cannaux. | |||
Lors de la compilation du noyau j'avais défini les driver pwm comme module, du coup je n'ai pas eu a recompiler le noyaux, j'ai simplement compiler le nouveau driver puis remplacé celui présent dans /lib/modules/3.8xxx/kerner/drivers/pwm. | |||
le plus simple : http://www.blaess.fr/christophe/2013/07/06/beaglebone-black-et-pwm/ | |||
base : https://github.com/SaadAhmad/beaglebone-black-cpp-PWM | |||
PwM et GPIO : http://www.itk.ntnu.no/smrt/rtdm.php | |||
=== écriture des modules linuxcnc pour eqep et pwm=== | |||
pour ce faire, l’écriture de driver temps réel a été faite (drivers RTDM pour xenomai). Ceux-ci permettent de lire les compteurs eqep, la fréquence des canaux pwm et d’écrire la période idle du signal pwm. | |||
toute la partie initialisation des fonctions eqep et pwm est faite grâce aux drivers linux classic. CF ci-dessus. | |||
les sources sont sur le [https://github.com/fablab-lannion/BBB-linuxcnc-charly github fu fablab] | |||
lien utile : http://linuxcnc.org/docs/html/hal/comp.html | |||
=== spec du pupitre === | |||
à compléter | |||
entrées BBB analogiques : | |||
*1 potar pour le jog | |||
*1 potar pour la vitesse d'execution | |||
* 3 entrées pour 2 [http://www.gotronic.fr/art-joystick-analogique-4-directions-19063.htm joystick], 1 pour X et Y l'autre pour Z) | |||
entrées BBB numeriques : | |||
*1 inter home | |||
*1 inter compensation outils Z | |||
*BP aret urgence | |||
=== réalisation du pupitre === | |||
la gestion de joystick fonctionne. | |||
la gestion du type de jog ( continue/ pas de 0,01/0,05 ....)fonctionne. | |||
la gestion de la vitesse de fonctionnement ne fonctionne pas correctement, la vitesse est bien modifiée, mais la position initiale du potar influe sur les valeurs... à creuser. | |||
il faut faire un pupitre plus fonctionnelle. | |||
*BBB | |||
line interessant : | |||
*http://www.blaess.fr/christophe/2013/05/25/entrees-analogiques-du-beagle-bone-black/ | |||
*http://beaglebone.cameon.net/home/reading-the-analog-inputs-adc | |||
*http://wiki.linuxcnc.org/cgi-bin/wiki.pl?CoordinateSystems | |||
*http://gnipsel.com/linuxcnc/gui/gui06f.html | |||
==IO et linuxcnc sur PC '''(obsolet)'''== | |||
Linuxcnc permet l'utilisation des pins du port // et série pour transmettre ou recevoir des informations. | Linuxcnc permet l'utilisation des pins du port // et série pour transmettre ou recevoir des informations. | ||
Ligne 40 : | Ligne 175 : | ||
:*4 in et 3 out (n°3,4,7) | :*4 in et 3 out (n°3,4,7) | ||
===besoins=== | ===besoins'''(obsolet)'''=== | ||
3 moteurs avec pour chaque moteur 3 signaux de commande (up/down/enable) et à minima 3 signaux de contrôle (encodeur a/b et fin de course fc). Pour accroitre la robustesse, il faudrait aussi utiliser les signaux de controle abar et bbar, voir z et zbar. | 3 moteurs avec pour chaque moteur 3 signaux de commande (up/down/enable) et à minima 3 signaux de contrôle (encodeur a/b et fin de course fc). Pour accroitre la robustesse, il faudrait aussi utiliser les signaux de controle abar et bbar, voir z et zbar. | ||
soit 9 in et 9 out. | soit 9 in et 9 out. | ||
utilisation de 2 ports paralleles : | |||
{| class="wikitable" | {| class="wikitable" | ||
|- | |- | ||
! Port // !! 1 !! 2 !! 3 !! 4 !! 5 !! 6 !! 7 !! 8 !! 9 !! 10 !! 11 !! 12 !! 13 !! 14 !! 15 !! 16 !! 17 !! 18-25 | ! Port 1 (out) // !! 1 !! 2 !! 3 !! 4 !! 5 !! 6 !! 7 !! 8 !! 9 !! 10 !! 11 !! 12 !! 13 !! 14 !! 15 !! 16 !! 17 !! 18-25 | ||
|- | |- | ||
| signal || up X ||down X || | | signal || en X ||up X || down X || en Y || up Y || down Y || (en A) || (up A) || (down A) || - || - || - || - || en Z || - || up Z || down Z || GND | ||
|} | |} | ||
{| class="wikitable" | {| class="wikitable" | ||
|- | |- | ||
! Port | ! Port 2(in) // !! 1 !! 2 !! 3 !! 4 !! 5 !! 6 !! 7 !! 8 !! 9 !! 10 !! 11 !! 12 !! 13 !! 14 !! 15 !! 16 !! 17 !! 18-25 | ||
|- | |- | ||
| signal || | | signal || - || aX || bX || - || - || aY || bY || - || - || aZ || bZ || - || - || - || - || - || - || GND | ||
|} | |} | ||
==développement sous kicad== | ==développement sous kicad== | ||
projet [[:File: | projet [[:File:Charly2.zip]] >> split des ponts (2 cartes à faire) et de la connectique (2 port // & 3 RJ45) | ||
+ lib st [[:File:st-lib-comp.zip]] | + lib st [[:File:st-lib-comp.zip]] | ||
[[:File:back.ngc.zip]] >> pour test fraisage pcb : Pas de fraiseuse dispo donc réalisation en chimique à partir du projet Kicad ci-dessus : quelqu'un de motivé ? | |||
== Remise en route == | |||
<s>La carte pour 2 axes est réalisée.</s> | |||
<s>Le debuggage peut commencer, ainsi que la mise au point de linuxcnc</s> | |||
La charly fonctionne sur 3 axes. <s>PAr contre l'utilisation du module encoder limite fortement les vitesse de deplacement de la machine. Le PC ne supporte pas la fréquence d'interruption nécessaire pour voir tous les fronts des encodeurs, ce qui genere des erreur de jointure.</s> | |||
La solution que l'on a mis en oeuvre est l'utilisation d'un beagle bone. (cf § dedié) | |||
=== A FAIRE === | |||
<s>* sur tous les axes : RJ45 blindés à sertir sur les câbles signaux (+5V;0V,a,b,abar,bbar,fc+,fc-), j'ai la pince, mais pas les embouts.</s> | |||
* '''chassis (IPN) car les tables actuelles ne sont pas assez costaud.''' | |||
<s>* fichiers de test :</s> [[:File:logo-coube.ngc.zip]] [[:File:logoSeul.ngc.zip]] | |||
<s>* calcul avance et vitesse de rotation</s> [[:File:calcul-cnc.xls]] | |||
=== Amelioration=== | |||
* <s>utilisation abar,bbar,fc</s> | |||
* ajout d'optocoupleur entre les port // et les drivers >>>> l'utilisation des optocouleur sparkfun ne fonctionne pas (limite à 1kHz). d'autre sont en test | |||
* régulation du ventillo (PWM) des alim | |||
* sortir du 5v des alims et 3,3V [[:File:alim-sun.zip | pinout alim sun]] | |||
* realisation pcb/connecteur pour avoir un connectique sur les alim plus propre | |||
* réalisation d'un palpeur d'outil | |||
===Alimentation === | |||
utilisation de plusieurs alimentations montées en série. | |||
le 24V est dispo | |||
à voir pour du 36V et 48V. >>> implique un réajustement des paramètres PID et vitesse /acceleration sur linuxcnc | |||
=== Pb Axe Z === | |||
Le problème intermittent sur l'axe Z (Erreur suivit de jointure 2) a été résolu par la reprise du câblage de puissance du moteur (en haut de l'axe) | |||
===Moteurs=== | |||
testés avec les alims ci-dessus. Tous les moteurs sont OK. | |||
l'avancée est 2 fois plus rapide en 24V qu'en 12V.... ça parait logique ! | |||
===contrôle moteur=== | |||
<s>* achat 2 * [[:File:CD00002345.pdf | L6205]]. reçu</s> | |||
<s>* montage électronique de mise en œuvre à faire : fait pour 2 axes</s> | |||
* ajout optocouleurs (optionnel dans un premier temps ?) | |||
<s>* pour l'utilisation du port serie Linuxcnc, il faudra prévoir une adaptation des tensions. Les circuits max232 seront utilisés. >></s> on utilise finalement 2 ports // : merci David | |||
===Linuxcnc=== | |||
<s>* écriture de la conf. encours</s> | |||
<s>** ébauche faite pour la gestion de 3 axes. [[:File:CharlyRobot-servo.tar | tar]] à décompresser dans linuxcnc/configs [[:File:CharlyRobot-servo-pwgenupdown.zip|maj .hal]] : changement mode pwmgen</s> | |||
<s>** tester le port parallèle du pc pour avoir l'adresse et savoir si pin à collecteur ouvert.[[:File:parallele_check.txt | instructions]<s>] | |||
<s>** pins du port parallèle à revoir fonction du résultat (fichier .hal)</s> | |||
** .tbl à revoir fonction des (futures) fraises utilisées | |||
== cablage de la doc == | |||
{| class="wikitable" | |||
|- | |||
! Pin !! Couleur coté moteur !! Couleur coté electr !! Cable RJ45 !! Fonction | |||
|- | |||
| ?? || noir épais || || || ??? | |||
|- | |||
| masse || bleu épais || || || masse | |||
|- | |||
| 1 || rouge épais || || || +moteur | |||
|- | |||
| 2 || noir épais || || || -moteur | |||
|- | |||
| 3 || noir fin || || marron(8) || contact FC | |||
|- | |||
| 4 || Non utilisé || NA || || NA | |||
|- | |||
| 5 || noir/rouge fin || Blanc épais || Gris (1) || Masse TTL codeur + blindage | |||
|- | |||
| 6 || Non utilisé || NA || || NA | |||
|- | |||
| 7 || jaune || blanc fin || marron(8) || Contact FC | |||
|- | |||
| 8 || rouge || marron épais || blanc (2) || +5 codeur | |||
|- | |||
| 9 || Non utilisé || NA || || NA | |||
|- | |||
| 10 || noir/bleu fin || rose || jaune (5) || Codeur A_ | |||
|- | |||
| 11 || jaune/noir || vert || bleu (6) || Codeur B_ | |||
|- | |||
| 12 || bleu fin || gris || vert (3) || Codeur A | |||
|- | |||
| 13 || jaune fin || marron || orange (4) || Codeur B | |||
|- | |||
| 14 || blanc orange || jaune || violet(7) || Commun contacts FC | |||
|- | |||
|} | |||
== cablage Axe Y == | |||
{| class="wikitable" | |||
|- | |||
! Pin !! Couleur coté moteur !! Couleur coté electr !! Cable RJ45 !! Fonction | |||
|- | |||
| 13 || Jaune fin || || || Codeur B | |||
|- | |||
| 11 || Noir Jaune || || || Codeur B | |||
|- | |||
| 12 || Bleu || || || Codeur A | |||
|- | |||
| 10 || Bleu noir || || || Codeur A | |||
|- | |||
| NA || Vert || || || Codeur Z | |||
|- | |||
| NA || Vert noir || || || Codeur Z | |||
|- | |||
| 8 || Rouge fin || || || codeur Moteur | |||
|- | |||
| 5 || Rouge Noir || || || Masse codeur Moteur | |||
|- | |||
| Masse || Gros Bleu || || || Masse Terre | |||
|- | |||
| 3 || Noir moyen || || || Contact FC Y1 | |||
|- | |||
| 7 || jaune moyen || || || Contact FC Y2 | |||
|- | |||
| 14 || blanc orange moyen || || || Commun Fin de Course | |||
|- | |||
| 12 || bleu fin || || || Codeur A | |||
|- | |||
| 2 || Gros noir || || ||Masse | |||
|- | |||
| 1 || Gros Rouge || || || Alim +5 | |||
|- | |||
|} | |||
== La charly robot reprend vie == | == La charly robot reprend vie == | ||
Ligne 70 : | Ligne 338 : | ||
http://www.dailymotion.com/video/x16fltu_charly-robot-axes-x-y-ok_tech | http://www.dailymotion.com/video/x16fltu_charly-robot-axes-x-y-ok_tech | ||
http://www.dailymotion.com/video/x19u453_fablab-lannion-la-charlyrobot-est-fonctionnelle-3-axes_tech | |||
http://www.dailymotion.com/video/x2rcj2a_formation-charlyrobot_tech | |||
http://www.dailymotion.com/video/x2rqcko_formation-charlyrobot-partie-2_tech | |||
http://www.dailymotion.com/video/x2rqjt5_formation-charlyrobot-partie-3 | |||
Version actuelle datée du 3 juin 2015 à 20:26
Les Montages Electroniques
Puissance
Alimentation
Panneau de contrôle
Breakout de commande
BeagleBone
Moteurs
grandeurs nécessaires pour la configuration de LinuxCNC :
voltage | 65 | 48 | 24 | 12 |
---|---|---|---|---|
tours/min | 3000 | 2215 | 1108 | 554 |
tours/s | 50 | 37 | 18 | 9 |
MAX_VELOCITY mm/s* | 250 | 185 | 92 | 46 |
MAX_VELOCITY mm/min* | 15000 | 11100 | 5550 | 2775 |
MAX_ACCELERATIONmm/s²** | 3750 | 2769 | 1385 | 6925 |
BASE_THREAD_PERIODns*** | 20 000 | 27 000 | 55 000 | 110 000 |
*x et y vis au pas de 5mm et Z au pas de 2,5mm
** Accélération ??? 15 "fois" la vitesse ??? : a determiner empiriquement
*** Basé sur la période d'une impulsion (quadrature donc /4 )
Encodeur 1000 imp/tr(en quadrature donc *4) soit 800 imp/mm (INPUT_SCALE) pour X et Y et 1600 imp/mm (INPUT_SCALE) pour Z
et donc 1 impulsion = 0,00125mm ou 1,25µm pour les axes X et Y et 0,625µm pour les Z.
Dimension de la zone de travail 515*515mm MIN_LIMIT&MAX_LIMIT
LinuxCNC sur BeagleBone
Intro
Après pas mal de recherche, le portage est deja fait pour cette carte. Un gros travail a été fait pour décorrélé linuxcnc de la couche temps réel et de la distrib. On repart donc logiquement du travail effectué ici (blog) et google group .
Comme nous utilisons des servo-moteur, nous allons devoir recompiler le noyau pour qu'il prenne en compte l'EQEP (fonction présente sur le chip TI dédiée à la gestion des encoder). Encore une fois beaucoup de travail déjà réalisé ici
il en sera de même pour l'ehrpwm.
on pourra peut-être implémenter aussi la gestion PID dans les PRU dispos sur la carte.
Il serait aussi intéressant de voir comment utiliser le port HDMI tout en désactivant les PIN IO LCD (nécessaire pour gerer les 3 cannaux EQEP. : impossible
Pour finir, la fabrication d'un pupitre de contrôle (deplacement des axes, un potar pour les Jog et un bouton d'arret d'urgence), permettra de faciliter l'utilisation de la machine...
allez y a plus qu'à
Compilation du noyau pour supporté xenomai et eqep
*creation d'un rep de travail mkdir bbb cd bbb * téléchargement du package Beaglbone* git clone https://github.com/RobertCNelson/linux-dev * télechargement du package temps reel (xenomai ici, mais rtai marcherait aussi((en théorie>> non testé))) wget http://download.gna.org/xenomai/stable/xenomai-2.6.3.tar.bz2 tar xvjf xenomai-2.6.3.tar.bz2 *téléchargement des drivers eqep : File:beaglebot-master.zip ou sur https://github.com/Teknoman117/beaglebot/
* compilation du noyau cd linux-dev git checkout origin/am33x-v3.8 -b am33x-v3.8 ./build_kernel.sh >>> s'il y a des pb , installer les packages manquants ( par exemple avec apt-get). Il est peuetre necessaire d'installer un cross compilateur/ou si vous voulez en utiliser un specifique : nano system.sh et completer la ligne CC= avec le chemin vers le CrossCompilateur
Ici, le script télécharge les sources, (c'est long !! >> si vous les avec déjà qqpart il faut l'indiquer dans le fichier system.sh)). Ensuite le menu de configuration du noyau apparait. normalement, il n'y a pas de partie temps réel. Je pensais aussi que eqep n’était pas dispo, mais si (devices driver -> misc il est bien présent).
* installation du temps reel cd KERNEL/ patch -p1 < ../../xenomai-2.6.3/ksrc/arch/arm/patches/beaglebone/ipipe-core-3.8.13-beaglebone-pre.patch patch -p1 < ../../xenomai-2.6.3/ksrc/arch/arm/patches/ipipe-core-3.8.13-arm-3.patch patch -p1 < ../../xenomai-2.6.3/ksrc/arch/arm/patches/beaglebone/ipipe-core-3.8.13-beaglebone-post.patch cd ../../xenomai-2.6.3/scripts/ ./prepare-kernel.sh --arch=arm --linux=../../linux-dev/KERNEL/kernel/ cd ../../linux-dev/ ./tool/rebuild.sh>>> Dans le menu configuration l'onglet temps réel apparaît.
* remplacement du noyau de l'image initiale machinekit : brancher la carte µsd contenant l'image machinekit, via un adaptater usb (commande dmesg pour obtenir le nom ((sdd par exemple) dans le fichier system.sh : decommenter ZRELADDR=0x80008000 et indiquer le noom de la carte dans MMC= (par exemple :/dev/sdd)puis execution du script ./tool/install_kernel.sh
*si besoin git config --global user.email "you@example.com"
git config --global http.proxy http://x.x.x.x:xxx
si le pb de résolution de nom persiste : modifier dans le script les @ git:// en http://(ou https://)
utilisation des canaux eqep (gestion des encoder)
Ca fonctionne. les instructions sont ici
utilisation des canaux pwm
ça fonctionne aussi attention pour pouvoir modifier la frequence lorsque l'on utilise les 2 canaux d'un paire, il faut recompiler en applicant ce patch. Puis, lors de l'initialisation configurer la période souhaitée, puis activer les cannaux.
Lors de la compilation du noyau j'avais défini les driver pwm comme module, du coup je n'ai pas eu a recompiler le noyaux, j'ai simplement compiler le nouveau driver puis remplacé celui présent dans /lib/modules/3.8xxx/kerner/drivers/pwm.
le plus simple : http://www.blaess.fr/christophe/2013/07/06/beaglebone-black-et-pwm/ base : https://github.com/SaadAhmad/beaglebone-black-cpp-PWM
PwM et GPIO : http://www.itk.ntnu.no/smrt/rtdm.php
écriture des modules linuxcnc pour eqep et pwm
pour ce faire, l’écriture de driver temps réel a été faite (drivers RTDM pour xenomai). Ceux-ci permettent de lire les compteurs eqep, la fréquence des canaux pwm et d’écrire la période idle du signal pwm.
toute la partie initialisation des fonctions eqep et pwm est faite grâce aux drivers linux classic. CF ci-dessus. les sources sont sur le github fu fablab
lien utile : http://linuxcnc.org/docs/html/hal/comp.html
spec du pupitre
à compléter
entrées BBB analogiques :
- 1 potar pour le jog
- 1 potar pour la vitesse d'execution
- 3 entrées pour 2 joystick, 1 pour X et Y l'autre pour Z)
entrées BBB numeriques :
- 1 inter home
- 1 inter compensation outils Z
- BP aret urgence
réalisation du pupitre
la gestion de joystick fonctionne.
la gestion du type de jog ( continue/ pas de 0,01/0,05 ....)fonctionne.
la gestion de la vitesse de fonctionnement ne fonctionne pas correctement, la vitesse est bien modifiée, mais la position initiale du potar influe sur les valeurs... à creuser.
il faut faire un pupitre plus fonctionnelle.
- BBB
line interessant :
- http://www.blaess.fr/christophe/2013/05/25/entrees-analogiques-du-beagle-bone-black/
- http://beaglebone.cameon.net/home/reading-the-analog-inputs-adc
- http://wiki.linuxcnc.org/cgi-bin/wiki.pl?CoordinateSystems
- http://gnipsel.com/linuxcnc/gui/gui06f.html
IO et linuxcnc sur PC (obsolet)
Linuxcnc permet l'utilisation des pins du port // et série pour transmettre ou recevoir des informations.
la réparation pins in et out n'est pas libre :
- port // :
- 5 (n°10,11,12,13,15) in et 12 out en mode ou
- 13 in et 4(n°1,14,16,17) out en mode in
- port série:
- 4 in et 3 out (n°3,4,7)
besoins(obsolet)
3 moteurs avec pour chaque moteur 3 signaux de commande (up/down/enable) et à minima 3 signaux de contrôle (encodeur a/b et fin de course fc). Pour accroitre la robustesse, il faudrait aussi utiliser les signaux de controle abar et bbar, voir z et zbar.
soit 9 in et 9 out.
utilisation de 2 ports paralleles :
Port 1 (out) // | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | 16 | 17 | 18-25 |
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
signal | en X | up X | down X | en Y | up Y | down Y | (en A) | (up A) | (down A) | - | - | - | - | en Z | - | up Z | down Z | GND |
Port 2(in) // | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | 16 | 17 | 18-25 |
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
signal | - | aX | bX | - | - | aY | bY | - | - | aZ | bZ | - | - | - | - | - | - | GND |
développement sous kicad
projet File:Charly2.zip >> split des ponts (2 cartes à faire) et de la connectique (2 port // & 3 RJ45)
+ lib st File:st-lib-comp.zip
File:back.ngc.zip >> pour test fraisage pcb : Pas de fraiseuse dispo donc réalisation en chimique à partir du projet Kicad ci-dessus : quelqu'un de motivé ?
Remise en route
La carte pour 2 axes est réalisée.
Le debuggage peut commencer, ainsi que la mise au point de linuxcnc
La charly fonctionne sur 3 axes. PAr contre l'utilisation du module encoder limite fortement les vitesse de deplacement de la machine. Le PC ne supporte pas la fréquence d'interruption nécessaire pour voir tous les fronts des encodeurs, ce qui genere des erreur de jointure.
La solution que l'on a mis en oeuvre est l'utilisation d'un beagle bone. (cf § dedié)
A FAIRE
* sur tous les axes : RJ45 blindés à sertir sur les câbles signaux (+5V;0V,a,b,abar,bbar,fc+,fc-), j'ai la pince, mais pas les embouts.
- chassis (IPN) car les tables actuelles ne sont pas assez costaud.
* fichiers de test : File:logo-coube.ngc.zip File:logoSeul.ngc.zip
* calcul avance et vitesse de rotation File:calcul-cnc.xls
Amelioration
utilisation abar,bbar,fc- ajout d'optocoupleur entre les port // et les drivers >>>> l'utilisation des optocouleur sparkfun ne fonctionne pas (limite à 1kHz). d'autre sont en test
- régulation du ventillo (PWM) des alim
- sortir du 5v des alims et 3,3V pinout alim sun
- realisation pcb/connecteur pour avoir un connectique sur les alim plus propre
- réalisation d'un palpeur d'outil
Alimentation
utilisation de plusieurs alimentations montées en série.
le 24V est dispo
à voir pour du 36V et 48V. >>> implique un réajustement des paramètres PID et vitesse /acceleration sur linuxcnc
Pb Axe Z
Le problème intermittent sur l'axe Z (Erreur suivit de jointure 2) a été résolu par la reprise du câblage de puissance du moteur (en haut de l'axe)
Moteurs
testés avec les alims ci-dessus. Tous les moteurs sont OK. l'avancée est 2 fois plus rapide en 24V qu'en 12V.... ça parait logique !
contrôle moteur
* achat 2 * L6205. reçu
* montage électronique de mise en œuvre à faire : fait pour 2 axes
- ajout optocouleurs (optionnel dans un premier temps ?)
* pour l'utilisation du port serie Linuxcnc, il faudra prévoir une adaptation des tensions. Les circuits max232 seront utilisés. >> on utilise finalement 2 ports // : merci David
Linuxcnc
* écriture de la conf. encours
** ébauche faite pour la gestion de 3 axes. tar à décompresser dans linuxcnc/configs maj .hal : changement mode pwmgen
** tester le port parallèle du pc pour avoir l'adresse et savoir si pin à collecteur ouvert.[[:File:parallele_check.txt | instructions]]
** pins du port parallèle à revoir fonction du résultat (fichier .hal)
- .tbl à revoir fonction des (futures) fraises utilisées
cablage de la doc
Pin | Couleur coté moteur | Couleur coté electr | Cable RJ45 | Fonction |
---|---|---|---|---|
?? | noir épais | ??? | ||
masse | bleu épais | masse | ||
1 | rouge épais | +moteur | ||
2 | noir épais | -moteur | ||
3 | noir fin | marron(8) | contact FC | |
4 | Non utilisé | NA | NA | |
5 | noir/rouge fin | Blanc épais | Gris (1) | Masse TTL codeur + blindage |
6 | Non utilisé | NA | NA | |
7 | jaune | blanc fin | marron(8) | Contact FC |
8 | rouge | marron épais | blanc (2) | +5 codeur |
9 | Non utilisé | NA | NA | |
10 | noir/bleu fin | rose | jaune (5) | Codeur A_ |
11 | jaune/noir | vert | bleu (6) | Codeur B_ |
12 | bleu fin | gris | vert (3) | Codeur A |
13 | jaune fin | marron | orange (4) | Codeur B |
14 | blanc orange | jaune | violet(7) | Commun contacts FC |
cablage Axe Y
Pin | Couleur coté moteur | Couleur coté electr | Cable RJ45 | Fonction |
---|---|---|---|---|
13 | Jaune fin | Codeur B | ||
11 | Noir Jaune | Codeur B | ||
12 | Bleu | Codeur A | ||
10 | Bleu noir | Codeur A | ||
NA | Vert | Codeur Z | ||
NA | Vert noir | Codeur Z | ||
8 | Rouge fin | codeur Moteur | ||
5 | Rouge Noir | Masse codeur Moteur | ||
Masse | Gros Bleu | Masse Terre | ||
3 | Noir moyen | Contact FC Y1 | ||
7 | jaune moyen | Contact FC Y2 | ||
14 | blanc orange moyen | Commun Fin de Course | ||
12 | bleu fin | Codeur A | ||
2 | Gros noir | Masse | ||
1 | Gros Rouge | Alim +5 |
La charly robot reprend vie
http://www.dailymotion.com/video/x160zd2_charlyrobot-pilotage-de-l-axe-y-first-step_tech
http://www.dailymotion.com/video/x16fltu_charly-robot-axes-x-y-ok_tech
http://www.dailymotion.com/video/x19u453_fablab-lannion-la-charlyrobot-est-fonctionnelle-3-axes_tech
http://www.dailymotion.com/video/x2rcj2a_formation-charlyrobot_tech
http://www.dailymotion.com/video/x2rqcko_formation-charlyrobot-partie-2_tech
http://www.dailymotion.com/video/x2rqjt5_formation-charlyrobot-partie-3