Fabrication industrielle
Internet des objets industriel | Matériaux industriels | Entretien et réparation d'équipement | Programmation industrielle |
home  MfgRobots >> Fabrication industrielle >  >> Manufacturing Technology >> Processus de fabrication

Alimentation de Poche Programmable Compacte avec Affichage OLED – Compatible Arduino

Composants et fournitures

Arduino UNO × 1
Arduino Nano R3 × 1
Module Boost DC-DC XL6009 × 1
Interrupteur Poussoir 12mm (SparkFun) × 1
Quartz 16 MHz × 1
Bornier × 1
Régulateur Linéaire à Sortie Réglable × 1
Régulateur Linéaire 7805 × 1
Diode 1N4007 – Haute Tension, Haut Courant × 1
Câble USB-A vers B × 1
Potentiomètre Précision Multi-tours 10k ohms (25 tours) × 1
Relais à Verrouillage Arduino 5V 2A × 1
Potentiomètre Numérique MCP4131 10k (SparkFun) × 1
Ruban Cuivre Arduino × 1
Amplificateur Opérationnel LM358 × 1
Amplificateur Opérationnel OP07 (Instrumentation) × 1
Boîtier Prise Standard × 1
Plaque Proto FR4 × 1
Fils de connexion (générique) × 1
Connecteur Male 40 positions 1 rangée (0,1") × 1
Résistance 10k ohm × 1
Résistance 22,1k ohm × 1
Résistance 1k ohm × 1
OLED 1306 Arduino × 1

Outils nécessaires

Fer à souder (générique)
Pistolet à colle chaude (générique)
Mini Perceuse

Applications et services en ligne

Arduino IDE

À propos de ce projet

L'idée

En tant que passionnés, nous avons fréquemment besoin d'alimenter nos prototypes, vérifier la tension, le courant, les limites de puissance de nos projets, tester un composant nouvellement acheté. Le besoin d'une alimentation variable est toujours présent dans ce domaine. Mais malheureusement, nous n'avons pas tous des alimentations de laboratoire/établi. C'est aussi cher si acheté, encombrant si besoin de le transporter. Je cherchais une alimentation programmable à moindre coût, avec portabilité et productivité pour alimenter mes prototypes et tester des composants. J'ai donc décidé d'en fabriquer une.

Elle possède les caractéristiques suivantes :

Et l'alimentation la plus polyvalente pour projets électroniques basse puissance.

En Action !

Regardez cette vidéo démontrant le fonctionnement de l'appareil :

Spécifications de l'appareil

L'appareil a les spécifications suivantes :

Alimentation de Poche Programmable Compacte avec Affichage OLED – Compatible Arduino
Alimentation de Poche Programmable Compacte avec Affichage OLED – Compatible Arduino

Veuillez noter que cet appareil est un prototype rapide. Il est possible de faire 0-30V, même une alimentation négative et plus de courant de sortie en utilisant des batteries de plus grande capacité, de l'électronique supplémentaire et une conception améliorée.

Principe de fonctionnement

La conception elle-même est intensive en matériel. Beaucoup de choses se passent ici. Un diagramme de blocs simplifié du système ressemble à ceci :

Alimentation de Poche Programmable Compacte avec Affichage OLED – Compatible Arduino

La source d'alimentation est la batterie Li-Po 3,7 V qui est rechargeable par USB. En utilisant un module boost DC-DC XL6009, nous faisons d'abord 15,6 volts à partir de la Li-Po. Pour faire fonctionner le MCU, nous faisons aussi un 5 Volts en utilisant le régulateur 7805.

Le clone Arduino UNO Atmega328P est connecté avec 2 interrupteurs d'entrée utilisateur basés sur interruption, un affichage OLED élégant. Port Rx/Tx/DTR pour le téléversement du firmware (sketch) via USB/Série depuis le PC. (module 1)

Le cœur du projet est le Potentiomètre Numérique MCP4131 (Digipot) + AmpliOp LM358 basé Générateur de Tension par Paliers. Cette tension est la Tension de Contrôle du Régulateur Réglable LM317. (module 2)

Le Digipot est contrôlé depuis l'Arduino via une commande de type Pseudo-SPI. Le LM317 est conçu de telle sorte que la Tension de la Broche de Sortie est toujours 1,25 Volts plus haute que la Tension de la Broche Adjust fournie que la tension de la Broche INPUT est assez haute (ici 15,6 volts). (module 3)

La tension par paliers est envoyée à la broche Adjust pour créer une sortie variable depuis l'Arduino selon les besoins de l'utilisateur.

L'ADC mesure toutes les tensions associées à la supervision et la protection ; tension batterie, tension boostée, tension de détection de charge et tension de sortie sont conditionnées par un réseau diviseur de tension pour s'adapter à la plage de l'ADC, qui est 0-1,1 volts ici. J'ai utilisé la RÉFÉRENCE INTERNE de l'Arduino qui crée une tension de référence de 1,1 volts.

Pour la détection de courant, le retour (Masse Charge) depuis la Charge de Sortie est connecté en série avec une Résistance de Détection de Courant de 1 Ohm à la Masse Système. Quand le courant traverse les charges externes, il y a aussi une chute de tension dans cette résistance de détection. Cette tension est amplifiée par l'Amplificateur Opérationnel de Précision OP07 et envoyée à l'une des broches ADC.

Enfin, pour la charge de la batterie, 5 volts depuis l'USB est connecté en série avec une diode 4007 et une résistance limitatrice de courant de 5 ohms à la batterie Li-Po. C'est une méthode de charge basique, pas la meilleure pour la charge Li-Po.

Résumé du fonctionnement : Le Potentiomètre Numérique MCP4131 crée des tensions par paliers dans la plage 0-5 Volts par pas d'environ 40mV (Digipot 10K 7-bit a 129 pas 5V/128 = 0,04 V), qui est ensuite amplifiée 2,5 fois par le LM358 donnant une plage de tension de contrôle 0-12,5 volts avec des pas de 0,1 volt. Ce signal de tension par paliers amplifié est envoyé à la broche Adjust du LM317. Le LM317 génère une tension de sortie de V_Step + 1,25 Volts qui est fournie aux charges externes. Le retour/la masse de la charge externe est connecté à la masse interne via la résistance de détection de courant de 1 Ohm. Supposons : x mA courant circule vers la charge externe, cela créera x mV de chute (Loi d'Ohm V=I*R) sur la résistance de détection de 1 Ohm. Ce petit signal de tension est envoyé à l'AmpliOp Faible Décalage (10µV) OP07 configuré avec un gain de 2,5X, qui générera 2,5x mV en sortie. L'ADC de l'Arduino est configuré avec une référence interne de 1,1 Volts de sorte que les tensions de 0 - 1100 mV puissent être détectées par pas d'environ 1mV (1100/1023). La sortie de l'OP07 est connectée à l'ADC de l'Arduino pour la détection de courant. C'est pourquoi la limite de courant est 400mA. Elle peut être augmentée/réduite en changeant le gain de l'OP07. De même, la plage de tension de sortie peut être changée en changeant la tension boostée et le gain du LM358. Les autres tensions sont mesurées avec un réseau diviseur de tension résistif atténuant les tensions pour s'adapter à la plage ADC. Le relais à verrouillage a 2 bobines. En appliquant une impulsion de puissance momentanée à l'une des bobines, les contacts du relais peuvent être commutés. Une fois commuté, il reste là, donc la bobine est mise hors tension immédiatement.

