Contrôleur de charge MPPT sur STM32F334C8T6

Les commentaires sous mes articles précédents ont soulevé à plusieurs reprises la question tout à fait raisonnable: "Pourquoi faire des convertisseurs DC / DC sur un microcontrôleur quand il y en a des prêts à l'emploi?" et comme réponse, j'ai constamment mentionné, comme exemple le plus frappant, un contrôleur de charge avec algorithme MPPT. Mais pour dire une chose, et pour montrer ... c'est beaucoup plus intéressant et clair, donc aujourd'hui je vais vous parler de mon petit projet lent d'un tel contrôleur.


Le projet du contrôleur est ouvert, tous les fichiers sources sont disponibles sur github . Le contrôleur lui-même est assez simple à mettre en œuvre, il est construit sur la topologie de buck, il utilise les composants disponibles et tout cela donne une bonne répétabilité même sans trop de connaissances. La disposition des connecteurs et des composants est conçue pour que ce contrôleur puisse être utilisé à la fois comme une carte de débogage pour étudier l'électronique de puissance, et comme un appareil fini, il ne reste plus qu'à le justifier.


Photos IRM


Chapitre 1. Qu'est-ce que l'algorithme MPPT et pourquoi est-il nécessaire


Le MPPT lui-même est le processus de recherche du point de puissance maximale d'un panneau solaire. La présence de cet algorithme dans le contrôleur permet dans certaines conditions d'augmenter significativement l'efficacité d'utilisation des panneaux solaires. Lorsqu'un fabricant écrit la puissance sur le panneau, par exemple 100 ... 200 ... 250 ... 320 W, cela signifie la puissance nominale du panneau solaire à un niveau d'ensoleillement de 1000 W / m 2 . Bien entendu, les fabricants ne prennent pas les panneaux à l'extérieur et n'attendent pas les conditions météorologiques idéales, donc cette valeur est acceptée en standard et est "générée" sur le banc de laboratoire.


En conditions réelles, avec un ciel dégagé, le niveau maximum d'insolation varie de 250 W / m 2 quelque part en Norvège à 900-1000 W / m 2 en Afrique du Nord. Il s'ensuit qu'au Nord le panneau solaire ne donnera pas sa puissance déclarée, mais en Afrique c'est facile. MAIS ... Dès que des nuages ​​apparaissent dans le ciel qui obscurcissent le panneau solaire, le niveau d'insolation diminue. Rappelez-vous la météo du mois dernier, combien de jours ensoleillés idéaux avez-vous vus? Si vous êtes de Krasnodar, alors peut-être beaucoup, mais les habitants de la bande médiane de nuages ​​sont certainement plus.


En fait, quel est le problème ... Avec une diminution de l'éclairage du panneau solaire, l'emplacement du point de puissance maximale (TMM) sur le CVC du vrai panneau solaire change. Voyons maintenant ce qu'est le TMM ... Pour cela, nous prenons un panneau solaire avec la puissance déclarée de 200 W (j'ai Delta BST200-24P) et en supprimons la caractéristique courant-tension (I-V) à un niveau d'ensoleillement de 1000 W / m 2 :


VAC du panneau solaire


Panneau solaire TTX


Si vous regardez le graphique de puissance, il montre clairement le pic dans lequel le panneau donne la puissance maximale possible - c'est TMM. De plus, si vous abaissez la ligne à partir de ce point, elle coupera le CVC - les coordonnées de ce point sont le résultat même que vous devez trouver. En termes simples: "MPPT est le processus de recherche d'un point sur la caractéristique I-V auquel le produit du courant et de la tension a une valeur maximale"


De plus, il vaut la peine de faire attention que le panneau solaire puisse donner un peu plus, c'est normal, car son efficacité dépend non seulement du niveau d'insolation, mais aussi de la température. Si vous mettez le panneau au soleil, après quelques heures, il chauffera assez fortement et la puissance diminuera d'environ 10%.


Voyons maintenant ce que fera exactement le contrôleur de charge et pourquoi il a besoin d'IRM. Comme mentionné précédemment, le niveau d'ensoleillement changera considérablement pendant le fonctionnement: les nuages, le temps nuageux, l'aube et le coucher du soleil, respectivement, et la caractéristique I-V du panneau solaire changera également:


CVC de l'insolation


