Fabrication industrielle
Internet des objets industriel | Matériaux industriels | Entretien et réparation d'équipement | Programmation industrielle |
home  MfgRobots >> Fabrication industrielle >  >> Manufacturing Technology >> Processus de fabrication

Mangeoire automatique bricolage pour chat

Composants et fournitures

Minuteur de sortie mécanique
× 1
Moteur pas à pas
× 1
Pilote de moteur pas à pas L9110S
× 1
Support d'arbre linéaire SHF8
× 1
Chargeur mural USB
× 1
SparkFun Arduino Pro Mini 328 - 5V/16MHz
× 1
Connecteurs USB mâles vers adaptateur DIP
× 1
Câble d'extension USB
× 1
Supports d'angle
× 1

À propos de ce projet

Lorsque je quitte la maison pour quelques jours, nourrir mon chat est toujours un énorme défi. Je dois demander à des amis ou des parents de s'occuper de mon chat. J'ai cherché une solution sur internet et j'ai trouvé beaucoup de produits distributeurs de nourriture pour animaux de compagnie, mais je ne les ai pas aimés. Premièrement, ils sont très chers. Deuxièmement, ils ne conviennent que pour manipuler de la nourriture sèche pour chats (le mycat mange la plupart du temps de la nourriture humide). Enfin, elles sont trop grandes, je n'ai pas beaucoup de place dans mon appartement. J'ai donc décidé de construire une mangeoire pour chats compacte, automatique et optimisée pour l'alimentation humide. Le problème avec la nourriture humide, c'est qu'elle se détériore très vite. J'ai réalisé qu'après avoir ouvert une nourriture pour chats en conserve, j'ai au maximum 1 jour pour l'utiliser. Pour économiser de l'espace et conserver la qualité de la nourriture et rendre ce projet aussi simple et économique que possible, j'ai conçu une machine qui ne peut donner qu'un seul repas à l'animal. Cela me donnera deux jours d'absence de mes devoirs d'alimentation de chat (liberté :)).

L'alimentateur fonctionne très simplement. Je remplis le récipient alimentaire (boîte de yaourt vide) avec de la nourriture, ferme la porte du récipient et branche le câble avec une minuterie de sortie au réseau 230VAC. J'ai configuré la minuterie de sorte qu'après une journée, elle allume le chargeur. Lorsque l'instrument est sous tension, le récipient alimentaire sera ouvert par un servomoteur. Après une journée, la porte s'ouvrira et le chat pourra prendre un bon repas. Quand j'arrive à la maison, je retire le conteneur de nourriture et nettoie les restes et remplis de nourriture fraîche, puis je le remets et, ferme le haut de la boîte et le cycle peut recommencer.…

Toutes les étapes principales peuvent être vues dans cette vidéo :

Code

  • Automatic_cat_feeder code arduino
