====== 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 }}