вторник, 28 апреля 2015 г.

ЛАБОРАТОРНЫЙ БЛОК ПИТАНИЯ. (часть 2. Паяльная станция.)


Начнем с паяльника. В первой части был описан паяльник, купленный для разработки блока.
Пришло вдохновение и я занялся его тестами. Во-первых, через ардуино был подключен паяльник к блоку питания через MOSFET тразистор IRFZ44n. За основу я взял эту статью. Схему прикладывать не буду, так-как никаких изменений в схеме подключения самого паяльнике нет.

Отладка проводится следующим образом: с компьютера приходит значение в диапазоне от 0 до 255 (в ардуино 8 битный PWM), задающее время открытия транзистора. Тестер с термопарой отображает температуру. Надо сказать, что данный полевой транзистор не совсем подходит для этого, так как полное его открытие происходит где-то при 12в. и теоретически 5в ардуино может и не хватить, тогда транзистор будет греться. Однако в даташите указано, что при 4.5в транзистор открывается и способен пропускать токи до 10А (всего по даташиту 44А).
Наш паяльник имеет мощность 50W при 24В, что в среднем дает максимальное потребление всего в 2А. Для уверенности я "потыкал" осциллографом на сток и затвор и увидел четкий квадрат без завалов. Частота на PWM всего 500Гц.
Итак - данный транзистор вполне подходит для наших задач, не требует драйвера и греться не должен. В результате тестов он теплый. Единственное, что при начальном включении "на холодную" транзистор греется, так-как сопротивление холодного паяльника всего около 50 Ом.

Далее нужно откалибровать установку. Примотав термопару замеряем и записываем соотношение температуры паяльника и скважность ШИМ. Это долго, неудобно и нужно постоянно усреднять значения... В итоге решил автоматизировать процесс.

В наличии имеется модуль усилителя термопары на микросхеме MX31855. Модуль имеет SPI интерфейс, библиотеку для программирования, встроенный термодатчик окружающей среды для компенсации температуры холодного спая.
Термопару подключаем через него к ардуино. К ней же подключаем паяльник и через резистивный делитель - терморезистор встроенный в паяльник. (у меня резистор на 290кОм). Значение с делителя заводим на аналоговый вход ардуино.

Далее следует говнокод упрощенный скетч вывода значений со всей этой конструкции:

#include "SPI.h"
#include "Wire.h"
#include "Adafruit_MAX31855.h"


// Инициализация контроллера термопары
// DO=3 , CS=4, CLK  5
Adafruit_MAX31855 thermocouple(5, 4, 3);
double tS = thermocouple.readInternal();
String myString;

const int SolderPin = 9;      // затвор MOSFET
int sensorPin = A0;           // резистивный делитель терморезистора
int _PWM_ = 0;
double sensorValue  = 0;
double all_sens = 0;
double all_tT = 0;
double tT = 0;
int iteration = 1000;        // количество итераций
int badit=0;


void setup()
{
  Serial.begin(9600);
  pinMode(SolderPin, OUTPUT);
}

void loop()
{
  all_sens = 0;
  all_tT = 0;
  badit=0;

  analogWrite(SolderPin, _PWM_);

  // проверяем подключен ли контроллер термопары
  if(thermocouple.readInternal() == 0)
  {
    Serial.print("no termosensor\n");
  }
    // проверяем подключена ли термопара
  if(thermocouple.readCelsius() == 0)
  {
    Serial.print("no thermocouple\n");
  }


/*
  if (Serial.available())
  {
    _PWM_ = Serial.parseInt();

  }
*/
  // считываем в цикле значения температуры паяльника и сопротивления терморезистора
  for(int i=0;i<iteration;i++)
  {
      sensorValue = analogRead(sensorPin);
      all_sens += sensorValue;
      tT = thermocouple.readCelsius();
      // Библиотека работы с термопарой возвращает NAN при ошибке
      myString = String(tT);
      if(myString != " NAN")
      {
        all_tT += tT;
      }
      else
      {
        // Увеличим счетчик ошибок измерения температуры
        badit++;
      }
  }
  // Выводим значение на экран
  Serial.print("TT: ");
// Делим сумму замеров на количество итераций минус ошибки для получений среднего
  Serial.print(all_tT / (iteration-badit));         
  double house_temp = thermocouple.readInternal();
  Serial.print("  TH: ");
  Serial.print(house_temp);
  Serial.print("  TR: ");
// Делим сумму замеров на количество итераций для получений среднего
  Serial.print(all_sens / iteration);       
  Serial.print("  PWM:");
  Serial.print(_PWM_);
  Serial.print("  IT:");
  Serial.print(iteration-badit);
  Serial.print("\n");

  // Ограничим значение PWM для того чтобы не сжечь паяльник
  // В моем случае 80 вполне хватило для разогрева паяльника до 400 градусов
  if(_PWM_ > 80)
  {
    while(true)
    {
    }
  }

  _PWM_++;
}

