Start : 25 Mai 2019
Last issue : 13/03/2020

Projet 2 Affichages Temperature 7 segment pour capteurs DS18B20 avec 18F26K22
Schema
Test preliminaire sur la carte Horloge 60leds : RC0 sonde A , RC5 sonde B
Partie Software (MikroC) avec les 2 versions de carte
Test avec nouveau circuit imprimé dédié , et 18F27K42
Version finale avec 18F26K22 , sondes DS18B20 sur RC0 et RC2 , + carte 2x3 afficheurs 7seg (rev 13/03/2020)
programme
video

Variante pour 2x 3 Gros afficheurs (29-06-2019)



Projet Affichage temperatures
avec PIC 18F26K22 et sondes DS18B20 O.W.S.

usage d'un PIC18F26K22 en DIP28 et du Pickit2 Microchip pour charger l'executable
Environnemen t: MikroC Pro 7.1.0

Programme de base :

Utilisation d'un PIC18F26K22 assze costaud.. 28 PIN DIP etroit
Utilisation de l'oscillateur interne FOSC=16MHz
La precision de l'horloge , ici, ne depend que du module RTC DS1307, equipé de son quartz horloger.

Gestion du multiplexage des 2x3 digits 7 segments TemperA et TemperB
PORTB pour allumer les 7 segments via un driver ULN
PORTA pilotage des 6 afficheurs vi un interface transistor UDN.
Nota: Afficheur 7 segment ANODE COMMUNE
Le timer2 , calé sur 4mS, assure le raffraichissement des 6 afficheurs en 4x6=24mS
La tache interne de l'interruption prend 25 à 30µS ..



Le prototype :

1er test réalisé avec le circuit imprimé Horloge 6x7segments HHMMSS
L'entrée RC0 est utilisée comme entree OWS DS18B20 ( au lieu de Forcage RTC)
de sorte à afficher 2 temperatures au format 254254 pour 2x 25,4°C
Les 6 anodes afficheurs sont pilotées via l'UDN (recevant RA0....RA5)
Les 7 segments , via L'ULN .(recevant B0..B6)



Le programme original Horloge est alors bien réduit
et se resume à la gestion des afficheurs via interruption Timer2
toutes les 4 mS et lecture DS18B20 dans le main programm.. (UART1 optionnel )
MCU 18F26K22 quand meme surdimensionné pour ce job ... mais si facile à utiliser !



Source : Affichage_1_temp_DS18B20_7seg_18F26K22_190526.c
chargeur : Affichage_1_temp_1xDS18B20_RC0_7seg_190526.hex

avec 1 seule sonde,on ne se preoccupe pas de son numero ID ..
Par contre à partir de 2 sondes sur le meme Bus OWS, il faut en tenir compte, et on ne peut pas
interchanger facilement une sonde avec une autre
D'ou la modif. coté nouveau circuit imprimé : possibilité de connecter 2 sondes séparées => 2x bus OWS
sur RC0 et sur RC2

