LED драйвер

LED драйвер
Posted on юни 11th, 2015

Здравейте приятели,
с тази статия ще Ви запозная с лесен и евтин начин да направите LED драйвер за вашият мощен LED диод, без да се налага да поръчвате скъпи или пък некачествени LED драйвери от Китай.

LED драйвер – обща информация

Срещал съм множество въпроси относно темата „Да ползвам ли LED драйвер или мога директно да свържа диода към подходящ източник на напрежение?“.

Отговора на този въпрос е един – да можете да свържете диода си и без да ползвате LED драйвер, но това ще намали многократно неговия живот, както и няма да свети на 100% от капацитета си, дори и на 80% от него.

Това е така, поради факта, че LED светодиода, променя нуждтата си от ток и напрежение поради много фактори, но основният е заобикалящата го температура на околната среда.
Ето защо е препоръчително да използвате LED драйвер, макар и да можете без него.

LED драйвер – схема

Представям на Вашето внимание една много проста, но в същото време надежна схема на LED драйвер за светодиоди до 1A.

В схемата откривате точно два елемента, които са необходими за драйвер-а на Вашият LED:

LM317 с радиатор – линеен регулатор на напрежение.
Съпротивление

За да намерите стойността на съпротивлението R, трябва да направите следните сметки:

Линейният регулатор на напрежение LM317 подава константни 1.25V между крачета ADJ и Vout, така че ако сложим съпротивление между тях следва да получим и константно напрежение.

Според закона на ОМ, то U/I=R. Това означава, че ако искате да свържете един или повече диода (в моя случай това е 1W светодиод – 350mA), сметките са следните:

1.25V / 0.350A = 3,57 Ома

Това е и стойността на съпротивлението, което е необходимо за да доставим 0.350mA за диода. Естествено избираме най-близкото съпротивление по стойност – E12 3.9 Ома. За да не грее много, резистора трябва да бъде поне 1W.

Ако желаете да направите LED драйвер за 3W светодиоди 700mA, то сметките са следните:

1.25V / 0.7A = 1.78 Ома

Тъй като LM317 доставя не повече от 1.5A ток, препоръчвам да го ползвате при до LED драйвер със светодиоди до 1A, тъй като се нагрява наистина много силно!
Ако желаете по-мощна схема, тогава ползвайте по същия принцип линеен регулатор на напрежение LM350

Благодаря и успех със светодиодните схеми! 🙂


Проследяване на GSM – как става?

Проследяване на GSM – как става?
Posted on април 10th, 2015

Здравейте приятели,
в този свой пост ще Ви запозная с принципите за проследяване на GSM апарати. Естествено, как кой и защо ще Ви следи не е обект на този пост, но въпреки това е хубаво да се замислим колко неща знае за наснашият мобилен оператор.
Като започнем от контактите с които се познаваме, преминем до това кои от тях са наши добри приятели и стигнем до нашите дневни навици и местата които обичаме да посещаваме… Но въпреки всичко, без мобилен апарат имаме чувството, че ни липсва някой много важен орган 🙂

Е нека започнем с темата проследяване на gsm апарати:

Проследяване на GSM – теория

gsm клетка

gsm клетка


На снимката горе виждате т.н. GSM клетка. Това е приемо предавателната кула на GSM операторите, чрез която става връзката между Вас и абоната който търсите посредством мрежата на оператора. В районите на покритие винаги има най-малко по една такава кула, а много често повече от 3 – особено в гъстонаселените райони с GSM покритие на конкретния мобилен оператор. Всяка една от тези кули има т.н. Cell ID – уникален идентификационен номера на клетката, както и нейните точни GPS координати на картата.

Когато ние се движим из районите с GSM покритие нашият апарат регулярно излъчва сигнали с които „си търси“ мрежата и се включва към най-близката GSM клетка. По този начин, движейки се ние се включваме от клетка към клетка и респективно нашият мобилен оператор има възможност да записва движението на нашият апарат по мобилната му мрежа. Този тип проследяване е по-скоро неточен, но би могъл да даде информация къде се намира абоната в рамките на около 500 метра от GSM клетката, което не е никак малко.

Триангулация – метод за сръвнително локализиране на обекти

GSM траингулация

GSM траингулация


Без да влизаме в подробности, триангулацията е метод в тригонометрията и геометрията, за определяне на разстоянието до различни обекти в пространството.

При метода на триангулацията, разстоянието до дадена точка се изчислява, като се измери разстоянието между две референтни точки и ъглите между обекта и правата, образувана от тези точки. При този метод, търсеното разстояние се явява височина в триъгълник, образуван от дадената точка и другите две известни референтни точки. За по-доброто изчисление чрез триангулация са необходими поне 3 известни ни в пространството точки – в нашия случай GSM клетки.

