Étape 2: Le DS18B20 capteur de température
Il y a deux façons de mettre en place un DS18B20 :
- Avec puissance parasite
- Avec alimentation externe
Pour en savoir plus sur ces options, il suffit de cocher la feuille de données.
La ligne de données DQ faudra une résistance de 4K 7 pullup et peut être connectée à la grande majorité des broches de votre microcontrôleur.
Communication avec un périphérique 1wire est, encore une fois, pas très difficile à Bascom. Il y a certaines commandes, mais nous avons besoin seulement trois d'entre eux pour ce projet.
- 1wreset: cette commande réinitialise la communication
- var 1wwrite : cette commande écrit 'var' dans l’appareil
- var 1wread : cette commande lit le dispositif dans 'var'
Il faut également configurer le bus 1wire avec le code suivant : config 1wire = pinX.y où X est le nom du port et y le numéro de l’axe.
Essayons de mettre tout cela en code maintenant :
Nous utiliserons le DS18B20 en mode 12 bits (par défaut) pour chaque bit correspond avec 0.0625degr C ou pour dire les choses plus facile : il faudra diviser le résultat par 16 pour obtenir la température. Pour ce code, vous devrez dim tempdata(9) as byte et température sous forme d’entier.
1wire config = portd.0 cela indique le microcontrôleur vers lequel rechercher le périphérique
....
1wreset se réinitialise et démarre la communication
1wwrite & HCC cela saute transmettant le code unique de ROM pour le périphérique. Ceci
code est nécessaire lorsqu’il y a plus d’appareils sur le même fil
mais nous avons un seul alors nous pouvons l’ignorer.
1wwrite & H44 commence la convertion A/D dans le capteur et stocke les données dans
le bloc-notes
waitms 750 la convertion en mode 10 bits peut prendre jusqu'à 750ms donc nous attendre
750ms avant de commencer à lire le bloc-notes.
1wreset
1wwrite & HCC
1wwrite & HBE raconte le dispositif que nous voulons lire le bloc-notes.
TempData(1) = 1wread(9) nous lisons 9 octets en tempdata(), à partir de tempdata(1).
If tempdata(9) = Crc8(tempdata(1), 8) puis il vérifie la validité des données et
Température = Makeint(tempdata(1), tempdata(2)) combine les 2 premiers octets dans une
entier.
Température = Température / 16 en divisant ce nombre entier par 16 nous ont
notre température en degr C.
End If
Nous avons notre capteur fonctionne maintenant.
Dans l’étape suivante, nous allons parler des boutons.