Version PIC18F26K22 COMPTEUR autonome avec LCD 4x20 cars, BlueTooth, Eeprom 32K

Hardware :

PIC18F26K22 avec FOsc interne=32Mhz
La partie capture de l'info tour de pedale reste la meme.(Utilise un capteur de proximité Telemecanique 3 fils + aimant)
autre option : Capteur effet HALL .. mais un peu plus compliqué
L'alim de l'ensemble sera donc de 9V .Le +3,3V crée via un module DC/DC made in RPC. ou LM317
nota: BT HC06 J alimenté en 3,3V

HARDWARE :





Prototype :

images/t_Velo_171106_Proto.gifimages/t_Connection_Capteur_Schem.gif
lien sur le capteur telemeca
*SCHNEIDER TELEMECANIQUE XS1-N08-PA340 .....abandonné..à remplacer par SCHXS108B3PAM8.
Mais solution onereuse ..hormis une recup..
se rabattre sur la solution ILS + Mise en forme
ou via Capteur effet hall + AOP ..

Hardware


Pin 28 RB7 -----------------ICSP Data
Pin 27 RB6 -----------------ICSP Clock
Pin 26 RB5
Pin 25 RB4
Pin 24 RB3 <--------- Stop
Pin 23 RB2 <--------- Start
Pin 22 RB1 <----R=4.7K --<+VCC Forcage à zero pour init RTC par defaut
Pin 21 RB0 <-------- Pulse comptage
Pin 20 VDD --------+5V
Pin 19 Vss ---------Gnd
Pin 18 RC7 RX UART 1 <-- Keyboard
Pin 17 RC6 TX UART 1 --> Display * mettre une pull up de 10K si RX non utilisée
Pin 16 RC5
Pin 15 RC4 SDA ------> 3 LCD 4x20 ---- 3 DS3231
1 DS3231 --- GND
2 DS3231 --- +VCC
Pin 14 RC3 SCL ------> 3 LCD 4x20 ---- 4 DS3231
Pin 13 RC2 <------- input en mode Capture signal via CCP1 et tilmer1
Pin 12 RC1 <----- Reset Compteur
Pin 11 RC0
Pin 10 RA6
Pin 9 RA7
Pin 8 VSS --------- Gnd
Pin 7 RA5
Pin 6 RA4 Output -- Led -- 2,7K --+Vcc
Pin 5 RA3
Pin 4 RA2 (DAC)
Pin 3 RA1 Analog input EA1
Pin 2 RA0 Analog Input EA0
Pin 1 RE3 MCLR Reset --------ICSP PGRM


Les liaisons au MCU se font sur des Pins Males coté MCU
Les modules RTC et modules HC06 sont enfichés sur des pins FEMELLE coté circuit imprimé
La sortie LCD I2C se fait sur des pins Males coté circuit imprimé.
Le Pickit2 s'enfiche sur les pins males du circuit imprimé, et necessite une certaine surface libre autour des pins de connection, because encombrement du boitier.
car le circuit imprimé n'est pas destiné uniquement à cette application Velo

images/t_Modules_sur_CI_Velo.gif



L'EEPROM 24FC1026 :




Particularité: L'Adresse A0 , est un bit INTERNE B0 , correspondant à la bank de 64K bytes (512K bits) adressée.
L'adresse d'ecriture 0xA0 de base est donc modifiable par les Adresses Hardware A1 et A2 , et aussi par le bit B0
L'adresse de lecture étant toujours Adresse de base +1 .
Il y a déja une Eeprom 24C32 sur mon module RTC DS1307 à cette adresse 0xA0 !
.. j'ai donc utilisé l'adressage hardware : A2=1 et A1=0
L'adressage de base en écriture devient donc 0xA8 (ou 0xAA 2em bank)
L'adressage individuel de byte , se fait par page de 128 bytes .. et un offset dans la page selectionnee.
Ecriture de k= 75 bytes dans NumPage= xx
il y a de la perte de place..(128-75= 53 bytes libres) mais on s'en fout ici ..
on pourrait aussi rajouter d'autres infos .. temperature ambiante, echauffement de la selle !
Une optimisation aurait pu se faire en limitant le Nb de bytes à 64 => 2 entrainements par page..mais plus compliqué
ou alors permettrait l'usage d'une 24LC256 64K bytes et page de 64 bytes.

