Go Down

Topic: Driver de led et sortie PWM (Read 3842 times) previous topic - next topic

silverbeach

Apr 23, 2012, 04:14 pm Last Edit: Apr 23, 2012, 04:41 pm by silverbeach Reason: 1
Bonjour,

J'ai acheté un driver RCD-24-0.70/W/X3 et 3 leds BXRA-C0361
J'aimerai réaliser un allumage et une extinction progressif et donc utiliser une sortie PWM de l'arduino

Voici mon câblage:


Je pensais que le mode de fonctionnement était :
Avec la sortie PWM:
Si sortie PWM = 0 => Led éteinte
Si Sortie PWM = 5 => Led éclairée avec une intensité de 700mA.


Or, lorsque je branche l'alimentation des leds, elles s'éclairent directement et lorsque je fais varier la sortie PWM, elles restent allumée avec la même intensité.

De plus lorsque les fils "DIM" et "Vref" du driver ne sont pas raccordé, les leds reste allumée.

D'où peut venir le problème? Erreur de câblage, mauvais raisonnement...?

Merci

barbudor

C'est normal que le GND soit relié à VIN et le +24V ) GND ?

Erreur de dessin je suppose puisque ca marche

Je ne sais pas a quoi sert Vref mais dans ton cas c'est plutot DIM qu'il faut utiliser pour controler l'intensité avec un PWM
Barbuduino: Arduino sur Breadboard & VinciDuino: Clone Leonardo // WR703: Mini-routeur hacké // LauchPad MSP430 et Stellaris // Panda II Arduino-like .NetMF sous VisualC#
RTFC: Read That F.....g Code / RTFD: Read That F.....g Doc / RTFDS: Read That F.....g DataSheet / RTFS: Read That F.....g Schematic / Wot da ya wanna D.I.Y. today ?

silverbeach

Oups j'ai inversé le 24v et GND sur le schéma, je vais le modifier.

D'après le datasheet, le Vref est la même entrée que pour "PWM/ON/OFF".
L'entrée DIM est pour "Analogue Dimming".

Tu penses que je dois raccorder la sortie PWM à l'entrée DIM?

Merci pour ta réponse.

Artouste


Bonjour,

J'ai acheté un driver RCD-24-0.70/W/X3 et 3 leds BXRA-C0361
J'aimerai réaliser un allumage et une extinction progressif et donc utiliser une sortie PWM de l'arduino

Voici mon câblage:


Je pensais que le mode de fonctionnement était :
Avec la sortie PWM:
Si sortie PWM = 0 => Led éteinte
Si Sortie PWM = 5 => Led éclairée avec une intensité de 700mA.


Or, lorsque je branche l'alimentation des leds, elles s'éclairent directement et lorsque je fais varier la sortie PWM, elles restent allumée avec la même intensité.

De plus lorsque les fils "DIM" et "Vref" du driver ne sont pas raccordé, les leds reste allumée.

D'où peut venir le problème? Erreur de câblage, mauvais raisonnement...?

Merci



peut etre voir du coté du PWM acccepté par ce driver ?
http://www.recom-international.com/pdf/Lightline/RCD-24.pdf

Quote
Maximum PWM Frequency For ±1% Linear Operation 200Hz max.
Frequency Limit 2000Hz max.

silverbeach

Je viens de voir que la fréquence de l'Arduino est de 490hz. Si c'est la bonne donnée.

Mais la variation ne se fait pas au niveau de la tension?

skywodd

Bonjour,

Si j'en crois ce que j'ai compris du datasheet il faudra envoyer 5v dans Vref et brancher la sortie PWM à AnalogDim ?
Des news, des tutos et plein de bonnes choses sur http://skyduino.wordpress.com !

barbudor

Dans al datasheet je vois

Il y a 2 modes de dimming possible :
1) Digital = PWM
2) Analog

1) Dans le mode digital, la sortie PWM de l'Arduino devrait convenir sauf que comme signalé par Artouste la fréquence est donnée pou :
Quote
Maximum PWM Frequency For ±1% Linear Operation 200Hz max.
Frequency Limit 2000Hz max.

