dimanche 6 mai 2012

Un distributeur automatique de nourriture pour chats - partie 2


Ce post fait suite à celui là:
http://lafamillecreative.blogspot.fr/2012/02/un-distributeur-automatique-de.html


Voilà, j'ai enfin terminé le distributeur automatique de croquettes pour chats.

distributeur


J'ai finalement mis un moteur plus puissant car le moteur de micro-onde était trop juste. C'est un moteur de plastifieuse qui a été retenu (10 tours/minute; 14W).
Le distributeur est commandé par un Arduino Nano. Un écran LCD 2x16 et 2 boutons constituent l'interface avec l'utilisateur. Sur l'écran, on peut voir un petit chat qui fait un clin d'oeil et le compte à rebours jusqu'à la prochain distribution. Le rétro éclairage de l'écran se met en veille automatiquement au bout de 30 secondes.
En appuyant sur un des deux boutons, l'écran se remet en marche. On peut ensuite à l'aide des deux boutons, changer la fréquence de distribution, la quantité et l'heure de la première distribution.

Voici ce que l'on peut voir sur l'écran LCD:



Une petite vue de ce qu'il y a derrière:



Une petite vidéo de démonstration:



Voici le schéma de câblage:
On peut utiliser :
   P1 = 10 KOhms  (potentiomètre pour le contraste)
   R1 = 1 KOhms (Résistance à la base du transistor)
   R2 = 220 Ohms (Résistance de limitation du courant dans la led de rétroéclairage)
   T1= 2N2222 (par exemple)


