Table des matières. Projet 1 1. Révisions document 5. Electronique 1 Logiciel 2. Arduino capacimetre



Documents pareils
Une carte pour vos projets

ARDUINO DOSSIER RESSOURCE POUR LA CLASSE

Durée estimée :1 journée Date de la réalisation : Description Fournisseur Référence Nombre PU HT LM35CZ, LM35AZ LM35DZ

Carte ARDUINO UNO Microcontrôleur ATMega328

Bien commencer avec un LaunchPad MSP430G et un Breadboard

TABLE DES MATIÈRES. Avant-propos... 1 Communications série Entrées simples analogiques et numériques... 61

STS SE. FreeRTOS. Programmation réseau WIFI. Programmation réseau. Socket Tcp. FlyPort smart Wi-Fi module

EPREUVE OPTIONNELLE d INFORMATIQUE CORRIGE

Bonjour, Le document qui suit est le support de la formation ''Arduino applications distantes''.

AMICUS 18 (2ème partie) 4) Présentation du logiciel Amicus IDE

BAMOSONIC IT. - Mesure de niveau -

Education Delivery Intelligent Tool

I. Introduction aux fonctions : les fonctions standards

Introduction au langage C

LOGICIEL DC4D MONITOR

galaxy MODULE TELECOM F A NF Manuel d Installation

IUT GEII MARSEILLE Patrick GUMUCHIAN. Lycée Alphonse Benoit L'Isle sur la Sorgue Marc SILANUS

CAA/SE N O T I C E D E M O N T A G E E T D U T I L I S A T I O N KIT DE MONTAGE. Clavier lumineux codes DIGICODE

Présentation et installation PCE-LOG V4 1-5

Centrale d alarme DA996

E-BOX. MODULE DESURVEILLANCE POUR : - ESCALIER MECANIQUE - TROTTOIR ROULANT

Piano Stairs. descriptif de la conception et des programmes associés. Copyright (C) 2013 taprik

Chapitre 10. Les interfaces Comparable et Comparator 1

Info0101 Intro. à l'algorithmique et à la programmation. Cours 3. Le langage Java

NUGELEC. NOTICE D'UTILISATION DU B.A.A.S. du type Ma - STI / MaME - STI. pages. 1 introduction 2. 2 encombrement 3 fixation

Description du logiciel Modbus RTU

Programmer en JAVA. par Tama

KL5121. Pour activer des sorties en fonction de la position d'un codeur

COACH-II Manuel d utilisation

Fiche technique CPU 314SC/DPM (314-6CG13)

Préleveur d'échantillons d eau automatique ELECTRO-MAGNUM /AQUAMAX 1 & 2 / SERVOTOP

Programmation. Enregistrement T T V OUI 0 NON. TTV5 code : TTV6 code :

Alimentation portable mah

Séverine Marien Maxime Ringard. 2 ème année GEII. Régulateur de charge pour station de recharge photovoltaïque

Programmation C++ (débutant)/instructions for, while et do...while

BACCALAURÉAT TECHNOLOGIQUE Sciences et Technologies de l Industrie et du Développement Durable ENSEIGNEMENTS TECHNOLOGIQUES TRANSVERSAUX

Programmation en langage C d un µcontrôleur PIC à l aide du compilateur C-CCS Sommaire

GOL-MPPT- 24V-10A GOL-MPPT- 12V-15A

Version beta. Station Météo 12/11/2012. Réalisation d un Station Météo avec Webserver composée de capteurs Grove et d un module Wifi Flyport.

RÉALISATION D UN BANC D ÉQUILIBRAGE

Cours de Systèmes d Exploitation

12 applications pour maîtriser le PICBASIC PB-3B - Gérard GUIHÉNEUF. Elektor-Publitronic ISBN :

Configuration de TCPIPconfig.h

Programmation Classique en langage C

MT-703. Surveillance de niveau par sonde résistive TELEMETRIE PAR MODULE GSM CONFIGURATION ET UTILISATION


MISE A NIVEAU INFORMATIQUE LANGAGE C - EXEMPLES DE PROGRAMMES. Université Paris Dauphine IUP Génie Mathématique et Informatique 2 ème année

I- Définitions des signaux.

Alimentation Electrique destinée aux systèmes de sécurité Incendie 27,6V DC

Conventions d écriture et outils de mise au point

Alarme intrusion filaire AEI HA zones

Transmetteur téléphonique autonome vocal et digital avec Chargeur 13,7VDC-1A / logement pour batterie 12V-2Ah

Examen Médian - 1 heure 30

Sub CalculAnnuite() Const TITRE As String = "Calcul d'annuité de remboursement d'un emprunt"

INTRODUCTION A JAVA. Fichier en langage machine Exécutable

1 Introduction C+ + Algorithm e. languag. Algorigramm. machine binaire. 1-1 Chaîne de développement. Séance n 4

Conférence sur les microcontroleurs.

Centrales de mesures. CENTRALES DE MESURES Nemo. A.6 Guide de choix. A.14 4 Modules. A.20 Encastré 72x72. A.24 Encastré 96x96. A.