Affichages LCD


Affichage sur Appli Android
BT_Simplex_Link.apk
Commande STOP envoyée depuis le Mobile
=> Sauvegarde Horodaté des datas
sur EEprom 24FC1026


Affichage TERMINAL :

Mikroc pro 7.30 Beta
18F26K22 DS3231 24FC1026 UART1 HC06
Source : _18F26K22_Velo_LCD4x20_I2C_24FC1026_uses_float_190205.c
calcul kms en flottant

Presentation :
Appli. Velo App artement
464 pulses/Km 199Kms Maxi
Init I2C 400K
Test presence du LCD (PCF8754) : Device at adresse : 78 found OK
Test IT Timer1 delay=2sec
Test presence RTC DS3231
Device at adresse : 208 found OK
Re-Lecture RTC DS3231
NumPage 24FC1026 recupérée de L'EEPROM du PIC en 0x03FE et 0x3FF= 0
Last Cumul Kms recupérée de L'EEPROM du PIC en 0x03FA..0x03FD= 0.0
Commencer à pedaler ..

Comptage Nb tour de pedale J = 0
Comptage Nb tour de pedale J = 1
Comptage Nb tour de pedale J = 2
Comptage Nb tour de pedale J = 3
Comptage Nb tour de pedale J = 3
Comptage Nb tour de pedale J = 4
Comptage Nb tour de pedale J = 5

Stockage horodatage
DateTime= 05/02;11:27; next Idx Page_Eeprom = 12
Armement Interrupts RB0
Init Timer1 à 20x50mS => boucle en 1 sec
Indice ; Nb_Pulses ; Nb_TdP ; Nb_Kms ; Speed ; NbTdpPerMn
00060; 299;94.8;0.68;40.66 Km/H;94.8;
00061; 303;96.5;0.69;40.66 Km/H;94.8;
00062; 308;98.1;0.70;40.66 Km/H;94.8;



L'application :
Alimentation par pile 9V (because capteur de proximité) .
Peut rester autonome, le terminal et la liaison BlueTooth ne sont pas indispensable.
Un BP (Re)Start et un BP Stop + le LCD 4x20 chars constituent l'interface minimaliste operateur

Un strap non permanent (J1), permet d'initialiser l'horloge RTC DS1307 pour la premiere fois
ou sur remplacement de la pile CR2032.
La sortie terminal UART1 permet :
*de voir tous les details de deroulement du programme.
*de remettre à l'heure la RTC, format : U;19;12;17;02;12;51#
*d'envoyer des commandes au PIC.(STOP,RESTART)

Apres les inits hardwares classiques et UART1, UART2, I2C
le module HC06 est initialisé ( vitesse préalablement definie par defaut : 19200 bauds ! via la commande AT+BAUD5 )
L'init en 4 step, peut ne pas etre OK, si le module est DEJA APPAIRE en bluetooth avec un Phone Android .

On rentre ensuite dans une boucle d'attente Avec un message d'invite "Pedaler pour debuter"
Il faut detecter 5 tours de pedale pour armer /commencer le comptage et mesurer la vitesse.
La date et heure sont sauvegardée dans l'Eeprom 1Mb. Le Temps ZERO (nb de seconde depuis minuit , est sauvegardé.
Le cas d'un debut d'entrainement Velo à 23H58 .. et debordant minuit , n'est pas traité!, ni pendant le changement d'horaire)
Les donnees sont comptabilisées toutes les 10 secondes.(cadencement via Timer1 =50mS x 200 fois)
Il faut environ 3 tours de volant d'inertie ( 3 pulses) par tour de pedale => La led sur RA4 le montre.
L'impulse Tour de volant entre sur RB0 => traitement par interruption.=> Nb de pulses.
L'horloge DS1307 sert à etablir aussi le temps total qui s'ecoule .. en secondes.
Les calculs se re-actualisent apres 10 seondes de comptage pulses
C'est pourquoi l'affichage de la vitesse est en Metres/sec pendant les 5 premisers cycles de 10sec
puis en KM/H pour la duree modulo 1 minute .
Pour les plus sportif, il y a aussi l'affiche en RPM .. (Froome =>120.RPM !)
En fin de'entrainement :
Sur action BP Stop, les donnes sont sauvegardées dans l'eeprom .. cela represente un maxi de 42 bytes.

