ASCENSEUR
Introduction:
Nous allons vous présenter un projet réalisé en cours avec lassistance de nos professeurs délectronique et de mécanique: réaliser un programme similaire au programme dun ascenseur civil .Nous avons utilisé:
Un ordinateur
Le Controlboy 3
Des câbles pour réaliser la connection ordinateur/Controlboy 3
Un ascenseur de laboratoire
Des logiciels
Professeurs dans les moments difficiles
Nous présenterons notre TPE sous forme de scéances.
SEANCE n°1
Installation:
Tout dabord, pour pouvoir
réaliser ce projet , nous avons dû installer notre poste de travail.
Pour se faire, nous avons dû connecté le Controlboy à lordinateur et installé le
logiciel.
Evidemment, comme tout élève qui démarre dans ce genre de projet, nous avons dû avoir
recours à nos professeurs.
Maintenant, nous avons procédé à la connection entre l ascenseur et le Controlboy.
Câblages:
Pour réaliser ce câblage, nous avons dû choisir des entrées et sorties suivant le schéma élaboré ci-dessous :
![]() |
Le PORTA.3
est particulier parce quil peut être déclaré comme entrée ou comme sortie.
Pour le déclarer comme entrée, il faut faire le masque suivant :
![]() |
Programmation d'essai (consiste à écrire Controlboy 3 sur lafficheur du Controlboy 3):
lcdinit ()
initialisation de lafficheur lcd
Print « Controlboy 3 »
Do
PORTB.4 = 1
PORTB.3 = 0
Do
Tempo(1)
Loop
Loop
SEANCE n°2
Après avoir consulter le dossier intitulé " Basic ", nous avons pu effectuer une programmation plus délicate.
Programmation : monter et arrêter à l'étage voulu
| Do Do PORTB.4 = 1 PORTB.3 = 0 Loop until PORTA.3 =1 PORTB.4 = 0 PORTB.3 = 0 Do Tempo(1) Loop Loop |
valeur = PORTB donc monter ou descendre boucle jusqu'à ce que valeur = PORTA temporisation de sécurité |
Progammation : monter et arrêter à l'étage voulu puis
descente étage 1
Do
Do
PORTB.4 = 1
PORTB.3 = 0
Loop until PORTA.2 = 1 -->
le controlboy 3 sort de cette boucle jusqu'à ce que l'ascenseur arrive à l'étage 3
PORTB.4 = 0
PORTB.3 = 0
Tempo (100) --> temporisation d'écart entre l'enchaînement des deux boucles
Do
PORTB.4 = 0
PORTB.3 = 1
Loop until PORTA.0 = 1 -->le
Controlboy 3 boucle jusqu'à ce que valeur = PORTA
PORTB.4 = 0
PORTB.3 = 0
Do
Tempo(100)
Loop
Loop
SEANCE n°3
Pour réaliser le programme suivant, nous avions dû choisir des portes correspondant aux boutons dappel détage. Ces portes, nous les avons choisis sur lensemble des PORTE . Pour être plus en sécurité, nous avons choisi les ports E.0, correspondant à létage 1, E1, correspondant à létage 2, E4, correspondant à létage 3, E5, correspondant à létage 4 parce quelles sont protégées par des résistances.
On a alors :
Etage 1 = E0
Etage 2 = E1 = 138
Etage 3 = E4 = 152
Etage 4 = E5 = 168
Nous avons tout dabord étudié la fonction If
End .
Si lon appuie sur le bouton de PORT E on sort de la boucle :
Do
Do
- Lire le Port E
-
Loop until valeur --> On a alors testé la valeur et
appelé la procédure pour le faire monter à « létage valeur ».
Si valeur = bouton 1
Alors ascenseur à létage 1
Fin si
Si valeur = bouton 2
Alors ascenseur étage 2
Fin si
Loop
Programmation pour monter à
l'étage 2 grâce au bouton d'appel:
Do
Do
If PORTE.1 = 1 then --> le
Controlboy 3 effectue à condition que le bouton n°2 est enfoncé
PORTB.4 = 1
PORTB.3 = 0
End if
Loop until PORTA.1 = 1 --> boucle
jusquà ce que l'ascenseur atteint l'étage 2
PORTB.4 = 0
PORTB.3 = 0
Do
Tempo(1)
Loop
Loop
SEANCE n°4
Programmation: appel étage
puis descente à l'étage 1
Do
Do
If PORTE.1 = 1 then
PORTB.4 = 1
PORTB.3 = 0
End if
Loop until PORTA.1 = 1
PORTB.4 = 0
PORTB.3 = 0
Tempo(100)
Do
PORTB.4 = 0
PORTB.3 = 1
Loop until PORTA.0 = 1
PORTB.4 = 0
PORTB.3 = 0
Do
Tempo(1)
Loop
Loop
Pour réaliser le programme suivant, nous avons dû utilisé la
fonction GOSUB qui renvoie à un sous-programme extérieur à la grande boucle. Ce
sous-programme est introduit par un mot utilisé dans la boucle et est appelé «
étiquette ».
Nous avons dû trouvé les valeurs du PORTE .Nous avons alors fait appel à
une variable grâce au byte.
SEANCE n°5
Programmation : etage voulu
+ descente etage 1 à la suite quelque soit l'ordre d'appel
ALGORITHME
Faire
Faire
PORTE = variable
Boucle jusquà ce que valeur de la variable > 0
Si variable = 138 alors
Etiquette etage 2
Fin si
Si variable = 152 alors
Etiquette etage 3
Fin si
Si variable = 168 alors
Etiquette etage 4
Fin si
Boucle
Etage 2 :
Faire
Si valeur = PORTE.1 alors
PORTB.4 = 1
PORTB.3 = 0
Fin si
Boucle jusquà ce que valeur =
PORTA.1
PORTB.4 = 0
PORTB.3 = 0
Tempo(50)
Faire
PORTB.4 = 0
PORTB.3 = 1
Boucle jusquà ce que valeur = PORTA.0
PORTB.4 = 0
PORTB.3 = 0
Retour au programme
Etage 3 :
Faire
Si valeur = PORTE.4 alors
PORTB.4 = 1
PORTB.3 = 0
Fin si
Boucle jusquà ce que valeur =
PORTA.2
PORTB.4 = 0
PORTB.3 = 0
Tempo(50)
Faire
PORTB.4 = 0
PORTB.3 = 1
Boucle jusquà ce que valeur = PORTA.0
PORTB.4 = 0
PORTB.3 = 0
Retour au programme
Etage 4 :
Faire
Si valeur = PORTE.5 alors
PORTB.4 = 1
PORTB.3 = 0
Fin si
Boucle jusquà ce que valeur =
PORTA.3
PORTB.4 = 0
PORTB.3 = 0
Tempo(50)
Faire
PORTB.4 = 0
PORTB.3 = 1
Boucle jusquà ce que valeur = PORTA.0
PORTB.4 = 0
PORTB.3 = 0
Retour au programme
PROGRAMME
Do
Do
c = PORTE
tempo(1)
Loop until c > 0
If c = 138 then
Gosub etage 2
End if
If c = 152 then
Gosub etage 3
End if
If c = 168 then
Gosub etage 4
End if
Loop
etage 2 :
Do
If PORTE.1 = 1 then
PORTB.4 = 1
PORTB.3 = 0
End if
Loop until PORTA.1 = 1
PORTB.4 = 0
PORTB.3 = 0
Tempo(50)
Do
PORTB.4 = 0
PORTB.3 = 1
Loop until PORTA.0 = 1
PORTB.4 = 0
PORTB.3 = 0
Return
etage 3 :
Do
If PORTE.4 = 1 then
PORTB.4 = 1
PORTB.3 = 0
End if
Loop until PORTA.2 = 1
PORTB.4 = 0
PORTB.3 = 0
Tempo(50)
Do
PORTB.4 = 0
PORTB.3 = 1
Loop until PORTA.0 = 1
PORTB.4 = 0
PORTB.3 = 0
Return
etage 4 :
Do
If PORTE.5 = 1 then
PORTB.4 = 1
PORTB.3 = 0
End if
Loop until PORTA.3 = 1
PORTB.4 = 0
PORTB.3 = 0
Tempo(50)
Do
PORTB.4 = 0
PORTB.3 = 1
Loop until PORTA.0 = 1
PORTB.4 = 0
PORTB.3 = 0
Return
SEANCE n°6
PROGRAMME ASCENSEUR: monter ou descendre à létage demandé
Ce programme est composé de plusieurs parties
:
Première partie : déclaration et initialisation des variables
Deuxième partie : programme
PREMIERE PARTIE :
Afin davoir un langage plus compréhensible
dans le programme , nous avons défini
des variables :
byte etage,etage1,etage2,etage3,etage4,etageactuelTout dabord grâce à linstruction « byte » :
Cette instruction nous permet de déclarer des
variables dun octet.
Puis il y a linitialisation :
« lcdinit » permet
dinitialiser lafficheur lcd
Enfin nous pouvons nous-même définir des variables :
If PORTE.1 = 1 then
etage = etage2
Print "etage2"
End if
If PORTE.4 = 1 then
etage = etage3
Print "etage3"
End if
If PORTE.5 = 1 then
etage = etage4
Print "etage4"
End if
If etageactuel > etage then
Gosub descendre
End if
If etageactuel < etage then
Gosub monter
End if
Loop
Descendre :
Do
PORTB.4 = 0
PORTB.3 = 1
Tempo(1)
Loop until etage = PORTA
PORTB.4 = 0
PORTB.3 = 0
Return
Monter :
Do
PORTB.4 = 1
PORTB.3 = 0
Tempo(1)
Loop until etage = PORTA
PORTB.4 = 0
PORTB.3 = 0
Return
SEANCE n°7
Pour pouvoir allumer la lumière intérieure de l'ascenseur en cas d'obscurité, nous avons câblé une nouvelle entrée , le port A6.
DoIf PORTE.1 = 1 then
etage = etage2
Print "etage2"
End if
If PORTE.4 = 1 then
etage = etage3
Print "etage3"
End if
If PORTE.5 = 1 then
etage = etage4
Print "etage4"
End if
If etageactuel > etage then
Gosub descendre
End if
If etageactuel < etage then
Gosub monter
End if
Loop
Descendre :
Do
PORTB.4 = 0
PORTB.3 = 1
PORTA.6 = 1
Tempo(1)
Loop until etage = PORTA
PORTB.4 = 0
PORTB.3 = 0
PORTA.6 = 1
Return
Monter :
Do
PORTB.4 = 1
PORTB.3 = 0
PORTA.6 = 1
Tempo(1)
Loop until etage = PORTA
PORTB.4 = 0
PORTB.3 = 0
PORTA.6 = 1
Return
SEANCE n°8 et suivantes:
Lors des scéances suivantes nous avons préparé notre présentation de TPE et nous sommes allés chercher d'éventuelles images intéressantes pour notre exposé.
Conclusion:La difficulté a été de pouvoir passer dun
programme à un autre plus difficile.
Pour se faire, nous avions dû lire et relire les documents-ressources mis à notre
disposition ou demander de laide à nos professeurs. Notre but a été de pouvoir
réaliser un programme dascenseur réel en y intégrant les quatre boutons
dappel mais nous avions voulu aller plus loin en y intégrant les priorités
détage mais en vain.
Ce programme fut dun niveau supérieur.