Во многих случаях мини-компьютеры, такие как: Raspberry Pi, Orange Pi, Banana Pi и т.п., поставляется с небольшим вентилятором на 5 В, чтобы можно было охлаждать процессор (вернее — СнК/SoC) компьютера. Тем не менее, эти вентиляторы обычно довольно шумные, и многие подключают его к выводу на 3.3 В, чтобы уменьшить шум. Вентиляторы обычно рассчитаны на 200 мА, что довольно много для регулятора на 3.3 В на Raspberry Pi.
Этот проект научит вас, как регулировать скорость вращения вентилятора в зависимости от температуры процессора. В отличие от большинства руководств, охватывающих эту тему, мы не только включим или выключим вентилятор, но и будем контролировать его скорость с помощью ШИМ, как это делается на обычном ПК.
- 1 Что такое ШИМ?
- 2 Управление вентилятором с помощью биполярного NPN-транзистора
- 3 Управление вентилятором с помощью МОП транзистора
- 4 Как получить температуру процессора
- 5 Включение вентилятора при заданной температуре
- 6 ШИМ управление: Пример 1
- 7 ШИМ управление: Пример 2
- 8 Как поместить скрипт в автозагрузку
- 9 Как проверить?
- 10 Удаление скрипта из автозагрузки
- 11 Материалы
- 12 Похожие записи
Что такое ШИМ?
Широтно-импульсная модуляция (ШИМ, англ. pulse-width modulation (PWM)) — процесс управления мощности методом пульсирующёго включения и выключения прибора. Различают аналоговую ШИМ и цифровую ШИМ, двоичную (двухуровневую) ШИМ и троичную (трёхуровневую) ШИМ. Основной причиной применения ШИМ является стремление к повышению КПД при построении вторичных источников питания электронной аппаратуры и в других узлах, например, ШИМ используется для регулировки яркости подсветки LCD-мониторов и дисплеев в телефонах, КПК и т.п..
Управление вентилятором с помощью биполярного NPN-транзистора
Первое что приходит на ум — поставить биполярный NPN-транзистор. Вентилятору требуется 200мА, поэтому ищем транзистор с коллекторным током более 200мА, лучше раза в 2-3. В импортных даташитах этот параметр называется Ic, в наших Iк. Подойдут транзисторы: 2N5550, 2N5551, 2N2222A и т.д.. У транзистора, в первую очередь, надо определить назначение выводов. Где у него коллектор, где база, а где эмиттер. Сделать это лучше всего по даташиту или справочнику.
Схема подключения вентилятора
Берем транзистор и подключаем его по такой схеме:
Таким образом, при подаче «1» на вход нашей схемы ток от источника питания потечёт через резистор R1, базу и эмиттер на землю. При этом транзистор откроется и ток сможет идти через переход коллектор-эмиттер, а значит и через нагрузку (вентилятор).
Резистор R1 играет важную роль — он ограничивает ток через переход база-эмиттер. Если бы его не было, ток не был бы ничем ограничен и просто испортил бы управляющую микросхему (ведь именно она связывает линию питания с транзистором).
Кроме того, нужно помнить, что нагрузка индуктивная и нужен защитный диод D1. Дело в том, что энергия, запасённая магнитным полем, не даёт мгновенно уменьшить ток до нуля при отключении ключа. А значит, на контактах нагрузки возникнет напряжение обратной полярности, которое легко может нарушить работу контроллера или даже повредить его.
Управление вентилятором с помощью МОП транзистора
Вместо биполярного можно использовать полевой транзистор — MOSFET, то есть полевые транзисторы с изолированным затвором (они же МОП, они же МДП). Они удобны тем, что управляются исключительно напряжением: если напряжение на затворе больше порогового, то транзистор открывается. При этом управляющий ток через транзистор пока он открыт или закрыт не течёт. Это значительное преимущество перед биполярными транзисторами, у которых ток течёт всё время, пока открыт транзистор.
В дальнейшем мы будем использовать только n-канальные MOSFET. Это связано с тем, что n-канальные транзисторы дешевле, имеют лучшие характеристики и для управления N-канальным полевиком необходимо приложить положительное напряжение на затвор относительно истока.
Схема подключения вентилятора
Нагрузка подключена к стоку («сверху»). Если подключить её «снизу», то схема работать не будет. Дело в том, что транзистор открывается, если напряжение между затвором и истоком превышает пороговое. При подключении «снизу» нагрузка будет давать дополнительное падение напряжения, и транзистор может не открыться или открыться не полностью.
Резистор R1 на 100 Ом ограничивает ток заряда-разряда, а резистор R2 на 10 кОм — это стягивающий резистор, что в неопределенном состоянии «стягивает» потенциал к земле.
Кроме того, нужно помнить, что нагрузка индуктивная и нужен защитный диод D1.
N-канальные MOSFET с логическим уровнем управления
Один из минусов МОП транзисторов — это высокое пороговое напряжение затвора, больше 3.3 В. Тем не менее, существуют N-канальные транзисторы с логическим уровнем управления, например: IRL2505, FDN337N, ZVN4306A, 2N7000, PMV16XNR, NTZD3155C, IRLZ24NPBF, IRL520NPBF и т.п.
Как получить температуру процессора
Существует несколько способов получить текущую температуру процессора.
Если вы используйте Armbian, вы можете использовать команду:
armbianmonitor -m
эта команда будет давать вам время работы, частоту и текущую температуру процессора каждые 6 секунд.
Есть еще одна команда, которая просто возвращает температуру процессора:
cat /sys/devices/virtual/thermal/thermal_zone1/temp
или
cat /sys/devices/virtual/thermal/thermal_zone0/temp
или
cat /sys/class/thermal/thermal_zone0/temp
Внутри SoC Allwinner есть два датчика, вы можете взять оба значения, чтобы получить среднюю температуру. На Raspberry Pi температура измеряется в миллиградусах, для перевода в градусы Цельсия нужно разделить полученное число на 1000:
В Raspberry Pi можно узнать температуру процессора при помощи ввода консольной команды:
vcgencmd measure_temp
Включение вентилятора при заданной температуре
Ниже приведённые примеры используют WiringPi и, если библиотека у вас не установлена, установите её, инструкции тут: WiringPi, WiringOP или BPI-WiringPi.
Самый простой пример управления вентилятором — это его включение, при достижении критичной температуры, и выключение, если температура ниже. Если шум вентилятора не мешает, тогда можно использовать такой вариант.
#include <iostream> #include <fstream> #include <wiringPi.h> #include <unistd.h> #define PIN 7 #define TEMPERATURE_MIN 55 using namespace std; static int getTemperature() { static fstream myfile; int temperature = 0; myfile.open("/sys/devices/virtual/thermal/thermal_zone0/temp", ios_base::in); myfile >> temperature; myfile.close(); return temperature; } int main() { int temperature; int pinState = 0; try { if (wiringPiSetup() == 0) { pinMode(PIN, OUTPUT); while (1) { temperature = getTemperature(); if (temperature >= TEMPERATURE_MIN && pinState == 0) { digitalWrite(PIN, HIGH); pinState = 1; } else if (temperature < (TEMPERATURE_MIN - 10) && pinState == 1) { digitalWrite(PIN, LOW); pinState = 0; } usleep(1000 * 1000); } } } catch (exception& e) { cerr << e.what() << endl; } return 0; }
Программа работает следующим образом — при достижении заданной температуры (более 55°С) вентилятор включается, и отключается только когда температура снизится более чем на 10°С от максимального порога (менее 45°С).
Температуру получаем с помощью функции static int getTemperature()
. На Raspberry Pi температура измеряется в миллиградусах, для перевода в градусы Цельсия нужно разделить полученное число на 1000 и необходимо будет внести несколько изменений,
вместо:
static int getTemperature() { static fstream myfile; int temperature = 0; myfile.open("/sys/devices/virtual/thermal/thermal_zone0/temp", ios_base::in); myfile >> temperature; myfile.close(); return temperature; }
использовать:
static int getTemperature() { static fstream myfile; int temperature = 0; myfile.open("/sys/devices/virtual/thermal/thermal_zone0/temp", ios_base::in); myfile >> temperature; myfile.close(); return temperature / 1000; }
Компиляция, сборка и запуск программы
Сознаём файл FanPiOnOff.cpp
и вставляем вышеприведённый код:
nano FanPiOnOff.cpp
Компилируем и собираем программу:
g++ -Ofast -Wall FanPiOnOff.cpp -lwiringPi -lpthread -o FanPiOnOff
Запускаем:
./FanPiOnOff
если хотим запустить программу в фоновом режиме:
nohup ./FanPiOnOff &
ШИМ управление: Пример 1
Логика программы такова — при достижении заданных температур вентилятор включается с определённым коэффициентом заполнения, а отключается только тогда, когда температура ниже минимального порога:
- 45 °C -> 35 %
- 50 °C -> 50 %
- 60 °C -> 75 %
- 75 °C -> 100 %
#include <iostream> #include <fstream> #include <wiringPi.h> #include <softPwm.h> #include <unistd.h> #define PIN 7 #define RANGE 100 #define PWM_VALUE1 35 #define PWM_VALUE2 50 #define PWM_VALUE3 75 #define PWM_VALUE4 100 #define TEMPERATURE_1 45 #define TEMPERATURE_2 50 #define TEMPERATURE_3 60 #define TEMPERATURE_4 70 using namespace std; static int getTemperature() { static fstream myfile; int temperature = 0; myfile.open("/sys/devices/virtual/thermal/thermal_zone0/temp", ios_base::in); myfile >> temperature; myfile.close(); return temperature; } int main() { int temperature; bool pwmStopped = true; try { if (wiringPiSetup() == 0) { while (1) { temperature = getTemperature(); if (temperature > TEMPERATURE_4) { if (pwmStopped) { softPwmCreate(PIN, ((PWM_VALUE4 * RANGE) / 100), RANGE); pwmStopped = false; } else { softPwmWrite(PIN, ((PWM_VALUE4 * RANGE) / 100)); } } else if (temperature > TEMPERATURE_3) { if (pwmStopped) { softPwmCreate(PIN, ((PWM_VALUE3 * RANGE) / 100), RANGE); pwmStopped = false; } else { softPwmWrite(PIN, ((PWM_VALUE3 * RANGE) / 100)); } } else if (temperature > TEMPERATURE_2) { if (pwmStopped) { softPwmCreate(PIN, ((PWM_VALUE2 * RANGE) / 100), RANGE); pwmStopped = false; } else { softPwmWrite(PIN, ((PWM_VALUE2 * RANGE) / 100)); } } else if (temperature > TEMPERATURE_1) { if (pwmStopped) { softPwmCreate(PIN, ((PWM_VALUE1 * RANGE) / 100), RANGE); pwmStopped = false; } else { softPwmWrite(PIN, ((PWM_VALUE1 * RANGE) / 100)); } } else { softPwmStop(PIN); pwmStopped = true; } usleep(1000 * 1000); } } } catch (exception& e) { cerr << e.what() << endl; } return 0; }
Компиляция, сборка и запуск программы
Сознаём файл FanPiPWM.cpp
и вставляем вышеприведённый код:
nano FanPiPWM.cpp
Компилируем и собираем программу:
g++ -Ofast -Wall FanPiPWM.cpp -lwiringPi -lpthread -o FanPiPWM
Запускаем:
./FanPiPWM
если хотим запустить программу в фоновом режиме:
nohup ./FanPiPWM &
ШИМ управление: Пример 2
Также можно менять коэффициент заполнения линейно. В таком случае программе нужно задать минимальную температуру срабатывания и минимальный коэффициент заполнения, к примеру 45°C и 35% соответственно, а на максимальную температуру (к примеру 70°C) — коэффициент в 100%. Рассчитывается коэффициент заполнения с помощью функции static int map(int x, int inMin, int inMax, int outMin, int outMax);
.
#include <iostream> #include <fstream> #include <wiringPi.h> #include <softPwm.h> #include <unistd.h> #define PIN 7U #define RANGE_MAX 100 #define RANGE_MIN 35 #define TEMPERATURE_MAX 70 #define TEMPERATURE_MIN 45 using namespace std; static int getTemperature() { static fstream myfile; int temperature = 0; myfile.open("/sys/devices/virtual/thermal/thermal_zone0/temp", ios_base::in); myfile >> temperature; myfile.close(); return temperature; } static int map(int x, int inMin, int inMax, int outMin, int outMax) { if (x < inMin) { return outMin; } else if (x > inMax) { return outMax; } return (x - inMin) * (outMax - outMin) / (inMax - inMin) + outMin; } int main() { int temperature; int pwmValue; bool pwmStopped = true; try { if (wiringPiSetup() == 0) { while (1) { temperature = getTemperature(); pwmValue = map(temperature, TEMPERATURE_MIN, TEMPERATURE_MAX, RANGE_MIN, RANGE_MAX); if (temperature >= TEMPERATURE_MIN && pwmStopped) { softPwmCreate(PIN, pwmValue, RANGE_MAX); pwmStopped = false; } else if (temperature >= (TEMPERATURE_MIN - 5) && !pwmStopped) { softPwmWrite(PIN, pwmValue); } else { if (!pwmStopped) { softPwmStop(PIN); } pwmStopped = true; } usleep(1000 * 1000); } } } catch (exception& e) { cerr << e.what() << endl; } return 0; }
Компиляция, сборка и запуск программы
Сознаём файл FanPiPwmLinear.cpp
и вставляем вышеприведённый код:
nano FanPiPwmLinear.cpp
Компилируем и собираем программу:
g++ -Ofast -Wall FanPiPwmLinear.cpp -lwiringPi -lpthread -o FanPiPwmLinear
Запускаем:
./FanPiPwmLinear
если хотим запустить программу в фоновом режиме:
nohup ./FanPiPwmLinear &
Как поместить скрипт в автозагрузку
Остается сделать так, чтобы скрипт, контролирующий работу вентилятора охлаждения, автоматически запускался каждый раз при загрузке системы.
Для этого, в конец файла /etc/rc.local
:
sudo nano /etc/rc.local
Нужно поместить команду запуска скрипта перед строкой exit 0
:
sudo ./home/pi/FanPiPwmLinear &
После перезагрузки скрипт будет автоматически запущен и вентилятор будет включаться при наступлении заданных условий.
Чтобы проверить факт запуска, после перезагрузки, нужно переключиться в терминал и проверить наличие процесса:
ps aux | grep -i FanPiPwmLinear
Как проверить?
Для проверки работоспособности скрипта нужно «разогреть» процессор до нужной температуры и посмотреть, как на это будет реагировать система охлаждения. «Нагревать» процессор можно с помощью утилит sysbench
или stress
. Вы можете установить эти утилиты с aptitude
:
sudo apt-get install sysbench
или
sudo apt-get install stress
Запуск утилиты с задействованием 4 ядер:
sysbench --num-threads=4 --test=cpu --cpu-max-prime=20000 --validate run
или
sudo stress --cpu 4 --timeout 30s
Температура процессора сразу начнет повышаться.
Принудительно завершить, как выполнение теста утилитой sysbench
, так и stress
можно сочетанием клавиш Ctrl+C
.
Удаление скрипта из автозагрузки
Для удаления скрипта из автозагрузки нужно просто удалить строку с запуском скрипта из файла /etc/rc.local
.
Материалы
Управление мощной нагрузкой постоянного тока. Часть 1
Управление мощной нагрузкой постоянного тока. Часть 3.
Raspberry Pi 3: GPIO (#3) — умное управление собственным активным охлаждением
Управление мощной нагрузкой
Широтно-импульсная модуляция
Есть ли возможность заменить транзистор и резисторы одним транзистором типа MOSFET K3919?
Здравствуйте! Спасибо за статью! Управление вентилятором работает (с помощью биполярного NPN-транзистора) но вот столкнулся я такими нюансами.
1) Если использовать простой пример управления, то при понижении температуры «TEMPERATURE_MIN» на 1 градус (а мож и меньше), то вентилятор сразу включается, т.е. получается что идёт включение / выключение чуть ли не каждую секунду. Я программист ещё тот, так знаю как «Hello World» вывести, попробовал исправить ситуацию через do … while..
int main() {
int temperature;
int pinState = 0;
try {
if (wiringPiSetup() == 0) {
pinMode(PIN, OUTPUT);
while (1) {
temperature = getTemperature();
if (temperature >= TEMPERATURE_MIN && pinState == 0) {
digitalWrite(PIN, HIGH);
do{
// digitalWrite(PIN, HIGH);
pinState = 1;
temperature = getTemperature();
usleep(1000 * 5000);
}
while (temperature > TEMPERATURE_END);
}
else if (temperature < TEMPERATURE_END && pinState == 1) {
digitalWrite(PIN, LOW);
pinState = 0;
}
usleep(1000 * 5000);
}
}
} catch (exception& e) {
cerr << e.what() << endl;
}
return 0;
}
2) С управлением ШИМ непонятности — при понижении коэффициента вентилятор начинает жутко звучать, ещё громче чем при полных оборотах. Это так и должно быть? Или какой-то спецвентилятор надо?
Можно ли как-то использовать аппаратный ШИМ? У чипа H3 он вроде бы есть.
Link vao fun88 cung cấp cho người dùng một trải nghiệm cá cược tuyệt vời với nhiều trò chơi hấp dẫn.
заработок на аккаунтах маркетплейс аккаунтов
магазин аккаунтов заработок на аккаунтах
маркетплейс аккаунтов https://kupit-akkaunt-top.ru
Account trading platform Secure Account Sales
Social media account marketplace Database of Accounts for Sale
Account Buying Service Buy accounts
Accounts marketplace Buy Account
Buy Pre-made Account Account Buying Service
Account marketplace buyaccounts001.com
Account Trading Platform https://socialmediaaccountsale.com/
ready-made accounts for sale verified accounts for sale
buy account account purchase
account trading platform buy pre-made account
account trading service verified accounts for sale
account selling platform secure account sales
website for buying accounts accounts-marketplace.org
profitable account sales account store
buy accounts account market
buy and sell accounts database of accounts for sale
account store profitable account sales
account trading platform account marketplace
guaranteed accounts guaranteed accounts
secure account sales account catalog
marketplace for ready-made accounts find accounts for sale
account exchange ready-made accounts for sale
website for selling accounts website for buying accounts
gaming account marketplace account buying service
account trading platform marketplace for ready-made accounts
account purchase account exchange service
account catalog https://accounts-offer.org
database of accounts for sale https://accounts-marketplace.xyz
database of accounts for sale https://buy-best-accounts.org
account trading https://social-accounts-marketplaces.live
account store https://accounts-marketplace.live/
buy and sell accounts buy accounts
website for selling accounts https://buy-accounts-shop.pro/
buy accounts https://buy-accounts.live
account store accounts marketplace
account trading platform https://accounts-marketplace-best.pro
маркетплейс аккаунтов магазины аккаунтов
биржа аккаунтов https://rynok-akkauntov.top/
купить аккаунт kupit-akkaunt.xyz
покупка аккаунтов https://akkaunt-magazin.online/
магазин аккаунтов akkaunty-market.live
покупка аккаунтов https://akkaunty-dlya-prodazhi.pro
buying fb accounts https://buy-adsaccounts.work
facebook ad account for sale buy facebook old accounts
buy facebook profiles https://buy-ads-account.work
buy facebook account https://ad-accounts-for-sale.work
google ads account seller https://buy-ads-account.top
buy google adwords account https://buy-ads-accounts.click
buy facebook ads manager buy facebook advertising
buy adwords account https://buy-ads-agency-account.top
google ads account seller https://sell-ads-account.click/
buy old google ads account buy google adwords account
buy facebook verified business account buy-verified-business-manager-account.org
verified facebook business manager for sale business-manager-for-sale.org
verified facebook business manager for sale verified-business-manager-for-sale.org
buy tiktok ads account https://buy-tiktok-ads-account.org
buy tiktok ads buy tiktok ads accounts
buy tiktok ads account https://buy-tiktok-ad-account.org
buy tiktok ad account https://buy-tiktok-business-account.org
buy tiktok business account https://buy-tiktok-ads.org
займ с 18 лет без отказа займ с 18 лет без отказа .
Календарь огородника https://inforigin.ru .
pokiesnet https://www.pokiesnet250.com .
врач психиатр цена врач психиатр цена .
электрокарнизы москва https://elektrokarniz-nedorogo77.ru .
iflow камеры http://www.citadel-trade.ru/ .
электрические карнизы для штор в москве elektrokarniz90.ru .
прогнозы на спорт бесплатно от профессионалов на сегодня prognoz-na-segodnya-na-sport.ru .
sportbets sportbets17.ru .
прогнозы на футбол от экспертов прогнозы на футбол от экспертов .
прогнозы на спорт с анализом прогнозы на спорт с анализом .
прогнозы на хоккей на сегодня бесплатно http://luchshie-prognozy-na-khokkej1.ru/ .
прогнозы на спорт точные http://www.luchshie-prognozy-na-khokkej2.ru/ .
прогноз на хоккей в прогнозе luchshie-prognozy-na-khokkej.ru .
servicios del cosmet?logo servicios del cosmet?logo .
купить айфон спб http://www.kupit-ajfon-cs1.ru .
купить iphone 11 недорого купить iphone 11 недорого .
mostbet poker otağı http://mostbet4053.ru/
Пробковый ламинат купить probkovoe-pokritie1.ru .
Паркетная доска купить в Москве цена https://parketnay-doska2.ru .
buy fb ad account account exchange service accounts marketplace
fb account for sale sell accounts account market
доставка воды на дачу цистерна цена http://www.dostavka-tehnicheskoi-vodi.ru/ .
прогнозы и ставки на спорт http://www.prognozy-na-sport-3.ru/ .
оценка наручных часов онлайн http://ocenka-chasov-onlajn8.ru/ .
мостбет https://www.mostbet4073.ru
1win armenia 1win armenia
техвода http://dostavka-tehnicheskoi-vodi.ru .
лестница под ключ цена с материалами lestnicy-na-metallokarkase-1.ru .
mental health support chat http://www.mental-health21.com/ .
сколько стоит винтовые сваи для фундамента цена ostankino-svai.ru .
Mental Health Mental Health .
1win am https://1win3075.ru/
ванна с гидромассажем купить http://www.hidromassazhnaya-vanna2.ru .
winline фрибет новым клиентам http://www.winlayne-fribet2.ru/ .
Кварцвиниловые полы https://napolnaya-probka1.ru .
1win https://www.1win3064.ru
внедрение ерп в организации https://www.1s-erp-vnedrenie.ru .
глубинное водопонижение глубинное водопонижение .
холодильные камеры промышленные https://xn—-7sbabtdykncetibz6f4f8b.xn--p1ai .
проект водопонижения vodoponizhenie-msk.ru .
1с онлайн цена http://www.kupit-1s21.ru .
купить 1с москва kupit-1s23.ru .
точный прогнозы на футбол http://www.kompyuternye-prognozy-na-futbol8.ru .
прогнозы на спорт на сегодня бесплатно https://prognoz-na-segodnya-na-sport9.ru .
аренда яхты на час https://yacht-rental-oae.com .
перевозка автомобилей автовозом по россии http://avtovoz-av8.ru .
melbet cricket app download melbet cricket app download
прогнощы stavki-na-sport-prognozy1.ru .
получить микрозаем получить микрозаем .
casinocandy http://candy-casino-7.com .
перевозка легковых автомобилей автовозом http://www.avtovoz-av8.ru/ .
изготовление деревянных лестниц в москве http://lestnicy-na-metallokarkase-1.ru/ .
casino giri? candy-casino-7.com .
акриловая ванна с гидромассажем https://www.hidromassazhnaya-vanna2.ru .
винлайн фрибеты 2025 winline-fribet-kazhdyj-den.ru .
купить игровой пк в москве kupit-igrovoj-kompyuter10.ru .
электрокарнизы для штор цена elektrokarnizy150.ru .
электрокарниз недорого https://elektrokarniz150.ru/ .
дизайнерские кашпо на стену http://www.dizaynerskie-kashpo-sochi.ru .
1win ставки casino http://www.1win40006.ru
электрокарнизы москва elektrokarniz150.ru .
Сайт о питании при беременности edamam.ru .
data-vyhoda.online http://www.data-vyhoda.online .
ekoclinic.ru ekoclinic.ru .
кашпо дизайн кашпо дизайн .
Сайт о новорожденных детях http://malishi.online/ .
цветочные горшки дизайнерские купить цветочные горшки дизайнерские купить .
1win login ci 1win login ci
1win indir android http://1win40005.ru
ролевые шторы https://www.rulonnye-shtory-s-elektroprivodom11.ru .
электрические рулонные шторы на окна elektricheskie-rulonnye-shtory90.ru .
креативные кашпо креативные кашпо .
электро рулонные шторы https://rulonnye-shtory-s-elektroprivodom11.ru .
электрокарниз купить в москве http://www.elektrokarnizy33.ru .
стоимость перепланировки квартиры http://proekt-pereplanirovki-kvartiry4.ru/ .
электрокарниз купить в москве электрокарниз купить в москве .
гардина с электроприводом http://elektrokarniz11.ru .
проект перепланировки квартиры цена московская область проект перепланировки квартиры цена московская область .
дизайнерские кашпо на стену дизайнерские кашпо на стену .
карнизы с электроприводом карнизы с электроприводом .
1win télécharger gratuitement https://www.1win40015.ru
бонусный счет ван вин бонусный счет ван вин
купить кашпо дизайнерские http://www.dizaynerskie-kashpo-nsk.ru .
автоматические жалюзи цена автоматические жалюзи цена .
гидроизоляция цена http://www.gidroizolyaciya-cena-1.ru .
гидроизоляция цена https://www.gidroizolyaciya-cena-2.ru .
мостбет ком вход mostbet11065.ru
как зайти на сайт mostbet https://mostbet11062.ru
мостбет официальный сайт регистрация мостбет официальный сайт регистрация
sports bet http://sportbets31.ru/ .
sportandbets http://sportbets30.ru/ .
автоматика somfy http://avtomatika-somfy.ru .
цветочный горшок с автополивом купить цветочный горшок с автополивом купить .
спортивные новости https://novosti-sporta-2.ru .
автоматика somfy http://avtomatika-somfy.ru/ .
sport bets https://www.sportbets32.ru .
новости спорта http://novosti-sporta-2.ru/ .
как сыграют сегодня в футбол прогноз http://kompyuternye-prognozy-na-futbol14.ru/ .
спорт прогнозы на футбол спорт прогнозы на футбол .
mostber http://www.mostbet11075.ru
mostbet скачать http://mostbet11072.ru
Новости Украины https://gromrady.org.ua в реальном времени. Экономика, политика, общество, культура, происшествия и спорт. Всё самое важное и интересное на одном портале.
Строительный сайт https://vitamax.dp.ua с полезными материалами о ремонте, дизайне и современных технологиях. Обзоры стройматериалов, инструкции по монтажу, проекты домов и советы экспертов.
гидроизоляция цена за м2 http://offthevylc.ru/polezno-znat/ceny-na-gidroizoljaciju-v-moskve-i-regionah-rossii.html/ .
ставки на спорт бишкек онлайн http://mostbet11075.ru/
gessi официальный сайт gessi официальный сайт .
мелбет официальный сайт мелбет официальный сайт
самые точные прогнозы на хоккей самые точные прогнозы на хоккей .
горшок с автополивом горшок с автополивом .
ставки прогнозы stavki-prognozy-2.ru .
оценка активов москва https://ocenochnaya-kompaniya1.ru
прогнозы на хоккей от профессионалов прогнозы на хоккей от профессионалов .
аппарат ультразвуковой диагностики цена http://www.kupit-uzi-apparat25.ru .
прогноз ставок на хоккей prognozy-na-khokkej.ru .
скачать mostbet на телефон http://mostbet4149.ru
прогноз хоккей прогноз хоккей .
классы аппаратов узи kupit-uzi-apparat26.ru .
кресло для косметолога кушетка косметологическая на гидравлике
мостбет сом https://mostbet4146.ru
кашпо с автополивом кашпо с автополивом .
melbet слоты без регистрации melbet слоты без регистрации .
доставка бетона цена цены бетон производителя
ставки мостбет https://mostbet4117.ru
sports bet http://sportbets31.ru/ .
новости спорта сегодня http://novosti-sporta-3.ru .
купить кашпо для улицы купить кашпо для улицы .
мост бет скачать mostbet4117.ru
sportandbets http://www.sportbets31.ru .
новости спорта novosti-sporta-3.ru .
последние новости спорта http://www.novosti-sporta-11.ru/ .
СтавкиПрогнозы https://stavki-prognozy-1.ru .
высокое уличное кашпо высокое уличное кашпо .
mostbet. uz mostbet. uz
последние новости спорта https://novosti-sporta-11.ru/ .
Stavki Prognozy stavki-prognozy-two.ru .
спортивные новости сегодня novosti-sporta-12.ru .
stavkiprognozy http://stavki-prognozy-1.ru/ .
мостбет обман или нет https://mostbet4163.ru/
наркологическая больница narkologicheskaya-klinika-12.ru .
проекты домов под ключ http://www.stroitelstvo-domov-irkutsk-1.ru/ .
компрессоры от производителя компрессоры от производителя .
прогнозы на хоккей прогнозы на хоккей .
промышленные трансформаторные подстанции https://www.transformatornye-podstancii-kupit.ru .
бк мостбет скачать бк мостбет скачать
производство по пошиву одежды https://nitkapro.ru/ .
компании занимающиеся продвижением сайтов poiskovoe-prodvizhenie-sajta-v-internete-moskva.ru .
профессиональное продвижение сайтов профессиональное продвижение сайтов .
цветочный горшок высокий напольный купить kashpo-napolnoe-krasnodar.ru .
трансформаторная подстанция цена трансформаторная подстанция цена .
mostbet uz registratsiya mostbet uz registratsiya
заказать анализ сайта http://www.poiskovoe-prodvizhenie-sajta-v-internete-moskva.ru .
mostbet aviator yuklab olish https://mostbet4168.ru/
комплексное продвижение сайтов москва комплексное продвижение сайтов москва .
оптимизация сайта блог https://www.statyi-o-marketinge1.ru .
материалы по маркетингу blog-o-marketinge.ru .
строительство дома под ключ иркутск https://www.stroitelstvo-domov-irkutsk-2.ru .
mostbet ckachat https://mostbet4170.ru/
блог о маркетинге блог о маркетинге .
регистрация в мостбет http://www.mostbet4158.ru
платный наркологический стационар http://www.narkologicheskaya-klinika-13.ru .
блог интернет-маркетинга блог интернет-маркетинга .
мостбет узбекистан мостбет узбекистан
seo онлайн https://www.kursy-seo-2.ru .
mostbet mobil tətbiqi mostbet mobil tətbiqi
monstbet monstbet
перепланировка в москве перепланировка в москве .
перепланировка согласование перепланировка согласование .
авиатор ставки авиатор ставки .
скачат мосбет скачат мосбет
aviator money game http://aviator-igra-2.ru/ .
mostbet приложение mostbet12004.ru
перепланировка москва перепланировка москва .
1 вин ракетка http://1win12008.ru/
бонусы на спорт 1win https://1win12008.ru/
monsbet monsbet
mostbet casino mostbet casino
mostbet aviator yutish mostbet aviator yutish
mostbet скачать бесплатно http://mostbet12014.ru
стильные горшки для комнатных растений http://www.dizaynerskie-kashpo-nsk.ru .
vhq cocaine in prague cocaine prague telegram
все онлайн займы все онлайн займы .
современное медицинское оборудование https://medicinskoe-oborudovanie-77.ru/ .
поставка медицинского оборудования medicinskoe-oborudovanie-213.ru .
горшок автополив https://kashpo-s-avtopolivom-kazan.ru .
проект водопонижения проект водопонижения .
проект водопонижения котлована в грунтовых водах https://www.proekt-na-vodoponizhenie.ru .
проект водопонижения скважинами https://www.proekt-na-vodoponijenie.ru .
купить горшки с автополивом интернет http://www.kashpo-s-avtopolivom-spb.ru .
проектирование водопонижения проектирование водопонижения .
фильмы в хорошем качестве https://kinogo-15.top/ .
микрозаймы все https://www.zaimy-11.ru .
купить смартфон в спб kupit-telefon-samsung-1.ru .
займы http://zaimy-13.ru .
airpods max купить спб http://naushniki-apple-1.ru .
уличное кашпо большое напольное https://www.ulichnye-kashpo-kazan.ru .
все микрозаймы онлайн все микрозаймы онлайн .
видеостудия для подкастов http://studiya-podkastov-spb.ru/ .
купить телефон самсунг https://kupit-telefon-samsung-1.ru/ .
apple airpods купить спб http://naushniki-apple-1.ru/ .
монтаж подкаста цены https://www.studiya-podkastov-spb1.ru .
обслуживание мини экскаватора http://www.arenda-mini-ekskavatora-v-moskve.ru/ .
ставки на спорт прогноз http://www.stavka-10.ru/ .
экскаватор. цена. час. https://arenda-ekskavatora-pogruzchika-cena.ru .
прогнозы ставки на спорт прогнозы ставки на спорт .
спорт онлайн http://www.novosti-sporta-15.ru/ .
новости олимпиады http://www.novosti-sporta-16.ru .
спорт онлайн https://novosti-sporta-17.ru/ .
студия для записи подкастов студия для записи подкастов .
жб прогнозы на футбол сегодня http://prognozy-na-futbol-9.ru/ .
аренда экскаватора погрузчика в москве срочно аренда экскаватора погрузчика в москве срочно .
прогноз ставок на спорт прогноз ставок на спорт .
новости спорта novosti-sporta-15.ru .
спортивные трансляции https://novosti-sporta-17.ru/ .
спортивные новости http://www.novosti-sporta-16.ru/ .
экспресс на футбол сегодня http://www.prognozy-na-futbol-10.ru .
прогнозы хоккей прогнозы хоккей .
прогноз хоккей прогноз хоккей .
медицинские приборы http://xn—-7sbcejdfbbzea0axlidbbn0a0b5a8f.xn--p1ai/ .
усиление углеволокном dpcity.ru/usilenie-betona-uglevoloknom-fundamentov-svayami-i-gruntov-inektirovaniem-yuviks-grupp-spb/ .
усиление грунтов http://www.privetsochi.ru/blog/realty_sochi/93972.html/ .
заказать кухню в спб от производителя недорого https://kuhni-spb-2.ru .
кухни на заказ в спб цены кухни на заказ в спб цены .
ставки на хоккей сегодня ставки на хоккей сегодня .
медицинское оборудование медицинское оборудование .
melbet вход зеркало melbet вход зеркало .
кухня по индивидуальному проекту kuhni-spb-1.ru .
телефон наркологии http://narkologicheskaya-klinika-20.ru/ .
ночной нарколог на дом http://narkolog-na-dom-1.ru/ .
спортивные новости спортивные новости .
новости тенниса новости тенниса .
спорт 24 часа спорт 24 часа .
новости олимпиады http://www.novosti-sporta-8.ru/ .
новости баскетбола новости баскетбола .
buy zithromax online cheap zithromax buy zithromax
Propecia prescription: buy propecia — buy finasteride
Tadalafil tablets: EverLastRx — EverLastRx
EverLastRx: how to order Cialis online legally — safe online pharmacy for ED pills
prednisone 50 mg tablet canada how to get Prednisone legally online prednisone 200 mg tablets
где лучшие прогнозы на спорт https://kompyuternye-prognozy-na-futbol23.ru/ .
http://medivermonline.com/# low-cost ivermectin for Americans
прогнозы и ставки на футбол прогнозы и ставки на футбол .
safe online pharmacy for ED pills: discreet delivery for ED medication — discreet delivery for ED medication
low-cost ivermectin for Americans trusted Stromectol source online order Stromectol discreet shipping USA
наркологический частный центр http://narkologicheskaya-klinika-20.ru/ .
обзор спортивных событий https://www.novosti-sporta-7.ru .
Neurontin online without prescription USA: Neurontin online without prescription USA — neuropathic pain relief treatment online
generic ivermectin online pharmacy: Stromectol ivermectin tablets for humans USA — ivermectin 1 cream
прогнозы на чемпионат мира по хоккею https://www.luchshie-prognozy-na-khokkej8.ru .
https://medivermonline.com/# Mediverm Online
спорт сегодня спорт сегодня .
order gabapentin discreetly: neuropathic pain relief treatment online — FDA-approved gabapentin alternative
1win программа 1win программа
discreet delivery for ED medication: discreet delivery for ED medication — Tadalafil tablets
новости легкой атлетики https://www.sport-novosti-2.ru .
где можно купить диплом медсестры где можно купить диплом медсестры .
спортивный прогноз на сегодня спортивный прогноз на сегодня .
https://everlastrx.com/# buy tadalafil online without a prescription
купить диплом техникума точно купить диплом техникума точно .
http://everlastrx.com/# tadalafil online prescription
Prednisone without prescription USA: Prednisone without prescription USA — buy prednisone 5mg canada
прогноз матчей по футболу http://www.kompyuternye-prognozy-na-futbol23.ru .
topical ivermectin cost trusted Stromectol source online trusted Stromectol source online
прогнозы на спорт точные прогнозы на спорт точные .
доставка алкоголя на дом в москве доставка алкоголя на дом в москве .
1win bonus kodu 1win bonus kodu
prednisone acetate: buy 40 mg prednisone — Prednisone without prescription USA
доставка алкоголя 24 часа доставка алкоголя 24 часа .
prednisone 10 mg tablet cost: online pharmacy Prednisone fast delivery — buy prednisone tablets uk
Prednisone without prescription USA Prednisone without prescription USA can i buy prednisone online without a prescription
очистка засоров канализации очистка засоров канализации .
куплю телефон самсунг kupit-telefon-samsung-2.ru .
прогнозы на хоккей от экспертов https://luchshie-prognozy-na-khokkej8.ru .
купить диплом о среднем специальном образовании с занесением в реестр купить диплом о среднем специальном образовании с занесением в реестр .
купить диплом прораба купить диплом прораба .
https://predniwellonline.com/# how to get Prednisone legally online
интернет магазин айфонов дешево интернет магазин айфонов дешево .
купить техникум диплом http://educ-ua7.ru .
https://neurocaredirect.com/# FDA-approved gabapentin alternative
купить диплом в северодвинске купить диплом в северодвинске .
PredniWell Online: PredniWell Online — PredniWell Online
перепланировка офиса согласование astana.forum24.ru/?1-6-0-00001505-000-0-0-1759818821 .
Cheers to every casino lovers !
Players who love Mediterranean style and excitement often choose casinoonlinegreek.com for its vibrant atmosphere and authentic games. At greek online casino, you can explore hundreds of slots, live dealers, and bonuses inspired by Greek culture. This casinoonlinegreek.com destination combines ancient myths with modern gaming technology, creating an unforgettable experience.
Players who love Mediterranean style and excitement often choose casino online greek for its vibrant atmosphere and authentic games. At online casino greek, you can explore hundreds of slots, live dealers, and bonuses inspired by Greek culture. This casino online greek destination combines ancient myths with modern gaming technology, creating an unforgettable experience.
Discover online casino greek – Play Like a Pro and Win Big Today — п»їhttps://casinoonlinegreek.com/
May you have the fortune to enjoy incredible Here’s to unforgettable benefits !
PredniWell Online: PredniWell Online — online pharmacy Prednisone fast delivery
https://medivermonline.shop/# low-cost ivermectin for Americans
cost of ivermectin lotion
1win daxil ol https://1win5002.com
как купить алкоголь с доставкой на дом http://alcoygoloc.ru/ .
https://predniwellonline.com/# how to get Prednisone legally online
прогнозы на хоккей от профессионалов бесплатно http://www.luchshie-prognozy-na-khokkej9.ru .
обучение продвижению сайтов обучение продвижению сайтов .
seo с нуля http://kursy-seo-2.ru/ .
1win az canlı dəstək http://1win5002.com/
устройство цементной гидроизоляции https://ustroystvo-gidroizolyacii.ru .
low-cost ivermectin for Americans: Stromectol ivermectin tablets for humans USA — Mediverm Online
https://medivermonline.shop/# Stromectol ivermectin tablets for humans USA
order Stromectol discreet shipping USA
проект перепланировки нежилого помещения https://www.pereplanirovka-nezhilogo-pomeshcheniya8.ru .
how to order Cialis online legally safe online pharmacy for ED pills FDA-approved Tadalafil generic
PredniWell Online: PredniWell Online — buying prednisone on line
low-cost ivermectin for Americans Mediverm Online trusted Stromectol source online
gabapentin capsules for nerve pain: generic gabapentin pharmacy USA — generic gabapentin pharmacy USA
https://medreliefuk.com/# best UK online chemist for Prednisolone
http://medreliefuk.com/# Prednisolone tablets UK online
generic Amoxicillin pharmacy UK: Amoxicillin online UK — UK online antibiotic service
viagra uk viagra BritPharm Online
перепланировка нежилого помещения http://www.svstrazh.forum24.ru/?1-15-0-00000267-000-0-0/ .
UK chemist Prednisolone delivery UK chemist Prednisolone delivery buy corticosteroids without prescription UK
pharmacy online UK: online pharmacy — pharmacy online UK
https://medreliefuk.shop/# order steroid medication safely online
viagra uk Viagra online UK buy viagra online
BritMeds Direct: private online pharmacy UK — pharmacy online UK
узаконивание перепланировки нежилого помещения https://pereplanirovka-nezhilogo-pomeshcheniya8.ru/ .
1win lisenziyası https://1win5004.com/
купить бланк диплома купить бланк диплома .
Brit Meds Direct: UK online pharmacy without prescription — online pharmacy
buy amoxicillin: UK online antibiotic service — generic Amoxicillin pharmacy UK
buy penicillin alternative online: Amoxicillin online UK — generic Amoxicillin pharmacy UK
электрокарниз двухрядный цена http://www.karniz-shtor-elektroprivodom.ru .
карниз электроприводом штор купить https://elektrokarnizy797.ru .
https://britpharmonline.com/# Viagra online UK
переустройство и перепланировка нежилого помещения pereplanirovka-nezhilogo-pomeshcheniya9.ru .