Le graphique montre la caractéristique I-V pour 4 cas: 1000, 800, 600 et 400 W / m 2 et, en conséquence, pour chaque cas, nous aurons notre propre point sur la caractéristique I-V, où le produit du courant et de la tension aura une valeur maximale. La tâche du contrôleur de charge avec MPPT est de rechercher le point de puissance maximale pour des conditions météorologiques spécifiques. Par exemple, vous vivez quelque part à Voronezh, vous avez de la chaleur et beaucoup d'énergie solaire et vous avez trouvé du TMM et tirez le meilleur parti de l'énergie, mais après 15 minutes, un nuage s'est levé au-dessus de vos panneaux et a fermé partiellement les panneaux et la valeur d'insolation a changé, et donc le CVC a changé panneaux. Pour que le contrôleur de charge puisse s'adapter à de nouvelles conditions, il doit, avec une certaine fréquence, par exemple, toutes les 5 minutes, effectuer des calculs et rechercher TMM pour un nouveau CVC.


Il existe de nombreux algorithmes de recherche TMM, allant du plus simple "0.8 * U xx " à divers algorithmes de balayage avec des réseaux de neurones, mais je décrirai plus en détail les algorithmes et leur implémentation dans le code dans un article séparé. J'espère que vous comprenez ce qu'est le TMM et pourquoi nous le recherchons; maintenant vous pouvez aller directement à la glande.


Chapitre 2. Spécifications et fonctionnalités du contrôleur


Maintenant, il est nécessaire de décider ce que le contrôleur devrait être en mesure de fournir les fonctionnalités nécessaires. Tout d'abord, le contrôleur charge la batterie, et il est donc nécessaire de mettre en œuvre un contrôle CC / CV (stabilisation du courant et de la tension) à la sortie, et pour cela, vous devez mesurer le courant et la tension à la sortie. Deuxièmement, pour rechercher TMM, il est nécessaire de mesurer la caractéristique I-V du panneau solaire, ce qui signifie qu'il est nécessaire de mesurer le courant et la tension à l'entrée. Troisièmement, il devrait y avoir un abaisseur continu / continu, qui abaissera la tension d'entrée à 12 ou 24 V, dans ce cas, ce sera un abaisseur synchrone. Tout cela vous permettra de mettre en œuvre les fonctionnalités de base de l'appareil, par conséquent, le diagramme fonctionnel ressemblera à ceci:


Diagramme fonctionnel


Comme vous pouvez le voir, il n'y a rien de compliqué, le circuit est très similaire à l'exemple de cet article et les seules différences sont dans les circuits de rétroaction supplémentaires pour implémenter l'algorithme de recherche TMM et le processus de charge. En outre, il est nécessaire de mettre en œuvre une protection contre la surchauffe, des courants traversants, d'ajouter quelques interfaces pour communiquer avec le monde extérieur et de mettre à jour le firmware de manière pratique.


Spécifications:

  • Tension d'entrée: 15 ... 60V
  • Tension de sortie: 12 / 24V
  • Courant de sortie nominal: 20A
  • Algorithmes IRM: Oui
  • Fréquence de conversion: 100 kHz
  • Protection contre la surchauffe: Oui
  • Grâce à la protection actuelle: Oui
  • Protection de la batterie: OVP et OCP
  • Interfaces: USB, Modbus
  • Ressource: au moins 50 000 heures
  • Dimensions hors tout: 1109020 mm

Il n'y a pas de fioritures spéciales dans cette solution, le principal biais est la fiabilité accrue, l'efficacité des algorithmes TMM et le maintien d'un coût de contrôleur adéquat. Parmi les commodités, il a été décidé de poser un USB isolé galvaniquement pour régler et flasher le microcontrôleur de contrôle + il peut être utilisé pour le débogage si vous n'aimez pas SWO. En outre, pour la mise en œuvre de la télécommande et de la surveillance, le RS-485 a été installé, ce qui est fiable, bon marché à mettre en œuvre et vous permet d'organiser la communication sur une distance de 1000 mètres. Du wi-fi et d'autres choses, la radio a refusé immédiatement, car le contrôleur est généralement utilisé dans un panneau métallique et en option dans un bâtiment en béton armé.


Chapitre 3. Sélection des composants


