Bonjour vede,
donc si je comprends bien par ex : si je veux d0 et d6 en entrées je dois faire
trisd = %01000001;
si je veux affecter la valeur d'un port en entrée à une variable je dois faire :
temp = portd.b6;
cordialement;
bypbop
Bonsoir Bypbop,
oui, c'est bien ça ;O]
vede
;O]
18/01/2010 - 15h46
bypbop
Date d'inscription
juillet 2009
Âge
35
Messages
310
Re : MikroC et CDC USB
Bonjour vede,
j'avance un petit peu aujourd'hui sur mon projet alors j'ai ajouté certaine chose au code de base premièrement j'allume la led sur le port b4 et j'envoie une autre variable par usb pour la temperature j'ai une valeur mais pas la bonne ... tu verras j'ai commenté pas mal de chose qui n'influence pas le montage ...
ps : qd je decommente temperature=10; ca m envoie bien 10 dans hid terminal
unsigned short m, k;
char temperature;
unsigned short userRD_buffer[1];
unsigned short userWR_buffer[1];
for (k = 0; k < 255; k++) {
temperature = PORTD.B5;
//temperature = 10;
// Prepare send buffer
userWR_buffer[0] = k;
userWR_buffer[1] = temperature;
// Send the number via USB
while(!Hid_Write(&userWR_buffe r[1], 1));
delay_ms(1000); // une ch'tite temporisation ;O]
}
}
while (1);
Hid_Disable();
}
En faisant ca j'obtiens 35 en boucle dans le hid terminal j espere avoir correctement calbé la sonde ...
je mets en pièce jointe le cablage pour voir si c 'est correct . La sonde est en vue de face (ecriture en face).
Cordialement,
bypbop
18/01/2010 - 21h29
vede
Date d'inscription
août 2009
Localisation
Bleurilles-sur-Bré (Groland-de-l'Autre-Côté)
Âge
42
Messages
3 353
Bonsoir Bypbop,
en effet, ça fonctionnera jamais tel quel ;O]
Le câblage est bon...
C'est niveau logiciel... la temperature n'est
pas directement lisible sur le port... elle utilise
un protocole de communication (comme RS232,
USB... mais qui s'appelle "One Wire")...
dans mon projet, j'utilise la librairie fournie par
MikroE pour gérer ce protocole... comme je fait
d'ailleurs pour RS232, USB... pas IIC que j'ai émulé...
il faut donc que tu te penches sur la doc
(librairie One Wire de MikroC) et mon
exemple de code avec la DS18B20...
pour récupérer la température ;O]
enfin je suis là...
donc t'inquiétes...
on va plier ça rapidement ;O]
vede
;O]
ps : la datasheet de la sonde est aussi trés interessante....
tu vas voir comment certains se prennent la tête pour
stocker une temperature ;O] ....
re ;O]
en effet, il faut que tu commences pas
l'aide de MikroC sur la librairie One Wire
(Help > Hard Libraries > One Wire)...
ya un exemple (DS18x2x) et le schéma de base...
voila j'ai integré le code micro de l exemple avec la sonde c'est bon j'ai une valeur qui varie bien dès que je touche la sonde mais apparement il faut faire un calcul pour avoir la temperature et ca je ne comprends pas moi j'ai cette valeur
je n'ai pas sous la main de resistance variable de toute facon je veux juste recuperer la valeur de la photoresistance sur mon pic.
comment puis je faire ?
Cordialement,
bypbop
20/01/2010 - 15h20
vede
Date d'inscription
août 2009
Localisation
Bleurilles-sur-Bré (Groland-de-l'Autre-Côté)
Âge
42
Messages
3 353
Bonjour Bypbop,
pour la sonde je t'envoie un code plus tard (avant ce soir)...
pour récupérer la valeur de la LDR (photo-résistance),
il faut la connecter à une entrée analogique du PIC, au
travers d'un pont de résistance, et tu auras une tension
lue +/- proportionnelle à la luminosité...
et tu trouveras dans l'aide de MikroC, dans les librairies,
un exemple d'utilisation de ADC_Read()...
v;O]
Dernière modification par gienas ; 22/01/2010 à 13h22.
Motif: Fusion de trois réponses consécutives
20/01/2010 - 19h27
bypbop
Date d'inscription
juillet 2009
Âge
35
Messages
310
Re : MikroC et CDC USB
Re vede encore merci pour tes precieux conseils
pour l'exemple je comprends mieux
donc de + 5v à la photoresistance
de la photoresistance à une resistance de 10ko et à la masse
entre la photoresistance je vais à une entrée de mon pic 18f4550 marqué
AN je suppose ... AN0 ou AN1 par exemple
Cordialement,
bypbop
20/01/2010 - 21h49
vede
Date d'inscription
août 2009
Localisation
Bleurilles-sur-Bré (Groland-de-l'Autre-Côté)
Âge
42
Messages
3 353
Re : MikroC et CDC USB
Envoyé par bypbop
Re vede encore merci pour tes precieux conseils
pour l'exemple je comprends mieux
donc de + 5v à la photoresistance
de la photoresistance à une resistance de 10ko et à la masse
entre la photoresistance je vais à une entrée de mon pic 18f4550 marqué
AN je suppose ... AN0 ou AN1 par exemple
Cordialement,
bypbop
re ;O]
oui c'est ça ...
entre la résistance et la LDR tu "vas" à l'entrée ADC...
en fait je vais te donner petit un exemple :
-mesurer avec un multimètre la résistance de la LDR
dans la lumière ambiante d'utilisation prévue...
-prendre une R fixe avec une valeur la plus proche de la R-LDR...
-delà en câblant ça sur le principe d'un pont diviseur
de tension à 2 résistance, tu trouveras :
-environ 2,5Volts sur l'entrée AN en lumière ambiante
(vu que c'est un ADC 10 bits, une valeur d'environ 512)
-plus la luminosité augmentera, plus la tension augmentera...
(entre 2,5 et 5V... soit entre 512 et 1024, niveau résultat ADC)
-plus la luminosité diminuera, plus la tension diminuera...
(entre 2,5 et 0V... soit entre 512 et 0, niveau résultat ADC)
(ou inversement selon "la place" de la LDR...rapport à la Masse...)...
vede
;O]
ps : pour les calculs, adaptations, étalonnage,
il faut voir le bloc (R fixe + R-LDR) comme une
R fixe placée en série avec un potard...
cad un diviseur de tension... plus une résistance fixe "talon"...
re-ps : et avant il faut initialiser l'ADC...
et sélectionner le port ADC à utiliser...
re-re-ps : la "courbe" d'une LDR est rarement linéaire...
21/01/2010 - 20h39
bypbop
Date d'inscription
juillet 2009
Âge
35
Messages
310
Re : MikroC et CDC USB
Bonjour vede,
Pour la temperature ca fonctionne nikel par contre pour l'intensité lumineuse c'est autre chose . Pour le cablage j'ai bien une variation sur la sortie qui va au pic en fonction de la luminosité donc le cablage est bon.
pour le code j'ai fait ca :
unsigned short m, k, temperature, oct1, oct2, lumiere;
unsigned short userRD_buffer[1];
unsigned short userWR_buffer[1];
il faut commencer par initialiser le convertisseur,
puis sélectionner le canal, puis lancer une conversion,
puis attendre la fin, puis attendre un peu (100µs)
avant d'en re-lancer une (de conversion...)...
sinon, ce cours http://pagesperso-orange.fr/fabrice..../ADC_16F88.htm
malgrés que ce soit pour un 16F88,
donne une trés bonne explication du fonctionnement
général de l'ADC des PICs, quel que soit le type de PIC (16F, 18F)...
c'est "toujours" via les registres :
-ADCON et/ou
-ADCON0 et/ou
-ADCON1 et/ou
-ANSEL et/ou
puis la valeur (10 bits) dans
-ADRESL
-ADRESH
et aussi des infos dans l'aide de MikroC (Help > Librairies > ADC)
(si tu utilises cette librairie même plus besoin de t'emmer..r avec
les registres concérnés ;O])
ça fait longtemps que j'ai pas utilisé l'ADC du 4550...
mais je vais regarder, te tiens au jus d'ici demain soir...
sinon après, je sais pas exactement, pour le buffer USB...
ni pour envoyer des variables "en même temps"...
faudrait aller voir sur le Forum MikroE...
vede
;O]
re ;O]
au niveau du code:
c'est par là qu'il va falloir dé-commenter/ajouter des lignes
pour pouvoir utiliser le convertisseur :
// Configure all ports with analog function as digital
//ADCON1 |= 0x0F;