Construction du projet

D'abord, nous commençons avec une boîte de prise simple, et faisons les coupes et alignements nécessaires pour placer la batterie, le port de charge USB, l'interrupteur d'alimentation, etc.

Alimentation de Poche Programmable Compacte avec Affichage OLED – Compatible Arduino

Ensuite, le dissipateur thermique est fait avec du ruban cuivre et une pièce de monnaie pour le module boost DC-DC.

Alimentation de Poche Programmable Compacte avec Affichage OLED – Compatible Arduino
Alimentation de Poche Programmable Compacte avec Affichage OLED – Compatible Arduino

Le module boost est placé à l'intérieur de la boîte :

Alimentation de Poche Programmable Compacte avec Affichage OLED – Compatible Arduino
Alimentation de Poche Programmable Compacte avec Affichage OLED – Compatible Arduino

En utilisant les pièces ci-dessus, les 3 modules suivants sont faits :

Alimentation de Poche Programmable Compacte avec Affichage OLED – Compatible Arduino
Alimentation de Poche Programmable Compacte avec Affichage OLED – Compatible Arduino

Finalement, les connexions en toile d'araignée entre toutes les cartes sont connectées et soudées.

Alimentation de Poche Programmable Compacte avec Affichage OLED – Compatible Arduino

Après utilisation de la colle chaude comme remplissage, nous l'avons enfin :

