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.
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
8-O
RépondreSupprimerTrop la classe, la première page de HackADay :)
RépondreSupprimerJ'viens de HAD aussi !
RépondreSupprimerPlusieurs 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.
Merci pour ces idées d'amélioration.
SupprimerJe 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
Bonjour,
SupprimerPour 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+
Merci,
SupprimerJe 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+
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 !
SupprimerBonjour, 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
SupprimerD'abord: Un très bon travail!
RépondreSupprimerAprè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...
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.
SupprimerMerci pour ton intérêt.
A+
J'ai une petite suggestion pour ce qui regarde la forme de la roue.
RépondreSupprimerToujour 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.
C'est une super idée. j'essaierai dès que possible.
SupprimerMerci beaucoup
Salut,
RépondreSupprimerBon 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
Hello,
RépondreSupprimerMalgré 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
Hi, i have a question, i just need to paste the arduino code that you gave into the arduino, nothing special?
RépondreSupprimerThanks by the way.
Bonjour, j'aime vraiment votre concept et j'aimerais m'en inspirer ;-) !
RépondreSupprimerAuriez vous les mesures des pièces qui composent votre distributeur ? Notamment pour les pièces en forme d'hélice ^^
Merci d'avance ! :-)
Bonjour,
RépondreSupprimerJe 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.
Bonjour!
RépondreSupprimerJe suis aussi intéressé pour faire un distributeur pour mon chat.
Auriez-vous une liste avec les différents composants nécessaires?
Merci
un chat se regule seul donc pas utiles suiffie de veiller a qui est toujours a manger .
RépondreSupprimerBonjour,
RépondreSupprimerJe 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.
Je pense qu'il faut adapter le code pour votre afficheur (4x20) car mon code était pour un afficheur 2X18.
SupprimerIl faut mettre à la place du lcd.begin(16,2); lcd.begin(20,4);
A plus, tenez nous au courant
Bonjour,
RépondreSupprimervoici 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
Boa noite, fiquei muito interessado em seu projeto.
RépondreSupprimerPoderia me mandar relação de materiais utilizados no mesmo e código fonte??
Desde já agradeço!
Segue email: alefjordaopsa@hotmail.com
salut
RépondreSupprimersuperbe 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
Bonjour, les boutons poussoirs sont sur le schéma de cablage (à droite, on voit les deux interrupteurs).
SupprimerA+
bonjour
RépondreSupprimerok me suis aperçu de mon erreur je voulais parler de la carte relai
merci
ç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
SupprimerA+
bonsoir Antoine
RépondreSupprimerje 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
ça doit être un problème de cablage de l'ecran lcd (les 4 fils jaunes).
SupprimerEn 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+
bonjour Antoine
RépondreSupprimerune 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
Essaye ça à la place:
Supprimerlcd.write((byte)0);
bonjour
RépondreSupprimerplus 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
C'est que le cablage ne correspond pas au programme.
SupprimerTout 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?
bonjour
RépondreSupprimerok cela fonctionne merci pour ton aide
Bonjour,
RépondreSupprimerSerait-il possible d'avoir la référence du moteur utilisé dans ce montage ?
Au passage, très belle réalisation
Cdlt
Jimmy
Bonjour,
RépondreSupprimerC'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.
Bonjour,
RépondreSupprimersuper 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
Bonjour,
RépondreSupprimerj'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
Désormais plus besoin de le fabriquer soit même on en trouve à bat coût...
RépondreSupprimerPlusieurs test disponibles sur : https://jaimemonanimal.fr/meilleur-distributeur-automatique-croquettes-pour-chat/