rev 1.0: 05 mars 2011
Last update : 05 mars 2017

Acquisition de mesures pour Instrumentation


16 mesures Analogiques 16 bits avec AD7715 avec 18F252
Appli Labview pour affichage sur PC
Appli VB6 pour affichage sur Altimetre en image de synthese (sur PC)
Test ADC Microchip MCP3424 en 16 ou 18 bits avec 18F258
Test ADC Microchip MCP3304 12 bits 18F258
Groupage de 4 mesures 17 bits + 8 mesures 12bits + 5 mesures 10 bits et Appli VB6
Autre liens
Liaison PIC <-> Xport EThernet --> page web
Galvanometre (image de synthese)



Acquisition de 16 mesures Analogiques via AD7715 16 bits

But
Faire l'acquisition de 16 mesures avec le maximum de resolution (et precision relative)
avec un microcontroleur et transmettre chaque trame de mesure à un PC
pour traitement (mise à l'echelle en Unites Physiques et affichage sur instrument virtuel
d'un Ecran PC.
le tout à une vitesse de 1 trame (serie de 16 mesures) par seconde
Autocalibration de l'ADC (Zero et Echelleà toutes les 32 mesures.
dialogue via le clavier du terminal :
Menu :
1 toggle fonction pour afficher le Numero de la serie en cours (en tete de trame)
2 toggle fonction pour afficher l'acquisition de la voie RA0 ADC10bits su PIC
3 toggle fonction pour SIMULER les 16 valeurs ADC 16 bits. (pour developpement coté PC)
nota: toggle = simili telerupteur , basculement de l'etat à chaque appui
Schema

EFIS_18F252_AD7715_16EA_4096mV_RS232_LCD_100613.jpg

Convertisseur ADC 16 bits

docu technique : AD7715
r
eference de tension : soit 2,048V pleine echelle pour 32767 points
soit la reference finalement retenue ici 4.096V
MCP1541 de Microchip
ATTENTION:
- broche CS Chip select mise en permanece au 0V (il n'y a qu'un seul AD7715)
- reference de 4,096V car les capteur seront tous alimentés en 5V, avec 2,048V il aurait fallu plus de diviseurs

-
le point critique est d'attendre la STABILISATION des entrees commutatées via le CD4051 .
-un filtre passe bas est utilisé en entree AD7715 15Kohms + 10nF => 5xTeta < 1mS
- avc Q=1Mhz FS1=1 FS0=1 on a 200 SPS

nota: on peut aller plus vite avec Q=2,45MHz !

liens similaires
AD7715_LCD_avec PIC16F84


PIC18F252
brochage du circuit : pinout
USART du PIC pour la liaison RS232 à 57600 bauds => 5760 car / sec
1 trame (serie) = 16x6 cars+LF soit 97 cars
Soit 97 / 5760 => 0.0168 sec => environ 17mS
Intervalle de mesure : 40mS apres changement d'aiguillage des 2 CD4051.

Source version 8EA :
AD7715_8EA.c
Chargeur version 8EA :
AD7715_8EA.hex
Chargeur vesion 16EA :
AD7715_16EA_4096.hex
source HTML
AD7715_16EA_4096mV.html
autre version anterieure :
ad7715_LCD_RS_18F252


PROTOTYPE

Malgré le montage volant de ce
PROTOTYPE , les resultats sont TRES ENCOURAGEANTS
apres ajustement des timmings de l'AD7715. Le respect du timming est la 1ere condition pour obtenir une mesure stable.

Un LCD N
okia 3310 est utilisé pour avoir un affichage local des 16 voies de mesures réparties en 2 colones de 8 voies
Usage du
Terminal Vbray pour affichage du flux RS232 , avec enregistrement dans un fichier log pour verifier la stabilite des mesures.
fichier log avec option EXCEL activée dans le programme source :
201010041_AD715_8voies_acquisition_CSV.log
fichier log SANS option EXCEL activée dans le programme source :
201010041_AD715_8voies_acquisition_brut.log

Result_Terminal.jpg

Resultats de mesures :
(issus du fichier log recuperé)
Resultat_AD7715_16EA_4096mv_490_series.xls


XLS_result.jpg





Appli LABVIEW coté PC

Recuperation des voies ADC dans la Trame


programme VI
document:
Basic Liaison serie Ecr Lect COM2


Test avec LABVIEW

Result_Basic_Liaison_serie_Ecr_Lect_COM2_8EA.jpg


Bugs, defauts à corriger :
coté PIC:
* Caracteres etranges apres l'Init de l'UART ... à supprimer..
.....le premier car que j'envoi est pourtant CR et LF ! il doit y avoir un buffer de transmission plein !
* je devrais avoir 65535 points au max de l'echelle ..pas 32767 puisque l'ADC travaille en mode UNIPOLAIRE 16 bits

... bug corrigé! 65535 points pour 4096mV et usage de U16 coté labview.

Labview affiche les resultats apres 5 trames soit apres 5secondes de retard ????
où est donc le buffer intermediaire ?? Help me please







AFFICHAGE Mesures issues du PIC18F452 via VB6 (au lieu de Labview ! )
Creation d'un ALTIMETRE et d'un indicateur de vitesse en images de synthese

Altimetre_VB6.jpg
Test OK avec 50 images .. 50 images peuvent s'afficher successivement en moins de 2 secondes.
Creation de 502 images (de 1 à 501) pour faite les 10 tours de la grande aiguille et les 50 pas de la petite aiguille
resolution graphique 1 division pour 20M
Nota: je n'arrive pas à gerer la transparence des images au format GIF sous VB6 ! pour ne faire bouger,
en sur-impression, que les aiguilles
fichiers de création images avec MORAY et POVRAY : voir
ici :

La suite .. le lien RS232 avec le PIC d'acquisition de la mesure au format 16 bits pour animer l'image
Resultats OK, COM avec PIC18F252 gerant l'ADC7715
recuperation des 16 mesures, et en particulier la voie 8 = Altitude
Case à cocher =simulation , decocher pour liaison RS232 avec PIC.. à 57600 bauds
Test 0 à 10000M ..OK (avec potar!)
PAS DE PROBLEME de com sous VB6 .. pas de retard .. resultat à chaque seconde, cadencé par le timer appli VB
qui demande une serie de mesure via la caractere "0" envoyé sur la COM pour synchroniser les echanges..

Rajout de l'indicateur de vitesse .. Graduations non lineaires ! sur 327 degres
l'executable en VB6 :
Altimetre.exe
- les 500 images necessaires pour l'
Altimetre (images/_Altim/Altim.zip)
- Les 327 images de
l'indicateur de vitesse (images/_Airsp/Airspeed._Airsp.zip)
Package complet VB6 :
Package.zip

Possible de limiter l'echelle d'altitude pour un ULM ? 3600M c'est déja bien haut ? et ça m'arrangerait !



Test ADC Microchip MCP3424

Achat de la version Evaluation Board chez microchip Direct (delai 3sem)
docu
MCP3424

schema :

images/MCP3424_evaluation_board_schema.jpg images/MCP3424_evaluation_board.jpg
Schema de la carte evaluation Board pour < 12€


Acquisition de 4 canaux 10 bits (ADC du PIC) et de 4 canaux 16 bits signés
(15 bits utiles seulement en mode Single End )

Mcp3424_18f258.jpg
schema Isis : MCP3424_18F258.DSN

fichier log des resultats de mesure obtenus via le Terminal (datas sur RS232)
Resultat des 4 voies 15 bits affiché sur le LCD Nokia 3310
et mesures transmises sur la liaison RS232
Vitesse d' Acquisition limitée à 2 trames par secondes .

Dialogue avec terminal

1 Togle affiche le numero de trame
2 Togle affiche les 4 mesures ADC 10 bits
3 Togle Affiche mesures simulees ou mesures reelles 16 bits
+ augmente le Gain 1 > 2 > 4 > 8
- Diminue le Gain 8 > 4 > 2 >1
ESC affiche ce menu


on obtient :

pour 128 mV en entree    
Gain Points Resolution  
1 2048 62.5 µV/point
2 4096 31.3 µV/point
4 8192 15.6 µV/point
8 16384 7.8 µV/point

Maxima= 32768 points @ 2,048V et G=1

Fichier source :MCP3424_15bits_I2Csoft_18F258_nokia8x16_Ok.c
Fichier chargeur HEX : MCP3424_18F.hex


Version en 18 bits , mais avec 17 bits utiles seulement , en mode single ended
Plus de resolution, mais moins de vitesse, limite à 3,75 Sample Per Second!
De plus en mode single ended (mode commun) on ne dispose que de 17 bits utiles dans le quadrant positif 0 à 2,048V.
On obtient de bons resultats à une periode d'acquisition de 1,2 secondes pour les 4 canaux 17 bits (et les 4 ADC 1à bits du 18F!)
Une tempo de 250mS est necessaire entre le choix des cannaux...
Problemes et effets de bords en reutiilsant le meme pointeur de chaine ascii ????? BIZARRE AUSSI! no comprendo
J'utilise donc l'EEPROM du 18F pour y mettre du texte (entete)


serie de 4 mesures 10 bits +
4 mesures 17 bits en 1,2 sec

Entree
200mV
moy/
30mes
Delta Max
Points
delta Max
en %
Resol en
µV/pt
G=1 12773.6 2 0.02% 16
G=2 25553.3 2 0.01% 8
G=4 51047.9 5 0.01% 4
G=8 101935.3 6 0.01% 2

maxima = 131072 points @ 2,048V et G=1

Fichier source : MCP3424_4x17bits_RS232
Fichier chargeur HEX : MCP3424_17bits


Details resultats ici:
ADC18b_MCP3424_datas_100913.xls


Gestion des "SENSORS"
Mise à l'echelle de chaque capteur dans la gamme 0-4V
Le MCP3424 parait donc tout désigné pour traiter DIRECTEMENT de faibles signaux
soit en mode commun, soit en mode differentiel.
A suivre ...
Usage de la grande dynamique d'acquisition en mode 14 ou 17 bits pour la gestion de :

Capteur de PRESSION absolue pour la Mesure de l'altitude
Capteur de Pression Differentielle pour la Mesure de vitesse
Usage du convertisseuren mode 12 bits pour les autres infos tel que Capteurs de temperature
...




Test ADC Microchip MCP3304

04/12/2010
ADC 8ch 13 bits signés, 12 bits utiles en "single end" :
notice Microchip : sur
site Microchip
version pdf:
_MCP3304_ADC12b_8CH_SPI

images/MCP3304_18F258_RS_Proto_101204.JPG

Brochage DIP16

Prototype de test


Schema

Interface RS232 avec 2T classiques
au lieu du sympa mais tres cher DS275 , plus touvable en version DIP8.
liaison 56000,N,8,1 , avec tempo pour ralentir un peu ,on obtient ici, 13 mesures 12 bits + 1 mesure 10 bits en < = 1 seconde
Le pilotage SPI est fait en software 100% pour utiliser le port B.

images/MCP3304_18F258_Rs232_2T_101204.jpg images/t_MCP3304_timming.jpg ../common/GIF/t_Adaptateur_TTL_RS232_2T.jpg
MCP3304_18F258_Rs232_2T_(Isis) timing dialogue SPI adaptateur TTL <-> RS232... pas cher!!

Programme :
Source :
MCP3304_18F258_Rs.c (MikroC)
Chargeur : mcp3304_18f258.hex

Test stabilite de mesures
sur 493 mesures , 75 ms par serie de mesures :
MCP3304_8x12b_test.xls ou MCP3304_test_stabilite.jpg

Resultat fichier log obtenu avec terminal VBray 56000,N,8,1 :

INIT usart 56000bds
Avec tinybld18F258_10Mhz_19200bds.HEX
Tst_18F258_RS.c 14/11/2010 interface RS avec 2 Transistors
Test du MCP304 8 chanels 12 bits , liaison SPI software
1 ADC0= 971 MCP3304 : Ch0= 3870, Ch1= 4, Ch2= 2, Ch3= 0, Ch4= 0, Ch5= 0, Ch6= 0, Ch7= 0

19:33:55.954> 2649 ADC0= 971 MCP3304 : Ch0= 3870, Ch1= 4, Ch2= 2, Ch3= 0, Ch4= 0, Ch5= 0, Ch6= 0, Ch7= 0
19:33:56.004> 2650 ADC0= 971 MCP3304 : Ch0= 3870, Ch1= 4, Ch2= 2, Ch3= 0, Ch4= 0, Ch5= 0, Ch6= 0, Ch7= 0
19:33:56.114> 2651 ADC0= 971 MCP3304 : Ch0= 3870, Ch1= 4, Ch2= 2, Ch3= 0, Ch4= 0, Ch5= 0, Ch6= 0, Ch7= 0
19:33:56.154> 2652 ADC0= 971 MCP3304 : Ch0= 3870, Ch1= 4, Ch2= 2, Ch3= 0, Ch4= 0, Ch5= 0, Ch6= 0, Ch7= 0
19:33:56.254> 2653 ADC0= 971 MCP3304 : Ch0= 3870, Ch1= 4, Ch2= 2, Ch3= 0, Ch4= 0, Ch5= 0, Ch6= 0, Ch7= 0
19:33:56.304> 2654 ADC0= 971 MCP3304 : Ch0= 3870, Ch1= 4, Ch2= 2, Ch3= 0, Ch4= 0, Ch5= 0, Ch6= 0, Ch7= 0
19:33:56.414> 2655 ADC0= 971 MCP3304 : Ch0= 3868, Ch1= 2, Ch2= 6, Ch3= 0, Ch4= 0, Ch5= 0, Ch6= 0, Ch7= 0
19:33:56.454> 2656 ADC0= 971 MCP3304 : Ch0= 3870, Ch1= 4, Ch2= 2, Ch3= 0, Ch4= 0, Ch5= 0, Ch6= 0, Ch7= 0
19:33:56.554> 2657 ADC0= 971 MCP3304 : Ch0= 3870, Ch1= 4, Ch2= 2, Ch3= 0, Ch4= 0, Ch5= 0, Ch6= 0, Ch7= 0
19:33:56.615> 2658 ADC0= 971 MCP3304 : Ch0= 3870, Ch1= 4, Ch2= 2, Ch3= 0, Ch4= 0, Ch5= 0, Ch6= 0, Ch7= 0
19:33:56.705> 2659 ADC0= 971 MCP3304 : Ch0= 3870, Ch1= 4, Ch2= 2, Ch3= 0, Ch4= 0, Ch5= 0, Ch6= 0, Ch7= 0
19:33:56.805> 2660 ADC0= 971 MCP3304 : Ch0= 3870, Ch1= 4, Ch2= 2, Ch3= 0, Ch4= 0, Ch5= 0, Ch6= 0, Ch7= 0
19:33:56.855> 2661 ADC0= 971 MCP3304 : Ch0= 3870, Ch1= 4, Ch2= 2, Ch3= 0, Ch4= 0, Ch5= 0, Ch6= 0, Ch7= 0
19:33:56.955> 2662 ADC0= 971 MCP3304 : Ch0= 3870, Ch1= 4, Ch2= 2, Ch3= 0, Ch4= 0, Ch5= 0, Ch6= 0, Ch7= 0
19:33:57.005> 2663 ADC0= 971 MCP3304 : Ch0= 3870, Ch1= 4, Ch2= 2, Ch3= 0, Ch4= 0, Ch5= 0, Ch6= 0, Ch7= 0

13 mesures 12 bits + 1 mesure 10 bits en <= 1 seconde !
nota: avec tempo de boucle reduite à 50mS => 20 series de mesures en 1,5 sec


Comparatif des 3 modes d'acquisitions ,conversions ANALOGIQUES -> DIGITAL

_ADC12_3304_ADC18_3424_Microchip.xls




Groupage de 4 mesures 17 bits + 8 mesures 12bits + 5 mesures 10 bits + RS232..

Version developée sous MikroC , usage de I2C software (LCD non traité)
Programme
Source : MCP3304_3424_18F258_Rs.c
Chargeur : MCP3304_3424_18F258.hex

MCP3304_3424_18F258_Rs232_2T_rev101212.jpg
Schema Isis
Resultats:
20:46:31.010> 310
20:43:52.162> 10
delta= 201 secondes pour 300 series de mesures
~0,7 seconde par serie de 5 mesures 10 bits, 8 mesures 12 bits, 4 mesures 17 bits

test ADC MCP3424 4CH 17bits utiles,liaison I2C
Config ADC18b= 140
1 ADC 10bits :Ch0= 256 Ch1= 0 Ch2= 256 Ch3= 0 Ch4= 102
MCP3304 12bits : CH0= 1012, CH1= 1498, CH2= 404, CH3=0,CH4=0,CH5= 0,CH6=0,CH7=0
MCP3424 18bits : CH0= 1293 CH1= 2535 CH2= 2535 CH3= 2535 Gain= 0

Resultats:
20:46:31.010> 310
20:43:52.162> 10
delta= 201 se

Application VB6

images/ADC10_12_17.jpg



Modification appli PIC18F pour "MOD" Mesure On Demand
Les Mesures 10 bits , 12 bits ou 18 bits ne sont emises que sur demande

lors de la reception des caracteres respectifs 1, 2, ou 3
Test avec Terminal Vbray et Script suivant:
Request_analog_measures.tsc
(la periode de demande peut etre modifiée dans le script )
Ce script , listé ci-desous, demande successivement l'acces aux 5 mesures 10 bits par envoi de '1'
delai de 300mS, puis envoi de '2' pour les mesures 12 bits
delai de 300mS, ,puis envoi de '3' pour les mesures 18 bits

program Mesures_ANA;

const STRING1 = 'Mesures ANALOGIQUES';

var i: integer;
begin
writeln(STRING1);
i:=0;
while (i<>81) do // wait for 'Q'char
begin
i:=ComReadChr();
ComSendchr(49);Delay(300) ;
ComSendchr(50);Delay(300) ;
ComSendchr(51);Delay(300) ;
end;
writeln('while loop exit');
end.

Resultat sur terminal Vbray

INIT usart 38400bds
18F258_Ana_101226.c interface RS232 avec 2 Transistors
PIC18F258 5 chanels ADC10 bits
MCP304 8 chanels 12 bits, liaison SPI software
MCP3424 4CH 18bits ,en liaison I2C Software
Config ADC18b=140
START
1 MCP3304 12bits : CH0= 2212,CH1= 1584,CH2= 404,CH3= 0,CH4= 0,CH5= 0,CH6= 0,CH7= 0
2 MCP3424 18bits : V0= 2047,V1= 2047,V2= 2047,V3= 2047
3 ADC 10bits :A0= 551,A1= 0,A2= 551,A3= 0,A4= 100
4 MCP3304 12bits : CH0= 2212,CH1= 1584,CH2= 404,CH3= 0,CH4= 0,CH5= 0,CH6= 0,CH7= 0
5 MCP3424 18bits : V0= 131071,V1= 131071,V2= 131071,V3= 131071
6 ADC 10bits :A0= 551,A1= 0,A2= 551,A3= 0,A4= 100
7 MCP3304 12bits : CH0= 2212,CH1= 1584,CH2= 404,CH3= 0,CH4= 0,CH5= 0,CH6= 0,CH7= 0
8 MCP3424 18bits : V0= 131071,V1= 131071,V2= 131071,V3= 131071
9 ADC 10bits :A0= 551,A1= 0,A2= 551,A3= 0,A4= 100
10 MCP3304 12bits : CH0= 2212,CH1= 1584,CH2= 404,CH3= 0,CH4= 0,CH5= 0,CH6= 0,CH7= 0
11 MCP3424 18bits : V0= 131071,V1= 131071,V2= 131071,V3= 131071
12 ADC 10bits :A0= 551,A1= 0,A2= 551,A3= 0,A4= 100
13 MCP3304 12bits : CH0= 2212,CH1= 1584,CH2= 404,CH3= 0,CH4= 0,CH5= 0,CH6= 0,CH7= 0
14 MCP3424 18bits : V0= 131071,V1= 131071,V2= 131071,V3= 131071
15 ADC 10bits :A0= 551,A1= 0,A2= 551,A3= 0,A4= 100
16 MCP3304 12bits : CH0= 2212,CH1= 1584,CH2= 404,CH3= 0,CH4= 0,CH5= 0,CH6= 0,CH7= 0
17 MCP3424 18bits : V0= 131071,V1= 131071,V2= 131071,V3= 131071


Modification appli VB6 correspondante


Version lite permettant de recuperer les mesures Analogiques , fichier VB6 exec :
Server DDE ADCs
liens DDE avec feuille Excel

images/t_DDE_ADCs_Excel.jpg

Version avec un indicateur à aiguille lié au CH0 12bits et avec une ampoule à incandescence
alimentée par l'info CH0 10 bits.
fichiers VB6 exec :
INDICATEUR_Lampe_exec.zip
fichiers de 251 images à inclure dans un sous directory "images" :
images_indicateur250.zip
fichiers de 100 images à inclure dans un sous directory "images" :
images_Ampoul100.zip

Creation des images de synthese : ICI

Indicateur_250.jpg
avec animation de l' indicateur par le Ch0 12 bits
et de l'ampoule par le CH0 10 bits



Lien vers version en C18 (MPLAB MCC18)
Groupage de 8E + 8S + 4 Ana 17 bits + 8 Ana 12bits + 5 Ana 10 bits +
RS232..

Acquisition Analog 10 bit x 5
Acquisition Analog 12 bit x 8 en mode SPI
Acquisition Analog 18 bit x 4 en mode I2C-Soft
Lecture port E MCP23017 en mode I2C-Soft
Ecriture port S MCP23017 en mode I2C-Soft
Soft UART Hardware 19200 bauds .
Gestion messages en EEPROM.

images/C18_Result2.jpg
voir XPORT application qui utilise ces datas
../XPORT_16F_18F/images/Xport_Client_VB6_run_110319.jpg




retour à l'index principal