Controler une tension avec un arduino

Bonjour à tous,
Pour vous donner un peu de contexte, je suis en train de reproduire un lévitateur acoustique , en suivant ce tutoriel : ( Acoustic Levitator : 27 Steps (with Pictures) - Instructables.

Les premiers tests ont bien fonctionné, ce qui m’a motivé à aller plus loin. Mon objectif actuel est de contrôler la tension d’alimentation (entre 6V et 12V) à l’aide d’un potentiomètre, avec deux fonctions distinctes (mais jamais simultanées) :
-lorsque j'active un switch il doit me permetre de deplacer l'objet en levitation
-Sinon, il doit me permettre de modifier la voltage de mon alimentation

Là où je bloque, c’est sur la partie contrôle de l’alimentation via Arduino. J’ai pensé utiliser un module LM2596, retirer son potentiomètre mécanique, et le remplacer par un *potentiomètre numérique DS3502.
En l'apparence, l'idée me semblait bonne, mais dans la pratique ca ne marche pas... Pourtant, quand je branche pas le ds3502 avec le lm2596 je parvient bien a faire varier la tension à la sorti RW du ds3502 via un potentiomètre... Mais des que je branche le tout (l'image), la tension reste à 12v, elle ne change jamais.

Pour être honnête, je ne sais pas ce qui ne fonctionne pas. Pourtant, le code tourne correctement, et les câblages me semblent corrects. Peut-être qu’il existe des modules permettant d’ajuster une tension via Arduino, mais je n’en trouve pas.
D’ailleurs, selon mes estimations (qui restent approximatives), mon lévitateur devrait consommer au maximum 2 A une fois tous les éléments branchés : transducteurs, écran, etc.

Pour information, je n’ai découvert l’électronique qu’il y a 2 ou 3 ans, donc je vous remercie de rester simple dans vos explications.

le code que j'utulise pour tester mon systéme:

#include <Adafruit_DS3502.h>

Adafruit_DS3502 ds3502 = Adafruit_DS3502();
/* For this example, make the following connections:
    * DS3502 RH to 5V
    * DS3502 RL to GND
    * DS3502 RW to the pin specified by WIPER_VALUE_PIN
*/
const int m_pot=A6;

float v_requested=0;
unsigned int d_pot_pos=0;
void setup() {
  Serial.begin(9600);
  pinMode(m_pot, INPUT);
    while (!Serial) delay(10);  

  if (!ds3502.begin()) {
    Serial.println("Erreur : DS3502 non détecté !");
    while (1);
  }
  Serial.println("DS3502 détecté.");
}
void loop() {
  v_requested = 6.0 + (analogRead(m_pot) / 1023.0) * (12.0 - 6.0);
  d_pot_pos= (v_requested*127)/12;
  Serial.println("Wiper voltage with wiper set to");
  Serial.print(v_requested);

  ds3502.setWiper(d_pot_pos);
}

De nombreux sites donnent le schéma suivant pour ce type de module (à vérifier si cela colle avec le module que tu utilises).
Si c'est bien le cas, le potentiomètre n'est pas connecté au GND du module et en plus, il est utilisé en résistance variable. Dans ce cas , tu ne pourras pas utiliser le DS3502.

Merci pour la réponse.
J'ai vue quelque schémas, mais j'y comprend pas grand chose :sweat_smile:. Je me demandais si il y a pas des moyens plus simples pour contrôler une simple tension avec un arduino, je me dit qu'il doit bien exister des modules pour faire ca, mais je les trouves pas.

Je n'ai pas bien compris : quand tu essayes avec le DS3502, tu retires bien le potentiomètre manuel ?
Les deux potentiomètres ne sont pas en parallèle ?

Je n'ai pas encore eu l'occasion de décortiquer ce genre de produit (potar numérique).
Les premières versions devaient avoir les extrémités du potentiomètre entre Vcc et Gnd qui alimentent son électronique de commande.

Avec les actuelles ce n'est plus obligatoire.
Comme dans la datasheet du DS3502, les accès potentiomètre sont appelés RH (resistor high), RW (Wiper), RL(resistor low) et non pas Vcc, wiper et gnd, je pense que c'est le cas.

Les modules, comme ceux d'Adafruit je ne sais pas s'ils exploitent cette possibilité, tout dépend de quand ils ont été conçus.

Sinon pour mettre au point, j'essaierai plutôt avec un régulateur qu'avec un convertisseur. Le fonctionnement est plus simple.
Quitte à passer au convertisseur si tout est ok.

Un régulateur tente de maintenir une tension de 1,25 V entre sa sortie et la pin nommée Fb.

La plus basse tension obtenable avec un régulateur est donc 1,25 V quand Fb est à la masse.

Pour obtenir des tensions supérieures, il faut, soit faire un pont potentiométrique entre : la sortie, Fb, Gnd, soit acheter un régulateur où le pont est déjà sur la puce.

Un régulateur a besoin de courant entrant sur sa pin Fb, c'est notifié dans la datasheet. Il faut que le courant dans le pont soit 5 à 10 fois plus important que celui qui entre dans la pin Fb.
Le DS3502 a une valeur unique de 10 k, ce n'est peut-être pas le modèle le plus indiqué, il faut le vérifier.

Je conseille donc de prendre un régulateur 1,25 V et de faire le pont.
Je conseille d'y aller par étapes méthodiquement : avec un potentiomètre manuel, on vérifie que tout va bien puis avec le potentiomètre numérique.
Je conseille aussi de bien découpler avec les condensateurs préconisés par le constructeur du CI et s'il n'y a pas de condensateurs céramiques de 100 nF de prévus, en ajouter en parallèle sur les condensateurs de fortes valeurs. Ils filtreront mieux les hautes fréquences.

Quand on déporte des composants, surtout dans les systèmes bouclés comme des régulateurs ou convertisseurs, il y a des risques que le produit se mette à osciller, d'où l'importance des découplages.

Autres (possibles) solutions :
Générer la tension à appliquer sur Fb avec de la PWM, parfaitement filtrée.
Utiliser un potentiomètre numérique de valeur non spécifique et interfacer sa sortie curseur et la pin FB avec un amplificateur opérationnel monté en suiveur pour obtenir une source de tension d'impédance quasiment nulle.

This topic was automatically closed 180 days after the last reply. New replies are no longer allowed.