Vous pouvez télécharger le code Arduino que j'ai écrit pour cette application, mais il peut-être intéressant pour d'autre chose (gestion de l'affichage LCD, commande du rétro éclairage, gestion de menus, création de caractères... en cliquant ICI .





TAGS: DIY automatic cat feeder

39 commentaires:

  1. Trop la classe, la première page de HackADay :)

    RépondreSupprimer
  2. J'viens de HAD aussi !

    Plusieurs remarques constructives (j'éspere) :

    - "Test de parité"

    seconde2=seconde/2;
    seconde2=seconde2*2;
    if (seconde2==seconde)
    {...

    Il existe un formidable opérateur, le modulo (%), qui permet de renvoyer le reste de la division euclidienne.

    par exemple :
    5%2=1 (car 5/2=2, reste 1)
    12%2=0 (car 12/2=6, reste 0)

    il suffit donc de tester si seconde%2==0 pour savoir si seconde est pair.


    - la gestion du temps

    Le code ne semble pas etre complet (ou alors il faudra excuser mon absence de connaissances sur arduino spécifiquement), mais j'imagine que le temps est géré dans une boucle qui appele loop() sans cesse.
    Il existe dans ces micro controleurs (atmega168, qui est utilisé pour la plateforme arduino), des timers (2x 8 bits, 1x 16 bits) qui generent des interuptions.
    Ca permet, outre un gain de précision dans tous les cas, de permettre au microcontroleur d'effectuer d'autres operations sans etre dérangé pour la gestion du temps. Litteralement dans ton cas, le microcontroleur passe son temps à gerer une horloge... Effectivement ça marche dans ce cas car il n'a rien a faire d'autre, mais c'est pas la solution optimale.

    RépondreSupprimer
    Réponses
    1. Merci pour ces idées d'amélioration.
      Je connaissais le modulo, mais ne maitrisant pas encore très bien le langage Arduino, j'étais passé par cette petite astuce de division. Je ferai la modif dans la prochaine version du code.
      J'avais jeté un coup d'oeil sur la gestion des interruptions. Je m'étais dit que ça ne valait pas le coup pour une application qui ne gère que ça. Mais je me rends compte que le retard pris par le programme n'est vraiment pas négligeable. Donc j'essaierai aussi de faire cette modif dans le prochain code.
      Il me reste un autre problème et tu pourrais peut-être m'aider: il arrive de temps en temps après le déclenchement du relai que le LCD ne fonctionne plus: retroeclairage OK mais défilement de caractères (comme si il y avait une perte de synchro), tout le reste fonctionne très bien. Je ne vois pas le soucis dans le programme. Je pense qu'en réinitialisant l'écran après avoir fait fonctionner le moteur devrait résoudre le problème mais cette solution ne me satisfait pas au niveau du raisonnement!!!
      Est-ce un problème électronique? Je n'ai pas vu de pont dans mes soudures, peut-être une chute de tension quand le relai est activé, un retour du relai (c'est une carte avec un opto coupleur donc je pense que non), trop de temps sans remise à jour du LCD?

      En tout cas, merci pour l'aide et le commentaire
      A+
      Antoine

      Supprimer
    2. Bonjour,
      Pour ton problème, tu dois mettre une diode en parallèle avec la bobine de ton relai. Prends une 1N4007 par exemple, mets-la dans le bons sens, c'est à dire cathode vers la tension positive. Ta désynchro provient sûrement de la surtension créée à l'ouverture du relais.
      A+

      Supprimer
    3. Merci,
      Je pense bien que le problème viens de là. Quand on coupe le courant à une bobine, ça fait des étincelles.... Mais je pensais que l'optocoupleur monté sur la carte permettait de protéger la partie en amont (je crois que ça s'appelle une rupture galvanique, souvenir de terminale...)
      Mais c'est clair que le problème se passe pile à se moment. Je vais mettre cette diode et je vous tient au courant (une diode de roue libre, c'est ça? 2eme souvenir de terminale).
      Merci encore
      A+

      Supprimer
    4. Effectivement, si ce n'est pas un module relais tout fait, il faut le designer proprement à la main avec de préférence au moins un (gros) transistor ou mosfet pour faire la commande, et une diode de roue libre (aka flyback diode) qui permet à la bobine de se décharger sur elle même quand le relais n'est plus alimenté. Une 1N4007 comme dit monnoliv c'est bien, mais il existe mieux : une diode schottky ; celles ci ont l'avantage de se "déclencher" plus rapidement et ainsi protègent plus rapidement l’électronique de contrôle. C'est pas spécialement plus cher que des diodes normales, mais tout le monde n'en a pas forcement à la maison... Mais littéralement n'importe quelle diode est mieux que pas de diode du tout !

      Supprimer
    5. Bonjour, je suis actuellement en train de construire un distributeur a peut prêt égal au votre seulement je voulais s'avoir s'il vous était possible de m'envoyer le code arduino par mail surtout pour la phase de contrôle du LCD avec les différentes étapes pour contrôler le nombre de distribution par jours ainsi que le temps qui défile car étant novice dans ce domaine je ne comprend pas très bien comment écrire ce code ! cordialement

      Supprimer
  3. D'abord: Un très bon travail!
    Après une petite question: j'ai vu qui tu as replacé la vis sans fin car c'était compliqué, mais avec le nouveau système la nourriture ne bloque pas le système?
    Dsl pour mon français...

    RépondreSupprimer
    Réponses
    1. Bonjour, J'ai fait la roue avec un axe en bois et des feuilles de plastique souples. Donc, ça ne coince pas trop. Mais je pense que c'est encore un peu améliorable.
      Merci pour ton intérêt.
      A+

      Supprimer
  4. J'ai une petite suggestion pour ce qui regarde la forme de la roue.
    Toujour ronde, bsur mais les 4 vides pour eviter qui se bloquent peut etre mieux comme ça:

    https://plus.google.com/photos/109309871037402047329/albums/5739801539429261185

    J'espere soit claire, le trous ne sont pas rondes mais avec cette forme bizzarre (le carrè bleu represent la nourriture qui est en traine de tomber).
    En cette maniere la nourriture qui peu pas entrer dans le dispenser est poussè arriere.

    RépondreSupprimer
    Réponses
    1. C'est une super idée. j'essaierai dès que possible.
      Merci beaucoup

      Supprimer
  5. Salut,

    Bon bricoleur pour ma part, je serai prêt a payer une petite somme pour un tutorial tres complet qui permettrai d'assembler tout le prototype de maniere accessible pour des néophytes de l'électronique. Avec par exemple la liste de tout les éléments à acheter avec leur référence sur un site web, et des informations claires pour assembler la partie électronique et programmation.
    Comme exemple, cette boite http://www.hiviz.com/kits/mt.htm qui fait la meme chose pour la photographie. J'ai pu acheter et assembler un kit pour pas grand chose...

    En tout cas bravo pour l'invention!

    Olivier

    RépondreSupprimer
  6. Hello,

    Malgré une Terminale S je dois avouer que cela me dépasse. Néanmoins je fus happée par ton projet lors de mes recherches pour un distributeur de croquettes pour mes trois chats. Un distributeur que je veux monter dans un meuble DYI afin qu'il ne ce voie pas etc. Ton design et la simplicité de l'interface sont très attrayants, déjà à ce stade! je ne peux que me joindre aux autres commentaires et t'encourager à intégrer les améliorations et a créer un 'Do-it-yourself-Kit' dont j'achèterai bien une version!

    Un petit ajout au niveau de la qualité de la nourriture: évidement si tu va publier un kit il sera bien de penser aussi au coté non-électronique, c'est à dire à la conservation de la nourriture. je pense notamment a faire en sorte que le container soit celé avec des joints et que le mécanisme de la roue ferme bien afin d'éviter que l'air n'y rentre trop.

    Encore bravo et tiens nous au courant des développements :-)

    Jasmine

    RépondreSupprimer
  7. Hi, i have a question, i just need to paste the arduino code that you gave into the arduino, nothing special?
    Thanks by the way.

    RépondreSupprimer
  8. Bonjour, j'aime vraiment votre concept et j'aimerais m'en inspirer ;-) !
    Auriez vous les mesures des pièces qui composent votre distributeur ? Notamment pour les pièces en forme d'hélice ^^
    Merci d'avance ! :-)

    RépondreSupprimer
  9. Bonjour,
    Je suis très intéressé par votre création.
    A combien revient la partie électronique?
    Est-ce facile à programmer?
    Serait-il possible de faire un tuto pour "les nuls" de la partie électronique?
    Merci.

    RépondreSupprimer
  10. Bonjour!
    Je suis aussi intéressé pour faire un distributeur pour mon chat.
    Auriez-vous une liste avec les différents composants nécessaires?
    Merci

    RépondreSupprimer
  11. un chat se regule seul donc pas utiles suiffie de veiller a qui est toujours a manger .

    RépondreSupprimer
  12. Bonjour,
    Je voudrais construire un distributeur pour la volaille et j’ai un Arduino UNO R3 et un Afficheur 2004A 4X20 et jais rentré le code il m'affiche des ? des Y enfin des Symbole tous et n'importe quoi, Je suis un petit bleu sur Arduino si qu'elle qu'un pourrais m'aide je suis preneur car le système est super !
    Merci de votre collaboration.
    Cordialement.

    RépondreSupprimer
    Réponses
    1. Je pense qu'il faut adapter le code pour votre afficheur (4x20) car mon code était pour un afficheur 2X18.
      Il faut mettre à la place du lcd.begin(16,2); lcd.begin(20,4);
      A plus, tenez nous au courant

      Supprimer
  13. Bonjour,
    voici le lien YouTube de ma vidéo sur mon distributeur automatique de croquettes.
    https://www.youtube.com/watch?v=uYzRAz7YWGQ

    Je me suis inspirer du votre.

    Merci.

    Cordialement

    RépondreSupprimer
  14. Boa noite, fiquei muito interessado em seu projeto.
    Poderia me mandar relação de materiais utilizados no mesmo e código fonte??
    Desde já agradeço!
    Segue email: alefjordaopsa@hotmail.com

    RépondreSupprimer
  15. salut
    superbe réalisation, je fais essayer de faire la même chose pour nourrir mais poisson carpe koi
    par contre sur le schéma il y a pas la commande avec les boutons poussoirs est il possible d'avoir le schéma entier merci

    RépondreSupprimer
    Réponses
    1. Bonjour, les boutons poussoirs sont sur le schéma de cablage (à droite, on voit les deux interrupteurs).
      A+

      Supprimer
  16. bonjour
    ok me suis aperçu de mon erreur je voulais parler de la carte relai
    merci

    RépondreSupprimer
    Réponses
    1. ça ne coute rien tout fait (1€). Je pense qu'il vaut donc mieux l'acheter toute faite. Elles ont des optocoupleurs, ça évite les retours de la bobine du relai vers le arduino (ce qui détruit les sorties rapidement). Il y a ce modèle par exemple: http://www.ebay.com/itm/5V-Active-Low-1-Channel-Relay-Module-Board-for-Arduino-PIC-AVR-MCU-DSP-ARM-DT-/252408882683?hash=item3ac4bde5fb:g:0QwAAOSw0QFXCxYH
      A+

      Supprimer
  17. bonsoir Antoine
    je viens de réaliser le montage sans la partie carte relais est ce que l'afficheur devrais afficher quelques chose ? parce que j'ai l'afficheur qui affiche que des symboles par contre la fonction rétro éclairage fonctionne
    merci

    RépondreSupprimer
    Réponses
    1. ça doit être un problème de cablage de l'ecran lcd (les 4 fils jaunes).
      En regardant mon schéma et le programme, j'ai l'impression qu'il y a 2 problèmes:
      Je pense que pour marcher avec ce schéma, le code devrait plutôt être:

      LiquidCrystal lcd(11, 12, 5, 4, 3, 2);

      J'ai aussi l'impression qu'il y a une inversion sur le schéma entre les fils 3 et 4 qui arrivent à l'écran LCD (le bleu du potentiometre et le orange à côté).
      C'était surtout un schéma de principe. Il faut toujours vérifier les câblage avec les datasheets.
      Tu as toutes les infos ici par exemple: https://www.arduino.cc/en/uploads/Tutorial/LCD_Base_bb_Schem.png
      A+

      Supprimer
  18. bonjour Antoine
    une autre chose quand je programme j'ai une erreur a la ligne 172
    lcd.write(0); // impression des caractères chat
    message d'érreur
    Call of overloaded 'write (int)' is ambiguous
    une idée

    RépondreSupprimer
  19. bonjour
    plus de message d’erreur pendant la programmation avec les diverses modifications effectués mais l'afficheur affiche n'importe quoi a l'écran une idée

    RépondreSupprimer
    Réponses
    1. C'est que le cablage ne correspond pas au programme.
      Tout est dans la ligne là:
      LiquidCrystal lcd(11, 12, 5, 4, 3, 2);

      Tu as vérifié que l'ordre des entrées/sorties correspond au cablage?

      Supprimer
  20. bonjour
    ok cela fonctionne merci pour ton aide

    RépondreSupprimer
  21. Bonjour,
    Serait-il possible d'avoir la référence du moteur utilisé dans ce montage ?
    Au passage, très belle réalisation
    Cdlt
    Jimmy

    RépondreSupprimer
  22. Bonjour,

    C'est un moteur pas à pas qui est utilisé ?

    Je vais essayer de faire un distributeur équivalent avec un raspberry pi qui traine.

    Bonne journée.

    RépondreSupprimer
  23. Bonjour,
    super montage, mais j'ai un petit problème avec l'écran LCD.
    pourriez-vous donner quel est le type de l'écran LCD graphique, parce que sur l'écran de la photo 2*16, rien ne fonctionne.
    Merci d'avance et encore super

    RépondreSupprimer
  24. Bonjour,
    j'ai réalisé le programme tel que téléchargé et corrigé le schéma le rétroéclairage fonctionne parfaitement mais rien ne s'affiche sauf si j'enlève le switch (mode) alors CatOmatic apparaît ainsi que le chat qui fait un clin d’œil et le compte a rebours.Une idée peut-être je suis tout nouveau dans la communauté arduino. Merci d'avance pour votre réponse

    RépondreSupprimer
  25. Désormais plus besoin de le fabriquer soit même on en trouve à bat coût...

    Plusieurs test disponibles sur : https://jaimemonanimal.fr/meilleur-distributeur-automatique-croquettes-pour-chat/

    RépondreSupprimer

Un petit commentaire, ça fait toujours plaisir!