Както вече споменах, нашият GSM прави регулярни опити за опреснение на мрежата – веднъж в рамките на няколко минути, изпращайки сигнал до най-близките клетки.
Ако нашият GSM оператор записва всички тези допитвания до мрежата – значи запазва IMEI-а от телефона опитал се да се свърже с мрежата, както и неговия телефонен номер. След това, чрез прост аналитичен софтуер е пределно лесно да се прави и записване на местоположението на абоната.

Така лесно може да се определят навиците, местоживеенето, дори и кога е кръшнал на половинката си абоната :))
Честито на всички които искат да имат лично пространство! 😀


Радиопредавател за далечна RTTY комуникация – LOZAN v1

Радиопредавател за далечна RTTY комуникация – LOZAN v1
Posted on февруари 24th, 2014

Здравейте приятели,
в тази статия ще ви запозная с моя проект за радиопредавател за далечна (наземна линия над 20km) RTTY телеметрична комуникация в комбинация с микроконтролер Arduino.
За да се улесня максимално и да се фокусирам върху цялостния апарат, използвам модул на Radiometrix – NTX2 със следните характеристики:

Захранващо напрежение – от 2.9V до 15V
Мощност – 10mW

А сега да започнем с малко теория. RTTY е Baudot код чрез който в случая предаваме данни по радио вълни.
Baudot код-а (респективно RTTY) дава възможност за предаване на информация на латински символи и цифри чрез 5 битов код, за всеки символ:

charcodehisfig3

Или с други думи, всеки символ се състои от 5 позиции 1 и/или 0.

За разлика от морзовата азбука, където бинарните символи (1 и 0) са „къс“ и „дълъг“ тон, тук 1 и 0 са тонове с различна честота. Поради което, за да бъде декодирано подобен тип радиопредаване е необходима техника за която ще разкажа в друга статия.

Добре, разговорихме малко теория и сега да обобщим, трябва ни предавател, който да предава FM, като променя честотата на предаваните тонове. Вече казах избрах NTX2 на Radiometrix, който на своето TXD(Transmit data pin) краче може да бъде приложено напрежение от 0V до 3V, като при 3V ще се получи честотно изместване със 6kHz или за да промените с 1Hz трябва да промените напрежението на TXD с 0.0005V.

Схемата която съм използвал е взета от тук и представлява следното:

Untitled Sketch_bb

Повече за кода можете да видите на посочения линк.

Към предавателя съм свързал нормална, 4см 434МHz антена:
2096221-40

А към приемника 434MHz Яги с 9dBi усилване:
2096215-40

След като сглобих радиопредавателя, направих и малки тестове. На приземна линия (приемник и предавател близко до земята), без пряка видимост, но все пак равен терен направих доста задоволителни за мен резултати – 18.6 км и все още силата на сигнала беше добра.
transmitter_map

В следващата статия очаквайте да видите как реших ситуацията с декодирането на сигнала! 🙂
А до тогава, моля споделяйте статията!


Измерване на температурна разлика с TMP36 и Arduino

Измерване на температурна разлика с TMP36 и Arduino
Posted on февруари 23rd, 2014

Здравейте приятели,
за един интересен (но за сега секретен!!!! 🙂 ) проект ми трябва устройство, което да измерва температурна разлика в и извън определен уред.
И сега ще Ви задам един много интересен въпрос… Добре де, аз хубаво ще я измеря тази разлика, но какво всъщност е топлината?

За да разберем какво е топлината, ние трябва да си изясним, че всъщност често се използват два много различни термина в почти еднакъв смисъл:

Топлина – е мярка за въздействие между две термодинамични системи с различни температури. За да бъдем още по-конкретни и лесни за разбиране, ще представим пример – вашият дом. У вас парното зимата въздейства, отдавайки топлина към студения въздух в стаята. По този начин от своя страна въздуха, отдава температура към вашето тяло и предметите в стаята.

Топлинна енергия – тя е част от общата вътрешната енергия на едно тяло. Тъй като никое тяло на практика не е никога не е в абсолютен покой, топлинната енергия е свързана с движението на атомите, молекулите или други частици, от които се състои тялото. Когато Ви е студено на ръцете, вие ги потривате енергично и в следствие на това чрез триенето, на ръцете си, вие увеличавате движението на вътрешните частици изграждащи ръцете ви.

Вземайки на предвид тези две разлики, разбираме, че търсим първото определение.

За създаването на уреда, съм избрал много прост аналогов елемент, който няма за цел да определи точната температура, а разликата между температурите на две системи. Ще видите в процеса на работа, как двата датчика всъщност показват температура с разлика от около 2-3 градуса и как ще се наложи да ги калибрираме „юнашката“ 🙂

Използван датчик:
TMP36 – температурен датчик. Един много прост, ефективен и евтин елемент, който дава линейна промяна в изходящия си волтаж спрямо промяната на температурата върху него.

TMP36

Характеристики на температурен датчик TMP36:
Работно напрежение – 2.7V до 5.5V
Изходящо напрежение – 0.3V за -20ºC / 1.2V за 70ºC
Цена – 2 лв. (23.02.2014г.)