Aucun danger donc à utiliser le PWM de l'Arduino telquel à 490 Hz excepté que la plage de réglage ne sera peut être pas très linéaire.

1a) Donc je dirais, essaye d'abord comme cela pour voir si ça te satisfait.

ATTENTION : sur la datasheet trouvée par Artouste le brochage n'est pas comme indiqué sur ton schéma :
- Digital Dimming : Pin 3 sur la datasheet alors que tu as mis Vref sur la pin 3 !
- Analog Dimming / Vref = Pin 2 : ) laisser en l'air (et non pas a connecter à 5V n'en déplaise à Maître Skywodd ;))
Quote
Analogue Dimming Control   (leave open if not used - do not tie to +Vin)


Une fois ceci testé, si tu n'est pas satisfait, quelles solutions pour récupérer un controle linéaire

1b) Solution pour un PWM plus bas en fréqeunce : utiliser la lib Servo qui doit tourner elle à 50Hz


2) Mode analogique
Laisser l'entrée Digital Dimming (pin 3 d'après la datasheet) en l'air et utiliser l'entrée pin 2.

Sauf que si tu as acheté le modèle  RCD-24-0.70/W/X3 et non pas le modèle  RCD-24-0.70/W/VRef, ta pin 2 c'est Analog Dimming (0..+10V) et non pas Vref (0..5V).

Problème, l'Arduino ne possède pas un vrai convertisseur numérique/analogique.
Donc il faut utiliser encore analogWrite() et la sortie PWM mais avec un filtre RC suivit d'un ampli OP monté en doubleur de tension (attention, il te faut un +12V pour alimenter l'ampliOP.
Voir schéma dans ce topic : http://arduino.cc/forum/index.php/topic,102461.0.html
(même problématique, sortir une tension 0..10V à partir d'un PWM).

Mais bon, je pense que la version 1a) devrait te satisfaire.

A+
Barbuduino: Arduino sur Breadboard & VinciDuino: Clone Leonardo // WR703: Mini-routeur hacké // LauchPad MSP430 et Stellaris // Panda II Arduino-like .NetMF sous VisualC#
RTFC: Read That F.....g Code / RTFD: Read That F.....g Doc / RTFDS: Read That F.....g DataSheet / RTFS: Read That F.....g Schematic / Wot da ya wanna D.I.Y. today ?

skywodd


- Analog Dimming / Vref = Pin 2 : ) laisser en l'air (et non pas a connecter à 5V n'en déplaise à Maître Skywodd ;))
Quote
Analogue Dimming Control   (leave open if not used - do not tie to +Vin)


Nobody is perfect :smiley-mr-green:

J'ai du lire en diagonale ... effectivement si c'est marqué de pas mettre 5v alors pas de 5v :smiley-mr-green:
Du coup il te suffit de déplacer ton câble sur Vref vers Adim.
Des news, des tutos et plein de bonnes choses sur http://skyduino.wordpress.com !

silverbeach

J'ai essayé en connectant la sortie PWM à l'entrée Dim mais aucun changement.
Puis, j'ai essayé en connectant la sortie PWM à Vref et le 5V à l'Arduino à l'entrée Dim suite à un conseil sur un autre forum.
Et ça fonctionne mais pas parfaitement:
La luminosité varie mais lorsque la sortie PWM est à 0, la led éclaire encore.

Est-ce normal?

silverbeach

je viens de regarder avec la librairie Servo.

Si j'ai bien compris, pour faire varier la led, il faut faire varier la valeur du servo de 0 à 180 comme dans ce petit programme?
Code: [Select]
#include <Servo.h> // inclusion de la librairie Servo

Servo myservo; // déclaration d'une variable de type Servoi
int ValServo = 0;

void setup()
{
  myservo.attach(9); // attache la variable Servo à la broche 9
 
}

void loop() {
  if(ValServo == 180) ValServo = 0;
  myservo.write(ValServo);
  ValServo++;
}

Puis-je essayer ce petit programme sans danger?

barbudor

Plutot utiliser la fonction writeMicroseconds( int pulse_us )
En précisant la longueur de l'impulsion en micro-seconds.

