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

16 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
  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