sur reception de commande STOP

00407; 1992;641.0;4.58;40.39 Km/H;95.1;
STOP OK
Start= 41256 sec;Stop= 41665 sec;Ecart= 409 sec;Vitesse= 40.30;
TTdP= 641;Kms= 4.58;Vmoy= 40.30;Duree=00:06:49;
Data to save to 24FC1026 :
05/02;11:27;TTdP= 641;Kms= 4.58;Vmoy= 40.30;Duree=00:06:49;Cumul= 4.6
Ecriture de k= 74 bytes -> NumPage= 000 24FC1026
Sauve Numpage 001 dans EEPROM du PIC , at 0x03FE =MSB et 0x03FF=LSB
Sauve Cumul_Kms 4.6 -> EEPROM du PIC , en 0x03FA,B,C,D
Une commande STOP n'est effective que modulo Minute..

Commande HELP:

HELP :
..... 5 Tours de pedale= START r
STOP ..fin et sauvegarde parcours
ABORT ..Arret d'urgence et fin
RELECT ..Liste le contenu 24FC1026
ERASE ..Decr. Index 24FC,annule dernier parcours
U;24;08;17;04;17;36# Update RTC

Commande RELECTURE : (Relecture 24FC1026 )



Relecture 24FC1026 :
03/02;10:51;TTdP= 334;Kms= 2.39;Vmoy= 40.35 00:03:33;Cumul= 2.4
03/02;10:56;TTdP= 117;Kms= 0.84;Vmoy= 40.15 00:01:15;Cumul= 3.2
03/02;10:59;TTdP= 236;Kms= 1.69;Vmoy= 40.27 00:02:31;Cumul= 4.9


La Date et Heures, le Nb de tour de pedales, Le nb de Kms, la vitesse Moyenne en KM/H.
L'EEPROM est organisée en Page de 128 bytes.. on peut mettre 3 entrainement par page ( 3x42=126 < 128 !)
Il y a 1000 pages ..!
L'index de stockage dans L'eeprom 24FC1026 est stocké en fond d'EEPROM PIC (0x3FE,0x3FF).
Cet index est relu à chaque init du programme, ou à chaque Re_Start

Les commandes STOP, RESTART, RELECT peuvent etre emises depuis un terminal (UART1) ou via BlueTooth.
pour la remise à l'heure RTC DS1307.
(exemple : U19;12;17;02;16;23;# pour le Mardi 19/12/2017 16H23)
exemple :
Comptage Nb tour de pedale J = 0
Comptage Nb tour de pedale J = 0
U;19;12;17;02;16;23#
Index1 = 20
Ecriture dans DS1307... OK
Comptage Nb tour de pedale J = 0


La relecture se fait depuis l'indice 0 , jusqu'à l'indice en cours.. liste de tous les entrainements.
Rappel: stockage en ascii, delimité par ";" => compatible Excel.


L'Application MikroC (2017):

projet complet :
_18F26K22_Velo_LCD4x20_I2C_24FC1026_uses_float_171120.zip


Derniere MAJ :
Projet Zippé : 18F26K22_Velo_190208.zip
last source update :18F26K22_Velo_LCD4x20_I2C_24FC1026_uses_float_190205.c
Log sur terminal : Velo_2017_log_terminal.txt
video : Velo_18F26K22_190211.webm

le resultat de compilation "fenetre Messages" est copié en fin du fichier source C .
la 1ere ligne de message est "decompressée" pour pouvoir lister les librairies utilisés .

* Pour les tests : pedalage simulé avec gené BF TTL à 4.8Hz!)