Java Licence Professionnelle CISII,

Module Relais de temporisation DC V, programmable

Plan du cours. Historique du langage Nouveautés de Java 7

La programmation des PIC en C. Les fonctions, les interruptions.

Cours de C. Petits secrets du C & programmation avancée. Sébastien Paumier

Cours Programmation Système

MACHINE A SOUDER MANUEL D UTILISATION

IN Cours 1. 1 Informatique, calculateurs. 2 Un premier programme en C

Distribué par / Distributed by:

Machines virtuelles fonctionnelles (suite) Compilation ML Java

INITIATION AU LANGAGE C SUR PIC DE MICROSHIP

Initiation à la programmation en Python

crm+ capteurs à ultrasons Extrait de notre catalogue en ligne : Mise à jour :

Modules d automatismes simples

Atelier Arduino. Initiation à la mise en oeuvre matérielle et logicielle de l Arduino. novembre 2006

Contrôleur de charge MSRx

Instrumentation en Milieu Isolé - Alimentation - combinaison des deux énergies

VOCALYS LITE.

Le prototype de la fonction main()

Atelier Arduino. Initiation à la mise en oeuvre matérielle et logicielle de l Arduino. novembre 2006

Carte Relais GSM (Manuel Utilisateur)

Notions fondamentales du langage C# Version 1.0

VOX-APPEL 2. Notice d'installation. Transmetteur téléphonique d alarme sociale La technologie au service de la santé VOCAL & DIGITAL NIVAP2_0604 ATLS

Rappels Entrées -Sorties

HA2000 GSM Transmetteur téléphonique

Systeme d alarme intrusion mixte. i-on40. La Sécurité Partagée

Centrale de surveillance ALS 04

INdICAteur MISE EN SERVICE. INdICAteur. Afficheur déporté pour BAMOFLONIC PFA. MeS. Indicateur pour BAMOFLONIC /1. Code article :

PROMI 500 Badges - Codes

SNA Analyseur mobile de réseau 2 en 1 Guide Sommaire. Page 1

SYSTEMES ELECTRONIQUES NUMERIQUES

1. Structure d un programme C. 2. Commentaire: /*..texte */ On utilise aussi le commentaire du C++ qui est valable pour C: 3.

8AA E1-09/ F - SNR Manuel d utilisation

Architecture des ordinateurs

Recherche dans un tableau

ACTIVITÉ DE PROGRAMMATION

Le Langage C Version 1.2 c 2002 Florence HENRY Observatoire de Paris Université de Versailles florence.henry@obspm.fr

Cours 7 : Programmation d une chaîne d acquisition

BK 2515, BK 2516 DAS 50 DAS 30

SYSTEME DE TELESURVEILLANCE VIDEO

Programme Compte bancaire (code)

Atelier C TIA Portal CTIA04 : Programmation des automates S7-300 Opérations numériques

Transcription:

Arduino Calculateur capacité Batterie Lithium-Ion 2 éléments http://jp79dsfr.free.fr/photo-tech/ v 1.01 - JP 05/11/2015

Table des matières Projet 1 1 Electronique 1 Logiciel 2 Révisions document 5 Arduino capacimetre

Projet 1 _ Minimal Le but est de réaliser une mesure rapide de la capacité réelle d'une batterie Li-ion deux éléments du type couramment utilisé dans les APN. Le test est réalisé sous charge constante et continue, avec un arrêt de la charge lors de la détection du seuil de tension basse de la batterie. Electronique Utilisation d'un Arduino Mega et d'un shield LCD standard, avec l'utilisation des ports : Digitaux : Un port permettant de commuter la charge, un second relié a une Led permettant d'étalonner l'horloge interne. Analogiques : Un port pour les états des touches du shield, deux pour les mesures de tension et d'intensité. L'utilisation de la tension de référence interne de 2.56v pourrait être remplacée avantageusement par une source externe calibrée (TL1431 par ex). Cette valeur de 2.5v est un compromis entre les faibles tensions à mesurer et le fonctionnement des touches du shield LCD travaillant sur une base 5v. La mesure de tension est réalisée via un diviseur 10, celle de l'intensité via un shunt 0.25Ho ce qui nous fait des tensions à mesurer de l'ordre de 150mv pour une charge de 15Ho. Attention a l'emplacement de la masse de référence. La charge RL est constituée par une résistance de puissance montée sur radiateur de valeur comprise entre 8 et 25 Ho. Arduino1