На практика, това е един променлив резистор, който променя съпротивлението си под въздействието на температурата.
Следователно, за различни температури, ще имаме различно изходящо напрежение на второто краче на датчика, за да превърнем това в температура, ще трябва да ползваме следната формула:

(voltage1 – 0.5) * 100

Където voltage1 е изходящото напрежение във волтове.

Добре, теоретически сме подготвени задоволително, нека преминем към схемата с Arduino микроконтролер:

Arduino TMP36

Нищо сложно, както виждате. Само трябва да спомена нещо което ще видите после в кода, а именно това, че тъй като това е аналогов елемент, за да няма смущения в измерванията, трябва да вземате стойностите по отделно, т.е. да правите изчакване между вземането на стойностите с delay(2000).

Ето и кода:

// Указване на контролера от кои крачета да взема стойностите на датчиците:
int sensorPin1 = 1;
int sensorPin2 = 4;

void setup()
{
Serial.begin(9600); //Указваме скоростта на кънекцията към компютъра, за да можете да гледате стойностите през Serial Monitor
}

void loop()
{
//Вземаме стойностите, като между двете вземания изчакваме 2 секунди
int reading1 = analogRead(sensorPin0);
delay(2000);
int reading2 = analogRead(sensorPin2);

// Конвертираме двете стойности във волтове, ако използвате 5V изход, пишете 5.0, ако ползвате 3.3V изход, пишете 3.3
float voltage1 = reading1 * 5.0;
voltage1 /= 1024.0;

float voltage2 = reading2 * 5.0;
voltage2 /= 1024.0;

// Калкулираме температурата спрямо изходящите напрежения
float temperatureC1 = round((voltage1 - 0.5) * 100) ;
float temperatureC2 = round((voltage2 - 0.5) * 100) ;

// Принтираме в конзолата по подходящ начин
Serial.print(temperatureC1 + 2); Serial.println(";"); // Тук е "юнашкото" калибриране на двата датчика, направено е на око в еднаква среда.
Serial.print(temperatureC2); Serial.println(";");
Serial.println("-----------------");
delay(1000); //Изчакваме 1 секунда и завъртаме отново цикъла
}

Това е кода приятели, моля споделяйте и давайте мнения.


Българска азбука на LCD дисплей (lcd cyrillic characters)!

Българска азбука на LCD дисплей (lcd cyrillic characters)!
Posted on февруари 19th, 2014

Здравейте,
в този пост ще засегна един проблем който ме мъчеше, но все пак го реших – предполагам ще Ви спести доста време в ровичкане по character table-ите на LCD дисплея Ви. Модела който ползвам аз е AC-204 поддържа кирилица, но е необхдоимо сами да намерите точните символи и разбира се те не са подредени…

//А
lcd.print(„A“);
//а
lcd.print(„a“);
//Б
lcd.print((char)160);
//б
lcd.print((char)178);
//В
lcd.print(„B“);
//в
lcd.print((char)179);
//Г
lcd.print((char)161);
//г
lcd.print((char)180);
//Д
lcd.print((char)224);
//д
lcd.print((char)227);
//Е
lcd.print(„E“);
//е
lcd.print(„e“);
//Ж
lcd.print((char)163);
//ж
lcd.print((char)182);
//З
lcd.print((char)164);
//з
lcd.print((char)183);
//И
lcd.print((char)165);
//и
lcd.print((char)184);
//Й
lcd.print((char)166);
//й
lcd.print((char)185);
//К
lcd.print(„K“);
//к
lcd.print((char)186);
//Л
lcd.print((char)167);
//л
lcd.print((char)187);
//М
lcd.print(„M“);
//м
lcd.print((char)188);
//Н
lcd.print(„H“);
//н
lcd.print((char)189);
//О
lcd.print(„O“);
//о
lcd.print(„o“);
//П
lcd.print((char)168);
//п
lcd.print((char)190);
//Р
lcd.print(„P“);
//р
lcd.print(„p“);
//С
lcd.print(„C“);
//с
lcd.print(„c“);
//Т
lcd.print(„T“);
//т
lcd.print((char)191);
//У
lcd.print((char)169);
//у
lcd.print(„y“);
//Ф
lcd.print((char)170);
//ф
lcd.print((char)228);
//Х
lcd.print(„X“);
//х
lcd.print(„x“);
//Ц
lcd.print((char)225);
//ц
lcd.print((char)229);
//Ч
lcd.print((char)171);
//ч
lcd.print((char)192);
//Ш
lcd.print((char)172);
//ш
lcd.print((char)193);
//Щ
lcd.print((char)226);
//щ
lcd.print((char)230);
//Ъ
lcd.print((char)173);
//ъ
lcd.print((char)194);
//Ь
lcd.print((char)174);
//ь
lcd.print((char)196);
//Ю
lcd.print((char)176);
//ю
lcd.print((char)198);
//Я
lcd.print((char)177);
//я
lcd.print((char)199);