Arduino / Модернизация промышленной ИК станции, или как нужно делать изначально. Часть 1

в 14:40, , рубрики: arduino, Atmega, автоматизация, ИК, ремонт, метки: , , , ,

Arduino / Модернизация промышленной ИК станции, или как нужно делать изначально. Часть 1

Являясь мастером по ремонту цифровой техники и ноутбуков, появилась острая еобходимость в Инфракрасной(ИК) паяльной станции, но так как готовые комплекты стоят у нас в Украине непомерно дорого, то было вынесено на обсуждение два варианта:1)Собрать с нуля 2)Собрать из блоков. Я выбрал второй вариант, так как он менее затратный по времени и деньгам, и в тот же день мною был преобретен, нижний преднагреватель плат AOYUE Int 883. Как по мне, дешево и сердито, и в принципе для моих задач самое оно. Но в процессе работы были выявлены недостатки и «баги» и было принято решение по устранению и модернизации.
Под катом много фото, цель статьи показать как легким способом можно связывать сложные устройства с пк и автоматизировать процесс.Трафик! Много фотоматериала!
Начнем с обзора самого преднагревателя.
AOYUE Int 883

Первичное описание позаимствовал тут, так как в принципе повторять одно и тоже нет смысла
Корпус добротный, сделан из не тонкого металла (в основном железо, передняя панель — алюминий, отражатели тоже алюминиевые), не прогибается, не скрипит, качество обработки и покраски хорошее, снизу и сбоку имеются вентиляционные отверстия. Снизу четыре резиновых ножки, «клиренс» — около 2 см, т.е. греть стол он точно не будет. Сетка между кварцевым нагревателем и рабочей зоны алюминиевая, с двумя поперечными удерживающими стальными «струнами» — это плохо, т.к. ее будет выгибать и пучить, что и продемонстрировалось в работе. Спереди распологается регулятор температуры, гнездо для подключения внешних термопар и выключатель питания, сзади — шнур питания и предохранитель.
Далее, нагреватель. Нагреватель из кварцевых трубок, мощностью 1,5 кВт (чего вполне достаточно), размер нагревателя 260х295 (то что заявлено в характеристиках — это поле сетки). Такой размер подойдет для больших плат, в том числе и полноразмерных декстопов. Отражатель алюминиевый, крепится на алюминиевых же скобах к дну нагревателя, тепла вниз и по бокам выделяется не много, корпус лишь чуть нагревается.
Средство управления — ПИД регулятор с 3 режимами работы и 3 термопары: внутренняя на нагревателе и две внешних на гибком шланге.
0 режим позволяет устанавливать температуру по внутреннему датчику (400 максимальная), при этом 2 внешние термопары могут служить для мониторинга (в процессе работы можно посмотреть их данные).
1 режим устанавливает температуру по обратной связи с внешней термопарой, при этом термодатчик можно разместить, скажем, на/под плату. Остальные датчики — мониторинг.
2 режим — работа по термопрофилю, термопрофиль всего навсего один, но с 6 шагами. Не очень понятно такое решение разработчиков — лучше бы сделали 2 термопрофиля по 3 шага. Максимальная длительность каждого шага — 200 сек, температура 250. Т.е. общая длительность термопрофиля может составлять 20 мин, этого достаточно для всех задач.
Работа ПИД-а мне не очень понравилась, в целом, для целей преднагрева вполне подойдет, но могло бы быть и лучше. Есть огрехи в регулировании температуры, например если задавать большую скорость нагрева, то возникает «перерегулирование», возможно связанное и с инерционностью нагревателей (что странно, вроде бы кварц лучше керамики в этом плане, но по крайней мере с простейшим ПИД-ом моя станция на керамике работала лучше).
Внешние термодатчики выполнены в виде гибких металлических шлангов, из конца шланга торчит провод с сплавом. С одной стороны удобно, гибкие шланги позволяют без проблем крепить датчик на плату, с другой стороны, недоработка в виде торчащего провода. Еще не понравилось то, что гнездо датчиков спереди, иногда мешаются.
Изначально термостол показывал температуру в «попугаях». На плате регулятора есть подстроечники для каждого датчика. Так что проблем с калибровкой не должно возникнуть.
Качество пайки и монтажа электроники вполне сносное (для Китая), симисторы (их два, BTA20) расположены на алюминиевом радиаторе (термопаста присутствует) большой площади, к тому же обдуваемого вентилятором. Электроника отгорожена от нагревателя алюминиевым экраном.
Стол-держатель плат. Собственно, помимо большой площади нагрева, это еще одно преимущество нагревателя, т.к. пока не видел ни одного дешевого нагревателя с приличным столом-держателем плат.
Столик сделан вполне неплохо, качество изготовления не вызывает особых вопросов, сделано просто и эффективно. Помимо двух основных пластин-дежателей, имеются нижние «саппорты» с болтами и гайками, препятствующие провисанию платы во время нагрева, а так-же 4 зацепа с основных пластин. Последние удобно использовать для крепления маленьких плат, к примеру видеокарт. Конструкция нижних держателей не совсем удобная, но вполне действующая. Минус — болты расчитаны под отверстия десктопных плат, т.е. в отверстия ноутбучных не полезут. С другой стороны, никто не мешает класть плату прямо на болты, либо купить нужные и поменять.
Недостатки выявлены лично мною. Столик для крепления плат изначально заточен для плат от XBOX и требует доработки. Попытка откалибровать термодатчики немного улучшила ситуацию, но в крайнем остается неприятной, вовремя работы прходиться подстраивать температуру и часто цыпляешь термодатчики что критично так как сбиваеться ихнее положение и если припой расплавился, то можно посрывать детали. В строенном болоке управления функция записи термопрофилей написана через жопу индусами и я толком не смог ею нормально научиться пользоваться.
Постановка задачи

