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
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
(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
![]() |
![]() |
![]() |
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.
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
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