Sur KDPV, il est visible que l'appareil se compose de deux cartes de circuits imprimés: module de contrôle à 4 couches et la carte principale à 2 couches. Attentif peut remarquer que le module de contrôle est similaire à la solution du dernier article , mais entièrement repensé. En effet, après avoir testé la version précédente de la carte de contrôle et après discussions dans les commentaires, il a été décidé d'apporter un certain nombre de changements globaux:


  • Refus d'installation verticale dans le connecteur et passage à l'horizontale. Cela nous a permis de résoudre le problème avec le connecteur et de se passer des PLS 2,54 mm habituels, ainsi que de réduire considérablement la hauteur de l'appareil. Avec la version verticale, la hauteur du contrôleur serait de 60 mm, pas 20, et il y aurait une grande chance de casser la carte de contrôle. Maintenant, il ne se démarque pas de l'arrière-plan des autres composants et prend toujours peu de place;
  • Dimensions du panneau réduites à 90x35 mm;
  • Le contrôleur STM32F334R8T6 a été remplacé par un STM32F334C8T6 plus compact et moins cher. Ce remplacement a également entraîné une diminution du nombre de canaux de commande du demi-pont de 5 à 4. Comme le montre la pratique, ce contrôleur ne prend pas le contrôle à la fois par 5 demi-ponts, à moins d'algorithmes très simples. Sur cette base, il a été décidé d'abandonner le package LQFP-64 au profit du LQFP-48;
  • Ajout d'un pont USB isolé galvaniquement, ou plus précisément, du pont USB-UART, car le microcontrôleur lui-même n'a pas d'interface matérielle USB;
  • Suppression de la puce PHY pour RS-485 de la carte de contrôle, comme tout le monde n'en a pas besoin et pas toujours, mais pour son utilisation possible, un UART et un gpio supplémentaire pour la réception / transmission du contrôle sont sortis sur le connecteur. Aussi maintenant, sur le tableau principal, vous pouvez mettre PHY isolé galvaniquement et ne pas être lié à ma décision;
  • En plus de l'interface SWD, il a été décidé de sortir SWO sur le connecteur de débogage pour un débogage plus pratique du programme.

Conseil d'administration


Passons maintenant à la sélection des composants pour la partie principale (puissance) du convertisseur. Dans mon histoire précédente sur la topologie Buck, j'ai parlé du choix des composants de puissance (transistors, condensateurs, inductances) et de la méthode de calcul de leurs valeurs nominales. Aujourd'hui, je voudrais parler un peu plus de composants tout aussi importants, à savoir le pilote de gestion des touches d'alimentation, les capteurs de courant, etc.


Capteur de courant

Pour contrôler la charge de la batterie et mesurer la caractéristique courant-tension du panneau solaire, il est nécessaire de mesurer un courant continu dans la plage de 0 à 20A. Il n'y a pas beaucoup d'options pour mesurer le courant continu; les méthodes les plus efficaces et les plus simples sont un shunt de courant et un capteur à effet Hall. Dans la première version, j'ai essayé un tas de "shunt + INA194", l'option fonctionne généralement, mais le moniteur lui-même était assez bruyant et il y avait un problème de mesure des courants inférieurs à 3-4A. Le problème a été résolu en augmentant la valeur nominale du shunt et du filtre numérique, mais ensuite la puissance libérée sur le shunt sous forme de chaleur a augmenté, ce que je ne voulais pas beaucoup.


Au départ, j'ai lancé l'option avec l'utilisation de capteurs à effet Hall, à savoir la série ACS (par exemple, ACS758 ou ACS711), car J'ai déjà essayé de les appliquer par le passé, mais ils ont beaucoup menti et leur plage de mesure est faible. Certes, dans l'une des discussions, un homme a parlé de l'expérience réussie de l'utilisation de ces capteurs, il s'est avéré que des séries relativement nouvelles ont cessé de répondre à la moindre interférence, l'essentiel est qu'il n'y avait rien de fer ou quelque chose qui pourrait être magnétisé près d'eux. J'ai besoin de mesurer le courant continu dans un système où le taux de changement de courant n'est pas élevé, et donc une bande de 100 kHz est suffisante. Sur la base de la simplicité et du prix de la solution, dans la deuxième version du contrôleur MPPT, j'ai installé ACS713ELCTR-30A. Allegro a deux versions de capteurs - DC et DC / AC, je n'ai pas besoin de mesurer le changement, et donc le choix est évident en faveur de DC, qui ont également une grande valeur de "volts par ampère". Cela a permis de mesurer avec précision non seulement les grands courants, mais aussi les petits au niveau de 0,3 ... 0,5A avec une erreur réelle de ± 5%. Le circuit d'allumage de ce capteur est extrêmement simple:


Circuit de capteur de courant


L'inclusion est standard, il n'y a pas de magie dans le circuit, la seule chose à faire est de "coordonner" la plage de sortie du capteur 0 ... 5V avec ce qu'il peut mesurer l'ADC du microcontrôleur STM32, à savoir avec la plage de 0 ... 3.3V. Le capteur a une tension de sortie, il est linéaire et une augmentation de la tension de sortie de 133 mV signifie une augmentation du courant traversant le capteur de 1A. Sur cette base, la tension de sortie minimale est de 0 V et la tension maximale de 30 A * 133 mV / A = 3,99 V. Théoriquement, le diviseur de tension n'a pas pu être réglé, car le courant maximum n'est que de 20 A et donc la tension de sortie sera à moins de 2,66 V et ne menace en aucun cas l'entrée ADC, mais il est préférable de la jouer en toute sécurité. Peut-être qu'après des tests et une longue intrusion de l'appareil, je retire toujours le diviseur et place un suiveur de tension sur l'ampli-op.


Transistor Gate Driver

Même au stade de l'idée, j'ai décidé d'abandonner immédiatement l'isolement galvanique complet du circuit de commande du circuit de puissance, il est banal cher, même s'il élimine les interférences et protège la partie numérique. L'introduction d'une isolation galvanique de 2 tensions et d'un driver augmenterait le prix du convertisseur de 40%. Par conséquent, j'ai dû refuser mes pilotes Infineon 1ED / 1EDI préférés et choisir quelque chose de décent avec une puissance d'amorçage pour la touche supérieure, mon choix s'est porté sur une solution assez nouvelle - NCP5183DR2G. Le pilote s'est révélé très stable en fonctionnement et suffisant pour contrôler une paire de mosfets à une fréquence de 100 kHz. J'ai trouvé un inconvénient - l'absence d'une entrée séparée, par exemple, ShutDown ou Enable pour désactiver le pilote en cas d'accident.Par conséquent, pour mettre en œuvre la protection, vous devez installer une logique discrète supplémentaire ou utiliser l'entrée matérielle FAULT dans le microcontrôleur STM32F334 lui-même. J'ai choisi la deuxième option et jusqu'à présent elle ne m'a pas échoué, même si au départ j'étais sceptique quant à la fiabilité d'une telle solution. Le circuit de commande du transistor ressemble à ceci:


Circuit pilote


La solution est simple et claire, la seule chose que j'ajouterai de moi-même est que le condensateur C1 doit être en céramique avec un diélectrique X7R et de préférence pas le plus pourri, l'original Yageo / Murata / Samsung est suffisant pour tout le monde. Le reste de la poudre libre peut être une marque plus simple. À propos, vous pouvez lire sur "l'agonie de choix" de la valeur nominale des résistances de grille R1 et R5 dans cet article .


Condensateurs de sortie

J'ai indiqué ci-dessus la priorité de la fiabilité et des ressources du convertisseur, et il est donc nécessaire d'éliminer toutes les faiblesses. À mon avis, il n'y a qu'un seul point faible dans les convertisseurs cc / cc modernes - les condensateurs électrolytiques, qui en quelque sorte «sèchent» et se dégradent après un certain temps, ce qui conduit d'abord à une augmentation de l'ondulation et de la surchauffe, puis à la défaillance du convertisseur.


Dans mon contrôleur de charge, il y en a jusqu'à 2: des condensateurs à l'entrée et à la sortie. Il a été décidé de remplacer les électrolytes de sortie par des condensateurs polymères à l'état solide (comme dans vos cartes vidéo), qui sont beaucoup plus faciles à réaliser sur des courants de dizaines d'ampères et ont une ressource d'un ordre de grandeur supérieur à celui du condensateur électrolytique de la plus haute qualité. Ils ont un inconvénient - le prix, ce plaisir de Panasonic coûte 2 $ / pc, mais ça vaut le coup.


A l'entrée de l'appareil, la tension peut atteindre 60V, ce qui signifie que les condensateurs polymères à l'état solide ne peuvent plus être alimentés, ils n'existent tout simplement pas, un maximum de 35V. Certes, il existe des options hybrides, il s'agit d'un lien intermédiaire entre l'électrolyte et un condensateur à semi-conducteurs, ils sont jusqu'à 100V. Pour ce type de condensateur, l'électrolyte liquide est remplacé par un électrolytique pâteux, ce qui permet plusieurs fois d'augmenter sa ressource.