La fonction write() tout court ne génère que des impulsions entre 1.5 ms et 2.5 ms compatible avec les Servo.
La fonction writeMicroseconds() permet de passer outre.

Avec analogWrite on utilise un rapport cyclique appliqué sur une fréquence de 490Hz
Avec servo.writeMicroseconds() on spécifie la longueur de l'impulsion sur période de 20ms.
Rapport cyclique à calculer soit même :)
Barbuduino: Arduino sur Breadboard & VinciDuino: Clone Leonardo // WR703: Mini-routeur hacké // LauchPad MSP430 et Stellaris // Panda II Arduino-like .NetMF sous VisualC#
RTFC: Read That F.....g Code / RTFD: Read That F.....g Doc / RTFDS: Read That F.....g DataSheet / RTFS: Read That F.....g Schematic / Wot da ya wanna D.I.Y. today ?

silverbeach

ok. je vais chercher pour savoir comment calculer le rapport cyclique mais avec cette librairie, les led vont-elles s'éteindre lorsque la sortie sera égale à 0?

Car j'ai besoins d'éteindre les leds pendant plusieurs heures tout les jours.

barbudor

C'est indépendant.
SI les leds ne s'éteignent pas avec un bête digitalWrite( pin, LOW ); c'est un autre problème.
La lib PWM et la lib Servo vont t'aider à changer le rapport cycle entre 0% (tout le temps à 0) et 100% (tout le temps à 1 (+5V)).

Le rapport cyclique c'est la durée entre l'impulsion haute et la période.
Avec PWM :
duty = duree_haute_ms / 2,04 (à 490 Hz la période est de 2,04 ms)
Avec Servo :
duty = duree_haute_us / 20000 (La période du Servo est de 20ms ou 20000µs)
Barbuduino: Arduino sur Breadboard & VinciDuino: Clone Leonardo // WR703: Mini-routeur hacké // LauchPad MSP430 et Stellaris // Panda II Arduino-like .NetMF sous VisualC#
RTFC: Read That F.....g Code / RTFD: Read That F.....g Doc / RTFDS: Read That F.....g DataSheet / RTFS: Read That F.....g Schematic / Wot da ya wanna D.I.Y. today ?

silverbeach

#13
Apr 24, 2012, 05:21 pm Last Edit: Apr 24, 2012, 05:26 pm by silverbeach Reason: 1
Donc je vais d'abord régler le problème pour avoir la led éteinte. Ensuite je verrais avec la librairie servo.

Je viens de faire un test en connectant le 3,3V de l'Arduino au lieu du 5V et la led est très très légèrement éclairée (beaucoup moins qu'avec le 5V) mais ca veut dire qu'elle n'est pas complétement éteinte. De plus je ne sais pas si c'est bon pour le driver.

Avec ce driver, il n'y a pas moyen de couper complétement les leds?
Pourtant, d'après le datasheet, il parle de PWM ON OFF

barbudor


Je viens de faire un test en connectant le 3,3V de l'Arduino au lieu du 5V et la led est très très légèrement éclairée (beaucoup moins qu'avec le 5V) mais ca veut dire qu'elle n'est pas complétement éteinte.


Sur quelle broche ? PWM Dimming ou Analog Dimming.

Sur Analog Dimming çà serait logique. D'après la datasheet, Analog Dimming attend une tension entre 0 et 10V. +3V3 ca représente 33% de la pleine échelle. Donc pas beaucoup.

Revérifie ton brochage par rapport à la datasheet dont Artouste a donné le lien. Les numéros de  pins ne semblaient pas correspondre a ce que toi tu annonçait.
Barbuduino: Arduino sur Breadboard & VinciDuino: Clone Leonardo // WR703: Mini-routeur hacké // LauchPad MSP430 et Stellaris // Panda II Arduino-like .NetMF sous VisualC#
RTFC: Read That F.....g Code / RTFD: Read That F.....g Doc / RTFDS: Read That F.....g DataSheet / RTFS: Read That F.....g Schematic / Wot da ya wanna D.I.Y. today ?

Go Up