====== Réalisation d'un shutter DMX ====== ===== Matériel ===== ^Qtt^Nom ^Valeur ^Référence Fabricant ^Fabricant ^Réf. Fournisseur^Fournisseur^ |1 |Embase XLR ♂ |5 points |NC5MBH-B |Neutrik |694-9403 |RS | |1 |Embase XLR ♀ |5 points |NC5FBH-B |Neutrik |568-NC5FBH-B |Mouser | |3 |Commutateur DIP |10 voies |DRR60010 |KNITTER-SWITCH |708-3232 |RS | |1 |Support DIL |28 voies |1-2199298-9 |TE Connectivity |186-5014 |RS | |1 |Micro-contrôleur | |ATMEGA48P-20PU |Microchip |131-0301 |RS | |1 |Quartz |8MHz |QCL8.00000F18B23B |Qantek |814-9412 |RS | |2 |Condensateur |18pF |K180J15C0GF5TL2 |Vishay |852-3312 |RS | |1 |Résistance |10kΩ |CFR25J10K |TE Connectivity |131-378 |RS | |1 |Résistance |120Ω |CFR25J120R |TE Connectivity |125-1132 |RS | ===== Code ==== Test de fonctionnement du servo-moteur #include #include #define FCPU 8000000 // Fréquence de l'oscillateur en Hz #define DIVISEUR 8 #define FREQ_PWM 50 // Frénquen de la PWM en Hertz #define M_ICR1 (FCPU/(DIVISEUR * FREQ_PWM)) - 1 int main(void) { DDRB |= (1 << DDB1); // OC1A en sortie TCCR1A |= (1 << WGM11); // Mode Fast PWM avec comme limite ICR1 TCCR1A |= (1 << COM1A1) | (1 << COM1A0); // Inversion TCCR1B |= (1 << CS11); // Diviseur de fréquence 8 TCCR1B |= (1 << WGM12) | (1 << WGM13); // Mode Fast PWM avec comme limite ICR1 ICR1 = M_ICR1; while(1) { OCR1A = ICR1 - 2250; _delay_ms(3000); OCR1A = ICR1 - 550; _delay_ms(3000); } } Pour lire l'adresse DMX : // Configuration pour la lecture de l'adresse DMX DDRB &= ~(1 << DDB2) & ~(1 << DDB3) & ~(1 << DDB4) & ~(1 << DDB5); // PB2, PB3, PB4, PB5 en entrée PORTB |= (1 << PB2) | (1 << PB3) | (1 << PB4) | (1 << PB5); // Résitances de tirage haut DDRC &= (1 << DDC0) &~(1 << DDC1) & ~(1 << DDC2) & ~(1 << DDC3); // PC0, PC1, PC2, PC3 en entrée PORTC |= (1 << PC0) | (1 << PC1) | (1 << PC2) | (1 << PC3); // Résitances de tirage haut DDRD &= (1 << DDD2) & ~(1 << DDD3) & ~(1 << DDD4) & ~(1 << DDD5); // PD2, PD3, PD4, PD5 en entrée PORTD |= (1 << PD2) | (1 << PD3) | (1 << PD4) | (1 << PD5); // Résitances de tirage haut void adresse() { uint16_t adresse = (~(PIND >> 2) & 0b00001111) * 100 + (~PINC & 0b00001111) * 10 + (~(PINB >> 2) & 0b00001111); if (adresse == 5) { PORTC |= (1 << PC5); } else { PORTC &= ~(1 << PC5); } } ===== Réalisation ===== ==== Maquette ==== {{ media_12:shutter_test1.mp4 |Premier essai}} La partie occultante sera sans doute réalisée avec des plaques epoxy de circuit imprimé. Elles résistent bien à la chaleur.Dimension 150 x 200x 1.6. Le bras du servo-moteur sera lui aussi en epoxy. Les rails de guidage seront en Téflon : [[https://www.weber-metaux.com/content/13-plastiques-composites-elastomeres|Weber métaux]] ===== Matériel ===== [[https://euro-makers.com/fr/panneaux-pvc-expanse/3691-pvc-expas-3mm-n.html|PVC expansé 3mm]] [[https://www.newbiehack.com/MicrocontrollerControlAHobbyServo.aspx|Contrôler un servo-moteur]] [[https://www.boutique.resines-et-moulages.com/rubans-et-galons/547-galon-carbone-taffetas-90-grm2.html|Galon carbone]] avec un passe-poil de part et d'autre pris dans des rails de Téflon réalisés avec des tubes de Téflon que l'on peut courber avec une rainures au centre. Primaire pour coller ensuite le Téflon : LOCTITE SF 770 SWI3-5-E-ST Alimentation Mouser {{tag> c dmx micro_controleur sylvain }}