Source de tension variable / Alimentation de précision

Place à l'inventivité et à la créativité, à lampes... ou à transistors

Modérateur: Klara

Re: Source de tension variable / Alimentation de précision

Messagepar Raffou » Mer 14 Aoû 2019 10h17

Janpolanton a écrit:Sur ma dernière simulation publiée, il y a cet ampli inverseur (simulation à 9.99V)

Désolé, cette simulation a été publiée pendant que je rédigeais mon dernier message sinon je l'aurais vue.

Bon au final, ça fait beaucoup de composants pour remplacer un pont de 10 résistances de précision et 3 commutateurs...

Reste la solution avec Arduino nano et ADC pour minorer le nombre de composants et se passer des résistances de précision, est-ce une option pertinente?
Image
Raffou
 
Messages: 487
Inscription: Jeu 15 Mai 2014 18h17

Re: Source de tension variable / Alimentation de précision

Messagepar Janpolanton » Mer 14 Aoû 2019 10h38

Le problème avec le AD7845 proposé plus haut, c'est qu'il coûte cher... (environ 15€) :mrgreen:
Et il y a la programmation en C++ du nano à faire.
Je n'ai pas connaissance d'un simulateur permettant cette option (à part peut-être les dernières versions d'Isis qui sont hors de portée de ma pension de retraite :lol: )
Attendons Mister Sylvain et sa solution basée sur un FPGA.
Aucune solution n'est à mon avis ni meilleure ni moins chère que celle que j'ai proposée initialement.
Dans la vie, il y a 2 types de personnes, ceux qui sachent et ceux qui croivent sachoir
Emile ZOLA 1997
Janpolanton
 
Messages: 2234
Inscription: Ven 13 Mar 2015 11h05

Re: Source de tension variable / Alimentation de précision

Messagepar Janpolanton » Mer 14 Aoû 2019 10h54

Si le schéma initial en intéresse certains, je veux bien faire le dessin du PCB et m'occuper d'en faire graver une certaine quantité (10 minimum).
Dites moi si vous êtes intéressés par MP.
Dans la vie, il y a 2 types de personnes, ceux qui sachent et ceux qui croivent sachoir
Emile ZOLA 1997
Janpolanton
 
Messages: 2234
Inscription: Ven 13 Mar 2015 11h05

Re: Source de tension variable / Alimentation de précision

Messagepar Raffou » Mer 14 Aoû 2019 13h38

En recherchant un DAC 12 bits économique, j'ai trouvé le MCP4821-E/P à moins de 2€60 TTC la pièce (par paquet de 2) chez RS particuliers: boitier DIP8, référence de tension interne, bus SPI donc ne monopolise que 2 pins de l'Arduino nano
https://forum.arduino.cc/index.php?topic=571712.0
http://www.arduinoos.com/2017/10/direct ... ds-part-7/

plaindds_mcp4921_a[1].jpg
plaindds_mcp4921_a[1].jpg (57.86 Kio) Vu 1127 fois

Sur ce schéma il s'agit d'un MCP4921, c'est quasi le même avec un MCP4821 hormis le fait que la référence est interne.


Sinon il existe des "breakout boards" à base de MCP4725, pour 1€ Fdp inclus, dont le bus I2C ne monopolise que 2 ou 3 pins de l'Arduino. Le hic, c'est que c'est la tension d'alimentation qui sert de référence!
Alimenté par la référence de tension "boostée" du dernier schéma publié, ce dernier écueil devrait pouvoir être éliminé!

Screen_Shot_2014-09-10_at_12.21.12_PM[1].jpg


Adafruit et Sparkfun commercialisant aussi cette plaquette, on devrait pouvoir trouver des exemples de programme tout fait sur le net:
https://learn.adafruit.com/mcp4725-12-b ... th-arduino
https://learn.sparkfun.com/tutorials/mc ... -guide/all

MCP4725-Arduino-Module-Tutorial-Hook-Up[1].png
MCP4725-Arduino-Module-Tutorial-Hook-Up[1].png (14.09 Kio) Vu 1127 fois


Ces nouveaux arguments devraient permettre de réduire certaines réticences!
Image
Raffou
 
Messages: 487
Inscription: Jeu 15 Mai 2014 18h17

Re: Source de tension variable / Alimentation de précision

Messagepar Janpolanton » Mer 14 Aoû 2019 14h59

En attendant les évolutions d'autres solutions, je bosse sur le futur PCB issu des premiers schémas avec le pont diviseur.
Voilà une ébauche de celui-ci en vue 3D (dimensions 100 x 70)

Référence 3D.jpg


Et le schéma sous un format plus conventionnel que celui de la simulation
référence schéma.jpg


Dimensions du PCB et implantation des composants :

reference board.jpg
Dans la vie, il y a 2 types de personnes, ceux qui sachent et ceux qui croivent sachoir
Emile ZOLA 1997
Janpolanton
 
Messages: 2234
Inscription: Ven 13 Mar 2015 11h05

Re: Source de tension variable / Alimentation de précision

Messagepar Janpolanton » Sam 17 Aoû 2019 12h33

Bonjour à tous,
J'ai fait un tableau pour avoir une idée du prix de revient de ce montage

J'ai regardé les prix chez RS Composants et chez TME.
Pour rappel, les frais de port sont offerts le WE chez RS alors qu'il faut ajouter environ 7€ chez TME.
Il y a aussi tout intérêt à commander les 3 commutateurs rotatifs sur Ebay, Aliexpress ou Amazon.
Un exemple de prix sur Ebay.fr (avec le bouton...) : https://www.ebay.fr/itm/RS26-selecteur-de-canal-rotatif-1-pole-position-12-selectionnable-avec-bouton-H-/273617612719
Mais en cherchant bien, on peut trouver encore moins cher.
Les LM324 (ou TL074 ou TL084) sont aussi moins chers chez les chinois.
Je n'ai pas affiné les recherches outre mesure, chacun étant intéressé pourra faire ses propres recherches (et pourquoi pas, en faire profiter la communauté)
Pour les références de tension, il y a le choix entre les références suivantes compatibles broche à broche:
LT1236
REF102
AD587
Et peut être d'autres aussi.
Pour le PCB, je me chargerai de le fournir (port compris) pour 3€
Quoi qu'il en soit, l'ensemble des composants y compris le PCB reviendrait entre 25 et 30€.

Composants référence tension.jpg
Dans la vie, il y a 2 types de personnes, ceux qui sachent et ceux qui croivent sachoir
Emile ZOLA 1997
Janpolanton
 
Messages: 2234
Inscription: Ven 13 Mar 2015 11h05

Re: Source de tension variable / Alimentation de précision

Messagepar sylvanus » Sam 17 Aoû 2019 15h05

Bonjour Jean Paul
Ton projet avance bien et sur je serai en retard avec mes 2 vues de ce probleme tres interessant au demeurant.
Néanmoins , bien entendu, sans vouloir te donner des conseils pense au découplage et aux compensations en température.
Je ne les ai pas quantifiees mais notre Raffou saura le faire bien mieux que moi.
Je m'y remets , le CPLD est fait, juste un petit prototype
Bonne journee a tous et si, d'autres ont des idees ou remarques elles sont les bienvenues
Sylvain
sylvanus
 
Messages: 428
Inscription: Mar 29 Juin 2004 21h51
Localisation: Camlez 22450

Re: Source de tension variable / Alimentation de précision

Messagepar Raffou » Jeu 29 Aoû 2019 12h39

Bonjour JP, bonjour à tous.

La version Arduino Nano se doit d'être minimaliste:
  • Matriçage des 10 contacts des 3 commutateurs rotatifs.
  • Il aurait été possible d'utiliser 3 des sorties PWM de l'Arduino mais:
    • elles doivent être suivies des 3 filtres passe-bas et du sommateur déjà proposés et simulés, ce qui complexifie le schéma et va à l'opposé de la simplicité recherchée en augmentant le nombre de composants nécessaires,
    • l'amplitude des signaux PWM est liée à celle de l'alimentation de l'ATmega et non pas à une tension de référence fiable.
  • Un DAC MCP4821 serait une solution nettement plus optimale:
    • avec 4096 échelons pour une référence interne de 2048 mV et un gain fixé à 2 pour l'amplificateur incorporé, ce DAC délivre donc en sortie 1mV par échelon,
    • suivi d'un amplificateur booster (TCA0372) dont le gain est fixé à 2,5, on obtient alors 10 mV pour 4 échelons, soit 10 volts pour 4000 de ces échelons.
Exemple de raccordement (arbitraire) des contacts des 3 commutateurs sur les pins de l'Arduino Nano:
Diagram3c.png


Le prototype avec un Arduino nano V3, je n'avais sous la main que des commutateurs 3 circuits 4 positions ce qui limite actuellement l'expérimentation à 4 chiffres au lieu de 10 par commutateur:
IMG_1490mini.JPG

Au départ je pensais pouvoir utiliser des procédures de la bibliothèque "keypad" livrée en standard avec l'IDE Arduino. Les commutateurs étant alors déclarés comme 3 claviers 1×10 partageant les mêmes horizontales au lieu d'un seul clavier matricé 3×10n, à l'instar de l'exemple "HelloKeypad3" Cette configuration permettait de définir les contacts et les pins de l'Arduino indépendamment des commutateurs.

Je me suis vite aperçu que cette bibliothèque conçue pour des claviers dont les contacts sont fugitifs dysfonctionnait avec des contacts permanents. J'ai donc dû écrire la fonction de scrutation des contacts, elle renvoie une valeur numérique comprise entre 0 et 999, sans filtrage des rebonds ("debouncing") puisque les contacts sont quasi permanents et prévus pour être scrutés toutes les 500 ms.

Le croquis de test avec la fonction de scrutation, les contacts de même rang doivent être câblés en // mais les pins associées ne sont pas figés, ils sont redéfinissables.
#define uint unsigned int

// Trois commutateurs rotatifs 10x1: milliers, centaines et dizaines de mV

const byte ROWS = 10; // Une horizontale par contact
const byte COLS = 3; // Une verticale sur chaque commun des commutateurs

// Pins Arduino énumérés dans l'ordre des contacts 0 .. 9
byte rowPins[ROWS] = {14, 15, 16, 17, 2, 3, 4, 5, 6, 7}; //connect to the row pinouts of the matrix

// Ordre des pins: (M)illiers , (C)entaines et (D)izaines
byte colPins[COLS] = {10, 9, 8}; //connect to the column pinouts of the matrix

uint getRotaryValue(); // Returns the value set by the rotary switches,

void setup() {
    for( byte c=0; c< COLS; c++) {
        pinMode( colPins[c], INPUT);
        digitalWrite( colPins[c], HIGH); // turn on internal pullup resistor
    }
    for( byte r=0; r< ROWS; r++) {
        pinMode( rowPins[r], INPUT);
        digitalWrite( rowPins[r], HIGH); // turn on internal pullup resistor
    }
    Serial.begin(9600); // let's talk to the world
    Serial.println("Rotary Switches ready!");
}

void loop() {
    delay(1000);
    Serial.print("Valeur: ");
    Serial.println(getRotaryValue());
}

uint getRotaryValue() {
    uint val = 0, sw; // variables to store the computed and each read value
    for( byte c=0; c< COLS; c++) {
        pinMode( colPins[c], OUTPUT);
        digitalWrite( colPins[c], LOW);
        sw = 0; // by default
        for( byte r=0; r< ROWS; r++) {
            if (!digitalRead(rowPins[r])) {
                sw = r;
                break;
            }
        }
        (val *= 10) += sw;
        digitalWrite( colPins[c], HIGH);
        pinMode( colPins[c], INPUT);
    }
    return val;
}


Ce qu'affiche le croquis de test, quand on agit sur les commutateurs:
Test.PNG
Image
Raffou
 
Messages: 487
Inscription: Jeu 15 Mai 2014 18h17

Re: Source de tension variable / Alimentation de précision

Messagepar Raffou » Mer 4 Sep 2019 21h54

Un des problèmes gênant pour la suite, c'est qu'il reste peu de pins disponibles sur l'Arduino Nano avec les contacts des commutateurs organisés en matrice 3×10. Une solution simple pour gagner 4 ports digitaux supplémentaires serait de remplacer la puce ATmega328 par sa version récence, la version PB comme l'a fait Elektor avec son Uno R4.

L'Arduino Nano n'est pas en reste, il a lui aussi un challenger avec le Piksey Nano.
Deux nouvelles broches ont été ajoutées dans le même alignement que les existantes et à l'opposé du connecteur USB. Ce qui porte leur nombre à 2×16 et permet d'accéder aux deux derniers ports digitaux offert par la puce version PB tout en restant compatible avec l'Arduino Nano de base.

Piksey+NewPins.PNG

En tenant compte des ces 4 ports digitaux supplémentaires, ce nouveau schéma de principe avec un Piksey Nano permettrait, en réaffectant les fils de la matrice 3×10, de dégager jusqu'à 5 pins comme sorties PWM.

Diagram5.PNG

Une alternative bien plus économique que le Piksey Nano est le clone Nano compatible vendu par Thinary Electronic sur AliExpress. Bien que ce ne soit pas indiqué explicitement dans l'annonce, les photos incluses montrent qu'il est bien équipé de la puce ATmega328 version PB.
Tel quel, il permet déjà de récupérer 2 ports digitaux supplémentaires (les entrées analogiques A6 et A7 qui, avec cette version PB, peuvent être aussi configurés en entrée/sortie digitale).
Les pattes 3 et 6 de la puce, qui étaient redondantes avec les pattes 5 (GND) et 4 (Vcc), sont maintenant devenues des ports digitaux. Comme elles sont reliées à rien du tout sur ce clone, autant les relier à deux nouvelles broches logées opportunément dans deux des trous (de fixation?) en bout de plaquette à l'instar des deux extra-pins du Piksey Nano.
Voici donc mon ersatz de Piksey Nano réalisé à partir du clone nano compatible acquis chez Thinary Electronic:

IMG1594.JPG

Bon maintenant, on ne peut pas exploiter ces nouvelles ressources aussi facilement, l'IDE Arduino standard ne connaît pas cette évolution de l'ATmega, il faut donc lui adjoindre un package spécifique.
J'ai donc préféré charger celui prévu pour l'Uno R4 d'Elektor' qui me paraissait plus abouti. En fin de compte j'ai été aussi obligé de charger celui conçu pour le Piksey car la programmation du bootloader dysfonctionnait avec ce premier package.

Le support sur la maquette de test n'a pas été épargné non plus par cette évolution, les bornes en vis à vis du reset ont dû être délaissées afin de pouvoir décaler deux blocs à vis d'un cran et ainsi accéder aux deux nouvelles pins du clone Nano compatible.
Les 13 fils de la matrice des contacts ont été câblés à l'instar du nouveau schéma de principe, ce qui a permis de constater immédiatement que les 4 nouvelles pins étaient bien fonctionnelles.

IMG1542.JPG

Coté croquis, pour l'instant pas d'évolutions transcendantes, juste la modification de la déclaration des pins consécutive au nouveau matriçage des contacts:

// Pins Arduino dans l'ordre des contacts 0..9
// Test des nouvelles 4 E/S digitales de l'ATmega328-PB
// Ports: PE1, PE0, PE3(A7), PE2(A6), A5, A4, A3, A2, A1, A0

byte rowPins[ROWS] = {23, 22, 21, 20, 19, 18, 17, 16, 15, 14}; //connect to the row of the matrix

// Ordre des pins: (M)illiers , (C)entaines et (D)izaines
byte colPins[COLS] = {8, 7, 4}; //connect to the column of the matrix

Ainsi que l'ajout d'une présomption dans la détection de changement de position des commutateurs :

void loop() {
    delay(250);
    justRead = getRotaryValue();
    if (justRead == previous){
        next = justRead;
        if (next != voltage){
            voltage = next;
            Serial.print("Tension: ");
            Serial.println(voltage);
        }
    }
    previous = justRead;
}
Dernière édition par Raffou le Jeu 5 Sep 2019 23h43, édité 3 fois.
Image
Raffou
 
Messages: 487
Inscription: Jeu 15 Mai 2014 18h17

Re: Source de tension variable / Alimentation de précision

Messagepar Janpolanton » Jeu 5 Sep 2019 09h14

Bonjour à tous, bonjour Gérard,
Très intéressant ce clone de Piksey sur Ali :wink:
Le seul hic! avec ce clone c'est les 2 soudures à réaliser sur la puce Atmega qui ne sont pas à la portée de tout le monde.
Pour y palier, on pourra aussi utiliser le véritable Piksey (pour les maladroits) moyennant 10€ de plus
Et en regroupant le tout sur un PCB, y compris les 3 commutateurs rotatifs, le module DAC et les alimentations 5V et +/- 15V on arriverait à un ensemble compact facile à câbler et pas trop onéreux.
Je vais commander le matériel nécessaire pour câbler un PCB proto de mon côté.

Je ne sais pas où en est l'ami sylvain avec sa solution basée sur un CPLD.

A suivre donc...

Edité : je n'ai pas trouvé de module câblé avec un MCP4821, il faudra probablement s'orienter vers un module MCP4725 alimenté par une référence de tension 5V "boostée" telle que LT1236-5 par exemple.

@Gérard :
Il me faudrait les dimensions du module du clone Piksey pour réaliser l'empreinte PCB ( je suppose que le pitch des pins est de 2.54 mm) mais je n'ai pas l'écartement en largeur... :mrgreen:
Dans la vie, il y a 2 types de personnes, ceux qui sachent et ceux qui croivent sachoir
Emile ZOLA 1997
Janpolanton
 
Messages: 2234
Inscription: Ven 13 Mar 2015 11h05

Re: Source de tension variable / Alimentation de précision

Messagepar Raffou » Jeu 5 Sep 2019 12h03

Bonjour à tous, bonjour JP.

Le compatible Nano vendu par Thinary Electronic est plutôt un clone d'Arduino Nano puisqu'il n'a que 2×15 pins. D'après ce que j'ai pu lire sur le net, ce n'est pas le seul. Certains vendeurs chinois livrent aussi des clones de Nano équipés d'ATmega328-PB mais c'est une loterie car rien n'est indiqué dans leurs annonces.

Le soudage des deux fils sur la puce n'est pas évident mais avec une loupe d'atelier et une panne de fer très fine, on y arrive assez facilement, témoin cette photo des miennes:

GrosPlanSoudures.JPG

Avec le grossissement on s'aperçoit que les fils ne sont pas bien centrés sur les pattes de la puce. J'ai utilisé du fil pour mini-wrapping que je tenais d'une main pendant que je soudais de l'autre. Peut-être aurais-je dû les immobiliser avec un point de colle, puis les rectifier/centrer avant de les souder. La prochaine fois je tenterai de souder du fil émaillé si j'arrive à obtenir un décapage bien franc de l'émail.

Mon plus gros souci a été la programmation du bootloader sur le clone Nano Compatible. J'ai d'abord tenté de le faire avec mon programmeur TL866 II plus et son logiciel dernière version (8.51). L'ATmega328 version PB y est bien répertorié mais ça ne fonctionne pas en ICSP, faut probablement utiliser le support Textool comme ici: https://tosiek.pl/arduino-nano-with-atm ... e-support/

J'ai ensuite tenté de le faire avec l'IDE Arduino dernière version et un programmeur USBasp V2.0.

usbasp.jpg

L'USBasp n'était pas reconnu avec Windows10, c'était un problème de signature du driver USB et j'ai du remplacer l'existant (http://undindoncurieux.blogspot.com/201 ... ws-10.html). Ça ne fonctionnait toujours pas car en fait ce n'était pas libusb-win32 qu'il faillait installer mais libusbK (https://quadmeup.com/working-solution-f ... -10-64bit/).

Après avoir enfin installé le bon driver, la programmation du boot-loader s'effectuait bien à partir de l'IDE Arduino sur un clone Nano standard (ATmega328 non suffixé) mais pas sur le clone compatible de Thinary pour un problème de création de fichier avrdude.log. A un moment donné j'ai eu l'intuition de changer de package car l'article d'Elektor plutôt loquace sur le contenu et l'installation de celui-ci, était muet sur sur cette opération et n'évoquait qu'évasivement la présence du fichier nécessaire à l'intérieur.
Et là, bingo, j'ai pu programmer le bootloader inclu dans le package du Piksey (un optiboot) dans le clone compatible Thinary et par la suite y téléverser un croquis en sélectionnant à nouveau le package Elektor.
Image
Raffou
 
Messages: 487
Inscription: Jeu 15 Mai 2014 18h17

Re: Source de tension variable / Alimentation de précision

Messagepar Raffou » Jeu 5 Sep 2019 13h51

Janpolanton a écrit:je n'ai pas trouvé de module câblé avec un MCP4821, il faudra probablement s'orienter vers un module MCP4725 alimenté par une référence de tension 5V "boostée" telle que LT1236-5 par exemple.
Il existe une plaquette toute prête à base de MCP4921 chez Microe. Sinon il existe un challenger au MCP4821, c'est le MCP4721 quasi identique sauf qu'il nécessite une référence externe.
Pourquoi un module tout câblé? Alors que MCP4821 et 4721 existent en boitier DIP8 (chez RS particuliers)?

Janpolanton a écrit:Il me faudrait les dimensions du module du clone Piksey pour réaliser l'empreinte PCB ( je suppose que le pitch des pins est de 2.54 mm) mais je n'ai pas l'écartement en largeur... :mrgreen:
C'est standard au pas de 2,54 entre pins y compris les 2 extra-pins, l'écartement entre rangées est aussi au standard Arduino Micro, il est de 6 pas soit 15,24 mm.
Image
Raffou
 
Messages: 487
Inscription: Jeu 15 Mai 2014 18h17

Re: Source de tension variable / Alimentation de précision

Messagepar Janpolanton » Jeu 5 Sep 2019 14h28

J'ai mis le schéma au propre, (effectivement, le MCP4921 existe en boitier conventionnel dont je me suis servi sur le schéma)
J'ai ajouté une référence 5V externe LT1236-5 elle aussi en boitier DIP8
Voilà ce que ça donne pour le moment en espérant ne pas avoir fait d'erreur...

Quand ce sera bon et vérifié, je tracerai le PCB et j'en ferai graver quelques uns à distribuer.
piksey nano.jpg
Dans la vie, il y a 2 types de personnes, ceux qui sachent et ceux qui croivent sachoir
Emile ZOLA 1997
Janpolanton
 
Messages: 2234
Inscription: Ven 13 Mar 2015 11h05

Re: Source de tension variable / Alimentation de précision

Messagepar Janpolanton » Jeu 5 Sep 2019 14h39

Schéma avec une meilleure définition...

piksey nano.jpg


Je n'ai pas implanté l'alimentation 5V du Piksey mais si il ne consomme pas trop peut-être pourra-t-il être alimenté par la référence 5V "boostée".

A voir...
Dans la vie, il y a 2 types de personnes, ceux qui sachent et ceux qui croivent sachoir
Emile ZOLA 1997
Janpolanton
 
Messages: 2234
Inscription: Ven 13 Mar 2015 11h05

Re: Source de tension variable / Alimentation de précision

Messagepar lolo17 » Jeu 5 Sep 2019 15h00

Bonjour a tous

il y a pas mal d'évolution depuis le début , les vacances vous ont réussi :lol:
je vient de recevoir une partie du matériel pour la réalisation première avec les résistances 0.1%
dans un premier temps ce sera sur une plaque d'essais
cette version me convient bien pas trop compliqué :idea:

cdlt
laurent
lolo17
 
Messages: 668
Inscription: Mer 27 Juin 2012 12h08
Localisation: charente maritime

PrécédenteSuivante

Retourner vers Réalisations personnelles

Qui est en ligne

Utilisateurs parcourant ce forum: Aucun utilisateur enregistré et 3 invités