Test de validation, avec le circuit Horloge 60 leds et 2 sondes DS18B20
, chacune sur son bus OWS
RC0 entree dispo , avec R de rappel existante sur le circuit , pour la sonde DS18B20 A
RC5 pin disponible pour la 2em sondes : rajouter la R de rappel entre Signal et +VCC sur le bornier de la sonde DS18B20 B
( car, contrairement à RC2, il n'y a pas de R de rappel sur le circuit RC5 horloge


Schema
:




Software pour version preliminaire: RC0 RC5
Affichage_2_temp_DS18B20_7seg_1906_RC0-RC5-Horloge-60leds.hex

Resultats:

Test special : sur circuit Horloge 60leds PIC18F
Test Sonde A OWS DS18B20 sur RC0
Family Code : 28 ID1 = AA4265261302 CRC= B6
Mesure 1ere DS18B20= 22.75°C

Test Sonde B OWS DS18B20 sur RC5
Family Code : 28 ID2 = AA0D82381401 CRC= CD
Mesure 2em DS18B20= 23.15°C


A= 22.68°C B= 23.12°C
A= 22.75°C B= 23.18°C
A= 22.75°C B= 23.12°C




Pinout MCU :



Schema :

avec Winschem version 8.0
Affichage_2_temper_PIC18F_DS18B20_190623.wh5
Affichage_2_temper_PIC18F_DS18B20_schema_wh5_190623.pdf

images/t_Temper_DS18B20_sur_2x3-afficheurs _7seg_Leds_wh5_190623.gif images/t_ULN_2083_Low_Side_Drive_Cathode_com_Dip18.gif images/t_UDN_2981_High_Side_Drive_Anode_com_Dip18.gif
.version 23 juin 2019 driver 7 segments ULN 2804 driver 6 afficheurs Anode commune UDN 2981





Version pour Tests avec carte Horloge 60 leds,

une compilation conditionnelle permet de compiler soit pour la carte Horoge,
soit pour cette nouvelle carte specifique 2 temperatures
//#define Special_Test_sur_Horloge_60leds

J'utilise 2 bus OWS , définis par :

#define OWS_Pin_Sensor_A &PORTC,0 // sensor A DS18B20 #1 OWS
#ifdef Special_Test_sur_Horloge_60leds
#define OWS_Pin_Sensor_B &PORTC,5 // sensor B DS18B20 #2 OWS pin libre sur carte Horloge 60 leds
#else
#define OWS_Pin_Sensor_B &PORTC,2 // sensor B DS18B20 #2 OWS sur carte Aff_2_temp
#endif

pour cette carte 2 affichages temperatures :
Sonde A sur RC0
Sonde B sur RC2

SOFTWARE :
Projet MikroC : Affichage_2_temp_DS18B20_7seg_1906.zip
Chargeur : Affichage_2_temp_DS18B20_7seg_1906_RC0_RC2.hex
source : Affichage_2_temp_DS18B20_7seg_18F26K22_190531.c

Resultat:

Presentation :
Directory :C:_MikroC_MesProjets_MikroCAffichage_2_temp_DS18B20_7seg
MikroC pro 7.3.0 Beta
Projet :Affichage_2_temp_DS18B20_7seg_1906.mcppi
Circuit Affichage 2 temper avec PIC18F26K22
Config bit : P18F26K22_FOSC_interne_8xPLL_32Mhz.cfgsch FOSC:32.0 MHz
Eeprom: Non
Source : Affichage_2_temp_DS18B20_7seg_18F26K22_190531.c
18F26K22, 2x 3 afficheurs 7 seg , uart 115200 bds
1 sonde DS18B20 sur RC0, 2me sonde DS18B20 sur RC2
Affiche des 2 temperatures sur 2 x 3 digits ,chaque sec

Test Sonde A OWS DS18B20 sur RC0
Family Code : 28 ID1 = AA4265261302 CRC= B6
Mesure 1ere DS18B20= 23.06°C

Test Sonde B OWS DS18B20 sur RC2
Family Code : 00 ID2 = 000000000000 CRC= 00
Mesure 2em DS18B20= 0.00°C


A= 23.00°C B= 0.00°C
A= 23.00°C B= 0.00°C
A= 23.00°C B= 0.00°C
A= 23.06°C B= 0.00°C
A= 23.00°C B= 0.00°C


ici, sonde B =0.00 car RC2 NON ACCESSIBLE sur ma carte Horloge
Je ne dispose pas du circuit finalisé pour affichage 2 temper..


Test avec CARTE AFFICHAGE : les 6 afficheurs du haut connectés sur carte PIC Horloge 60 leds

 
Utilisation de la Carte Horloge avec la
Carte Afficheurs 7segments

Rangée du Haut :

 







29/06/2019
Test avec nouvelle Carte Circuit Imprimé

avec ce Circuit Imprimé Rev4_190626 :
2 bus OWS prevu ..

rappel : schema

images/t_CI_Temper_DS18B20_sur_2x3-afficheurs_7seg_Leds_190527_Rev2.gif images/t_CI_Temper_DS18B20_sur_2x3-afficheurs _7seg_Leds_190627_Rev4_Photo.gif
carte pour PIC18F26K22 + UL + UDN implantation composants

(C) réalisations par Geamel Marco (Majid)
N Thermometre_190527.LAY6

1er test , réalisé avec un 18F27k42 ( au lieu du 18F26K22) monté sur cette carte et 2 sondes DS18B20
mais SANS LES A FFICHEURS , dans un 1er temps...
Le terminal Teraterm est relié via un cordon Prolific USB sur 0V et TX UART1 de la carte

Resultat


Presentation :
Directory :C:\_MikroC\_MesProjets_MikroC\Affichage_2_temp_DS18B20_7seg
MikroC pro 7.40 RC
Projet :Affichage_2_temp_DS18B20_7seg_18F27K42_1906.mcppi
Circuit Affichage 2 temper avec PIC18F27K42
Config bit : P18F27K42_FOSC_interne_8xPLL_32Mhz.cfgsch FOSC:32.0 MHz
Eeprom: Non
Source : Affichage_2_temp_DS18B20_7seg_18F27K42_190620.c
18F27K42, 2x 3 afficheurs 7 seg , uart 19200 bds
1 sonde DS18B20 sur RC0, 2me sonde DS18B20 sur RC2
Affiche des 2 temperatures sur 2 x 3 digits ,chaque sec

Test Sonde A OWS DS18B20 sur RC0,
avec R 6,8K Pull Up vers +VCC
Family Code : 28 ID1 = AA0D82381401 CRC= CD
Mesure 1ere DS18B20= 28.12°C

Test Sonde B OWS DS18B20 sur RC2,
avec R 6,8K Pull Up vers +VCC
Family Code : 28 ID2 = AA4265261302 CRC= B6
Mesure 2em DS18B20= 0.00°C


A= 27.06°C B= 26.81°C
A= 27.06°C B= 26.87°C
A= 27.06°C B= 26.87°C
A= 27.06°C B= 26.87°C

Software :

programmé avec MikroC version 7.40 :
Necessite PICKIT 4 et MPLABX IPE V15
Cette version permet de tester chaque digit et chaque segment ... pour faciliter la synchro de cablage
Zippé : TESTS_Afficheurs_2_temp_DS18B20_7seg_18F27K42_190623.zip
chargeur : TESTS_Afficheurs_7seg_et_DS18B20_18F27K42_190623.hex




Version avec PIC18F26K22

Utilisation de la Carte 6 Afficheurs

(C) réalisations par Geamel Marco (Majid)
Circuits_6_afficheurs_7segm.lay6

images/t_Cicruit_imprime_6_afficheurs_7seg_AC.gif images/t_Carte_Affichage_multiplexe_6_digits_7seg_1906.gif images/t_Photo_Carte_6_Afficheurs_AC_7seg_1906.gif
Carte 6 afficheurs 7segm Anodes communes liaisons specifiques pour cette carte photo via sprinlayout 6


La carte affichage :
( 6 afficheurs ANODE COMMUN E) , elleest reliée par 2 nappes ,
1 de 6 fils pour les 6 anodes afficheurs, et
1 de 8 fils , pour les 7 segments + le point decimal
La laision UART1 peut etre utilisée pour verifier la carte d'affichage et les mesures des 2 capteurs DS18B20
L'alim + des ANODES , passe par l' UDN 2981 , alimenté de +5 V à +12V , testé ici avec 9V ( la tension DC en amont du regulateur 5V)
L'ULN 2083 assume le retour au 0V des segments via les resitances de limitation (courant).
Se referer à la datasheet de l'afficheur utilisé.
L'utilisation des drivers ULN et UDN , permettent l'usage de GROS afficheurs ou chaque segment est constitué de plusieurs Leds en serie
voie Serie/parallele , et impose une tension d'alim allant de 9 à 18V voir plus..
La valeur des resistances serie sortie ULN est determinante pour la luminosité voulue et la protection de IMax Segment.

images/t_Test_Carte_2xTemper_et_carte_Afficheurs_7seg_1906.gif images/t_Test_Carte_PIC18F26K22_2xTemper_et_carte_Afficheurs_7seg_1906.gif

phase de TEST afficheurs

mode mesure de temperatures


images/t_Connectique.gif images/t_Montage_2x_DS18B20_Affich_7seg_1907.gif

interconnections

un coup de scie pour recupererer 1 rangee de 6 afficheurs



Programme (version 18F26K22) :

Le programme demarre avec un test sur les afficheurs, pour detecter une eventuelle erreur de cablage
Chaque segment est parcouru pour tous les (6) digits, sequentiellement
Puis le programme continue avec les 2 mesures de temperature affichéees respectivement sur 2 x 3 afficheurs 7 seg.
Le point decimal est affiché sur le Digit #1 et digit #4
2 bus OWS sont utilisé pour ne pas avoir à gerer les numeros de serie => interchangeabilité des sondes à 100%
néanmoins au lancement du prgramme, leur ID number est affiché ( et non utilisés par la suite).

Test Sonde A OWS DS18B20 sur RC0, AVEC R Pull up de 6,8K vers +VCC
Family Code : 28 ID1 = AA4265261302 CRC= B6
Mesure 1ere DS18B20= 29.87°C

Test Sonde B OWS DS18B20 sur RC2,
AVEC R Pull up de 6,8K vers +VCC
Family Code : 28 ID2 = AA0D82381401 CRC= CD
Mesure 2em DS18B20= 0.00°C


Le Timer2 assure le rafraichissement de chaque Digit , toutes les 4 ms, soit 24mS pour les 6 afficheurs.

Un mode TEST MANUEL des afficheurs est accessible via la commande clavier T=1<CR>
On entre alors dans un mode test individuel de DIGIT et SEGMENT
Commande ANODE d'un digit ( #1 à #6) vai A=1<CR> .... A=2<CR>...A=4<CR> ... A=32<CR>
Associer une commande SEGMENT (1,2,4,8,16,32,64,128) pour allumer le segment désiré.
ou toute combinaison possibles via B=6<CR> ...affiche 1
En mode TEST, allumage STATIQUE des afficheurs => 100% de luminosité.

Pour sortir de ce mode et retourner aux mesures de temperature : cde clavier : T=0<CR>
Dans ce mode la luminosité tombe à 16,6% du maximum, because multiplexage des 6 afficheurs en 24 mS , 4 ms par afficheur
soit 1/6em du temps .


SOFTWARE :
Mikroc version 7.40
Projet zipé : Affichage_2_temp_DS18B20_7seg_18F26K22_190623.zip
executable : Affichage_2_temp_DS18B20_7seg_18F26K22_190623.hex
version pour gros afficheurs 7 segm




rev 29/06/2019
Variante pour connections Gros afficheurs :

schema Winschem : Affichage_2_temper_PIC18F_DS18B20_190628_G.wh5

images/t_Variante_Gros_Afficheurs_190628.gif images/t_Detail_Multiplexage_2x3_Afficheurs_7seg_1906.gif
partie du schema réactualisée Details connections et multiplexage



Adaptation software pour connectique Afficheurs differente:

petite modif pour affichage valeur negative ou -0.0 si sonde NON connectée
et pour effacer le digit dizaine si positif et dizaine =0

case 0: // Dizaine de degre A
AFF_Dizieme_B=0;
Temp = (TP_Deg_A >>4 ) ;
if (Sign_A==1)
LATB=64; // G=signe-
else
{
if (Temp==0)
LATB=0;
else
LATB=Segments[Temp] ;
}
AFF_Dizaine_A =1;
break;
modif soft 29/06/2019

affichage Mesure A ... et Mesure B



Si Sonde non connecté ou non reconnue affiche : ID= FFFFFFFFFFFF et-0.06°C sur le terminal

rev 13/03/2020
Projet zipé : Affichage_2_temp_DS18B20_7seg_18F26K22_2020.zip
executable : Affichage_2_temp_DS18B20_7seg_18F26K22_2020.hex
Schema correspondant : Affichage_2_temper_PIC18F_DS18B20_190628_G.pdf


13/03/2020
Presentation :
Directory :C:\_MikroC\_MesProjets_MikroC\Affichage_2_temp_DS18B20_7seg
MikroC pro 7.40 RC

Projet :Affichage_2_temp_DS18B20_7seg_18F26K22_2020.mcppi
Circuit Specifique Affichage 2 temper avec PIC18F26K22
Config bit : P18F26K22_FOSC_interne_16xPLL_64Mhz.cfgsch
FOSC:64.0 MHz
Eeprom: Affichage_2_temp_DS18B20_7seg_18F26K22_190628_EEPROM.ihex
Source : Affichage_2_temp_DS18B20_7seg_18F26K22_202003.c
18F26K22, 2x 3 afficheurs 7 seg , uart 19200 bds
1 sonde DS18B20 sur RC0, 2me sonde DS18B20 sur RC2
Affiche des 2 temperatures sur 2 x 3 digits ,chaque sec

Get_Fosc_Khz = 64000

Test Sonde A : OWS DS18B20 sur RC0
avec R6,8K en Pull UP to VCC
Family Code : 28 ID1 = AA0D82381401 CRC= CD
Mesure 1ere DS18B20= 21.50°C

Test Sonde B : OWS DS18B20 sur RC2,
avec R6,8K en Pull UP to VCC
Family Code : 28 ID2 = AA1499381401 CRC= EE
Mesure 2em DS18B20= 20.93°C


Test automatique des afficheurs
Digits = 01 Segments = 3F
Digits = 01 Segments = 06
Digits = 01 Segments = 5B
Digits = 01 Segments = 4F
Digits = 01 Segments = 66



Video :

On y voit la phase de test des afficheurs, puis les 2 mesures de temperatures réparties sur 2x 3 afficheurs.
Les afficheurs gris sont beaucoup plus lumineux que les noirs .. ( meme R de limitation =270 ohms pour Alim 9V)
nota: la luminosité ne change pas avec la tension d'alim MCU entre 3,6V et 5V., vu que les digits sont alimentés en 9V externe.
Rafraichissement des 6 afficheurs en 24mS.
Test_Complet_Carte_6_afficheurs_avec_carte_18F26K22_2_Temper_DS18B20_190623.webm
La sond A : Temp.Ambiante 15H00 29/06/2019 (Canicule!) et Sonde B, placée depuis 2mn dans le congelateur.
le minima affichable possible est -9.9(°C) , en dessous les dizaines negatives sont masquée par le signe -
j'aurai pu, eventuellement recadrer à droite pour afficher -10 sans le point decimal, mais pur une mesure interieure !!!
Test Transistion de temper.Positive vers Negatif

paulfjujo@free.fr


Retour à l'index general