Maquette pédagogique d'ascenseur

De VoWiki
Aller à la navigation Aller à la recherche

AccueilNos Projets

Page d'accueil Gilles

Maquette d'ascenseur

IMG 3749.JPGIMG 3756.JPG




VoLAB

Volab.JPG

Assocation VoRoBoTics

Date : 14/03/2015

Auteur : Lecorsier Gilles

Relecteur : MajorLee

Thème : Domotique, enseignement

Projet : Ascenseur, programmation Arduino

Problématique

Le but de ce document est de présenter mon expérience et d'apporter mon aide pour éviter de perdre du temps important dans le développement de projets automatisés.

Au départ, ce travail est proposé aux élèves de 3ème de collège (voir le blog La Technologie au Collège).


Dans ce document sont abordés :

Les cartes Arduino Mega 2560 et Adafruit Motor Shield

Les branchements des capteurs et actionneurs

La programmation à l'aide d'ArduBlock, plugin (module d'extension) du logiciel Arduino de :

Contrôles et commandes à l'aide de boutons poussoirs et de capteurs fin de course

Moteur CC (à courant continu)

Servomoteur à rotation continue

La commande « Tant que ... » (while)

La boucle « Si » (if)

Sous programme


Matériel

La maquette proposée n'est qu'un support et le travail peut très bien être transféré sur un autre projet.

Cartes

La carte Arduino Mega 2560 est une carte à microcontrôleur basée sur un ATmega2560 (fiche technique).

ArduinoMega2560Front240.jpg


La carte Aafruit Motor Shield est une carte d'extension de commande de moteurs à base de L293.

L293Dmotorshield.jpg

Logiciel

Le logiciel Arduino installé (voir : http://www.arduino.cc/)

Ardublock est un plugin qui s’ajoute à l’IDE d’Arduino. (Programmation graphique), à placer dans C:\Users\nom_du_compte\Documents\Arduino\Tools\ArduBlockTool\Tool

La librairie Adafruit Motor Shield (même si elle apparaît dans Ardublock), à placer dans C:\Users\nom_du_compte\Documents\Arduino\libraries

Information (Attention au câblage présenté plus bas)

Microrupteur (fin de course) normalement ouvert.

Boutons poussoir normalement ouvert.


Actionneurs

Moto réducteur CC 1.5-3V D.C. (rapport de réduction 100:1).

Servo moteur à rotation continue 4,8 à 6V.


Préparation

Câblage des interrupteurs et boutons poussoir

Une résistance de rappel («pull-up» ou «pull-down») permet de fixer une entrée numérique à un état HIGH (haut ou 1) ou LOW (bas ou 0).

Attention car j'ai câblé les capteurs et boutons poussoir de l'ascenseur en "pull-up" et ceux de la porte en "pull-down" (erreur de débutant). Faites bien attention et choisissez plutôt le câblage en "pull-up" afin d'être en sécurité si un court circuit vous arrive (la résistance se trouve toujours entre le VCC et le GND) et de ne pas griller l'alimentation.

thumbs
Avec la résistance de rappel "pull-down", l'entrée numérique est à l'état LOW lorsque le micro-rupteur ou le bouton poussoir sont ouverts (relâchés).

Avec la résistance de rappel "pull-up", l'entrée numérique est à l'état HIGH lorsque le micro-rupteur ou le bouton poussoir sont ouverts (relâchés).
Cette information est importante car votre programme ne fonctionnera pas si vous mélangez les câblages comme j'ai pu le faire et perdre un temps important pour trouver l'erreur.


Montage de la carte Arduino Mega 2560 et la carte d'extension Adafruit Motor Shield

Megaloupe4 reperage.jpg

Le moto réducteur qui permet d'ouvrir la porte de la maquette est branché sur le bornier à vis M1.

Le servomoteur à rotation continue est branché sur le connecteur SER1.

Une alimentation stabilisée est branchée sur le bornier de l'alimentation externe. Attention aux polarités, vous risquez de griller le circuit.

Repérage des branchements

Entre parenthèses : les numéro des entrées au niveau de la carte Atmega2560. Sauf pour MA carte Adafruit.

1) Porte de la cabine

Capteur fin de course fermé (26)

Capteur fin de course ouvert (28)

Moteur cc (M1)

2) Cabine

Fin de course haut (32)

Fin de course bas (34)

Bouton appel haut (36)

Bouton appel bas (38)

Servomoteur (10)


Programmation

Scénario

- Initialisation du système :

Fermer la porte de la cabine

Descendre la cabine au rez de chaussée

- Programme :

Deux possibilités (la cabine est au rez de chaussée)

1) Une personne au rez de chaussée demande l'ouverture de la porte

La porte s'ouvre

La porte reste ouverte quelques secondes

La porte se referme

L'ascenseur monte au premier étage

L'ascenseur s’arrête

La porte s'ouvre

La porte reste ouverte quelques secondes

La porte se referme.

2) Une personne au premier étage appelle l'ascenseur.

L'ascenseur monte au premier étage

L'ascenseur s’arrête