Alimentation de Poche Programmable Compacte avec Affichage OLED – Compatible Arduino

Développement du Firmware & Procédure d'Utilisation

Le firmware (Sketch Arduino) est actuellement en version 1.0.2 Beta. Toutes les fonctionnalités ne sont pas encore disponibles. Mais les fonctionnalités les plus importantes comme le contrôle de tension, la connexion/déconnexion du relais, l'affichage des informations sont activées. Dans void setup() il y a quelques fonctions d'initialisation pour chauffer les broches Arduino associées aux différents matériels externes.

ENTRÉE : Il y a 2 boutons d'entrée basés sur interruption pour augmenter/diminuer la tension de sortie, accéder au menu (non disponible sur cette version). INT0 et INT1 sur les broches Arduino 2 et 3 sont codés pour INTERRUPTION FRONT DESCENDANT. Vous verrez 2 condensateurs en parallèle avec les interrupteurs mécaniques pour l'anti-rebond. Le code est écrit pour déclencher les interruptions quand l'utilisateur appuie sur ces interrupteurs pour activer/désactiver la sortie via le relais ou augmenter/diminuer la tension (Beta).

SORTIE : L'OLED 1306 affiche les informations de sortie en acquérant les données de l'ADC, du minuteur interne (pour le temps de fonctionnement de l'appareil) et des variables de drapeau pour informer l'utilisateur sur l'état d'activation/désactivation de la sortie. Basé sur la bibliothèque U8G, l'OLED affiche les infos en texte et numérique. J'ai des plans pour utiliser une représentation graphique (type analogique).

5 broches numériques du SSD1306 (OLED de Waveshare) clk, din, cs, d/c, res sont connectées aux broches Arduino 10, 9, 11, 13, 12 et programmées en conséquence. Dans la boucle principale, la fonction update_display() est appelée à chaque fois pour mettre à jour les infos sur l'OLED.

Le Minuteur Interne 1 de l'Atmega328P est configuré pour se déclencher périodiquement toutes les 1 seconde pour suivre le temps.

CONTRÔLE : Le Potentiomètre Numérique MCP4131 est contrôlé avec les fonctions increment_digipot() & decrement_digipot() où les données sont décalées avec un horlogage et délai appropriés en utilisant les broches 6, 7, 8 comme CS, Clk, Broches Data. C'est comme un SPI logiciel lent. Comme j'avais déjà utilisé les broches SPI matérielles ailleurs, c'était la seule solution à l'époque.

Deux broches numériques 4 et 5 sont utilisées pour contrôler le relais à verrouillage. Une impulsion haute courte est envoyée aux transistors de pilotage du relais pour énergiser les 2 bobines pour basculer le relais. Cela se passe à la fois automatiquement (durant surcharge/court-circuit) ou manuellement par l'utilisateur.

ADC : La fonction calc_VI() dans la boucle principale effectue analogRead pour obtenir 20 fois la moyenne des informations de Tension et Courant et met à jour la variable pour la nouvelle information qui est ensuite affichée sur l'écran.

Le sketch est écrit dans plusieurs onglets pour organiser le code pour différentes fonctions associées à différentes opérations. Il y a les onglets ADC, Digipot, Display_Fn, Interrupt, Relay et Timer organisant toutes les fonctions définies par l'utilisateur. J'essaierai d'ajouter plus de commentaires expliquant toutes les fonctions, mais vous ne devriez pas trouver difficile à comprendre car ces fonctions sont basées sur de multiples fonctions Arduino faisant certaines tâches.

Limitations

Il y a quelques limitations sérieuses de cet appareil :

Références

Vous pouvez en apprendre plus sur chaque composant dans ces tutoriels :

Conclusion

Cette alimentation programmable m'aidera à réaliser des projets/prototypes plus efficacement. Mesure de tension, courant, puissance sans utiliser de multimètre.

Code

Alimentation Portable Programmable Arduino (Arduino) - Ver 1.0.1 avec info brochage en commentaires

// Broche Reset, D0 & D1 pour téléverser le Sketch
// Broches D9,D10,D11,D12,D13 pour contrôler l'affichage OLED
// ADC A0 pour Détection V_boost
// ADC A2 pour Détection V_batt (LiPo)
// ADC A3 pour Détection I_Output (Charge)
// ADC A4 pour Détection V_USB (Charge)
// ADC A5 pour Détection V_Output (Charge)
// Broches de pilotage des 2 bobines du Relais à Verrouillage D4 & D5
#define RC1 4
#define RC2 5
// Interrupteurs Utilisateur connectés aux broches D2 & D3
#define SW1 2
#define SW2 3
// Broches D6,D7,D8 pour Contrôle Potentiomètre Numérique
#define CS_PIN 6
#define CLK_PIN 7
#define DATA_PIN 8

volatile uint8_t Switch1 = 1;
volatile uint8_t Switch2 = 1;
float V_Out = 0.0;
float I_Out = 0.0;
float V_Bat = 0.0;
float V_Bst = 0.0;
float V_Chg = 0.0;
uint32_t time = 0;

#include "U8glib.h"
// Broches de Contrôle OLED
// SSD1306 oled waveshare(clk,din,cs,d/c,res); // CETTE LIGNE POUR WAVESHARE
U8GLIB_SSD1306_128X64 u8g(10, 9, 11, 13, 12);

void setup(void) {
  // retourner l'écran, si requis
  analogReference(INTERNAL);
  u8g.setRot180();
  button_init();
  relay_init();
  init_timer1();
  digipot_init();
}

void loop(void) {
  update_display();
  calc_VI();
  if (Switch1 == 0) {
    rc1_latch();
    Switch1 = 1;
    increment_digipot();
  }
  if (Switch2 == 0) {
    rc2_latch();
    Switch2 = 1;
    decrement_digipot();
  }
  delay(100);
}

Code Ver 1.0.1 Beta (C/C++)

Aucun aperçu (téléchargement uniquement).

Code Ver 1.0.2 Beta (C/C++)

Correction bug Alignement Texte/Boîtes
Correction bug Déclenchement Surcharge
Quelques autres bugs seront corrigés dans la prochaine version

Aucun aperçu (téléchargement uniquement).

Code Ver 1.0.3 (C/C++)

Correction bug désactivation relais sortie au démarrage
Correction bug tension de sortie auto-réglée à 5,00 V après démarrage

Aucun aperçu (téléchargement uniquement).

Schémas

Dessiné sur Tableau Blanc !

Alimentation de Poche Programmable Compacte avec Affichage OLED – Compatible Arduino

https://circuits.io/circuits/4762970-arduino-based-programmable-power-supply

Alimentation de Poche Programmable Compacte avec Affichage OLED – Compatible Arduino
Alimentation de Poche Programmable Compacte avec Affichage OLED – Compatible Arduino
Alimentation de Poche Programmable Compacte avec Affichage OLED – Compatible Arduino
Alimentation de Poche Programmable Compacte avec Affichage OLED – Compatible Arduino

Processus de fabrication

  1. Créer un jeu Pong classique sur Arduino UNO avec écran OLED – Tutoriel étape par étape
  2. Construire une Tirelire Intelligente : Contrôler un Accepteur de Pièces avec Arduino Nano
  3. Centre de contrôle d'alimentation Arduino : N-FET, P-FET, Relais et RTC
  4. Moniteur de Température et Horloge Temps Réel Arduino avec Écran TFT 3.2"
  5. Contrôler une LED par Bluetooth avec Arduino et MIT App Inventor
  6. Solutions d'alimentation optimisées pour projets Arduino
  7. Station météo interactive Nextion HMI avec Arduino Mega et capteurs
  8. Construire un voltmètre DIY avec Arduino et écran Nokia 5110
  9. Kit de Formation Arduino Complet : Mega 2560, Capteurs, Moteurs et PCB Personnalisé