KKM: LOGIC LEVEL KONVERTER

Početnik si s Dasduinom. Ili s elektronikom? Za oko ti je zapeo određeni modul, ali ne znaš kako ga koristiti? Bez brige, tu je KKM! Kako Koristiti Module (KKM) je serija blog tutorijala tvrtke soldered na kojoj ćeš pronaći sve što ti treba kako bi započeo rad sa svojim omiljenim modulom. Tutorijali obuhvaćaju: tehničke karakteristike, princip rada, upute kako povezati modul s Dasduinom te osnovni kod. Sve ostalo prepuštamo tebi na maštu.
UVOD
Sigurno ste do sada primijetili kako neki moduli i mikrokontroleri rade na 5V, a drugi na 3,3V. Što je razlog tome?
Kako međusobno povezati dijelove vašeg sustava koji su na različitim naponskim razinama? Odgovori na ova pitanja slijede u nastavku.
KAKO RADI?
Mikrokontroleri kao i periferni uređaji za komunikaciju koriste tranzistore kako bi ostvarili svoju funkciju. Prema tome su sve logičke operacije ostvarene sklapanjem ili isklapanjem tranzistora. Ako kroz neki period vremena promatramo rad tranzistora možemo primijetiti kako se on uključuje/isključuje sa nekom srednjom frekvencijom. Što je ta frekvencija veća to se više logičkih operacija može izvršiti u kraćem vremenu. Osim brzine izvršavanja operacija bitna nam je i potrošnja električne energije posebno ako radimo nekakav projekt koji bi se napajao iz izvora malog kapaciteta poput button cell baterije CR2032. Potrošnja ovisi o frekvenciji sklapanja tranzistora te naponu. Ako smanjimo napon pri kojem tranzistori rade smanjit ćemo potrošnju sklopa što je glavni razlog zašto imamo module i kontrolere koji rade na 3,3V umjesto na 5V.
Ako čitate ovaj tutorijal sigurno ste se kao i mi našli u situaciji da imate senzorski modul koji vam se baš sviđa i htjeli biste ga koristiti sa svojim mikrokontrolerom, ali nažalost oni koriste različite naponske razine. U našem primjeru koristimo senzorski modul temperature i vlage SHT21 koji ima sučelje za I2C komunikaciju na 5V, a htjeli bismo ga spojiti na naš Dasduino Connect koji ima SDA i SCL priključke koji rade na 3,3V. Kod SHT21 modula kao i kod mnogih drugih, SDA i SCL priključnice spojene su preko pull-up otpornika na napajanje modula koje iznosi 5V. Ako bismo sada izravno spojili te dvije priključnice na kontroler koji radi na 3,3V došlo bi do oštećenja kontrolera jer bi kroz njega tekla puno veća struja zbog povećanog napona. Kako bismo riješili ovaj problem koristi ćemo logic level konverter modul koji ima mogućnost da logičke razine od 5V spusti na 3,3V za što koristi BSS138 N-kanalne MOSFETe (Što je to MOSFET?), a osim te funkcionalnosti sadrži i naponski regulator sa 5V na 3,3V što znači da pomoću ovog modula možete napajati ostale 3,3V uređaje.
KAKO POVEZATI?
Ovim primjerom želimo vam pokazati kako ostvariti prethodni SHT21 tutorijal pomoću našeg wireless kontrolera Dasduino Connect. Započnimo spajanje sa dovođenjem napajanja 5V na konektor ili direktno na eksperimentalnu pločicu. Napajanje od 5V koristimo za napajanje senzora. 5V i gnd priključnice dovodimo na logic level konverter modul i to na njegove priključnice AVCC i AGND kao što je prikazano u tablici iznad. Napajanje Dasduina ostvareno je spajanjem priključnica BVCC i BGND na +3,3V i gnd Dasduina. Da bismo ostvarili komunikaciju, potrebno je spojiti SDA i SCL priključnice tako da se dovedu sa senzora na A stranu konvertera, a potom sa B priključnica na kontroler.
ARDUINO KOD
Za ispravno izvršavanje programskog koda potrebna vam je biblioteka za SHT21 breakout. U slučaju da ne znate kako instalirati biblioteku pročitajte naš tutorijal. Budući da u ovom primjeru koristimo Dasduino Connect preporučamo da pogledate ostale tutorijale vezane uz ovaj kontroler.
#include "ESP8266WiFi.h"
#include "SHT21.h" // include SHT21 library
SHT21 sht;
float
temp;
// variable to store temperature
float
humidity;
// variable to store hemidity
void
setup
() {
Wire.begin();
// begin Wire(I2C)
Serial.begin(9600);
// begin Serial
}
void
loop
() {
temp = sht.getTemperature();
// get temp from SHT
humidity = sht.getHumidity();
// get temp from SHT
Serial.print(
"Temp: "
);
// print readings
Serial.print(temp);
Serial.print(
"\t Humidity: "
);
Serial.println(humidity);
delay
(85);
// min delay for 14bit temp reading is 85ms
}