Programme complet amélioré

Naturellement, ce que l’on désire, c’est de disposer dans PICOLAB de la version de l’oscilloscope qui peut enregistrer des écrans … et si possible sans avoir à enlever l’un des items actuels du MENU des fonctions. Compte tenu de la place que nous avons gagné dans la mémoire dynamique, et le fait que plusieurs textes longs de la nouvelle version de l’OSCILLOSCOPES sont logés en EEPROM, ce souhait ne semble pas inabordable. On ajoute donc les nouvelles routines du démonstrateur P03_Oscillo_MEMOIRE_et_SYN_EXT.ino et l’on tente un téléversement.
Victoire, pas de pixels étranges en bas de l’écran, et toutes les fonctions présentent le comportement attendu.
La compilation de P09_Complet_avec_Oscillo_et_Empreintes.ino indique un encombrement du programme de 76% et une RAM dynamique utilisée à 31%. Trouvant que cette version graphique de l’oscilloscope est très séduisante, même si sa rapidité de numérisation n’est pas phénoménale, l’item est placé en fin du MENU. Ainsi, sur un RESET suivi de FC-, le programme se branche directement dans cette fonction. Nous avons consommé 96 octets sur le TAS. Comme par l’optimisation nous en avons libéré 248 et que le programme par lui-même n’est pas spécialement volumineux, nous pouvons espérer ajouter encore une fonction dans PICOLAB.

Ampèremètre passé au calibre 1A au lieu de 500mA.

Mentionné dans le texte dans le chapitre précédent, l’Ampèremètre a été modifié pour passer du calibre 500mA au calibre 1A à pleine échelle. Mis à part l’obligation de modifier l’échelle graduée dans la zone analogique, passer à une portée de 1A présente divers avantages. C’est d’autant plus facile à faire que la place est disponible sur le petit circuit présenté en Fig.18 la modification consistant à placer une deuxième résistance de 10Ω en parallèle avec la première. On remarque sur la Fig.121 la présence en B d’un bornier. Quand le fil de cuivre « en épingle à cheveux » est en place comme c’est le cas sur la photographie, c’est le calibre 1A qui est configuré. Initialement il était prévu de pouvoir l’enlever pour retrouver la sensibilité de 500mA à pleine échelle. Cette possibilité s’est avérée totalement inutile, donc contentez-vous de souder directement les deux résistances et ignorez cette option purement expérimentale. Outre l’avantage de pouvoir mesurer jusqu’à 1A, à intensité égale les résistances chauffent deux fois moins qu’en version 500mA. La Fig.122 présente l’écran avec l’échelle adaptée à une plage allant de 0 à 10. Le calibre 500mA ne fait que doubler la précision des mesures, mais franchement, avec trois chiffres significatifs c’est déjà au delà du besoin réel.

Le texte « Rampe 0-5 = Δ U SHUNT » rappelle que la rampe analogique dont on divise l’amplitude par deux représente la chute de tension aux bornes de notre ampèremètre. Il serait également envisageable de remplacer le calibre 50mA par une plage 100mA ce qui serait gratuit au point de vue informatique. Alors si le cœur vous en dit, quand vous réaliserez le circuit imprimé principal, doublez la résistance de 100Ω et modifiez l’affichage en conséquences.

Mesurer la capacité de petits accumulateurs avec PICOLAB.

Forcément, vous n’accorderiez pas obligatoirement la priorité à cette fonction. Chacun pourra éventuellement reprendre le programme et porter son choix sur un autre item. Le but fondamental dans ces lignes consiste à démontrer que l’acharnement à optimiser un logiciel permet parfois d’aboutir à des résultats « spectaculaires ». À vous ensuite de profiter de l’opportunité pour développer l’amélioration qui vous séduit le plus. (Attendez un peu avant de vous sentir frustrés …)
Chaque fois que nous avons voulu ajouter un quelconque calibre à PICOLAB, nous avons au préalable développé le nouveau module dans un démonstrateur qui permet d’adapter les écrans aux spécificités du composant OLED.
C’est P10_Mesures_Capacites_Accumulateurs.ino qui permet de mettre au point la mesure des piles rechargeables. Pour simplifier d’un item le menu de base et « compacter » le programme, le choix du type de la pile rechargeable mesurée devient une option. La Fig.123 symbolise le comportement global de la fonction, avec en (1) l’appel de la procédure qui impose de sélectionner le type d’accumulateur qui sera mesuré. En entrée de procédure il y a affichage du texte  le programme passant alors en attente d’un B.P. et faisant clignoter rapidement la LED jaune. Si l’on clique sur FC+ les paramètres de mesurage seront ceux d’une pile rechargeable de 8,4V. Pour sa part FC- initialise pour un accumulateur de 1,2V.
L’écran invite alors à brancher une pile avec  dont la formulation est assez style télégraphique. Initialement le texte était plus « bavard », mais des restrictions draconiennes sont venues ternir un peu la phraséologie.
Cliquer sur l’un des deux B.P. fait alors transiter le programme dans la boucle de mesurage qui peut exiger plusieurs heures. La Fig.124 montre l’afficheur OLED durant la phase de décharge, si l’économiseur d’écran n’est pas en service. On l’active avec FC- court, tout