По результатам тестирования получаем таблицу зависимости сопротивления терморезистора от температуры паяльника. И используем эти значения для дальнейшей регулировки и индикации.

П.С.
В принципе, можно не использовать терморезистор, а просто получить значение температуры для каждого шага PWM, но так красивее. Вдобавок произведя замеры можно вычислить какой то коэффициент зависимости сопротивления от температуры и вместо таблицы использовать формулу. Я пишу этот пост еще то эксперимента, поэтому не вижу всей картины в целом. Возможно сопротивления терморезистора линейно и удастся упростить код.

Всем удачи в экспериментах....


Дополнение: В качестве силового транзистора, решено использовать транзистор от компьютерного блока питания, снят с дежурки. Во-первых он Logic Level, то-есть полностью открывается при логической единице, во-вторых у меня куча убитых блоков, почему бы не брать его оттуда. Я использую 45N03LT (30 В 45А)

среда, 15 апреля 2015 г.

Ремонт УФ лампы




Поймал странный глюк на ультрафиолетовой лампе. Все началось с того, что она перестала включаться по таймеру. Разобрал, и обнаружил короткое замыкание на питании таймера. Причиной тому был пробитый стабилитрон. Не мудрено, потому-что конденсаторный блок питания, коим она оборудована, нельзя включать без нагрузки, а когда тумблер установлен в положение "ТАЙМЕР" но сама кнопка таймера не нажата - нагрузка отсутствует и стабилитрон вынужден рассеивать всю мощность БП на себе.

Стабилитрона под рукой не было и пришлось его просто выкинуть. Когда он вновь был установлен начались "чудеса на виражах". Лампа то включалась по таймеру, то нет. Нужно было переключить тумблер в нейтральное положение или в положение "всегда включена". потом вернуть на таймер и запустить его снова.

Со временем ситуация лишь ухудшалась. Терпению пришел конец. Перерисовав схему таймера выяснил что он включен по классической схеме:









(рис. 1)


Детали на рисунке несколько отличаются по номиналам но в целом все один в один.

Сначала я избавился от конденсаторного блока питания, и поставил обычный трансформатор. Ситуация не изменилась. Затем я заменил времязадающий (на схеме С1) и фильтрующий конденсаторы (на схеме не указан, стоит параллельно батарее G1). Это тоже ничего не изменило.

В конце концов ничего не оставалось, как заменить саму микросхему и о чудо......

Удачи в ремонте!

UPDATE:
Лампа отложена в запас, а взамен куплена LED+CCFL - жена довольна и к старой возвращаться не хочет. Для тех кто будет смотреть в сторону такой новомодной лампы, не ведитесь на рекламные слоганы. Лампа типа ТАКОЙ не соответствует надписи 36w - это лишь ее название, призванное вводить в заблуждение девочек.  Реальная ее мощность 24 Ватт. Спираль CCFL 12 Ватт и 12 светодиодов по 1 Ватт. Аналогичная ситуация и в подобных лампах с надписью 48W - тоже рекламный ход. К слову сказать в моей лампе блок питания 3А 12В и очень легкий и хлипкий, не разбирал еще но уверен что долго он не проживет.
Может кому то будет полезно, хорошее видео по ремонту аналогичной: ССЫЛКА



воскресенье, 29 марта 2015 г.

ЛАБОРАТОРНЫЙ БЛОК ПИТАНИЯ. (часть 1. Мечтательная.)

Задача: Создание лабораторного блока "питания" с блек-джеком и плюхам.

Изначально все началось с того, что я приобрел бормашину типа DREMEL, но ЛУЧШЕ.
Было куплено 2 комплекта, себе и отцу. Я решил себе блок питания сделать самостоятельно, не люблю я трансформаторы китайские а отец сказал "пока ты все это сделаешь я умру, я куплю комплект" - вот что из этого вышло (коментарий пользователя с ником Alastar Duke Verne)

В итоге мне прислали аж 2 блока и извинения, и вообще, редкий человек заботящийся о своих клиентах. "Респект ему и уважуха"

Вернемся к нашим баранам. Я решил что импульсный блок питания я куплю у китайцев. Регулировку оборотов делать было лень на такие токи (кушает и 10 ампер эта машинка если диск болгарочный поставить и придавить и больше съест если дать...) и я купил готовый DC-DC Step down.  15A 3-32V по заверениям китайцев. Перепутав полярность на входе он успешно сдох. И я снова заказал новый, паять по прежнему было лень. Потом уже я разошелся, насмотрелся, начитался, и понял что я и сам бы такой собрал, но что сделанно то сделанно. Заказан новый DC-DC на этот наз 12А 08-28V с регулировкой напряжения и тока(см ниже).

