LAIGUILLEUR Membre
Age : 73 Localisation : YVELINES -île de France Nombre de messages : 64 Date d'inscription : 13/10/2007
| Sujet: PONT TOURNANT ATLAS ET ARDUINO Dim 18 Oct 2015 - 10:12 | |
| Telecommande Pont tournant ATLAS (1 à 8 voies) avec Arduino uno et shield motor Montage sur plaque d'essai dans fritzing https://i.servimg.com/u/f21/19/07/26/23/fritzi12.jpgtélécommande utilisée: (utilisation des touches numériques 1 à Cool https://servimg.com/view/19072623/6Telecommande Pont tournant ATLAS (1 à 8 voies) avec Arduino uno et shield motor Nomenclature : Pont tournant ATLAS modifié (avec moteur bipolaire d'origine) 1 Arduino Uno 1 Shield Motor 1 télécommande (voir photo) 8 TLE4905L( capteurs magnétiques « Effet hall ») : http://pdf.datasheetcatalog.com/datasheets/270/318493_DS.pdf8 diodes LED (jaune ou verte) (position de voie) 2 diodes LED (jaune ou verte) (sens moteur) optionnel 1 Capteur infrarouge pour détection télécommande SFH5110 OU AX 1838HS 9 Résistances 10k (R1 à R8 et R17) 8 Résistances 1k (R9 à R15) 8 Résistances 3.3k (R18 à R25) Description, détails : Chacun des 8 TLE 4905 L ( capteurs magnétiques « Effet hall ») sont collés sur l’emplacement correspondant à la voie1 à voie 8 sur le plateau fixe du pont tournant, l’aimant qui active la voie est collé sur le plateau tournant du pont. (voir photo) A la mise en route, du 5v et 12v, le positionnement du pont est indiqué par la LED correspondante. L’appui sur une touche numérique de la télécommande indique la voie de destination. Le déplacement du pont est dans les 2 sens 1 .. vers ..8 ; 8… vers …1 Le positionnement est précis. Exemple : a la mise en route si voie 3 = LED voie 3 allumée Si appui sut touche 8 avance du pont vers voie 8 = LED voie 3 clignote, arrêt précis sur voie 8 = LED voie 8 allumée et extinction LED voie 3. Si LED voie 8 allumée, appui sur touche 5 retour du pont vers voie 5 led = voie 8 clignote, arrêt précis sur voie 5 = LED voie 5allumée et extinction LED voie 8. Ainsi de suite ….. Programme : (Arduino1.6.5) - Code:
-
Telecommande Pont tournant ATLAS (1 à 8 voies) avec Arduino uno et shield motor Montage sur plaque d'essai dans fritzing http://i21.servimg.com/u/f21/19/07/26/23/fritzi12.jpg télécommande utilisée: (utilisation des touches numériques 1 à Cool http://www.servimg.com/view/19072623/6 Telecommande Pont tournant ATLAS (1 à 8 voies) avec Arduino uno et shield motor Nomenclature : Pont tournant ATLAS modifié (avec moteur bipolaire d'origine) 1 Arduino Uno 1 Shield Motor
1 télécommande (voir photo) 8 TLE4905L( capteurs magnétiques « Effet hall ») : http://pdf.datasheetcatalog.com/datasheets/270/318493_DS.pdf 8 diodes LED (jaune ou verte) (position de voie) 2 diodes LED (jaune ou verte) (sens moteur) optionnel 1 Capteur infrarouge pour détection télécommande SFH5110 OU AX 1838HS 9 Résistances 10k (R1 à R8 et R17) 8 Résistances 1k (R9 à R15) 8 Résistances 3.3k (R18 à R25) Description, détails : Chacun des 8 TLE 4905 L ( capteurs magnétiques « Effet hall ») sont collés sur l’emplacement correspondant à la voie1 à voie 8 sur le plateau fixe du pont tournant, l’aimant qui active la voie est collé sur le plateau tournant du pont. (voir photo) A la mise en route, du 5v et 12v, le positionnement du pont est indiqué par la LED correspondante. L’appui sur une touche numérique de la télécommande indique la voie de destination. Le déplacement du pont est dans les 2 sens 1 .. vers ..8 ; 8… vers …1 Le positionnement est précis. Exemple : a la mise en route si voie 3 = LED voie 3 allumée Si appui sut touche 8 avance du pont vers voie 8 = LED voie 3 clignote, arrêt précis sur voie 8 = LED voie 8 allumée et extinction LED voie 3. Si LED voie 8 allumée, appui sur touche 5 retour du pont vers voie 5 led = voie 8 clignote, arrêt précis sur voie 5 = LED voie 5allumée et extinction LED voie 8. Ainsi de suite ….. Programme : (Arduino1.6.5)
[code]// 30/08/2015 // Commander un pont TOURNANT avec une t�l�commande IR #include <IRremote.h> int IR = 9; // capteur IR en broche 9 int ledV1 = 2; // led pont en voie 1 broche 2 int ledV2 = 4; // led pont en voie 2 broche 4 int ledV3 = 5; // led pont en voie 3 broche 5 int ledV4 = 6; // led pont en voie 4 broche 6 int ledV5 = 7; // led pont en voie 5 broche 7 int ledV6 = 8; // led pont en voie 6 broche 8 int ledV7 = 10; // led pont en voie 7 broche 10 int ledV8 = 18; // led pont en voie 8 broche 18 // Connecter le CIRCUIT MOTEUR SUR l'Arduino UNO const int vitesseMotB = 11; // sortie pour vitesse const int sensMotB = 13; // sorties pour commander le sens const int freinMotB = 8; // FREIN int POS = 19; // d�tection de la position du pont broche 19 (A5) int VD; // valeur de la voie de destination = Touche actionn�e int VP; // valeur de la voie de d�part du pont int Mvt; // Valeur du r�sultat de la comparaison entre voie de d�part et voie de destination int VL; // valeur de la tension lue par l'entr�e analogique (position du pont A5) int Vit = 0 ; // vitesse du moteur du pont ici 240 sur 255 au maxi
IRrecv RCEP(IR); decode_results RIR; void setup() { Serial.begin(9600); RCEP.enableIRIn(); // Commencement de la r�ception // mise en m�moire position du pont avant commande Pospont() ; // D�termination des sorties pinMode(ledV1, OUTPUT); pinMode(ledV2, OUTPUT); pinMode(ledV3, OUTPUT); pinMode(ledV4, OUTPUT); pinMode(ledV5, OUTPUT); pinMode(ledV6, OUTPUT); pinMode(ledV7, OUTPUT); pinMode(ledV8, OUTPUT); pinMode(vitesseMotB, OUTPUT); pinMode(sensMotB, OUTPUT); pinMode(freinMotB, OUTPUT);
} void loop() { digitalWrite(freinMotB,LOW); // lecture de la valeur de la tension sur l'entr�e analogique VL = analogRead(POS) ; // Appel position du pont Pospont() ; // Eteindre toutes les leds et allumer la led qui correspond � la position du pont switch (VP) // allumer led de la position du pont lors de la premi�re mise sous tension { case 1: digitalWrite (ledV1,1); break ; case 2: digitalWrite (ledV2,1); break ; case 3: digitalWrite (ledV3,1); break ; case 4: digitalWrite (ledV4,1); break ; case 5: digitalWrite (ledV5,1); break ; case 6: digitalWrite (ledV6,1); break ; case 7: digitalWrite (ledV7,1); break ; case 8: digitalWrite (ledV8,1); break ; } // lecture de la touche appuy�e sur la t�l�commande if (RCEP.decode(&RIR)) { // Traduction de touche t�l�commande IR en N�voie destination if (RIR.value == 16582903) {VD = 1 ;} if (RIR.value == 16615543) {VD = 2 ;} if (RIR.value == 16599223) {VD = 3 ;} if (RIR.value == 16591063) {VD = 4 ;} if (RIR.value == 16623703) {VD = 5 ;} if (RIR.value == 16607383) {VD = 6 ;} if (RIR.value == 16586983) {VD = 7 ;} if (RIR.value == 16619623) {VD = 8 ;} // led0() ; // �teindre toutes les leds // delay (50); switch (VD) // allumer la led de destination en clignotant { case 1: digitalWrite(ledV1,1); digitalWrite(ledV2,0); digitalWrite(ledV3,0); digitalWrite(ledV4,0); digitalWrite(ledV5,0); digitalWrite(ledV6,0); digitalWrite(ledV7,0); digitalWrite(ledV8,0); delay(1000); break ; case 2: digitalWrite(ledV2,1); digitalWrite(ledV3,0); digitalWrite(ledV4,0); digitalWrite(ledV5,0); digitalWrite(ledV6,0); digitalWrite(ledV7,0); digitalWrite(ledV8,0); digitalWrite (ledV1,0); delay(1000); break ; case 3: digitalWrite(ledV3,1); digitalWrite(ledV4,0); digitalWrite(ledV5,0); digitalWrite(ledV6,0); digitalWrite(ledV7,0); digitalWrite(ledV8,0); digitalWrite(ledV1,0); digitalWrite(ledV2,0); delay(1000); break ; case 4: digitalWrite(ledV4,1); digitalWrite(ledV5,0); digitalWrite(ledV6,0); digitalWrite(ledV7,0); digitalWrite(ledV8,0); digitalWrite(ledV1,0); digitalWrite(ledV2,0); digitalWrite(ledV3,0); delay(1000); break ; case 5: digitalWrite(ledV5,1); digitalWrite(ledV6,0); digitalWrite(ledV7,0); digitalWrite(ledV8,0); digitalWrite(ledV1,0); digitalWrite(ledV2,0); digitalWrite(ledV3,0); digitalWrite(ledV4,0); delay(1000); break ; case 6: digitalWrite(ledV6,1); digitalWrite(ledV7,0); digitalWrite(ledV8,0); digitalWrite(ledV1,0); digitalWrite(ledV2,0); digitalWrite(ledV3,0); digitalWrite(ledV4,0); digitalWrite(ledV5,0); delay(1000); break ; case 7: digitalWrite(ledV7,1); digitalWrite(ledV8,0); digitalWrite(ledV1,0); digitalWrite(ledV2,0); digitalWrite(ledV3,0); digitalWrite(ledV4,0); digitalWrite(ledV5,0); digitalWrite(ledV6,0); break ; case 8: digitalWrite(ledV8,1); digitalWrite(ledV1,0); digitalWrite(ledV2,0); digitalWrite(ledV3,0); digitalWrite(ledV4,0); digitalWrite(ledV5,0); digitalWrite(ledV6,0); digitalWrite(ledV7,0); break ; delay(1000); } //delay(50);
// Comparer la voie de d�part et la voie de destination Mvt = VD - VP ; if (Mvt == 0) // Arr�ter le pont { digitalWrite(vitesseMotB,LOW); // à l'arret delay (400); // on attend 400 milisecondes avant de couper l'alimenation du pont // pour arr�t nickel en face de la voie de destination digitalWrite(sensMotB,LOW); // arr�t du moteur digitalWrite(freinMotB,LOW); RCEP.resume(); // R�ception de la prochaine valeur } if (Mvt > 0) // Faire avancer le pont { // sens de rotation 1 : rotation inverse du sens 2 digitalWrite(sensMotB, LOW); // 1 indique niveau haut ou HIGH digitalWrite(vitesseMotB, HIGH); } if (Mvt <0) // Faire reculer le pont { // sens de rotation 2 : rotation inverse du sens 1 digitalWrite(sensMotB, HIGH); digitalWrite(freinMotB, LOW); digitalWrite(vitesseMotB, HIGH); } } } // cr�ation des fonctions void led0() // fonction �teindre toutes les leds { digitalWrite(ledV1, 0); digitalWrite(ledV2, 0); digitalWrite(ledV3, 0); digitalWrite(ledV4, 0); digitalWrite(ledV5, 0); digitalWrite(ledV6, 0); digitalWrite(ledV7, 0); digitalWrite(ledV8, 0); } void Pospont() // Mise en m�moire de la position du pont { if (VL > 990 && VL <= 1000 ) {VP = 1 ;} if (VL > 970 && VL <= 980 ) {VP = 2 ;} if (VL > 930 && VL <= 950 ) {VP = 3 ;} if (VL > 850 && VL <= 890 ) {VP = 4 ;} if (VL > 700 && VL <= 800 ) {VP = 5 ;} if (VL > 590 && VL <= 650 ) {VP = 6 ;} if (VL > 350 && VL <= 380 ) {VP = 7 ;} if (VL > 100 && VL <= 110 ) {VP = 8 ;} }[/code]
BIEN CORDIALEMENT
JEAN-LUC |
|
corwin92 Membre
Age : 51 Localisation : 78 Nombre de messages : 1809 Date d'inscription : 21/08/2007
| Sujet: Re: PONT TOURNANT ATLAS ET ARDUINO Dim 18 Oct 2015 - 12:04 | |
| Sujet intéressant. Ne manquerait-il pas des photos? Je ne vois pas le positionnement de l'aimant.
Je cherche à motoriser un pont peco, je vais étudier tout cela et je m'inspirerais probablement de ces travaux.
|
|
LAIGUILLEUR Membre
Age : 73 Localisation : YVELINES -île de France Nombre de messages : 64 Date d'inscription : 13/10/2007
| Sujet: Quelques photos techniques Lun 19 Oct 2015 - 10:21 | |
| |
|
Traindenfer Membre
Age : 62 Localisation : Montlhery (91) - Sens-Beaujeu (18) Nombre de messages : 13330 Date d'inscription : 07/09/2007
| Sujet: Re: PONT TOURNANT ATLAS ET ARDUINO Lun 19 Oct 2015 - 11:24 | |
| Je me suis beaucoup intéressé à ce pont à Sedan qui est mis en oeuvre sur Turtle Field Road, car je cherche une idée pratique pour le futur pont tournant de Ste Etagère; merci à Bubule pour les explications. Il y a un problème : Le pont ne correspond pas du tout en dimensions ce qui signifie une reprise totale du mécanisme seul et adaptation à un pont plus conforme SNCF. Au prix de la bête (dans les 260€ apparemment) on a pas intérêt à se louper. Autre solution pont PECO mécanisme lent et Arduino, pour lequel je n'ai aucune connaissance. J'ai profité de voir Piston93 pour en parler, va falloir que je m'y mette. Sinon il y a la solution mécanique par manivelle et compas dans l'oeil; mais avec 8 voies minimum en rotonde... Je ne sais donc pas quoi faire.
|
|