| TCO du réseau SavignyExpress | |
|
+8Jack84 ptitrainrouge danber ekta95 CleoN Gabydemarseille romilly SavignyExpress 12 participants |
|
Auteur | Message |
---|
SavignyExpress Membre
Age : 61 Localisation : yyy Nombre de messages : 2043 Date d'inscription : 10/10/2010
| Sujet: TCO du réseau SavignyExpress Sam 11 Déc 2010 - 13:59 | |
| Bonjour à tous, Voici quelques images de mon TCO:
- À gauche: la commande des aiguillages et des alimentations de la gare.
- À droite: 4 régulateurs traction pour: la voie à crémaillère, la zone de manoeuvre, la boucle extérieure, la boucle intérieure.
- En haut: la commande va-et-vient pour la voie à crémaillère, repris de: http://www.ptitrain-forum.com/viewtopic.php?f=6&t=26
Les 2 TJDs et aiguillages de la gare sont couplés à l'alimentation des voies de gare. Les aiguillages de la zone manoeuvre sont commandés par une matrice de diodes. Les circuits de commande:
- sur la platine de gauche, un microcontrôleur Attiny2313 et les relais (petits boîtiers bleus) de commande des aiguillages,
- sur la platine de droite, les relais de distribution des alimentations en gare et zone de manoeuvre.
Les 4 régulateurs traction, achetés sur Internet. À votre disposition pour de plus amples informations |
|
| |
romilly Membre
Age : 77 Localisation : Romilly-sur-seine - Aube Nombre de messages : 3246 Date d'inscription : 18/11/2009
| Sujet: Re: TCO du réseau SavignyExpress Sam 11 Déc 2010 - 14:52 | |
| la partie câblage des réseaux m'impressionnent toujours.
en tout cas travail propre et soigné.. Je prends de note..
|
|
| |
Gabydemarseille Membre
Age : 75 Localisation : Marseille Nombre de messages : 5717 Date d'inscription : 17/07/2008
| |
| |
CleoN Membre
Age : 69 Localisation : 33 Bouliac Nombre de messages : 1624 Date d'inscription : 26/11/2010
| Sujet: Re: TCO du réseau SavignyExpress Sam 11 Déc 2010 - 18:13 | |
| Bravo, travail très propre.
Peux tu nous dire les fonctions réalisées avec le micro-contrôleur?
Amicalement
|
|
| |
ekta95 Membre
Age : 78 Localisation : Coteaux d'Argenteuil Nombre de messages : 1019 Date d'inscription : 06/10/2009
| Sujet: Re: TCO du réseau SavignyExpress Lun 13 Déc 2010 - 16:44 | |
| - romilly a écrit:
la partie câblage des réseaux m'impressionnent toujours.
en tout cas travail propre et soigné.. Je prends de note.. C'est vrai que c'est très impressionnant. Moi en plus je trouve que c'est visuellement beau, très beau Chapeau |
|
| |
Invité Invité
| Sujet: Re: TCO du réseau SavignyExpress Lun 13 Déc 2010 - 17:24 | |
| bravo,travail de pro....... sympa ces régulateurs...... |
|
| |
SavignyExpress Membre
Age : 61 Localisation : yyy Nombre de messages : 2043 Date d'inscription : 10/10/2010
| Sujet: Re: TCO du réseau SavignyExpress Lun 13 Déc 2010 - 20:17 | |
| - CleoN a écrit:
- Peux tu nous dire les fonctions réalisées avec le micro-contrôleur?
Mon réseau comporte 3 régulateurs de traction indépendants représentés dans les schémas ci-après par les couleurs rouge, bleue et jaune. Les régulateurs rouge et bleu alimentent les circuits intérieur et extérieurs. Le régulateur jaune peut alimenter la zone de manoeuvre. Le microcontrôleur gère l'alimentation des voies de gare (1, 2 et 3), des zones d'isolation à gauche et à droite des voies 1 et 2; ainsi que les TJD1 & 2 et AIG1 & 2. Le système peut prendre 6 états différents. État | Description | | État initial au démarrage du microcontrôleur. | | L'alimentation rouge est sur la voie 1. | | L'alimentation bleue est sur la voie 2, l'alimentation jaune est sur la zone de manoeuvre. On voit que la zone manoeuvre est isolée du reste du réseau pour éviter les collisions. Les trains arrivant du circuit intérieur sont bloqués à l'entrée en gare. | | La même chose, mais cette fois l'alimentation bleue est sur la voie 1. | | Tandis que la zone de manoeuvre est toujours alimentée par le régulateur jaune, la voie 2 est alimentée par le régulateur rouge. | | La voie 1 peut aussi être alimentée par le régulateur rouge. |
À noter que ce système ne détecte pas les trains, ses entrées sont les boutons poussoir du TCO, ses sorties des relais et des LEDs sur le TCO. Les boutons poussoirs rouge, bleue et jaune sur le TCO permettent de choisir l'alimentation des voies 1, 2 et 3. TDJ1 & 2, AIG1 & 2 sont commandés en conséquence. Pour éviter de tirer trop de courant de l'alimentation accessoire, le microcontrôleur commande d'abord les TDJ, puis les AIG. Les LEDs rouge, bleue et jaune représentent les états ci-dessus. Le développement du programme du microcontrôleur se fait sous Linux: il est écrit en C, compilé avec avr-gcc et téléchargé dans le microcontrôleur avec avrdude. Les autres aiguillages sont commandés par les boutons poussoir blanc. Les LEDs vertes indiquent la position des aiguillages en tirant parti des contacts de fin de course. L'alimentation des voies de garage est simplement contrôlée via les aiguillages (fonction "stop" activée en enlevant les contacts entre rails et coeur, cf. doc. Minitrix).
Dernière édition par SavignyExpress le Jeu 12 Mai 2011 - 12:29, édité 2 fois |
|
| |
danber Membre
Age : 81 Localisation : aurillac Nombre de messages : 70 Date d'inscription : 25/10/2009
| Sujet: Re: TCO du réseau SavignyExpress Mer 15 Déc 2010 - 18:36 | |
| pas mal ce TCO, cela donne des idées. merci et bravo |
|
| |
SavignyExpress Membre
Age : 61 Localisation : yyy Nombre de messages : 2043 Date d'inscription : 10/10/2010
| Sujet: Re: TCO du réseau SavignyExpress Ven 8 Juil 2011 - 12:40 | |
| Voici le code source du programme qui gère mon TCO. Les conventions de noms sont les suivantes:
- 1, 2, 3: numéros des voies en partant de la gare.
- A, B: alimentations traction du circuit intérieur et du circuit extérieur. En rouge, respectivement bleu sur le TCO. Couleurs correspodant aussi aux boutons poussoir.
- C: alimentation traction de la zone marchandise, peut être commutée avec l'alimentation B. En jaune sur la description des états du TCO. Couleur correspondant aussi au bouton poussoir.
- B_A1, B_A2, etc: pressions sur le poussoir A1, A2, etc. Le bouton A1 alimente la voie 1 avec le circuit A (rouge) et ainsi de suite.
- Les états sont nommés: AXB, XAB, AXC, etc. Il s'agit des états possibles des 3 voies de gare:
- AXB: voie 1 alimentée par A, voie 2 non alimentée, voie 3 alimentée par B.
- XAB: voie 1 non alimentée, voie 2 alimentée par A, voie 3 alimentée par B.
- AXC: voie 1 alimentée par A, voie 2 non alimentée, voie 3 alimentée par C.
La commande des aiguillages se fait par la fonction CommanderTdjAig dont le but est de commander séparément les TJDs et aiguillages de la gare, ce qui évite de tirer trop de courant de l'alimentation. Il y a aussi quelques fonctions qui ne servent qu'à simuler le programme en le faisant tourner sur PC: GetTexteEvt, GetTexteEtat, GetTexteAiguillage, AfficherEtat, - Code:
-
// // Maquette.c // // Programme de contrôle de la maquette "Savigny Express". // // 2009.09.11 MHP Création. // 2009.10.06 MHP Simplificatin de la machine d'états. // 2009.10.10 MHP Début des tests avec les E/S de l'AVR. // 2009.10.14 MHP Commande momentanée des aiguillages. // 2009.11.04 MHP Debug amélioré de la commande des aiguillages. // 2009.11.08 MHP Ajout de la commande du bit bSela12, oubli ! // 2010.02.11 MHP Correction des reactions a l'evenement C3. // // Directives de compilation: PC ou AVR. //
#ifdef AVR #include <inttypes.h> #include <avr/io.h>
#define F_CPU 1000000UL #include <util/delay.h>
// Période en ms. #define PERIODE 50
// Boutons poussoirs. #define BOUTONS PINB #define B_A1 _BV(PD6) #define B_A2 _BV(PB0) #define B_B1 _BV(PB1) #define B_B2 _BV(PB2) #define B_B3 _BV(PB3) #define B_C3 _BV(PB4) #define P_A1 (!(PIND & B_A1)) #define P_A2 (!(PINB & B_A2)) #define P_B1 (!(PINB & B_B1)) #define P_B2 (!(PINB & B_B2)) #define P_B3 (!(PINB & B_B3)) #define P_C3 (!(PINB & B_C3))
// Sorties. #define SetTJD_D (PORTD |= _BV(PD0)) #define ClrTJD_D (PORTD &= ~_BV(PD0)) #define SetTJD_N (PORTD |= _BV(PD1)) #define ClrTJD_N (PORTD &= ~_BV(PD1))
#define SetAIG_D (PORTA |= _BV(PA1)) #define ClrAIG_D (PORTA &= ~_BV(PA1)) #define SetAIG_N (PORTA |= _BV(PA0)) #define ClrAIG_N (PORTA &= ~_BV(PA0))
#define SetSelAB (PORTD |= _BV(PD2)) #define ClrSelAB (PORTD &= ~_BV(PD2)) #define SetSel12 (PORTD |= _BV(PD3)) #define ClrSel12 (PORTD &= ~_BV(PD3)) #define SetSel3 (PORTD |= _BV(PD4)) #define ClrSel3 (PORTD &= ~_BV(PD4)) #define SetSela12 (PORTD |= _BV(PD5)) #define ClrSela12 (PORTD &= ~_BV(PD5))
// Configuration des ports #define CONFIG_DDRA (_BV(PA0)|_BV(PA1))
#define CONFIG_DDRB ~(B_A2|B_B1|B_B2|B_B3|B_C3); #define CONFIG_PULLUPB (B_A2|B_B1|B_B2|B_B3|B_C3);
#define CONFIG_DDRD ~(B_A1) #define CONFIG_PULLUPD B_A1 #endif
#ifdef PC #include <stdio.h> #endif
#define NB_PERIODES 4
// Etats: nommés à partir de l'état // des voies de gares 1, 2 et 3. enum tEtat {AXB, XAB, AXC, XAC, BXC, XBC}; enum tEtat eEtat;
// Evénements: nommés à partir de la source à connecter à chaque voie. enum tEvt {A1, B1, A2, B2, B3, C3};
// Commandes des relais. short bSelAB; short bSel12; short bSel3; short bSela12;
// Positions et commandes des aiguillages. enum tPosition {NORMAL, DEVIE}; enum tPosition ePosJonctions; enum tPosition ePosAiguillages;
enum tCommandeAig {IDLE, TJD, AIG} eCommandeAig; short nNbPeriodes;
// Pour compter les tests en mode PC. #ifdef PC int nTest; #endif
char *GetTexteEvt(enum tEvt xEvt) { #ifdef PC switch(xEvt) { case A1: return("A1"); case B1: return("B1"); case A2: return("A2"); case B2: return("B2"); case B3: return("B3"); case C3: return("C3"); } // switch #endif } // GetTexteEvt
char *GetTexteEtat(enum tEtat xEtat, short xVoie) { #ifdef PC switch(xEtat) { case AXB: if(xVoie == 1) return("A"); if(xVoie == 2) return("X"); if(xVoie == 3) return("B");
case XAB: if(xVoie == 1) return("X"); if(xVoie == 2) return("A"); if(xVoie == 3) return("B"); case AXC: if(xVoie == 1) return("A"); if(xVoie == 2) return("X"); if(xVoie == 3) return("C");
case XAC: if(xVoie == 1) return("X"); if(xVoie == 2) return("A"); if(xVoie == 3) return("C");
case BXC: if(xVoie == 1) return("B"); if(xVoie == 2) return("X"); if(xVoie == 3) return("C");
case XBC: if(xVoie == 1) return("X"); if(xVoie == 2) return("B"); if(xVoie == 3) return("C"); } // switch #endif } // GetTexteEtat
char *GetTexteAiguillage(enum tPosition xPos) { #ifdef PC switch (xPos) { case NORMAL: return("N"); case DEVIE: return("D"); } // switch #endif } // GetTexteAiguillage
void AfficherEtat(void) { #ifdef PC #define V1 GetTexteEtat(eEtat, 1) #define V2 GetTexteEtat(eEtat, 2) #define V3 GetTexteEtat(eEtat, 3) #define J (bSelAB ? "B" : "A") #define A (bSela12 ? "X" : "B") #define P2 (bSelAB ? "X" : "A") #define P3 (bSel3 ? "X" : "B") #define PJ GetTexteAiguillage(ePosJonctions) #define PA GetTexteAiguillage(ePosAiguillages) #define FA (bSelAB ? "R" : "V") #define FB (bSela12 ? "R" : "V")
printf(" /------%s------\\ \n", V1); printf("%s----%s--%s%s-------%s------%s%s--%s--%s\n", FA, P2, J, PJ, V2, PJ, J, P2, FA); printf("%s------%s%s%s-------%s-------%s%s%s---%s\n", FB, A, PA, P3, V3, P3, PA, A, FB); #if 0 printf("Rel selAB: %d : %s\n", bSelAB, (bSelAB ? "B" : "A")); printf("Rel sel12: %d : %s\n", bSel12, (bSel12 ? "1" : "2")); printf("Rel sel3: %d : %s\n", bSel3, (bSel3 ? "X" : "B")); printf("Rel sela12: %d : %s\n", bSela12, (bSela12 ? "X" : "B")); #endif printf("\n"); #endif } // AfficherEtat
void CommanderTjdAig(void) { #if 0 printf ("CommanderTjdAig, periodes: %d\n", nNbPeriodes); #endif
switch (eCommandeAig) { case TJD: if (nNbPeriodes == 0) { #ifdef AVR ClrTJD_D; ClrTJD_N; ClrAIG_D; ClrAIG_N; (ePosJonctions == DEVIE ? SetTJD_D : SetTJD_N); #endif
#ifdef PC (ePosJonctions == DEVIE ? printf("\tTJD DEV\n") : printf("\tTJD NOR\n")); #endif } else if (nNbPeriodes == (NB_PERIODES / 2)) { #ifdef AVR ClrTJD_D; ClrTJD_N; (ePosAiguillages == DEVIE ? SetAIG_D : SetAIG_N); #endif
#ifdef PC printf("\tTJD --\n"); (ePosAiguillages == DEVIE ? printf("\tAIG DEV\n") : printf("\tAIG NOR\n")); #endif
eCommandeAig = AIG; } // if nNbPeriodes++; break;
case AIG: if (nNbPeriodes == NB_PERIODES) { #ifdef AVR ClrTJD_D; ClrTJD_N; ClrAIG_D; ClrAIG_N; #endif
eCommandeAig = IDLE;
#ifdef PC printf("\tAIG --\n"); #endif
nNbPeriodes = 0; } else nNbPeriodes++; break;
case IDLE: break; } // switch } // CommanderTjdAig
void DefinirSorties(void) { switch(eEtat) { case AXB: bSelAB = 0; bSel12 = 1; bSela12 = 0; bSel3 = 0; ePosJonctions = DEVIE; ePosAiguillages = NORMAL; break;
case XAB: bSelAB = 0; bSel12 = 0; bSela12 = 0; bSel3 = 0; ePosJonctions = NORMAL; ePosAiguillages = NORMAL; break;
case AXC: bSelAB = 0; bSel12 = 1; bSela12 = 1; bSel3 = 1; ePosJonctions = DEVIE; ePosAiguillages = NORMAL; break;
case XAC: bSelAB = 0; bSel12 = 0; bSela12 = 1; bSel3 = 1; ePosJonctions = NORMAL; ePosAiguillages = NORMAL; break;
case BXC: bSelAB = 1; bSel12 = 1; bSela12 = 0; bSel3 = 1; ePosJonctions = NORMAL; ePosAiguillages = DEVIE; break;
case XBC: bSelAB = 1; bSel12 = 0; bSela12 = 0; bSel3 = 1; ePosJonctions = DEVIE; ePosAiguillages = DEVIE; break; } // switch
#ifdef AVR (bSelAB ? SetSelAB : ClrSelAB); (bSel12 ? SetSel12 : ClrSel12); (bSel3 ? SetSel3 : ClrSel3); (bSela12 ? SetSela12 : ClrSela12); #endif eCommandeAig = TJD; } // DefinirSorties
void SimulerTimeouts(void) { #ifdef PC int nNbTimeouts;
// On simule quelques timeouts for(nNbTimeouts = 0; nNbTimeouts < 8; nNbTimeouts++) CommanderTjdAig(); #endif } // SimulerTimeouts
void TraiterEtat(enum tEvt xEvt) { enum tEtat eProchEtat;
#ifdef PC printf("%02d: Evénement: %s\n", ++nTest, GetTexteEvt(xEvt)); #endif
switch(eEtat) { case AXB: if (xEvt == A1) eProchEtat = AXB; if (xEvt == B1) eProchEtat = BXC; if (xEvt == A2) eProchEtat = XAB; if (xEvt == B2) eProchEtat = XBC; if (xEvt == B3) eProchEtat = AXB; if (xEvt == C3) eProchEtat = AXC; break; case XAB: if (xEvt == A1) eProchEtat = AXB; if (xEvt == B1) eProchEtat = BXC; if (xEvt == A2) eProchEtat = XAB; if (xEvt == B2) eProchEtat = XBC; if (xEvt == B3) eProchEtat = XAB; if (xEvt == C3) eProchEtat = XAC; break;
case AXC: if (xEvt == A1) eProchEtat = AXC; if (xEvt == B1) eProchEtat = BXC; if (xEvt == A2) eProchEtat = XAC; if (xEvt == B2) eProchEtat = XBC; if (xEvt == B3) eProchEtat = AXB; if (xEvt == C3) eProchEtat = AXC; break;
case XAC: if (xEvt == A1) eProchEtat = AXC; if (xEvt == B1) eProchEtat = BXC; if (xEvt == A2) eProchEtat = XAC; if (xEvt == B2) eProchEtat = XBC; if (xEvt == B3) eProchEtat = XAB; if (xEvt == C3) eProchEtat = XAC; break;
case BXC: if (xEvt == A1) eProchEtat = AXC; if (xEvt == B1) eProchEtat = BXC; if (xEvt == A2) eProchEtat = XAC; if (xEvt == B2) eProchEtat = XBC; if (xEvt == B3) eProchEtat = AXB; if (xEvt == C3) eProchEtat = BXC; break;
case XBC: if (xEvt == A1) eProchEtat = AXC; if (xEvt == B1) eProchEtat = BXC; if (xEvt == A2) eProchEtat = XAC; if (xEvt == B2) eProchEtat = XBC; if (xEvt == B3) eProchEtat = XAB; if (xEvt == C3) eProchEtat = XBC; break;
default: break; } // switch
// Ne changer les sorties que si l'état a changé. if (eProchEtat != eEtat) { eEtat = eProchEtat; DefinirSorties(); } // if
AfficherEtat(); SimulerTimeouts(); } // TraiterEtat
void main(void) { eEtat = XAB; eCommandeAig = IDLE; nNbPeriodes = 0; DefinirSorties();
#ifdef AVR // Entrées à droite du chip avec pull-ups. // Sorties à gauche du chip. DDRA = CONFIG_DDRA; DDRB = CONFIG_DDRB; PORTB = CONFIG_PULLUPB; DDRD = CONFIG_DDRD; PORTD = CONFIG_PULLUPD;
while (1) { if (P_A1) TraiterEtat(A1); if (P_A2) TraiterEtat(A2); if (P_B1) TraiterEtat(B1); if (P_B2) TraiterEtat(B2); if (P_B3) TraiterEtat(B3); if (P_C3) TraiterEtat(C3);
CommanderTjdAig(); _delay_ms(PERIODE); } // while #endif
#ifdef PC nTest = 0; printf("*** Etat initial ***\n"); AfficherEtat(); SimulerTimeouts();
TraiterEtat(C3); TraiterEtat(A1); TraiterEtat(B1); TraiterEtat(B2); TraiterEtat(B3); TraiterEtat(A1); TraiterEtat(B1); TraiterEtat(B3); TraiterEtat(B2); TraiterEtat(A1); TraiterEtat(A2); TraiterEtat(B3); TraiterEtat(B1); TraiterEtat(A2); TraiterEtat(B3); TraiterEtat(A1); TraiterEtat(C3); TraiterEtat(B3); TraiterEtat(A2); TraiterEtat(C3); TraiterEtat(B1); TraiterEtat(B3); #endif } // main |
|
| |
Invité Invité
| Sujet: Re: TCO du réseau SavignyExpress Ven 8 Juil 2011 - 13:12 | |
| Très beau travail tant au niveau informatique que du TCO en lui-même. |
|
| |
ptitrainrouge Membre
Age : 59 Localisation : le havre Nombre de messages : 4182 Date d'inscription : 18/04/2010
| Sujet: Re: TCO du réseau SavignyExpress Ven 8 Juil 2011 - 21:02 | |
| c'est super impressionnant tout cela c'est du travail de pro ptitrainrouge |
|
| |
Jack84 membre s'en étant allé
Nombre de messages : 1999 Date d'inscription : 25/07/2008
| Sujet: Re: TCO du réseau SavignyExpress Sam 9 Juil 2011 - 10:11 | |
| BRAVO, c'est du cablâge comme j'aime. Et ton tableau est très chouette. |
|
| |
Décau45 Membre
Age : 73 Localisation : Nord Loiret, 45 Nombre de messages : 201 Date d'inscription : 18/01/2009
| Sujet: Re: TCO du réseau SavignyExpress Mer 4 Jan 2012 - 22:50 | |
| Bonjour,
je n'avais pas encore vu. Quelle belle réalisation, et des explications très claires.
Félicitations. |
|
| |
SavignyExpress Membre
Age : 61 Localisation : yyy Nombre de messages : 2043 Date d'inscription : 10/10/2010
| Sujet: Re: TCO du réseau SavignyExpress Sam 7 Jan 2012 - 16:54 | |
| Merci à tous les membres pour leurs compliments !
Tous mes meilleurs voeux pour l'année 2012. |
|
| |
Yoko Membre
Age : 45 Localisation : La Tourlandry, 49120 Nombre de messages : 540 Date d'inscription : 07/12/2011
| Sujet: Re: TCO du réseau SavignyExpress Sam 7 Jan 2012 - 23:17 | |
| Jolie travail, la partie électronique est bien réalisé. Je ne sait pas qu'elle est ton métier ... mais ta prog du µP en C est bien sympas. Dire que je recule pour m'y remettre, alors que j'ai tout à y gagner ... |
|
| |
class66 Membre
Age : 70 Localisation : 75 PARIS Nombre de messages : 438 Date d'inscription : 05/10/2008
| Sujet: Re: TCO du réseau SavignyExpress Dim 8 Jan 2012 - 10:50 | |
| Superbe réalisation... Questions : comment as-tu réalisé la partie TCO "blanche" (interrupteur, leds, piste symbolisant les voies...) ? --> plaque plexiglas + feuille de papier blanc imprimée ? --> comment sont posées les leds ? (par "en-dessous" ?)... Bref quelques explications supplémentaires satisferaient ma curiosité pour réaliser à mon tour un TCO "pro". Merci d'avance. Bravo pour la réalisation... |
|
| |
liebaut Membre
Age : 28 Localisation : contrevoz (petit bled) Nombre de messages : 8371 Date d'inscription : 10/11/2010
| Sujet: Re: TCO du réseau SavignyExpress Dim 8 Jan 2012 - 11:17 | |
| Super TCO |
|
| |
CleoN Membre
Age : 69 Localisation : 33 Bouliac Nombre de messages : 1624 Date d'inscription : 26/11/2010
| Sujet: Re: TCO du réseau SavignyExpress Dim 8 Jan 2012 - 11:21 | |
| Ne recule plus, Yoko, l'univers des microcontrôleur est passionnant et particulièrement bien adapté à notre hobby.
Les outils logiciel sont gratuit et l'investissement faible.
Pour tout ceux qui sont allergique au fer à souder et qui veulent se lancer quand meme, je recommande les plateformes ARDUINO, qui permettent de se faire la main avec des librairies toutes faites et un langage simplifié.
|
|
| |
Yoko Membre
Age : 45 Localisation : La Tourlandry, 49120 Nombre de messages : 540 Date d'inscription : 07/12/2011
| Sujet: Re: TCO du réseau SavignyExpress Dim 8 Jan 2012 - 11:43 | |
| Le pire sait que j'ai tout le matos ... Un PicKit2 pour la programmation, MPlab pour le débogage ... Je préfère le Hard, même mes collègue au bureau se demande ce que j'attends.
Je ne suis que technicien CAO, du développement je n'en fais que dans mon garage, et puis un peu de dépannage pour les amis. |
|
| |
CleoN Membre
Age : 69 Localisation : 33 Bouliac Nombre de messages : 1624 Date d'inscription : 26/11/2010
| Sujet: Re: TCO du réseau SavignyExpress Dim 8 Jan 2012 - 12:45 | |
| - Yoko a écrit:
- Le pire sait que j'ai tout le matos ...
Un PicKit2 pour la programmation, MPlab pour le débogage ... Je préfère le Hard, même mes collègue au bureau se demande ce que j'attends.
Je ne suis que technicien CAO, du développement je n'en fais que dans mon garage, et puis un peu de dépannage pour les amis. Allez, hop ! au boulot, aucune excuse ne sera acceptée. Il n'y a pas besoin d'un gros bagage technique pour programmer des microcontroleurs, Commence par des choses simples, Allumer la cabane du garde barrière quand le train arrive et l'éteindre 1minute après. Fais un séquencement des lumières dans un immeuble ou une ville etc.... Un site pour se rendre compte. http://www.pobot.org/Debuter-avec-une-carte-Arduino.html |
|
| |
Yoko Membre
Age : 45 Localisation : La Tourlandry, 49120 Nombre de messages : 540 Date d'inscription : 07/12/2011
| Sujet: Re: TCO du réseau SavignyExpress Dim 8 Jan 2012 - 13:18 | |
| Je les est en plus les bagages technique avec mon BTS en électronique ... J'adore programmer les pics en plus, on fait plein de chose avec, et comme il y en plein, il y a toujours le PIC qui vas bien.
Punaisse, faut que je m'y remette. Bon aller, je finis mon block feux, et je m'y remet.
Merci pour le lien, cela vas m'aider à m'y remettre. |
|
| |
Décau45 Membre
Age : 73 Localisation : Nord Loiret, 45 Nombre de messages : 201 Date d'inscription : 18/01/2009
| Sujet: Re: TCO du réseau SavignyExpress Dim 8 Jan 2012 - 18:34 | |
| bonjour,
pour Yoko, je vois que tu as les outils pour démarrer.
Regarde en complément "mikroBasic Pro for PIC" la version gratuite permet d'avoir des programmes jusqu'à 2ko.
Bonnes réalisations. |
|
| |
SavignyExpress Membre
Age : 61 Localisation : yyy Nombre de messages : 2043 Date d'inscription : 10/10/2010
| Sujet: Re: TCO du réseau SavignyExpress Lun 9 Jan 2012 - 12:15 | |
| Bonjour à tous, Voici les réponses à vos questions: - Yoko a écrit:
- Jolie travail, la partie électronique est bien réalisé.
Je ne sait pas qu'elle est ton métier ... mais ta prog du µP en C est bien sympas. Dire que je recule pour m'y remettre, alors que j'ai tout à y gagner ... Merci pour le compliment ! Je suis ingénieur informaticien et dans les années 1989 - 1995, j'ai fait beaucoup de développement en C de systèmes à microprocesseurs dans le domaine des télécommunications... Cela aide un peu. J'ai aussi mis du temps à me décider à développer pour microcontrôleurs chez moi, mais finalement les débuts ont été très encourageants. Un ami m'a mis le pied à l'étrier en me fournissant le programmateur et de la doc. sur la famille AVR. Ensuite, une soirée pour tester sous Windows, une autre pour tester sous Linux, chaque fois avec le clignotement d'une LED. Ensuite, j'ai pu me mettre au développement de mon TCO. - class66 a écrit:
- Superbe réalisation...
Questions : comment as-tu réalisé la partie TCO "blanche" (interrupteur, leds, piste symbolisant les voies...) ? --> plaque plexiglas + feuille de papier blanc imprimée ? --> comment sont posées les leds ? (par "en-dessous" ?)... Bref quelques explications supplémentaires satisferaient ma curiosité pour réaliser à mon tour un TCO "pro". Merci d'avance. Bravo pour la réalisation... Merci pour le compliment ! La base du TCO est une plaque d'aluminium. La partie blanche est produite à l'aide de PowerPoint (certainement que tout autre logiciel de dessin conviendrait aussi) puis imprimée. Le dessus est un plastique transparent (plexiglas ou autre). Le plus difficile était de percer la plaque d'aluminium et celle de plastique à l'identique. J'ai procédé comme suit:
- Faire une version spéciale du dessin comportant les endroits où percer.
- Percer la plaque d'aluminium en servant du dessin avec le plan de perçage.
- Fixer le plastique transparent sur la plaque d'aluminium à l'aide de scotch.
- Retourner le tout et percer le plastique transparent en servant de la plaque d'aluminium comme gabarit de perçage.
Ce sont les boutons-poussoirs et les vis dans les angles qui tiennent l'ensemble. Les LEDs sont simplement emboîtées avec une pointe de colle UHU au verso. Meilleurs voeux pour 2012. |
|
| |
class66 Membre
Age : 70 Localisation : 75 PARIS Nombre de messages : 438 Date d'inscription : 05/10/2008
| Sujet: Re: TCO du réseau SavignyExpress Mar 10 Jan 2012 - 23:37 | |
| Bonsoir SavignyExpress,
Un grand merci pour tes explications... J'ai réalisé un TCO avec une feuille de plexiglass qui recouvre une feuille blanche imprimée (avec le logiciel "TCI" gratuit - Tracé de Circuit Imprimé. L'inconvénient est que le plexiglass diffuse la lumière des leds... Je vais ajouter une plaque d'alu... A+++ |
|
| |
SavignyExpress Membre
Age : 61 Localisation : yyy Nombre de messages : 2043 Date d'inscription : 10/10/2010
| Sujet: Re: TCO du réseau SavignyExpress Mer 25 Jan 2012 - 12:19 | |
| Bonjour à tous, Voici quelques compléments d'information sur la structure de mon programme en C. La structure générale du programme est une boucle infinie, comme toujours sur un microcontrôleur où un programme ne se termine jamais, dont la structure est la suivante:
- Lire les entrées, les boutons poussoirs en l'occurrence.
- Déterminer le nouvel état du système et des sorties.
- Mettre à jour les sorties.
- Attendre quelques dizaines de millisecondes.
- Revenir à la lecture des entrées.
Les fonctions principales du programme, appelées dans la boucle principale, sont:
- TraiterEtat: gestion de la machine d'états pour les 6 états du TCO décrits plus haut dans ce post. Cette fonction appelle ensuite DefinirSorties.
- DefinirSorties: détermination des sorties en fonction de l'état et mise à jour des sorties. S'il faut commander les TJD et les aiguillages, cette fonction initialise la machine d'états implantée dans la fonction CommanderTjdAig décrite ci-après.
- CommanderTjdAig: gestion de la machine d'états pour la commande des TJD et aiguillages. Elle commande d'abord les 2 TJD, puis les 2 aiguillages afin d'éviter que les éléctro-aimants ne tirent trop de courant de l'alimentation accessoires.
Ce programme comporte des fonctions utilisées que pour la mise au point sur PC. À cet effet, 2 directives de compilation sont utilisées:
- PC compile les appels d'affichage sur écran lorsque le programme est compilé pour PC avec gcc.
- AVR permet de compiler tout ce qui est spécifique à l'AVR, principalement les entrées-sorties, lorsque le programme est compilé avec avr-gcc.
Avec cette astuce, il est possible de mettre au point la logique du programme en grande partie sur le PC avant de télécharger le programme en version AVR vers le microcontrôleur. Je reste à votre disposition pour des informations complémentaires.
Dernière édition par SavignyExpress le Ven 27 Jan 2012 - 8:11, édité 1 fois |
|
| |
Contenu sponsorisé
| Sujet: Re: TCO du réseau SavignyExpress | |
| |
|
| |
| TCO du réseau SavignyExpress | |
|