Потом я понял что мое советское ЛУДИЛО пригодно только для терморектального криптоанализа и начал засматриваться на паяльную станцию, сначала без индикации, потом с ней, а потом и фен вроде нужен и. СТОП думаю. БП ЕСТЬ, контролеры есть. Надо делать.
Паяльник и фен заказал тут. Хорошие цены, море отзывов, очень быстро шлют.



Функционал :

Напряжение регулируемое в диапазоне 0-30V
Ток до 10А с возможностью ограниченя по току.
Защиты, термоконтроль, софтстарт, принудителный обдув, бла бла бла все как у людей.

Встроенная паяльная станция (фен, паяльник)
Встроенные маломощные БП на стандартные напряжения типа 3.3, 5, 12, .... там видно будет.
Генератор сигналов типа пила, синус, прямоугольник.....сигналов из космоса, и нейронных сигналов.
Встроенная розетка с симисторной регулировкой мощности (паяльник, лампочка, утюг, дрель, .......... вибратор в конце концов)
USB для сопряжения с PC + софт для PC с полным управлением и мониторингом всех плюшек.
Li-ion Charger - ибо есть в наличии спец микруха - чё б не ткнуть внутрь!
Экран само собой для вывода всей этой инфы
Дырка разъем для подключения тестера через БП в комп (см. пост выше)

В наличии:

Корпус от советского усилителя АМФИТОН (Уже разобрал. Нет, не жалко)
Источник питания: Китайский блок питания для светодиодных лент 24в(+-10%) 12а.
Микроконтроллер - ATMEGA328, ATtiny8, ATtiny13 (а скорее всего ARDUINO NANO)
LCD Экран
20х4 - думаю хватит, хотя функционала многовато, может изменится выбор.
DC-DC Buck понижающий преобразователь 0.8 - 28 (возможно этим ограничимся и изменим диапазон регулировок в ТЗ)
Подстроечники заменю на цифровые резисторы типа MCP41050 (50кОм) + Энкодеры (хочется мне щелкать). Цифровые резисторы имеют 256 ступеней, получим 28v -0.8v / 256 = 0,10625v на 1 щелчок энкодера. И по току 10 / 256 = 0,03А на щелчок. Для начала хватит. (можно поставить 2 резистора, тем самым увеличив точность, но для сельской местности...........)
Фен, Паяльник.
Датчики тока на ACS712

Возможные модификации:

Есть в наличии IR2153, MOSFET IRFZ44 - возможно соберу BUCK на них.
Есть LM2596-adj - возможно они пойдут на выход дополнительных клемм не регулируемого питания на распространенные напряжения питания 1.2, 1.8, 3.3, 5, 12 вольт, а возможно эти питания будут реализованы кнопками пресетами.
Может быть какую то простую прозвонку добавлю. Иногда тестер слишком умен для простой прозвонки.



Отчего столько всего в 1 корпусе? Не надежно, не транспортируемо, низкая отказоустойчивость из-за "все в одном"..............
Во-первых, экономия места на рабочем столе. Я не "паяльщик", я "компьютерщик" и все это хобби и "чтобы отвлечься иногда". Отсюда следует не предназначенный для полноценной лаборатории стол и окружающее пространство. Все рабочее место занято 3 большими мониторами и тыкать между ними кучу коробочек глупо, а один универсальный "шайтан-ящик" с кучей возможностей встал бы под монитором и не мешал.
Во-вторых, в выбранном корпусе куча места. Блок питания занимает 1/4 часть, а ресурсы надо использовать рационально.


Пока все, ждем всех деталей. Пока верчу все части на макетках, примеряюсь к корпусу. Читаю матчасть.

To be продолжение.......

пятница, 6 марта 2015 г.

Мультиметр UNI-T 61e

Приобрел мультиметр UNI-T 61e. Прочитал статью про модификацию: http://we.easyelectronics.ru/ACE/dorabotka-napilnikom-multimetra-ut61e.html

Хотел заказать микросхему FT232RL, но вспомнил, что у меня есть Arduino Nano v3, который и так имеет эту микросхему.

Отрезал DB-9, подключил к Arduino следующим образом:

Зеленый и Желтый к земле (GND)
Оранжевый к питанию (+5v)
Коричневый к 13 пину
Белый - не используется.

Залил в ардуино скетч:

#include <SoftwareSerial.h>

// 3й параметр (true) означает инвертирование сигнала

SoftwareSerial mySerial(13, 12,true);
void setup()
{

  Serial.begin(19200);


  mySerial.begin(19200);
}

void loop()
{
  if (mySerial.available())
    Serial.write(mySerial.read());
  if (Serial.available())
    mySerial.write(Serial.read());
}

И Все заработало :) Заказ отменен, китайцы не довольны!


P.S. Планирую разбирать и дорабатывать дальше.
Возможно выведу контактную группу на разъем для подключения к тестеру и увеличив число проводов вынесу описанный в вышеупомянутой статье функционал на внешний микроконтроллер. Жаль "софтварную" подсветку не "запилить" :)

To be continued....