La porte s'ouvre

La porte reste ouverte quelques secondes

La porte se referme.

L'ascenseur descend au rez de chaussée

L'ascenseur s’arrête

La porte s'ouvre

La porte reste ouverte quelques secondes

La porte se referme.

Le reste du programme est semblable lorsque l'ascenseur est au premier étage avec les deux possibilités.

Une petite variante a été ajouté dans le programme pour garder en mémoire un appel cabine lorsque celle-ci est en mouvement. Une fois la porte refermée, la cabine se remet en mouvement pour répondre à l'appel enregistré.


Programme ArduBlock

Chargement du fichier créé avec Ardublock

1) Ouvrir le logiciel Arduino

2) Dans le menu outil, lancer le plugin Ardublock.

3) Ouvrir le fichier code source clic droit "Enregistrer la cible du lien sous ..."


Description du programme

1) Initialisation (setup)

Cette partie du programme est très intéressante car elle permet de mettre votre automatisme en position de départ choisie.

La commande « Tant que ... » (while) est utilisée pour programmer les moteurs.

Initialisation.JPG


Dès le début du programme, deux variables numériques sont définies afin de mémoriser les appels de la cabine.

Memhautbas.JPG


Le moteur, branché sur le connecteur M1 tourne dans le sens permettant la fermeture des portes à une vitesse précise (200)

Attention, le contrôle de la fermeture de la porte s'effectue avec le contrôle « Tant que ... » (while). Je rappelle que mes capteurs de fin de course de la porte sont montés en "pull-down". La borne 26 correspond au capteur fin de course fermeture de la porte. Le programme boucle dans le contrôle « Tant que ... » jusqu'au moment où la valeur de la broche passe à l'état HIGH. Ensuite le moteur s’arrête (vitesse 0).

Moteurcc.JPG

Une fois la porte fermée, la cabine se met automatiquement en position basse.

Le programme de la descente s'effectue avec le contrôle « Tant que ... » (while) mais mes capteurs fin de course sont branchés en "pull-up". Je suis obligé d'inverser l'état de la broche 34 et obtenir un état LOW pour que le programme boucle dans le contrôle « Tant que ... » jusqu'au moment où la cabine appuie sur le capteur fin de course. La broche passe à l'état HIGH. Le servomoteur s'arrête.

La broche 10 du servomoteur à rotation continue permet de régler la vitesse dans un sens ou l'autre(de 0 à 180) puis l’arrêter (90)

Servomoteur.JPG

2) Le programme (boucle)

La commande « Si » (if) est utilisée afin d’obtenir plusieurs branches différentes correspondantes aux différentes possibilités de de commandes décrites dans le scénario.

La boucle « Si » (if) permet de tester l'état des variables et d'exécuter la commande si sont état est HIGH. Si la variable n'est pas valide, le programme traverse la boucle et effectue la commande suivante en dessous.

Nous voyons ici l'utilisation d'un nouveau bloc de contrôle « sous-programme » nommé porte qui appel donc le sous programme « porte »

Cabinebas.JPG


Le sous programme est rédigé dans la même fenêtre, suit les mêmes règles que le programme principal et permet d'éviter les répétitions.

Sousprogrammeporte.JPG

Fichiers sources

Pdf de cette page : [ici]

Le zip avec les images : [ici]
Le contenu de ces fichiers peut être légèrement différent de la présente page de notre wiki. Ils ont servi à la créer mais ne possèdent pas de liens directe. Nous n'avons pas encore de solution (satisfaisante à nos yeux) qui nous permette de créer la documentation en local et qu'elle soit directement transmise et surtout synchronisée en ligne.

Code Arduino et Adublock : [ici]

Licence

Ce document est mise à disposition selon les termes de la Licence Creative Commons Attribution 4.0 International.

CC88x31.png

Parternité 'by' :L'œuvre peut être librement utilisée, à la condition de l'attribuer à l'auteur en citant son nom.


Note aux auteurs de documents du VoLAB, Vous avez la possibilité de changer de licence. Mais ce serait bien de rester libre et ouvert. Encore une fois ceci est une recommandation et non une obligation.

Bibliographie

Webographie

http://fr.wikipedia.org/wiki/Licence_Creative_Commons

Ardublock

http://www.arduino.cc/

https://www.adafruit.com/products/81

blog La Technologie au Collège

Rédaction en langue française

Partant du constat de terrain qu'une énorme masse d'information concernant les sujets qui nous intéressent comme entre autres l'impression 3D n'étaient disponibles que dans la langue de Shakespeare et que de nombreuses personnes dans notre entourage ne maîtrisaient pas la dite langue et soucieux de diffuser encore plus l'information, nous avons pris le parti, au VoLAB, de rédiger nos documents de préférence en langue française.

VoLAB

Un mot sur le VoLAB. VoLAB est un fablab implanté à environ 30km au nord-ouest de Paris dans la commune de Vauréal dans l'agglomération de Cergy Pontoise. Il est animé par l'association VoRoBoTics.

Site internet www.vorobotics.com