1)Полная переделка блока управления, а именно: выбрасываем старый блок управления в помойку, собираем свой блок с возможностью мониторинга и управления с пк.
2)Собрать также управляемый с пк блок верхнего нагрева
3)Добиться идеального и нормального отображения температуры
Реализация

Так как времени мало, и нужно помимо всего работать и использовать ИК станцию, то прерывать ее работу на критичное время не допустимо, потому мною были выбраны самые простейшие варианты.
1)На макетной плате был собран блок управления нижним нагревателем и верхним а также сбор данных с датчиков и интерфейс обмена данными с пк.
2)В качестве начинки микроконтроллеров и быстрой отладки применяется бутлоадер Arduino
3)В качестве по управления на пк, был выбран язык Visual Basic .NET
Блок управления, схема, тестовый(отладочный) вариант

Начнем со схемы. Снизу представлена схема тестового блока, для отладки.
Состоит она из двух микроконтроллеров Atmega8 и Atmega 168. Первый МК выполняет роль преобразователя USB — RSR232. Второй МК будет исполнительным блоком. К ниму пока что для тестовой отладки припаян простейший терморезистор.
Конечный результат
После того как соберете блок, обо МК нужно прошить
Прошивка для Atmega8 и фьюзы
Прошивка для Atmega 168 береться из папки с Arduino IDE arduinohardwarearduinobootloadersatmegaATmegaBOOT_168_diecimila.hex
Фьюзы для прошивки LOW: 0xff HIGH: 0xdd
Если будут трудности с прошивкой, распишу поподробнее.
После сборки и прошивки, наша плата должна идеально работать в Arduino IDE и зовется она там «Arduino Diecimila or Duemilanove w/ ATmega168».
Если у вас все заработало, то прошьем наш тестовый скетч для сбора показаний термопарыint temperatura;
void setup()
{
Serial.begin(115200);
}
void loop()
{
char ler = 'n';
if(Serial.available()>0)
{
ler=Serial.read();
}
if(ler=='a')
{
delay(10);
temperatura = analogRead(0);
temperatura = (5* temperatura * 100)/1024;
Serial.print(temperatura);
}
}
С платами пока что закончили. И приступим к написанию ПО для ПК.
Программа отображения данных термопары

Я писал в Visual Studio 2010 на языке Visual Basic .NET потому что мне так проще.Public Class Form1
Private Sub Form1_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
Dim ports As String() = SerialPort1.GetPortNames()
Dim port As String
For Each port In ports
ComboBox1.Items.Add(port)
Next port
End Sub
Private Sub ConnectToolStripMenuItem_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles ConnectToolStripMenuItem.Click
SerialPort1.BaudRate = 115200
SerialPort1.DataBits = 8
SerialPort1.StopBits = IO.Ports.StopBits.One
SerialPort1.Parity = IO.Ports.Parity.None
SerialPort1.PortName = ComboBox1.Text
Try
SerialPort1.Open()
Timer1.Start()
Catch ex As Exception
End Try
End Sub
Private Sub DisconnectToolStripMenuItem_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles DisconnectToolStripMenuItem.Click
Try
Timer1.Stop()
SerialPort1.Close()
Catch ex As Exception
End Try
End Sub
Private Sub RefreshPortsToolStripMenuItem_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles RefreshPortsToolStripMenuItem.Click
ComboBox1.Items.Clear()
Dim ports As String() = SerialPort1.GetPortNames()
Dim port As String
For Each port In ports
ComboBox1.Items.Add(port)
Next port
End Sub
Private Sub Timer1_Tick(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Timer1.Tick
Try
SerialPort1.Write("a")
System.Threading.Thread.Sleep(250)
Dim i As Integer = SerialPort1.ReadExisting
Chart1.Series("Series1").Points.AddY(i)
Label1.Text = "Temperatura actual" + i.ToString()
Catch ex As Exception
End Try
End Sub
Private Sub Chart1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Chart1.Click
End Sub
End Class
Данная программа при подключении к плате, будет выводить показание термопары в виде графика(зачем? в следующей части).
Выглядит вот так
На данный момент все. Это только вводная часть и все развитие продолжиться в следующей части.
Буду рад ответить на любые вопросы


* - обязательные к заполнению поля


https://ajax.googleapis.com/ajax/libs/jquery/3.4.1/jquery.min.js