Photos IRM


Les plus attentifs peuvent remarquer que les condensateurs à semi-conducteurs de sortie sont différents sur deux cartes. Je pense que tout le monde a "apprécié" le coût d'un condensateur 120 uF 35V, l'électrolyte de Wurth coûte 10 fois moins cher. Sur cette base, j'ai décidé de faire des tests pour acheter une alternative aux condensateurs 35SEK330M de Panasonic. Eh bien, comme alternative ... il y a une telle société asiatique Lelon , qui fabrique un analogique complet (selon leurs mots) de condensateurs Panasonic. J'ai mis l'original sur une carte, sur un autre analogique, les appareils eux-mêmes ont déjà été testés pendant environ un mois et jusqu'à ce que la différence soit vraiment remarquée, voyons quelle sera la ressource finale, mais pour ceux qui veulent baisser le prix 5 fois à 0,4 $ / pièce, je vous conseille d'y penser.


Présentation des composants

Je voudrais parler séparément de la politique de choix des composants et des solutions. Étant donné que l'idée implique l'utilisation de ce contrôleur non seulement pour étudier sur la table, mais aussi pour travailler «sur le terrain», il a été décidé de n'utiliser que des fabricants de confiance et de ne pas utiliser de composants chinois (sauf pour l'expérience avec Lelon ) et divers métiers avec aliexpress. Dans ma version et dans la nomenclature, des originaux avec digikey de fabricants tels que Infineon, TI, ON, ST, Yageo, Bourns et d'autres apparaissent. En principe, personne ne vous interdit de mettre des composants plus facilement, avec le même aliexpress, mais soyez prêt à réduire la fiabilité et l'efficacité du contrôleur.


Chapitre 4. À propos du projet et des codes source


J'ai déjà écrit sur les composants de puissance et les méthodes de calcul dans mon article sur buck , vous pouvez le lire ici. Je ne donnerai que les résultats que j'ai obtenus:


  • L'inductance de l'inductance de puissance est de 30 μH, enroulée sur un anneau R32 / 20/10 en matériau Kool Mu. L'anneau est franchement sélectionné avec une marge, car des expériences de fréquence et d'augmentation de courant étaient prévues;


  • La capacité des condensateurs de sortie est d'environ 300 microfarads, en réalité, la capacité est considérablement plus élevée, ce qui a réduit l'ondulation de sortie. J'ai essayé de travailler avec 3 condensateurs, tout va bien, donc si vous décidez de le répéter, n'hésitez pas à laisser la moitié des sièges pour les condensateurs de sortie vides. En principe, vous pouvez essayer de souder 6 condensateurs électrolytiques ordinaires, s'il n'est pas possible d'acheter des condensateurs à semi-conducteurs. Selon mes hypothèses, le contrôleur fonctionnera sans aucun problème;


  • Transistors ( IPD053N08N3GATMA1 ) J'ai choisi ceux qui étaient dans mes stocks et assez faciles à acheter. Si vous avez déjà les clés ou ne pouvez pas acheter celles que j'ai, choisissez un transistor avec une résistance de canal de pas plus de 8 mOhm et une grille de pas plus de 100 nC. Sinon, le rendement chutera suffisamment et les transistors surchaufferont considérablement.



Il y a aussi probablement ceux qui sont trop paresseux pour aller sur github, donc je vais laisser le schéma complet de l'appareil au format PDF:



La partie en fer du projet a été achevée dans Altium Designer 19, et le projet peut également être ouvert dans Curcuit Studio. Pour ceux qui ne veulent pas s'impliquer dans l'achat de logiciels ou de piratage, il existe un schéma dans les fichiers PDF et Gerber, cela vous suffira pour commander des cartes de circuits imprimés et construire vous-même un contrôleur MPPT.


… "" github, , . dc/dc , -, -, -, , .


Conclusion


, .. , , , .1 . — 10 , HIN LIN (GND). , "" .


PCBway , . , , Votre soutien sera consacré au matériel et cela se traduira par un article intéressant.


Il me reste également 2 jeux de cartes de circuits imprimés, si quelqu'un veut assembler un contrôleur, je donnerai gratuitement de bonnes mains. Il vous suffit de collecter et, si vous le souhaitez, de m'écrire vos commentaires et suggestions. Les personnes intéressées écrivent de façon personnelle.


Projets Github

Source: https://habr.com/ru/post/fr454024/


All Articles