Échantillonneur automatique - La vie après la vie

Il a vécu heureux pour toujours ... puis s'est cassé.

Prologue


Pendant un an, semble-t-il, en 2009, un analyseur d'eau a été acheté pour un projet. Étant donné qu'il était censé être utilisé pour assurer le fonctionnement des équipements technologiques, l'appareil a été acheté complet avec un échantillonneur automatique.



Il s'agit essentiellement d'un manipulateur CNC avec quatre degrés de liberté de mouvement pour l'alimentation automatique des échantillons vers l'analyseur.

Il a travaillé pendant environ 10 ans et a déposé plus de trente mille échantillons avec quelques problèmes mineurs, qui, cependant, ont été surmontés avec "peu de sang".

Au début de cette année, il était fatigué - l'axe Z a échoué, mouvement vertical.

Autrement dit, le manipulateur a simplement cessé de le «voir». Compte tenu d'un certain nombre de circonstances de maintenance officielle, le complexe de mesure n'a jamais eu de problèmes mineurs (réparation du bloc d'alimentation, clignotement après une défaillance FLASH) ont été résolus indépendamment. Ici, je devais déjà chercher des officiels, de qui il s'agissait ... Quelques fonctionnalités:

  • il s'est avéré que le manipulateur n'est pas seulement vieux, mais désastreusement vieux
  • il était vieux et arrêté à l'achat
  • pas de documentation pour cela
  • toute l'électronique doit être changée
  • les pièces sont disponibles mais coûtent plus que neuves
  • il n'y a pas de garantie à cent pour cent qu'avec un remplacement cela fonctionnera

Quelques fonctionnalités que je connaissais:

  • le firmware du fabricant ne fonctionne pas avec l'analyseur (c'est bien qu'une sauvegarde ait été faite),
  • le chargeur de démarrage est également apparemment changé, car le firmware d'usine «tel quel» n'est pas accepté
  • il n'y a aucun moyen de «reflasher» le chargeur de démarrage, donc acheter de l'électronique pour 6 000 $ est inutile
  • la mécanique est en excellent état, comme je l'ai régulièrement entretenu
  • Les capteurs zéro (Hall) sont vivants

Ainsi, deux options se sont avérées:

  • l'achat d'un nouvel analyseur auprès du fabricant pour 17 000 $ et un délai de livraison incompréhensible
  • refonte de tous les programmes électroniques et d'écriture

Première partie, matériel


Pour commencer, j'ai décidé de m'assurer que la mécanique fonctionne à une tension de 12v (contre 37 dans l'original). Décidé de baisser en raison du fait que la demi-commande de puissance des engrenages de commande se réchauffe décemment. Par conséquent, les pilotes A4988, plaque signalétique CNC et Arduino NANO ont été retirés de la table de nuit. tout cela a été amarré, flashé par le célèbre projet grbl et interrogé avec parti pris. La fréquence de pas maximale a été obtenue pour chaque entraînement, les coefficients de division des pas, les courants de commande ont été ajustés.

Il s'est avéré que XY ne chauffe pas du tout, et ils donnent une vitesse tout à fait appropriée. Le courant pour le lecteur Z - a dû être vissé au maximum, en raison de la division par 8 et d'une consommation décente lors du démarrage, car il tire une masse lourde de deux entraînements et entrailles du moteur, tandis que la puce du conducteur s'est réchauffée jusqu'à 50 degrés, même avec un radiateur. J'ai dû ajouter un refroidisseur au ventilateur en face de ce lecteur dans la conception finale.

En fin de compte, à la place



il s'est avéré



L'Arduino Pro Micro sera une chanson distincte. À l'arrière-plan se trouve un panneau avec des interrupteurs à bascule pour sélectionner un mode de fonctionnement, des boutons de démarrage et de réinitialisation.

Maintenant sur les tripes. Comme je l'ai dit, tous les capteurs Hall ont survécu. Parmi ceux-ci, les XY ne sont intéressants que pour les différentes logiques de déclenchement. Si en Y le capteur s'ouvre OK à l'approche de l'aimant, alors en X l'aimant est constamment en face du capteur, et en Zero-X et plus loin entre eux il y a un obturateur magnétique doux qui protège le capteur de l'aimant, tandis qu'il se ferme OK. Compte tenu de cette hétérogénéité, il est nécessaire de comprendre où aller lors de la recherche de zéros. Pour ce faire, la conception originale prévoit une position de stationnement à la fin des travaux. Cependant, il n'a pas été mis en œuvre du tout: lorsque l'alimentation a été coupée, j'ai dû attraper ma tête sur l'axe Z avec ma main et la faire avancer manuellement en position de stationnement.

À propos de Z est l'histoire principale. Là, dans le cas Z, l'entraînement du piston de la seringue est toujours en vie, sans capteur zéro, mais avec un capteur à double rotation - presque un encodeur. Et il y a aussi un capteur pour presser le flacon avec une panne, mis en œuvre par un engrenage hélicoïdal et également un capteur à effet Hall. Ces deux capteurs de rotation sont des engrenages en laiton passant avec des dents devant les capteurs Hall avec aimantation.

Pourquoi avais-je besoin d'un encodeur magnétique (dans le cadre de ma tâche privée) que je ne comprenais pas, et je l'ai donc remplacé par un capteur zéro pour la commande du piston, car les Halls étaient là, dans la table de nuit, ainsi que le minuscule aimant en néodyme du lecteur d'objectif DVD.

Au lieu de cela



C'est devenu



Le principal problème de la sculpture du fer était de bourrer, eh bien, vous comprenez vous-même. Je ne voulais vraiment pas garder quelque chose dans une boîte séparée, par conséquent, tout rentre dans les endroits prévus pour cela, mais maintenant je le ferais un peu différemment.

Deuxième partie, logiciel

Les tests sur la plaque signalétique CNC ont montré une vitesse décente. MAIS! Si vous essayez d'offrir immédiatement au SD la fréquence STEP correspondant à cette vitesse, vous n'aurez rien d'autre qu'un grognement en place. Afin d'atteindre des vitesses de mouvement décentes, le moteur pas à pas doit être accéléré, tout comme si vous chérissez les engrenages et les rails d'entraînement (enfin, ou les vis à billes ou les courroies), puis le ralentissez doucement. Parce que le code trivial s'est un peu développé.

Puisqu'il est presque indécent de venir dans la section "Robotique" avec un article sans code, par exemple, pilotez le contrôle Z (pour le blâme). Lors de l'émission d'une fréquence vers STEP, digitalWrite n'a pas le temps, vous devez tirer le port directement. Il était probablement retardé, et retardé, mais le code provenait du contrôle XY, et la simultanéité est nécessaire là-bas.

//*****************  Z ************************* void movement_z (unsigned int tz, int spd) { long interval_z; long spd_z = 2000; unsigned long cur_micros; unsigned long prev_micros_z =0; int half_z; byte full_mask = mask_z; int dz = tz - z; z=z+dz; if (dz <0) digitalWrite(pin_dir_z, HIGH); else digitalWrite(pin_dir_z, LOW); dz = abs(dz); half_z = int(dz/2); interval_z = spd; do { if (dz>0){ cur_micros = micros(); if(cur_micros - prev_micros_z > spd_z) { if ( dz>half_z ) {if (spd_z > interval_z) {spd_z = spd_z - 5;} else spd_z = interval_z;} if ( dz<300 ) {if (spd_z < 1000) spd_z = spd_z + 2; else spd_z = 3000;} prev_micros_z = cur_micros; if (dz>0) {PORTB = PORTB | mask_z; dz--;} }} delayMicroseconds(5); PORTB = PORTB & B11110000; } while( dz != 0); } //************************************************************* 

Dans l'ensemble des niveaux de fonction:

  • bas - aller et venir, trouver quelque chose - je ne sais pas quoi
  • moyen - calibrer à zéro, tirer une seringue, faire un échantillon de l'échantillon
  • diagramme à cycle élevé de la dérivation du nième nombre de flacons sur une palette

Le programme commence par l'initialisation des ports, la lecture de la configuration spécifiée à partir des commutateurs sur le panneau arrière et, après avoir appuyé sur START, l'élaboration du cyclogramme jusqu'à ce qu'une position sur la palette soit trouvée dans laquelle il n'y ait pas de flacon avec l'échantillon.

Le diagramme de séquence principal ressemble à ceci:

 inline void frame_1(){ for (unsigned int i=0; i<6; i++){ // 6 for (unsigned int j=0; j<9; j++){ // 9 for (unsigned int k=1; k < probe+1; k++){ for (unsigned int l=1; l < inj+1; l++){ sound1(); delay(1000); if (inj == 2) {tone(tone_p,5000);delay(200);noTone(tone_p);delay(200);tone(tone_p,5000);delay(200);noTone(tone_p);} if (inj == 1) {tone(tone_p,5000);delay(200);noTone(tone_p);} Serial.print("going to x = ");Serial.print(j+1);Serial.print(" y = ");Serial.print(i+1); Serial.print(" probe = ");Serial.print(k); Serial.print(" inj = ");Serial.println(l); show_xyzp(); movement_z (0,450); movement_xy (prime_x-j*272, prime_y+i*372,500); movement_z(1800,300); if (z>2500) ost(); fill(); while(sensor()); if (inj == 1) {click_mouse(); Serial.println("mouse CLICKED for FLUSH and inj=1");} if (inj == 2 && l==1) {click_mouse(); Serial.println("mouse CLICKED for FLUSH and inj=2");} septa_pos(); while(sensor()); sound2(); inject(); } delay(3000); click_mouse(); Serial.println("mouse CLICKED for INJECT"); find_zero_xy(); movement_xy (3257, 1247,500); movement_z (6000,100); movement_z (0,100); } } } } 

Les atavismes sous forme de sortie d'informations de débogage vers Serial sont restés dans le code - laissés pour de futures améliorations. on a presque mûri, obtenu des seringues analytiques pour quatre fois le volume, vous devrez ajouter un autre choix au début.



Le principal problème lors de la compilation du programme était que dans l'original, l'analyseur donne à l'échantillonneur automatique où aller et quoi faire. Tout cela se fait via le port COM et le protocole, qui n'est nulle part où aller. Parce que je devais sortir.

L'analyseur dispose d'un mode manuel pour ceux qui n'ont pas acheté d'échantillonneur automatique d' écureuil . Dans le même temps, un bouton sombre «échantillon prêt» apparaît sur l'écran de l'analyseur et, lorsque l'opérateur est poignardé, il doit le pousser avec la souris (tracker sur le panneau de l'analyseur). Une fois la mesure terminée, un bouton sombre «Démarrer le rinçage» apparaît et, si l'opérateur a un autre échantillon, il l'appuie avec la souris pour préparer l'analyseur pour la mesure suivante. Après un clic de souris, le bouton disparaît et un champ blanc (lumineux) reste. J'ai décidé de saisir cette différence de luminosité avec un photocapteur. Je vérifie l'apparence du bouton sombre avec une photorésistance collée dans la ventouse. Je n'ai pas trouvé de ventouse noire, et quand le soleil est par la fenêtre, je dois couvrir le capteur de bouton avec quelque chose.



Mais vous devez cliquer sur quelque chose? Heureusement, l'analyseur avait un port USB et suffisamment d'embouteillage RedHat non circoncis depuis le début de 2000 pour se connecter automatiquement à ce port. C'est pour émuler la souris sur la nouvelle carte principale de l'échantillonneur automatique que se trouve l'Arduino Pro Micro. il reçoit un code PIN de NANO au moment où l'analyseur doit être cliqué. C'était trop paresseux pour écrire le mouvement, car avant de commencer le travail, la souris doit être réglée sur le bouton à l'avance.

O BONHEUR, qui accablé d'expérience, j'ai lâché la partie souris de l'autre optron penny galvanique de gestion et bon marché. PARCE QUE d'ici la fin de la deuxième journée de débogage en nature, alors que tout fonctionnait déjà et que j'ai configuré le bip pour délivrer des sons similaires aux originaux, l'un des pilotes a libéré de la fumée magique et connecté la section d'alimentation 12v à la logique 5v. Eh bien, rien, une demi-journée de remplacement par un extrait d'une table de chevet sans fond n'est pas une réparation d'analyseur de 100 000 $. Certes, il s'est avéré plus tard que le nouveau bloc d'alimentation REXANT acheté au lieu d'une maison oubliée a commencé à un moment donné à produire près de 50 au lieu de 12v, ce qui a causé un retard malheureux.

Troisième partie, étalonnage et test de fiabilité

Après l'assemblage et le débogage initial, le problème du comptage de position par l'emplacement réel du flacon s'est posé. J'ai dû faire un clavier et y écrire une interface simple dans la série. Il n'y avait plus de ports, mais pour les cas les plus extrêmes, les broches responsables d'i2c étaient stockées. Ils seraient accrochés à l'extension folk PCF8574 avec des micro-boutons qui peuvent être tirés au maximum, qui peuvent être utilisés pour déplacer le XY, sélectionner un multiplicateur de pas pour accélérer le processus et changer XY en ZP. Après chaque clic dans la série, une nouvelle position s'affiche. Grâce à cette technique simple, il a été possible d'obtenir rapidement et avec précision toutes les coordonnées et incréments actuels. En dehors de la procédure d'étalonnage, les commutateurs de sélection de mode et le bouton de déclenchement du cyclogramme sont connectés aux entrées de l'extenseur. Dans la vidéo, approximativement au milieu, les boutons et les interrupteurs à bascule sont visibles.

Les seringues pour l'alimentation d'un échantillon ne sont pas bon marché - 100 $ pièce. Une erreur de positionnement coûte une aiguille tordue et une seringue irrévocablement vissée. Par conséquent, une seringue cassée avec une aiguille à coudre collée a été insérée et l'appareil pendant près d'une demi-journée battait en quatre points sur une feuille de papier afin d'identifier les prétendus échecs de positionnement. Mais ils n'étaient pas là, j'ai même été surpris. Cependant, comme il y a suffisamment de temps entre le poignardage et le recrutement de l'échantillon, je l'ai utilisé pour rechercher des zéros, juste au cas où. Dans la vidéo, ce moment est vu plus près de la fin de la vidéo.

Épilogue


En général, il a plus de chances de réussir. Deux semaines se sont écoulées entre la compréhension du désespoir et le passage à la production. Opéré depuis fin mai, produit jusqu'à 200 mesures par jour. Le collègue chargé de l'échantillonnage et de la mesure ne s'en plaint pas.

Cerises pour le gâteau étaient de nouvelles fonctionnalités qui n'étaient pas dans l'original. Possibilité de se déplacer sur XY en même temps. La possibilité de doubler la broche de l'échantillon, ce qui a augmenté la sensibilité de l'analyseur à des concentrations ultra-faibles de la substance mesurée dans l'échantillon. Parking automatique après mesure.

PostScriptum


À la demande des intéressés, une vidéo.

Source: https://habr.com/ru/post/fr474564/


All Articles