Application Appinventor2

Lié à l'application ci-dessus 18F26K22_Velo_LCD4x20_I2C_24FC1026
avec un module BlueTooth HC06 ( repere Jaune )

Designer :

L'interface MCU PIC Velo est sous tension
1°) Activer le blueTooth sur le phone Android et lancer l'application Velo_Appart_171212.apk
2°)selectionner un module BT dans la liste
3°) celui ci doit apparaitre avec son nom, puis connecté dans le champ status.
4°)dans le champ dialogue: on voi ce qui est emis par le PIC
5°)il faut commencer à pedaler pour activer le comptage
6°) La commande STOP, enclenche la memeo des données dans l'EEPROM32K
7° un restart est possible par la commande START

Design * capture ecran reel avec signal= 4,83 Hz

*capture d'ecran sur tablette LENOVO TAB3 710F


Blocs AI2

images/t_blocks_Velo_171212.gif


le fichier compilé :
Velo_Appart_171212.apk




Réactualisation 2019


schema:

Usage d'une RTC DS3231 au lieu de DS1307
Choix Cordon prolific USB ou HC06 blueTooth
Amelioration coté Appli MikroC version 7.30

schema version Mars 2019:

t_Velo_18F26K22_190302_variante_opto.gif

Bill of Material



Rappel capteur et modes de calculs

Affichage terminal

Mikroc pro 7.30 Beta
18F26K22 DS3231 24FC1026 UART1 HC06
Source : _18F26K22_Velo_LCD4x20_I2C_24FC1026_uses_float_190203.c
calcul kms en flottant

Presentation :
Appli. Velo App artement
464 pulses/Km 199Kms Maxi
Init I2C 400K
Test presence du LCD (PCF8754) : Device at adresse : 78 found OK
Test IT Timer1 delay=2sec
Test presence RTC DS3231
Device at adresse : 208 found OK
Re-Lecture RTC DS3231
NumPage 24FC1026 recupérée de L'EEPROM du PIC en 0x03FE et 0x3FF= 2
Last Cumul Kms recupérée de L'EEPROM du PIC en 0x03FA..0x03FD= 3.2
Commencer à pedaler ..

il suffit de commencer à pedaler, au bout de 5 tours de peadle , c'est parti ...

Comptage Nb tour de pedale J = 1
Comptage Nb tour de pedale J = 1
Comptage Nb tour de pedale J = 1
Comptage Nb tour de pedale J = 2
Comptage Nb tour de pedale J = 3
Comptage Nb tour de pedale J = 5

Stockage horodatage
DateTime= 03/02;10:59; next Idx Page_Eeprom = 12
Armement Interrupts RB0

Stockage données de depart en Eeprom 128K

Timer1 initialisé à 20x50mS => boucle en 1 sec

Libellés repetes à chaque minute
l'affichage RPM est calculé sur 1 minute , la vitesse KMH aussi


J ; Nb_Pulses ; Nb_TdP ; Nb_Kms ; Speed ; NbTdpPerMn
00000; 6;0.3;0.00;2.30;0.0;
00001; 10;1.9;0.01;11.52;0.0;
00002; 15;3.5;0.03;11.52;0.0;


00058; 581;186.1;1.33;11.52;94.8;
00059; 586;187.4;1.34;9.22;94.8;
J ; Nb_Pulses ; Nb_TdP ; Nb_Kms ; Speed ; NbTdpPerMn
00000; 591;189.0;1.35;11.52;95.0;

0011; 645;206.5;1.47;11.52;95.0;
00012; 650;208.1;1.49;11.52;95.0;
00013; 654;209.7;1.50;11.52;95.0;


Envoi de la commande HELP