Logiciel Ecrit sans optimisation : Le cycle est mis en route par la touche Haut, mis en pause par la touche Bas et réinitialisé par la touche droite, un flag se chargeant de la mémorisation et de la gestion de l'état. L'arrêt est provoqué par la détection d'un niveau de tension basse. Les 4 états de fonctionnement sont : S(top) : Effacement des mesures en attente nouveau cycle R(un) : Décharge en cours P(ause) : Décharge en pause E(nd) : Batterie déchargée L'étalonnage des mesures est réalisé via 3 constantes, deux pour la mesure de tension et d'intensité, la troisième pour la compensation de la chute de tension due au câblage en charge. Les mesures sont réalisées toutes les secondes ce qui permet une intégration des valeurs mesurées en mah. Pour permettre une réactivité des touches correctes le cycle logiciel n'utilise pas directement une temporisation de (1s - t cycle) mais un cycle de 10ms la mesure n'étant effectuée que tout les 100 cycles environs, cette valeur de division étant utilisée comme variable d'ajustement. #include <LiquidCrystal.h> //Définition paramètres shield clavier - LCD LiquidCrystal Lcd(8,9,4,5,6,7); const int PortAnKey = 0; int AnalogKey = 0; int ValKey = 0; int MemoKey = 20; const byte KeyHaut =0x9; const byte KeyBas =0x13; const byte KeyDroit =0x1; const byte KeyGauche =0x1E; const byte KeySel =0x20; // Non utilisable avec ref 2.5v const int KeyNone =0x20; // Entrées Sorties const byte PortDisch = 52; const byte PortTest = 53; const byte PortAnI = 9; const byte PortAnU = 8; const float CalI = 10.2; // Constante intensité en fonction R shunt const float CalUI = 0.001; // Constante rattrapage tension shunt + câblage const float CalU = 0.02746; // Constante U en fonction diviseur // Divers int Cpt1 = 0; // Compeur cycle 1s int CptS = 0; // Compteur cycle 10s envoi trame série char FlagRun ='S'; // Mode de fonctionnement en cours word TimeRun =0; // Temps en s de décharge word ValIRaw = 0; // Valeurs lecture analog word ValURaw = 0; float ValI = 0; // Valeur tension en mv Arduino2

float ValU = 0; // Valeur intensité en ma float Capa = 0; // Valeur Capacité en mas float ValUstop = 6; // Tension d'arret en V byte tmptest=0; void setup() { // Initialisation #################################################### Lcd.begin (16,2); Lcd.clear(); analogreference(internal2v56); //analogreference(external); pinmode (PortDisch, OUTPUT); digitalwrite (PortDisch,LOW); pinmode (PortTest, OUTPUT); digitalwrite (PortTest,LOW); Serial.begin(115200); void loop() { //Boucle principale ############################################### AnalogKey = analogread(portankey); //Gestion des Touches ++++++++++++++++++++++++++ ValKey = (AnalogKey / 32) + 1; if (MemoKey!= ValKey){ MemoKey = ValKey; if (ValKey == KeySel) { if (ValKey == KeyDroit) { if (FlagRun!='R') {FlagRun='S'; if (ValKey == KeyGauche) { if (ValKey == KeyHaut) { FlagRun='R'; if (ValKey == KeyBas) { FlagRun='P'; Cpt1 ++; // Temporisation pour affichage 1 x secondes et calcul capacité.+++++++++ if (Cpt1 > 95) { Cpt1=0; LectureAnalog(); AfficheLcd (); if (FlagRun=='S') { // RAZ mesure capacité +++++++++++++++++++++ Capa=0; TimeRun=0; CptS=0; digitalwrite (PortDisch, 0); else if (FlagRun!='E') { Arduino3

if (ValU < ValUstop) { // Arrêt décharge tension basse +++++++++++ FlagRun='E'; EnvoiSerie(); if (FlagRun =='R') { digitalwrite (PortDisch, 1); // Décharge +++++++++++++++++++++++++++++++ Capa += ValI; tmptest =! tmptest; digitalwrite (PortTest, tmptest); if (CptS ==0) {EnvoiSerie(); // Envoi port com 1x minutes +++++++++++++++ CptS ++; if (CptS == 60) {CptS=0; TimeRun ++; else { digitalwrite (PortDisch, 0); // Arrêt décharge +++++++++++++++++++++++++ delay (10); // Lecture et affichage U - I ========================================================= void LectureAnalog() { ValIRaw = analogread(portani) ; ValURaw = (analogread(portanu)) ; ValU = (ValURaw * CalU) + (ValIRaw * CalUI); ValI = ValIRaw * CalI; void AfficheLcd () { Lcd.clear(); Lcd.setCursor(1,0); Lcd.print ("U="); Lcd.print ((ValU)); Lcd.setCursor(9,0); Lcd.print ("I="); Lcd.print (int(vali)); Lcd.setCursor(0,1); Lcd.print(FlagRun); Lcd.print(":"); Lcd.print(TimeRun); Lcd.setCursor (8,1); Lcd.print ("C="); Lcd.print (Capa/3600); // Envoi données port com toutes les 60 secondes de décharge ========================== void EnvoiSerie () { Arduino4

Serial.print (TimeRun); Serial.print(ValURaw); Serial.print(ValIRaw); Serial.print(ValU); Serial.print(ValI); Serial.println (Capa); Révisions document v1.00 14/03/2014 Première diffusion v1.01 13/10/2015 Corrections schema Arduino5