Inductancemètre autonome avec écran OLED

J'avais cette fois l'envie de tester ces fameux afficheurs de type "OLED"...
Je m'en suis donc procuré un sur le site "Ali***" à un prix tout à fait modique et bien inférieur à celui d'un modèle LCD 2x16 caractères.

vue de l'afficheur OLED 0.96" (128*64 pixels)...

Je ne voulais pas effectuer de modifications majeures sur le circuit imprimé de l'autre version LCD, ceci afin que tout un chacun puisse passer de l'un à l'autre comme bon lui semble. Pour ce faire, il m'a fallu ruser un peu en choisissant les bons paramètres de configuration du module I2C intégré dans mon logiciel.
Cet afficheur OLED (0.96" 128*64 pixels) ne dispose que de quatres pins, connectables aisément sur le connecteur de l'afficheur LCD à savoir :

  • GND ................. pin 1 de SL1
  • VCC (+5V) ....... pin 2 de SL1
  • SCL ................. pin 11 de SL1
  • SDA ................. pin 12 de SL1

config SSD1306 I2C adr.0x78ATTENTION !
Vérifiez bien l'adresse de votre afficheur qui doît dans cette application être positionnée sur 0x78

Le reste est l'affaire du logiciel ! Les lecteurs attentifs remarqueront qu'il n'existe pas de résistances "Pull-Up" sur les connexions du Bus I2C, car elles sont en fait déjà activées à l'intérieur du microcontrôleur par programmation. Inutile donc d'en ajouter, d'autant que dans le cas de l'utilisation d'un LCD, cela pourrait provoquer des "bizarreries" au niveau de l'affichage... la tension du Bus I2C est à +4.0V au repos pour VCC= +5.0V
icon "idée"...
Je pensais utiliser le bouton poussoir déjà existant (en lui ajoutant une seconde fonctionnalité) pour pouvoir passer d'un afficheur à l'autre (LCD ou OLED), mais n'ayant pu résoudre cette difficulté... un fichier exécutable spécifique à chaque version sera à programmer dans le microcontrôleur.

 

Expérimentation

Pour cette opération (voir figure 1), j'ai rajouté un connecteur ICSP* pour raccorder mon programmateur (ici un PICkit 4 mais cela fonctionnne aussi avec les générations précédentes...).
Je vous propose sur les images suivantes les modifications apportées pour réaliser cela :

vue de mon expérimentation...
Figure 1
vue des modifications apportées pour le connecteur ICSP...
Figure 2
vue agrandie de la modification ISCP...
Figure 3

 

 

 

 

 

 

 

 

 

vue supérieure de la carte équipée du connecteur ISCP...
Figure 4

 

Sur la figure 3 vous noterez la présence d'une résistance CMS (0805) de 10KΩ ainsi que d'un condensateur céramique CMS (0805) de 100nF constituant le circuit de Reset nécessaire à la programmation du microcontrôleur. Ceci m'a bien évidemment contraint à sectionner la liaison de la pin 1 reliée directement au +5V. Le connecteur 6 points n'est pas collé, il est simplement maintenu par les deux broches de masse (GND) pliées à 90° et soudées directement sur la piste de masse.
La figure 4 quand à elle montre le connecteur ICSP installé sur le champ du circuit imprimé.
Ce n'est pas très "propre" je le reconnais bien volontiers, mais cela fonctionne, et cela ne m'a servi qu'à reprogrammer le PIC dont j'ai modifié le logiciel maintes fois... de plus cela ne gêne en rien l'intégration dans son coffret...

 

 

 

 

 

 

Fonctionnement

Aucune "surprise" de ce côté, le reste du logiciel ainsi que le principe de la mesure demeurent inchangés.

Quelques mesures comparatives (23/12/2021)

Je vous invite pour cela à visiter la page consacrée à la version avec afficheur LCD qui est la base de mon projet ici

 

Schéma de principe que j'ai dessiné sous Eagle :

 Inductancemètre Main Board schematic v1.21b

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

Schéma de la partie alimentation (inchangée) :

Inductancemètre Power Supply.sch

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

Packages comprenant : save f2
Logiciel écrit en langage mikroC (source et exécutable)
Schéma de principe (sans PCB) sous Eagle v7.7.0
Dessin de la sérigraphie de la face avant
BOM liste des composants

 


*ICSP : In Circuit Serial Programming
           Connexions : (1) MCLR, (2) VCC, (3) GND, (4) PGD, (5) PGC, (6) normalement non utilisée -> GND