# simulateur de panneau solaire

La courbe tension/courant d'un paneau solaire est celle ci:

[![ps-tension-courant.jpg](https://wiki.fablab.sorbonne-universite.fr/BookStack/uploads/images/gallery/2023-04/scaled-1680-/ps-tension-courant.jpg)](https://wiki.fablab.sorbonne-universite.fr/BookStack/uploads/images/gallery/2023-04/ps-tension-courant.jpg)

Un panneau solaire se comporte comme un générateur de courant constant, avec une zone de transition pour les courants faibles due aux diodes en série. Plus de détails sur cette page: [https://solarpost.in/basics/i-v-curve-solar-pv/](https://solarpost.in/basics/i-v-curve-solar-pv/)

Pour le projet [Régulateur solaire MPTT](https://wiki.fablab.sorbonne-universite.fr/BookStack/books/petits-projets/page/regulateur-solaire-mptt "Régulateur solaire MPTT") j'ai besoin d'une alimentation simulant un panneau solaire pour mettre au point l'agorithme MPTT. Une simple alimentation de laboratoire en courant constant a un comportement trop «carré» pour cela; de plus les alimentation à découpage présentent des impulsions lors de la limitation de courant qui, lorsque l'on travaille sous courant élevé, peuvent être destructeur. L'idée est donc de réaliser une source de courant constant qui réponde au besoin.

[![emulateur-panneau-solaire.svg](https://wiki.fablab.sorbonne-universite.fr/BookStack/uploads/images/gallery/2023-04/emulateur-panneau-solaire.svg)](https://wiki.fablab.sorbonne-universite.fr/BookStack/uploads/images/gallery/2023-04/emulateur-panneau-solaire.svg)

Le courant est limité par le transistor de puissance Q2, monté en darlington avec Q1. Le courant est mesuré aux bornes de la résistance R3. R1, D1 et RV1 fournissent une référence de tension ajustable. L'amplificateur operationel U1 compare la tension aux bornes de R3 avec la référence sur son entrée «+» et sa sortie pilote le transistor de puissance. Pour les courants faibles, Q2 devrait être passant mais le montage darlington impose une chute de tension minimale pour saturer Q2, donnant a l'ensemble un comportement plus linéaire.

Pour R3 nous n'avons pas en stock de résistance de puissance de si faible valeur. Mais nous avons une bobine de fil de cuivre pour lequel le fournisseur donne les caractéristiques; en particulier sa résistance: 183 ohms par Km. 1 mètre de ce cable donnera donc une résistance d'environ 183 mOhms (nous n'avont pas besoin d'une valeur très précise ici; RV1 nous permettra d'ajuster le courant).

Le montage est réalisé sur une breadboard; le transistor de puissance Q2 est monté sur un radiateur pour évacuer la chaleur.

[![IMG_2438-1024.JPG](https://wiki.fablab.sorbonne-universite.fr/BookStack/uploads/images/gallery/2023-04/scaled-1680-/img-2438-1024.JPG)](https://wiki.fablab.sorbonne-universite.fr/BookStack/uploads/images/gallery/2023-04/img-2438-1024.JPG)

Pour caractériser le montage nous utilisons une alimentation de laboratoire pouvant founir plusieurs ampères sous 25V, et une charge fictive [Charge électronique TENMA 72-13210](https://wiki.fablab.sorbonne-universite.fr/BookStack/books/machines/chapter/charge-electronique-tenma-72-13210 "Charge électronique TENMA 72-13210"). Cette dernière sera utilisée en tension constante (ce qui veut dire qu'elle consome le courant nécessaire pour atteindre la tension de consigne), en faisant varier le réglage de la tension et en mesurant le courant nous obtenons la courbe I/V du montage.

Cet appareil peut être connecté à un ordinateur par USB, qui pourra alors le piloter et récupŕer les valeur mesurées. L'appareil est vu comme un pont USB/série sur le PC. il envoie ses commandes sous forme de chaine de caractère, et obtient les réponses sous forme de chaine de caractère également (se reporter aux documentations sur la page [Charge électronique TENMA 72-13210](https://wiki.fablab.sorbonne-universite.fr/BookStack/books/machines/chapter/charge-electronique-tenma-72-13210 "Charge électronique TENMA 72-13210")). Nous allons donc utiliser un script (en perl) pour réaliser les mesures:

`#!/usr/pkg/bin/perluse Device::SerialPort;use Time::HiRes qw( usleep );my $line;my $port = Device::SerialPort->new($ARGV[0]) or die "failed to open serial port";$port->databits(8);$port->baudrate(115200);$port->parity("none");$port->stopbits(1);$port->write("*IDN?\n");$line = getportln($port);print ("IDN: $line\n");my $setvolt=24;$port->write(":FUNC CV\n");setvolt($port, $setvolt);$port->write(":INP ON\n");while ($setvolt >= 10){        setvolt($port, $setvolt);        $setvolt = $setvolt - 0.1;}$port->write(":INP OFF\n");exit(0);sub setvolt{        my ($p, $v) = @_;        $p->write(":VOLT " . $v . "V\n");        $p->write(":VOLT?\n");        my $l = getportln($p);        print("set $l");        usleep(500000);        $p->write(":MEAS:CURR?\n");        $l = getportln($p);        print(" $l ");        $p->write(":MEAS:VOLT?\n");        $l = getportln($p);        print(" $l\n");}sub getportln{        my ($p) = @_;        my $l = "";        while(1) {                my $byte = $port->read(1);                if ($byte eq "\n") {                        $p->lookclear;                        return $l;                }                $l = $l . $byte;        }}`

La commande \*IDN? permet de vérifier la communication avec l'appareil. Ensuite nous réglons la consigne à 24V puis activons la charge fictive. ensuite, pour chaque valeur de 24V à 10V (par pas de 0,1V) la consigne est envoyée à l'appareil, et après une attente de 500ms les valeurs mesurées de tension et intensité sont récupérées (cela se passe dans la routine setvolt). Enfin l'appareil est désactivé avant la fin du programme.

L'exécution donne: `IDN: TENMA 72-13210 V2.10 S50011730set 24.000V 0.0000A  24.407Vset 24.000V 0.0000A  23.998Vset 23.900V 0.0000A  23.896Vset 23.800V 0.0000A  23.796Vset 23.700V 0.0047A  23.698Vset 23.600V 0.0160A  23.598Vset 23.500V 0.0382A  23.496Vset 23.400V 0.0699A  23.397Vset 23.300V 0.1103A  23.296Vset 23.200V 0.1546A  23.198Vset 23.100V 0.2049A  23.096Vset 23.000V 0.2572A  22.996Vset 22.900V 0.3104A  22.895Vset 22.800V 0.3645A  22.796Vset 22.700V 0.4185A  22.698Vset 22.600V 0.4733A  22.598Vset 22.500V 0.5278A  22.499Vset 22.400V 0.5821A  22.398Vset 22.300V 0.6363A  22.299Vset 22.200V 0.6915A  22.197Vset 22.100V 0.7435A  22.099Vset 22.000V 0.7974A  21.998Vset 21.900V 0.8490A  21.900Vset 21.800V 0.9019A  21.797Vset 21.700V 0.9536A  21.697Vset 21.600V 1.0035A  21.599Vset 21.500V 1.0540A  21.499Vset 21.400V 1.1048A  21.397Vset 21.300V 1.1538A  21.297Vset 21.200V 1.2032A  21.196Vset 21.100V 1.2502A  21.099Vset 21.000V 1.2986A  20.998Vset 20.900V 1.3457A  20.898Vset 20.800V 1.3929A  20.797Vset 20.700V 1.4395A  20.698Vset 20.600V 1.4864A  20.596Vset 20.500V 1.5310A  20.498Vset 20.399V 1.5769A  20.397Vset 20.299V 1.6215A  20.298Vset 20.199V 1.6672A  20.195Vset 20.099V 1.7112A  20.095Vset 19.999V 1.7546A  19.996Vset 19.899V 1.7979A  19.896Vset 19.799V 1.8412A  19.797Vset 19.699V 1.8841A  19.696Vset 19.599V 1.9263A  19.596Vset 19.499V 1.9680A  19.498Vset 19.399V 2.0100A  19.397Vset 19.299V 2.0521A  19.297Vset 19.199V 2.0936A  19.196Vset 19.099V 2.1345A  19.096Vset 18.999V 2.1762A  18.996Vset 18.899V 2.2157A  18.897Vset 18.799V 2.2565A  18.796Vset 18.699V 2.2964A  18.698Vset 18.599V 2.3367A  18.595Vset 18.499V 2.3766A  18.495Vset 18.399V 2.4148A  18.396Vset 18.299V 2.4543A  18.296Vset 18.199V 2.4935A  18.197Vset 18.099V 2.5313A  18.097Vset 17.999V 2.5704A  17.996Vset 17.899V 2.6074A  17.899Vset 17.799V 2.6465A  17.796Vset 17.699V 2.6846A  17.696Vset 17.599V 2.7219A  17.595Vset 17.499V 2.7594A  17.496Vset 17.399V 2.7967A  17.394Vset 17.299V 2.8319A  17.297Vset 17.199V 2.8357A  17.196Vset 17.099V 2.8391A  17.097Vset 16.999V 2.8410A  16.994Vset 16.899V 2.8443A  16.895Vset 16.799V 2.8479A  16.795Vset 16.699V 2.8502A  16.696Vset 16.599V 2.8547A  16.597Vset 16.499V 2.8580A  16.496Vset 16.399V 2.8623A  16.397Vset 16.299V 2.8651A  16.302Vset 16.199V 2.8688A  16.201Vset 16.099V 2.8732A  16.099Vset 15.999V 2.8777A  16.001Vset 15.899V 2.8828A  15.899Vset 15.799V 2.8869A  15.802Vset 15.699V 2.8913A  15.700Vset 15.599V 2.8966A  15.600Vset 15.499V 2.9011A  15.500Vset 15.399V 2.9062A  15.399Vset 15.299V 2.9112A  15.298Vset 15.199V 2.9154A  15.201Vset 15.099V 2.9199A  15.099Vset 14.999V 2.9236A  15.000Vset 14.899V 2.9277A  14.899Vset 14.799V 2.9312A  14.799Vset 14.699V 2.9345A  14.701Vset 14.599V 2.9385A  14.600Vset 14.499V 2.9426A  14.498Vset 14.399V 2.9466A  14.398Vset 14.299V 2.9499A  14.298Vset 14.199V 2.9532A  14.200Vset 14.099V 2.9572A  14.099Vset 13.999V 2.9606A  13.999Vset 13.899V 2.9642A  13.899Vset 13.799V 2.9661A  13.798Vset 13.699V 2.9683A  13.698Vset 13.599V 2.9723A  13.599Vset 13.499V 2.9769A  13.499Vset 13.399V 2.9820A  13.400Vset 13.299V 2.9866A  13.299Vset 13.199V 2.9903A  13.199Vset 13.099V 2.9940A  13.101Vset 12.999V 2.9972A  13.000Vset 12.899V 3.0006A  12.899Vset 12.799V 3.0025A  12.798Vset 12.699V 3.0055A  12.698Vset 12.599V 3.0090A  12.600Vset 12.499V 3.0120A  12.498Vset 12.399V 3.0176A  12.398Vset 12.299V 3.0203A  12.299Vset 12.199V 3.0236A  12.198Vset 12.099V 3.0270A  12.098Vset 11.999V 3.0301A  11.999Vset 11.899V 3.0339A  11.899Vset 11.799V 3.0392A  11.800Vset 11.699V 3.0455A  11.697Vset 11.599V 3.0495A  11.598Vset 11.499V 3.0538A  11.500Vset 11.399V 3.0584A  11.399Vset 11.299V 3.0622A  11.298Vset 11.199V 3.0652A  11.198Vset 11.099V 3.0684A  11.097Vset 10.999V 3.0710A  11.000Vset 10.899V 3.0740A  10.897Vset 10.799V 3.0765A  10.797Vset 10.699V 3.0783A  10.698Vset 10.599V 3.0806A  10.598Vset 10.499V 3.0826A  10.499Vset 10.399V 3.0850A  10.399Vset 10.299V 3.0871A  10.300Vset 10.199V 3.0892A  10.200Vset 10.099V 3.0918A  10.100V`

Ce fichier pemet de tracer la courbe V/I, par exemple avec gnuplot:

[![emulsp-2n3716+SS9014.svg](https://wiki.fablab.sorbonne-universite.fr/BookStack/uploads/images/gallery/2023-04/emulsp-2n3716ss9014.svg)](https://wiki.fablab.sorbonne-universite.fr/BookStack/uploads/images/gallery/2023-04/emulsp-2n3716ss9014.svg)

L'ensemble des fichiers sont disponibles dans [emulsp.zip](https://wiki.fablab.sorbonne-universite.fr/BookStack/attachments/249)