Code arduino Automatic_cat_feederC/C++
Code source du micrologiciel Arduino. J'ai téléchargé le code sur la mini carte Arduino pro à l'aide du logiciel Arduino IDE (https://www.arduino.cc/en/Main/Software), d'un adaptateur FTDI et d'un câble USB Mini-B. Voici une vidéo sur, comment faire ce processus :https://www.youtube.com/watch?v=78HCgaYsA70
Le code est simple. Dans la configuration, il fera tourner le stepper que dans la boucle principale il attend que le bouton soit enfoncé puis il se déplacera à nouveau.
// Mangeoire automatique pour chat faite par :J. Rundhall//Code original pour steper de :Sketch de R. Jordan Kreindler, écrit en octobre 2016, pour faire tourner le flotteur RPM;booléen isButtonpressed =false;unsigned long timee;// Pin affectationsint buttonPIN =6;int aPin =4; //IN1:enrouler une extrémité bPin =3; //IN2:bobine b un endint aPrimePin =5; //IN3:bobine aPrime autre extrémité de la bobine aint bPrimePin =2; //IN4:bobine bPrime autre extrémité de la bobine bint un =aPin;int deux =bPin;int trois =aPrimePin;int quatre =bPrimePin;int degrés =0;//int délai1 =20; // Le délai entre chaque étape en millisecondesint delay1 =5; // Le délai entre chaque pas en millisecondes//int delay2 =50; // Le délai après chaque révolution complète, en millisecondesint delay2 =200; // Le délai après chaque révolution complète, en millisecondesint count =0; // Le nombre de pas entier numberOfRotations =1; // Le nombre de fois que le rotor a// tourné à 360 degrés.void setup() {// Définir toutes les broches comme sortie pour envoyer des signaux de sortie de l'Arduino// UNO aux enroulements de la bobine du statorSerial.begin (9600); // ouvre le port série, définit le débit de données à 9600 bps pinMode (6, INPUT_PULLUP); //ButtonpinMode(aPin, OUTPUT);pinMode(bPin, OUTPUT);pinMode(aPrimePin, OUTPUT);pinMode(bPrimePin, OUTPUT);Serial.println(" Clockwise"); // Commence avec toutes les bobines offdigitalWrite(aPin, LOW );digitalWrite(bPin, LOW);digitalWrite(aPrimePin, LOW);digitalWrite(bPrimePin, LOW);for(int ii=0;ii<20;ii++) doTurn();}void loop() { //lire le valeur du bouton-poussoir dans une variable int sensorVal =digitalRead(6); // Gardez à l'esprit que le pull-up signifie que la logique du bouton-poussoir est inversée. Il va // HAUT lorsqu'il est ouvert et BAS lorsqu'il est enfoncé. Activez la broche 13 lorsque le bouton // est enfoncé et désactivez-le lorsqu'il ne l'est pas :if (sensorVal ==LOW) { isButtonpressed =true ; } else { if(isButtonpressed) { isButtonpressed =false; doTurn(); digitalWrite (un Pin, LOW); digitalWrite(bPin, LOW); digitalWrite(aPrimePin, LOW); digitalWrite(bPrimePin, LOW); } }}void doTurn(){ // Envoyer le courant vers // 1. L'aPin // 2. L'aPin et le bPin // 3. Le bPin // 4. Puis vers le bPin et l'aPrimePin // 5. Puis vers aPrimePin // 6. Puis vers aPrimePin et bPrime Pin // 7. Puis vers bPrimePin // 8. Puis vers bPrimePin et aPin. // Produisant ainsi des étapes en utilisant la méthode des demi-étapes // 1. Définir le aPin High digitalWrite(aPin, HIGH); digitalWrite(bPin, LOW); digitalWrite(aPrimePin, LOW); digitalWrite(bPrimePin, LOW); // Prévoyez un certain délai entre la mise sous tension des bobines pour permettre // au rotor pas à pas de répondre. retard(retard1) ; // Donc, delay1 // 2. Activez aPin et bPin à HIGH digitalWrite(aPin, HIGH); digitalWrite(bPin, HAUT); digitalWrite(aPrimePin, LOW); digitalWrite(bPrimePin, LOW); // Prévoyez un certain délai entre la mise sous tension des bobines pour permettre // au rotor pas à pas de répondre. retard(retard1) ; // Donc, delay1 millisecondes // 3. Réglez le bPin sur High digitalWrite(aPin, LOW); digitalWrite(bPin, HAUT); digitalWrite(aPrimePin, LOW); digitalWrite(bPrimePin, LOW); // Prévoyez un certain délai entre la mise sous tension des bobines pour permettre // au rotor pas à pas de répondre. retard(retard1) ; // Donc, delay1 millisecondes // 4. Réglez le bPin et le aPrimePin sur HIGH digitalWrite(aPin, LOW); digitalWrite(bPin, HAUT); digitalWrite(aPrimePin, HIGH); digitalWrite(bPrimePin, LOW); // Prévoyez un certain délai entre la mise sous tension des bobines pour permettre // au rotor pas à pas de répondre. retard(retard1) ; // Donc, delay1 millisecondes // 5. Réglez la broche aPrime sur high digitalWrite(aPin, LOW); digitalWrite(bPin, LOW); digitalWrite(aPrimePin, HIGH); digitalWrite(bPrimePin, LOW); // Prévoyez un certain délai entre la mise sous tension des bobines pour permettre // au rotor pas à pas de répondre. retard(retard1) ; // Donc, delay1 millisecondes // 6. Réglez le aPrimePin et le bPrime Pin sur HIGH digitalWrite(aPin, LOW); digitalWrite(bPin, LOW); digitalWrite(aPrimePin, HIGH); digitalWrite(bPrimePin, HAUT); // Prévoyez un certain délai entre la mise sous tension des bobines pour permettre // au rotor pas à pas de répondre. retard(retard1) ; // Donc, delay1 millisecondes // 7. Réglez le bPrimePin sur HIGH digitalWrite(aPin, LOW); digitalWrite(bPin, LOW); digitalWrite(aPrimePin, LOW); digitalWrite(bPrimePin, HAUT); // Prévoyez un certain délai entre la mise sous tension des bobines pour permettre // au rotor pas à pas de répondre. retard(retard1) ; // Donc, delay1 millisecondes // 8. Réglez le bPrimePin et le aPin sur HIGH digitalWrite(aPin, HIGH); digitalWrite(bPin, LOW); digitalWrite(aPrimePin, LOW); digitalWrite(bPrimePin, HAUT); // Prévoyez un certain délai entre la mise sous tension des bobines pour permettre // au rotor pas à pas de répondre. retard(retard1) ; // Donc, delay1 millisecondes count =count + 8; degrés =(360,0 * (compte / 400,0)); if ((numberOfRotations % 2) ==1) { // Vérifie si le nombre de rotations est pair Serial.println(" Clockwise "); Serial.println(degrés); // Affiche la position angulaire en degrés } else { // Si numberOfRotations est un nombre impair Serial.println(" Anti-Clockwise "); degrés =360 - degrés ; Serial.print(" -"); // Affiche un signe moins Serial.println(degrés); // Affiche la position angulaire en degrés } if (count ==160) { // Une révolution complète du stepper numberOfRotations =++numberOfRotations; tempse =millis(); RPM =timee / numberOfRotations ; // Temps moyen d'une rotation RPM =(60000.00 / RPM); // Nombre de rotations par minute if (numberOfRotations>=10) { Serial.print("RPM:"); Serial.println(round(RPM)); //Imprimer les RPM sous forme d'entier } delay(delay2) ; // retard2/1000 seconde(s) après chaque nombre de rotations complètes =0 ; // Remise à zéro du compteur de pas // Sens inverse après chaque tour if ((numberOfRotations) % 2 ==0) { // Vérifie si le nombre de tours est pair // si oui sens inverse aPin =four; bPin =trois ; aPrimePin =deux ; bPrimePin =un ; } else { // Si le nombre de rotations est un nombre impair aPin =un; bPin =deux ; aPrimePin =trois ; bPrimePin =quatre ; } digitalWrite(aPin, LOW); digitalWrite(bPin, LOW); digitalWrite(aPrimePin, LOW); digitalWrite(bPrimePin, LOW); } }

Schémas

J'ai d'abord fait le câblage de l'électronique. Je n'ai utilisé que deux fois mon fer à souder pour connecter les câbles d'alimentation au PCB de l'adaptateur USB. Avant de me connecter au réseau 230V, je recommande d'utiliser une alimentation de paillasse de laboratoire avec contrôle de courant et mesure de courant. si vous avez mal câblé quelque chose, cette vérification pourrait vous éviter tout dommage sur l'adaptateur ou sur un autre composant. La consommation totale doit être inférieure à 1 ampère à 5 volts.
Dans un deuxième temps, j'ai assemblé les renforts d'angle, puis modifié le boîtier et fixé à la structure de la machine.

Processus de fabrication

  1. Créer une thermocam DIY
  2. Les tenants et les aboutissants des embarreurs automatiques
  3. Qu'est-ce qu'une presse automatique ?
  4. Qu'est-ce qu'un chargeur de presse ?
  5. Qu'est-ce qu'un embarreur pneumatique ?
  6. Qu'est-ce qu'une cintreuse automatique de tuyaux ?
  7. Qu'est-ce qu'une table rotative automatique ?
  8. Comprendre le système de transmission automatique
  9. Comprendre le système de lubrification automatique