rev 1.0: 05 mars 2011
Last update : 05 mars 2017
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
Convertisseur ADC 16 bits
docu technique : AD7715
reference 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 Nokia
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
Resultats
de mesures :
(issus du fichier log recuperé)
Resultat_AD7715_16EA_4096mv_490_series.xls
Appli
LABVIEW coté PC
Recuperation
des voies ADC dans la Trame
programme VI
document: Basic Liaison serie Ecr Lect COM2
Test avec LABVIEW
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
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 :
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 )
![]() |
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
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.
![]() |
![]() |
![]() |
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
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
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
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
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.
voir XPORT application qui utilise ces datas