HELP :
..... 5 Tours de pedale= START r
STOP ..fin et sauvegarde parcours
ABORT ..Arret d'urgence et fin
RELECT ..Liste le contenu 24FC1026
ERASE ..Decr. Index 24FC,annule dernier parcours
U;24;08;17;04;17;36# Update RTC
RESTART ..Apres fin de parcours, relance programme

00014; 659;211.3;1.51;11.52;95.0;


00029; 732;234.8;1.68;11.52;95.0;
00030; 737;236.5;1.69;11.52;95.0;

Pour terminer le parcours, envoi de la commande STOP , ou appui sur BP STOP

STOP OK

la date, duree et kilometrage sont stockés dans l'Eeprom

;03/02/19;11:01:42;
03/02/19 11:01:43
Start= 39552 sec;Stop= 39703 sec;Ecart= 151 sec;Vitesse= 40.27;
TTdP= 236;Kms= 1.69;Vmoy= 40.27 00:02:31;
Data to save to 24FC1026 :
03/02;10:59;TTdP= 236;Kms= 1.69;Vmoy= 40.27 00:02:31;Cumul= 4.9
Ecriture de k= 69 bytes -> NumPage= 002 24FC1026
Sauve Numpage 003 dans EEPROM du PIC , at 0x03FE =MSB et 0x03FF=LSB
Sauve Cumul_Kms 4.9 -> EEPROM du PIC , en 0x03FA,B,C,D

Envoi commande RELETURE -( liste tous les parcours enregistrés)

Relecture 24FC1026 :
03/02;10:51;TTdP= 334;Kms= 2.39;Vmoy= 40.35 00:03:33;Cumul= 2.4
03/02;10:56;TTdP= 117;Kms= 0.84;Vmoy= 40.15 00:01:15;Cumul= 3.2
03/02;10:59;TTdP= 236;Kms= 1.69;Vmoy= 40.27 00:02:31;Cumul= 4.9


Software
L'interruption RB0 est utilisé pour compter le nombre de tours de pedale
Le timer1 est utilisé pour compter les secondes
L'UART1 est utilié pour envoye rles donnees en temmps reel ( chaque secondes)
et aussi pour recevoir des commandes (STOP, HELP) durant le parcours
RELECT et RESTART apres le parcours
Le bus I2C1 est utilisé :
pour l'afficheur LCD 4 lignes de 20 cars
pour l' EEPROM 128K 24FC1026
pour La RTC DS3231 Date et heure
Alimentation 3,7V


SOFTWARE :
chargeur : 18F26K22_Velo_190224.hex
source : _18F26K22_Velo_LCD4x20_I2C_24FC1026_uses_float_190224b.html
_18F26K22_Velo_LCD4x20_I2C_24FC1026_uses_float_190224.c



Circuit Imprimé :


sprint layout V6.0
100x70mm Velo_190302.lay6

images/t_Velo_Lay6_Photo_190302.gif images/t_Velo_18F26K22_190302_CI_Layout.gif  
Bill Of Materials For Velo 2019.HTM CI TOP + cuivre  

Velo_Circuit_imprime_lay6_190302.pdf








Hardware :
Un capteur de proximité Telemecanique XS1-NO8 est installé face au volant d'inerie sur lequel est collé un mini aimant.
L'aimant permet de renforcer la detection sans cela le capteur ne pourrait pas detecter, d'autant plus qu'il est utilisé
en deça de sa spécification 12V-24V
dans ces conditions il detecte tres bien à partir de 8V .. mais decroche en dessous => il ne peut pas etre alimenté via le +5V
L'alim de l'ensemble sera donc de 9V et le +5V via un regulateur genre LF50CV.

images/velo_appart_Capteur_c.JPG images/velo_appart_Capteur_prox.JPG

vue generale

entrainement

detail capteur + aimant


Prototype de developpement:

images/Velo_proto_2011.jpg images/t_Feuille_Calcul_Velo_Appart.gif

prototype breadboard

feuille de calcul Excel

affichage BMP sur Nokia !



retour à l'index (home page)