devient noir. La LED jaune inverse son état toutes les secondes pour démontrer que le travail de fond est en cours. Quand l’accumulateur est estimé entièrement déchargé, il y a passage au mode « alerte ». Les valeurs sur l’écran sont figées et la LED jaune clignote rapidement pour prévenir l’utilisateur même si l’écran est noir. FC- court rétablirait alors la visualisation des valeurs. FC+ court permet d’engager une nouvelle mesure. Il y a dans ce cas appel à (1) pour imposer à nouveau de choisir le type d’accumulateur à évaluer et nouvelle invitation pour le brancher.
Le calcul de la capacité actuelle de la pile rechargeable se fait une fois par seconde en (2). Le chronométrage est assuré en (3) par la fonction temporelle millis() qui est suivie immédiatement après le test d’un réarmement avec la variable Ancienne_valeur_Temps_Ecoule_depuis_RESET. Le chronométrage est d’une grande précision puisque les procédures invoquées travaillent à la milliseconde près sur le long terme. Dans l’organigramme de la Fig.123 les aiguillages imposés par le type d’accumulateur consigné sont mis en évidence par des grisés. C’est la séquence Traite les B.P. en (4) qui se charge de faire appel à void Demande_de_brancher() si FC+ court est utilisée. Un clic long sur l’un des deux boutons engendre la sortie de la fonction « bouclée » vers la précédente ou la suivante dans le MENU de base.

L’intégration de cette fonction dans P11_Complet_avec_mesures_Accumulateurs.ino ne provoque pas de difficulté. Tous les items du MENU de base fonctionnent sans comportements anormaux. Comme il reste encore pas mal de place disponible pour le programme complet, on peut envisager sérieusement d’ajouter une autre fonction.

Pilotage des servomoteurs.

Souvent mis à contribution dans mes petits automatismes, mon choix s’est porté sur la fonction qui permet d’évaluer les caractéristiques réelles de ce type de composant, car nous savons qu’ils sont rarement dans la plage exacte des valeurs standardisées. Pouvoir évaluer à l’avance l’angle de rotation réellement disponible et les signaux à envoyer pour l’obtenir permet d’en tirer le meilleur parti. Nous basculons encore dans la routine, avec création d’un

démonstrateur qui facilite la mise au point des écrans. C’est P12_Pilotage_Servomoteurs.ino qui permet d’obtenir la visualisation de la Fig.125 qui montre que l’information de la durée de l’impulsion « positive » est indiquée numériquement, mais également de façon plus imagée sur la rampe analogique. Nous savons qu’en standard de fait une variation comprise entre 1000µS et 2000µs conduit à balayer l’angle total de rotation du servomoteur. La pratique démontre que souvent ces valeurs sont considérablement dépassées. Chaque appui sur un B.P. augmente ou diminue de 100µS la durée de l’impulsion positive du signal généré. On couvre la plage  allant de 200µS à 3000µS, le débordement ramenant à la valeur théorique de centrage de 1500µS. L’échelle graduée est décalée à gauche pour pouvoir afficher correctement la valeur 3000. Pour optimiser au mieux la longueur du ruban sur l’échelle analogique la transposition utilise RUBANmap(Pulse_plus, 200, 3000, 12, 118); avec les  en fonction de la meilleure solution dans le jeu d’essais effectué et résumé dans le tableau présenté ci-dessous :


Les divers tests effectués permettent de choisir la meilleure transposition. Dans ce tableau présentant trois cas testés significatifs, en violet figurent les durées précises qui placent la longueur du ruban exactement sous les graduations 1000, 1500 et 2000.
Incorporer cette nouvelle fonction dans P13_Complet_avec_ajout_pilotage_servoMTR.ino montre qu’Arduino se montre encore conciliant. Il accepte sans « collisionner » la nouvelle occupation des mémoires. Il est toujours utile de noter à chaque ajout, la taille qu’occupe la fonction. Ainsi, si par la suite vous devez enlever un item du MENU de base pour introduire un module personnel, la taille connue des diverses fonctions présentes peut aiguiller votre choix pour celle qui sera enlevée.

>>> Page suivante.

Laisser un commentaire

Votre adresse e-mail ne sera pas publiée. Les champs obligatoires sont indiqués avec *