43804

Разрушительные процессы, происходящие в изоляции кабельных линий электропередач

Дипломная

Коммуникация, связь, радиоэлектроника и цифровые приборы

Токопроводящие жилы предназначены для прохождения электрического тока, они бывают основными и нулевыми. Основные жилы применяются для выполнения основной функции силового кабеля- передачи по ним электроэнергии. Нулевые жилы предназначены для протекания разности токов фаз (полюсов) при неравномерной их нагрузке.

Русский

2013-11-07

313.46 KB

22 чел.

Оглавление

Введение 4

1. Обзор существующих видов кабельной изоляции и их свойств 6

1.1 Назначение и конструкция силовых кабелей 6

1.1.1 Силовой кабель для напряжения от 1 до 10 кВ 7

1.1.2 Силовой кабель для напряжения до 30 кВ 8

1.1.3 Силовой кабель на напряжение 110 кВ и выше 8

1.2. Виды кабельной изоляции 9

1.2.1 Резиновая изоляция 11

1.2.2 Полиэтиленовая изоляция 13

1.2.3. Поливинилхлоридная изоляция 14

1.2.4 Изоляция из пропитанной бумаги 16

1.2.5. Изоляция из фторопласта (политетрафторэтилена) 17

1.2.6 Некоторые другие виды изоляционных материалов КЛЭП 18

1.2.6.1 Изоляция из опрессованной окиси магния 18

1.2.6.2 Эмалевая изоляция 20

1.2.6.3 Изоляция из волокнистых материалов 24

1.2.6.4 Изоляция из нагревостойких волокон 26

1.2.6.5 Изоляция из полистирола 28

1.2.6.6 Минеральная изоляция 29

2. Обзор существующих устройств и методов 32

2.1 Краткое описание методов электрических измерений сопротивления изоляции 32

2.2 Методика измерения сопротивление изоляции электроустановок 34

2.2.1 Измерения при снятом рабочем напряжении. 35

2.2.2 Измерения в сетях постоянного тока 37

2.2.2.1 Метод трех отсчетов вольтметра. 39

2.2.3 Измерение сопротивления изоляции мегаомметром 45

3. Разработка устройства 46

3.1 Разработка методики измерения процессов старения изоляции 46

3.2 Разработка структурной схемы устройства. 48

3.3 Разработка печатной платы и создание устройства 50

3.4 Разработка программного обеспечения для устройства 52

4. Проведение экспериментов 52

5. Заключение 53

6. Библиографический список 54

Приложение А. 57

Приложение Б. 58


Введение

Актуальность: На сегодняшний день для передачи и распределения электрической энергии часто используются кабельные линии электропередач. В связи с малым индуктивным сопротивлением и возможной близостью прокладки фаз кабели всё чаще и чаще используют в процессе электроснабжения. Кроме того, кабельные линии отлично вписываются в обстановку в городских условиях не портя эстетичности вида, особенно при прокладке под землёй. Но избежать повреждений кабельных линий, исключить аварийные ситуации при работе и увеличить срок их эксплуатации, даже при использовании известных на сегодняшний день средств контроля и защиты, пока что в полной мере не удаётся. Уменьшив число повреждений можно посредством методов современной диагностики и прогнозирования, увеличить срок эксплуатации кабельных линий, а так же добиться снижения времени перерыва электроснабжения, иметь значительную экономию капитала, затрачиваемого на ремонт оборудования, питающих линий или их замену. Отключая элемент сети, наиболее вероятно выйдущий из строя в ближайшее время до возникновения пробоя, аварии или другой ситуации можно получить ряд преимуществ, по сравнению с существующими видами защиты и контроля изоляции. Известно много случаев, когда ни работа квалифицированного персонала, ни защита и другое специальное оборудование не предотвращали аварий, выгорания кабелей, нарушения электроснабжения и других более серьезных последствий.

С каждым годом растёт число кабельных линий, выработавших нормативный срок службы в 30 лет, установленный заводом-изготовителем. Из-за старения изоляции и достаточно большой протяжённости городских кабельных сетей у обслуживающего персонала увеличивается объём работы, связанный с осмотром кабельных трасс, выездом на место повреждений, проведением высоковольтных испытаний и ремонтов. Это сказывается на условиях труда персонала и безопасности проживающего вблизи трасс населения.

На первый взгляд, решение этого вопроса заключается в замене старых кабелей новыми и современными, например, из сшитого полиэтилена. Замена таких кабелей займёт много времени, потребует больших физических и финансовых затрат, а воздействие на изоляцию факторов, которые сокращают срок службы кабеля, останется. В этом случае возникает проблема определения механизма воздействия на изоляцию факторов, характерных для конкретных участков городской сети, для которых прогноз повреждаемости изоляции кабельных линий будет достоверным.

Таким образом, работа по разработке устройства для измерения и контроля за процессами старения изоляции является актуальной и востребованной.

Цель: разработка методики контроля состояния изоляции, разработка структурной схемы устройства, разработка печатной платы, создание устройства, разработка программного обеспечения для устройства.

Объект и предмет исследования: разрушительные процессы, происходящие в изоляции кабельных линий электропередач являются объектом исследования, предмет исследования — частичные разряды, количество и кажущийся заряд которых указывает на скорость развития этих процессов и место развивающейся аварии.

Научная новизна: новизна заключается в применении современной элементной базы для создания устройства, разработке нового метода контроля состояния изоляции и вычисления ее остаточного ресурса – путем описания разрушающих процессов в изоляции характерной картиной частичных разрядов и учета влияния на изоляцию внешних факторов.

Теоретическая значимость и прикладная ценность: создание устройства позволит накопить статистику и построить зависимости времени старения изоляции от воздействия неблагоприятных факторов, что позволит, имея данные о воздействии этих факторов, рассчитывать остаточный ресурс изоляции.

1. Обзор существующих видов кабельной изоляции и их свойств 

1.1 Назначение и конструкция силовых кабелей

Силовые кабели предназначены для передачи по ним на расстояние электроэнергии, используемой для питания электрических установок. Они имеют одну или несколько изолированных жил, заключенных в металлическую или неметаллическую оболочку, поверх которой в зависимости от условий прокладки и эксплуатации может иметься соответствующий защитный покров и в необходимых случаях броня. Силовые кабели состоят из следующих основных элементов: токопроводящих жил, изоляции, оболочек и защитных покровов. Помимо основных элементов в конструкцию силовых кабелей могут входить экраны, нулевые жилы, жилы защитного заземления и заполнители.

Токопроводящие жилы предназначены для прохождения электрического тока, они бывают основными и нулевыми. Основные жилы применяются для выполнения основной функции силового кабеля- передачи по ним электроэнергии. Нулевые жилы предназначены для протекания разности токов фаз (полюсов) при неравномерной их нагрузке. Они присоединяются к нейтрали источника тока. Жилы защитного заземления являются вспомогательными жилами силового кабеля и предназначены для соединения не находящихся под рабочим напряжением металлических частей электроустановки, к которой подключен силовой кабель, с контуром защитного заземления источника тока. Изоляция служит для обеспечения необходимой электрической прочности токопроводящих жил силового кабеля по отношению друг к другу и к заземленной оболочке (земле). Экраны используются для защиты внешних цепей от влияния электромагнитных полей токов, протекающих по силовому кабелю, и для обеспечения симметрии электрического поля вокруг жил кабеля. Заполнители предназначены для устранения свободных промежутков между конструктивными элементами силового кабеля в целях герметизации, придания необходимой формы и механической устойчивости конструкции кабеля. Оболочки защищают внутренние элементы кабеля от увлажнения и других внешних воздействий. Защитные покровы предназначены для защиты оболочки силового кабеля от внешних воздействий. В зависимости от конструкции кабеля в защитные покровы входят подушка, бронепокров и наружный покров. [3]

1.1.1 Силовой кабель для напряжения от 1 до 10 кВ

Силовой кабель для напряжения от 1 до 10 кв изготавливается с секторными медными и алюминиевыми жилами, с бумажной изоляцией, пропитанной маслоканифольной смесью, в свинцовой или алюминиевой оболочке, поверх которой накладывается броня, защищающая оболочку кабеля от механических воздействий, и антикоррозионные покровы. Силовой кабель такой же конструкции с круглыми жилами, резиновой изоляцией и в резиновом шланге (без свинцовой оболочки) обладает большей гибкостью. Однако его нестойкость во времени (старение) и ухудшение электрических характеристик за счет влажности ограничивают срок службы; он применяется главным образом для прокладки внутри помещений. Во всех силовых кабелях с общей поясной изоляцией электрическое поле в изоляции имеет нерадиальный характер, что ведет к ослаблению электрической прочности изоляции; поэтому силовой кабель с нерадиальным полем применяется только для изготовления трехжильных кабелей на напряжение до 10 кв. Радиальное поле получается при экранировании слоя изоляции на каждой жиле наложением поверх изоляции металлической ленты (экрана) или металлической оболочки. Все кабели на напряжение выше 10 кв изготавливаются только с радиальным полем.

1.1.2 Силовой кабель для напряжения до 30 кВ

Силовые кабели среднего напряжения (до 30 кВ) с изоляцией из шитого полиэтилена (VPE) обладают очень хорошими элктрическими, механическими и теплофизическими свойствами. Этот материал идеальный по своим химическим свойствам при экстремальных снижениях температуры. Неизменность параметров в широком диапазоне рабочих температур плюс водостойкость и низкий коэффициент диалектических потерь. Силовые кабели среднего напряжения применяются для установки на подстанциях, в закрытых помещениях и в кабельных каналах, на открытом воздухе и в земле, в изделии, а также как для установки на кабельных лотках для промышленности, так и для коммутационных узлов и электростанций.

1.1.3 Силовой кабель на напряжение 110 кВ и выше

Силовой кабель на напряжение 110 кВ и выше изготавливаются в виде отдельных изолированных и освинцованных жил, которые прокладываются совместно в зависимости от условий эксплуатации. Бумажная изоляция в таких силовых кабелях пропитывается минеральным маслом малой вязкости и высокой степени очистки и дегазификации; масло в них всегда находился под некоторым избыточным давлением от 1 до 15 am (кабели маслонаполненные низкого и высокого давлений), что обеспечивает высокую надежность их работы и практическую возможность их изготовления до 600 кв переменного тока. Для напряжений до 275 кв применяются также силовые кабели с наполнением газом (азотом) под давлением 15 am (газонаполненный кабель). Основные характеристики силового кабеля: электрическая прочность; тепловые характеристики, определяющие нагрузочную способность; потери электроэнергии при передаче, старение изоляции и коррозионная стойкость защитных оболочек и покровов. Надежность работы силового кабеля под напряжением определяется величиной максимальной напряженности электрического поля.Для современных сверхвысоковольтных силовых кабелей рабочая напряженность поля доходит до 15 - 17 кВ/мм для переменного тока и до 20 - 25 кВ/мм - для постоянного.

1.2. Виды кабельной изоляции

По виду изоляционного материала все виды изоляции кабельных линий можно разделить на след. группы:

  1.  Резиновая изоляция
  2.  Пластмассовая (полиэтиленовая) изоляция
  3.  Пластмассовая (полихлорвиниловая) изоляция
  4.  Пропитанная бумажная изоляция
  5.  Фторопластовая изоляция

В зависимости от номинального напряжения и конструктивных особенностей кабельных изделий изоляция разделяется на следующие категории:

И-1 - для кабельных изделий в оболочке на номинальное переменное напряжение до 220 В (для систем 220/380 В) или постоянное напряжение до 700 В включительно;

И-2 - для кабельных изделий без оболочки на номинальное переменное напряжение до 220 В (для систем 220/380 В) или постоянное напряжение до 700 В включительно;

И-3 - для кабельных изделий в оболочке на номинальное переменное напряжение от 220 В (для систем 220/380 В) до 400 В (для систем 400/660 В) или постоянное напряжение от 700 В до 1000 В включительно;

И-4 - для кабельных изделий без оболочки на номинальное переменное напряжение от 220 В (для систем 220/380 В) до 400 В (для систем 400/660 В) или постоянное напряжение от 700 В до 1000 В включительно;

И-5 - для кабельных изделий на номинальное переменное напряжение от 400 В (для систем 400/660 В) до 1800 В (для систем 1800/3000 В) или постоянное напряжение от 1000 В до 6000 В включительно;

И-6 - для кабельных изделий на номинальное переменное напряжение от 3600 В (для систем 3600/6000 В).

Номинальное напряжение систем представлено сочетание двух значений: действующего значения напряжения между любым изолированным проводником и "землей" (металлической оболочкой кабеля или окружающей средой) действующим значением между любыми двумя фазными проводниками многожильного кабеля или системы одножильных кабелей.

При обозначении категории изоляции добавляют индексы: Р - для резиновой изоляции; П - для пластмассовой изоляции (полиэтиленовой или из поливинилхлоридного пластиката).

Если в технических условиях на кабельные изделия не оговорены толщины изоляции, то для резиновой и пластмассовой изоляции могут использоваться нормы, данные в ГОСТ 23286-78. Этот ГОСТ не распространяется на кабели связи, судовые, шахтные, геофизические, грузонесущие, беструбной прокладки во взрывоопасных помещениях и на кабели и провода с изоляцией на основе бутилкаучука.

Для кабелей и проводов применяют резиновую, пластмассовую, пропитанную бумажную, фторопластовую и другие виды изоляции.

1.2.1 Резиновая изоляция

Резиновая изоляция  изготавливается на основе натуральных или синтетических (бутадиеновых, бутиловых и др.) каучуков. Используются следующие типы установленных ГОСТом изоляционных резин: РТИ-0, РТИ-1, РТИ-2, РНИ, классифицируемые в зависимости от содержания каучука. Ранее использовалась резина типа РТЭПИ-1, РТСИ-1(повышенной нагревостойкости), РТИШ (изоляция выполняет роль защиты кабелй и проводов, работающих в средних и легких условиях) и РТИШМ  (то же, что и РТШИ, морозостойкая).

Резина типов РТИ-0, РТИ-1, РНИ, РТИШ и РТШИМ предназначены для изоляции токопроводящих жил, прололжительно работающих при температуре до +65оС, типа РТЭПИ-1 до  +85оС, типа РТСИ-1 до  +180оС. На основве каучука и кремнийорганических спиртов произфодится кремнийорганическая резина, обладающая более высокими электрофизическими свойствами, например она длительно устойчива к воздействию температур в диапазоне от  -60оС до  +200оС. В процессе эксплуатации с течением времени свойства резин ухудшаются - происходит "старение". [3]

Таблица 1 - Физико-механические свойства резин до старения

Типы резины

Разрушающее напряжение при растяженииМПа,

Относительное удлиннение при разрыве, %,

Удельное объемное сопротивление, Ом м,

не менее

не менее

не менее

РТИ-0

5.88

350

11 012

РТИ-1

4.90

300

51 011

РНИ

3.43

300

5 108

РТЭПИ-1

3.72

300

11 012

РТСИ-1

3.92

200

51 012

РТШИ и РТШМ

5.88

300

51 011

Таблица 2 - Номинальные толщины резиновой изоляции указаны в таблице

Номинальное сечение жил, мм2

Номинальная толщина

Ир-1, Ир-2

Ир-3, Ир-4

Ир-5

Ир-6

0.35

0.6

-

-

-

0.5

0.6

0.8

-

-

0.75

0.6

1.0

-

-

1.0

0.6

1.0

-

-

1.5

0.6

1.0

1.8

-

2.5

0.8

1.0

1.8

-

4.0

0.8

1.0

1.8

-

6.0

0.8

1.0

1.8

-

10

1.0

1.2

2.0

4.0

16

1.0

1.2

2.0

4.0

25

1.2

1.4

2.2

4.0

35

1.2

1.4

2.2

4.0

50

1.4

1.6

2.4

4.0

70

1.4

1.6

2.4

4.0

95

1.6

1.8

2.6

4.0

120

-

1.8

2.6

4.0

150

-

2.0

2.8

4.0

185

-

2.2

3.0

-

240

-

2.4

3.2

-

300

-

2.6

3.4

-

400

-

2.8

3.6

-

500

-

3.0

3.8

-


1.2.2 Полиэтиленовая изоляция

Полиэтиленовая изоляция изготавливается на основе полиэтиленов низкой плотности (ПЭНП) и полиэтиленов высокой плотности (ПЭВП) по ГОСТ 16336-77 со стабилизатороами и другими добавками. Маркировка композиций на основе ПЭНП включает трехзнаяные цифры, начинающиеся с единицы: 102, 107 и т.п. маркировка на основе ПЭВН - цифры, начинающиеся с двойки: 204, 206, 207 и т.п.

Электрическая прочнсть для полиэтиленовых изоляций толщиной 1 мм при частоте 50 Гц составляет 35-40 кВ/мм.

Полиэтилен (ПЭ) инертен к большей части агрессивных сред: при комнатной температуре не растворим ни в одном из известных растворителей.  При 70оС и выше полиэтилен растворяется в четыреххлористом углероде, хлороформе, толуоле и ксилоле. Некоторые органические сильнополярные жидкости могут вызвать его растрескивание. Добавка бутилкаучука или полиизобутилена к полиэтилену повышает его стойкость к растрескиванию.

Введение в ПЭ органических перекисей с последующим нагревом или действием ионизирующих излучений (вулканизацией) приводит к образованию поперечных связей, переводящих его из термопластичного состояния в термореактивное. В этом состоянии ПЭ не плавится при повышении температуры и не растрескивается под влиянием различных сред. Вулканизированный ПЭ незначительно деформируется при температуре 150 оС.

Композицию ПЭ с полиизолбутиленом, ацетиленовой сажей и стеариновой кислотой используют в качестве электропроводящих экранов кабелей с полиэтиленовой изоляцией.

Введение в композицию ПЭ полиэтиленового концентрата марки П2-КП по ТУ 6-05-1565-77 или полиэтиленового суперконцентрата пигмета марки СКП по ТУ 6.05-05-149-81 придает ПЭ заданный цвет, необходимый для расцветки жил. При введении в композицию ПЭ концентрата пенообразующего марки 107-ОВАС или смеси ЧХЗ-57 с тальком в процессе наложения изоляции в экструзивном агрегате получается пористая ПЭ изоляция, которая используется для изоляции кабелей связи, коаксиальных и радиочастотных кабелей.

1.2.3. Поливинилхлоридная изоляция

Поливинилхлоридные (ПВХ) пластикаты - смесь поливинилхлоридной смолы с пластификаторами, стабилизаторами и другими добавками. Пластификаторы придают материалу пластичность и облегчают процесс его переработки, но уменьшают его химическую стойкость, нагревостойкость и электроизоляционные свойства. В изоляционные ПВХ пластикаты вводят антиоксиданты, обеспечивающие длительное сохранение высокого удельного электрического сопротивления, гибкости при низких температурах и нагревостойкости. Для получения цветного ПВХ пластиката в него вводят окрашивающие добавки, главным образом пигментные красители.

ПВХ пластикат изготавливается по ГОСТ 5960-72. В зависимости от свойств и назначения выпускаются следующие марки ПВХ пластикатов (ПВХП).

К ПВХП общего назначения относятся марки И40, И45, И50, И60. ПВХП пониженной горючести марки НГП 40-32 и НГП 30-32 выпускаются в соответствии с ТУ 2246-425-05761784-98, ПВХП марки ИМ 40-8, ИОМ 40-8 - в соответствии с ТУ 6-02-51-00. ПВХП повышенной тепло- и бензомаслостойкости - в соответствии с ТУ 16.К71-275-98.

ПВХ пластикат марок И40-13, И40-13А, И40-14 используются для изоляции проводов и кабелей в диапазоне температур от -40 до +70 оС. Для той же цели используются марки И50-13, И50-14 в диапазоне температур от от -50 до +70 оС, а И60-12 - в диапазоне температур от от -60 до +70 оС. Для изоляции и оболочки кабелей и проводов используется марка И45-12 в диапазоне температур от -45 до +70 оС.

Таблица 3 - Физические свойства и технические характериатики некоторых ПВХ пластификаторов приведены в таблице. 

Параметры и единицы измерения

И40-13

И40-14

ИО45-12

И50-13

И50-14

И60-12

Удельное объемное электическое сопротивление при 20 оС Ом см

11 013

21 014

11 012

21 013

11 014

11 012

Удельное объемное электическое сопротивление при 20 оС Ом см

11 013

21 014

11 012

21 013

11 014

11 012

Прочность при разрыве, не менее Мпа

17.6

19.6

11.7

19.6

17.6

9.8

Относительное удлиннение при разрыве, %

200

250

350

200

200

300

Температура хрупкости, не выше оС

-40

-40

-45

-50

-50

-60


Таблица 4 - Номинальная толщина изоляции из ПВХ пластиката приведена в таблице

Номинальное сечение жил, мм

Ип-1

Ип-2

Ип-3

Ип-4

Ип-5

Ип-6

До 0.35

0.4

0.5

0.5

0.6

-

-

0.35

0.5

0.6

0.6

0.7

-

-

0.5

0.5

0.6

0.6

0.8

-

-

0.75

0.5

0.6

0.6

0.8

-

-

1.0

0.6

0.7

0.7

0.8

-

-

1.5

0.6

0.7

0.7

1.0

-

-

2.5

0.6

0.7

0.7

1.0

-

-

4.0

0.7

0.8

0.8

1.0

2.2

-

6.0

0.7

0.8

0.8

1.0

2.2

-

10

0.8

1.0

1.0

1.2

2.2

3.4

16

0.8

1.0

1.0

1.2

2.2

3.4

25

1.0

1.2

1.2

1.4

2.2

3.4

35

1.0

1.2

1.2

1.4

2.2

3.4

50

1.2

1.4

1.4

1.6

2.2

3.4

70

1.2

1.4

1.4

1.6

2.2

3.4

95

1.2

1.6

1.6

1.8

2.2

3.4

120

-

-

1.6

1.8

2.2

3.4

150

-

-

1.8

2.0

2.2

3.4

185

-

-

2.0

2.2

2.4

3.4

240

-

-

2.2

2.4

2.6

3.4

300

-

-

2.4

2.6

2.6

3.4

400

-

-

2.6

2.8

2.8

3.4

500

-

-

3.0

3.0

3.0

3.4

1.2.4 Изоляция из пропитанной бумаги

Кабельная бумага по ГОСТ 23436-83 для изоляции силовых кабелей на напряжение до 35 кВ марок К и КМП изготавливается цвета натурального волокна или окрашенной в красный, зеленый и синий цвета, а марки КМ - только цвета натурального волокна.

Кабельная бумага по ГОСТ 645-79 для изоляции кабелей на напряжение от 110 до 500 кВ марок КВМ (многослойная), КВМС (многослойная стабилизированная) и КВМСУ (многослойная стабилизироанная уплотненная) изготовляется из специальной сульфатной небеленой целлюлозы.

Бумажную изоляцию силовых кабелей пропитывают маслоканифольным составом. Кабели на напряжение 20 - 35 кВ пропитывают составом марки МП-2, содержащим 25% канифоли (остальное количество - нефтяное масло). Кабели на напряжение 1 - 10 кВ пропитывают составом МП-3, содержащим 7.5% канифоли, 3% полиэтиленового воска (остальное количество - нефтяное масло), а кабели с нестекающей изоляцией - составом МП-5, состоящим из 3 - 2% канифоли, 18% полиэтиленового воска (остальное количество - нефтяное масло). Нефтяное масло для пропиточного состава применяют марки КМ-25 по ТУ 38-101-449-84 селективной очистки фенолом или дуосол-очистки парным растворителем с последующей гидро- или контактной очисткой. Канифоль для пропиточных составов применяют марки А первого сорта по ГОСТ 19113-84 или модифицированную кабельную канифоль по ТУ 13-05-25-82.

1.2.5. Изоляция из фторопласта (политетрафторэтилена)

Изоляция из фторопласта (политетрафторэтилена), сокращенно Ф-4, обладает высокими механическими и диэлектрическими свойствами. Ф-4 используется в диапазоне температур от -90 до + 250 оС.  Ф-4 исключительно стоек к большинству химических веществ.

Политетрафторэтилен выпускается по ТУ 6-05-1246-76, именуемый Ф-4 (фторопласт-4, фторлон-4) , и имеет сополимеры Ф-4Д, Ф-4М, Ф-40Ш и др. При температуре 19оС Ф-4 увеличивается в объеме на 1%, а при температуре 327оС - на 25% (происходит переход из кристаллического состояния в аморфное). При температуре выше 425оС Ф-4 разлагается с выделением токсичных газообразных веществ.

Изоляция из фторопласта может быть наложена на жилы кабелей и проводов сплошным слоем, получаемым экструзией, или методом обмотки лентами и нитью. Ленточную изоляцию для получения ее монолитности подвергают нагреву (запечка).

Толщину изоляции принимают равной 0.25 мм при напряжении до 600 В и 0.4 мм - при напряжении 1000 В.

1.2.6 Некоторые другие виды изоляционных материалов КЛЭП

Для изоляции кабелей и проводов используется также прессованная окись магния, изоляционные лаки, шелк натуральный и синтетический, хлопчатобумажная пряжа, полистирольная  и триацетатные ленты.

1.2.6.1 Изоляция из опрессованной окиси магния

Предварительно обработанную окись магния засыпают в медную, алюминиевую или стальную (из нержавеющей стали) трубу с размещенными в ней медными стержнями или стержнями из других металлов и сплавов или заранее спрессованные из окиси магния шашки вставляют в трубу, а в отверстия шашек вставляют стержни — токопроводящие жилы кабелей. Подготовленную заготовку кабеля подвергают многократному волочению, в результате которого происходит обжатие оболочки, уплотнение окиси магния с передачей давления на жилы. В готовом виде кабель отжигают для снятия напряжений в металле, получившихся в процессе волочения.

Сопротивление изоляции кабелей с магнезиальной изоляцией зависит от содержания в ней влаги. В нормальных условиях (содержание влаги не более 0,4%) сопротивление изоляции находится в пределах 900—4550 Мом*км и зависит от числа жил в кабеле и их сечения. Сопротивление изоляции кабеля с магнезиальной изоляцией в среде с относительной влажностью 95 ±3% уменьшается и через 3—4 ч становится стабильным, равным 2 Мом*км. При относительной влажности 80±5% сопротивление изоляции, равное 2 Мом*км, устанавливается примерно через 24 ч.

В нормальном состоянии пробивное напряжение кабеля с магнезиальной изоляцией составляет 6 кв/мм, а в изогнутом состоянии — 3 кв/м. Импульсная прочность магнезиальной изоляции 6—12 кв/мм. Пробивное напряжение при повышении температуры до 250 С изменяется незначительно. Дальнейшее повышение температуры приводит к резкому снижению пробивного напряжения.

Магнезиальная изоляция при температуре 20° С имеет tgδ в пределах 0,001—0,004, при температуре 250° С tgδ = 0,01 и при температуре 800° С tgδ =0,08. При увлажнении изоляции до 1,5—2,0 % tgδ = 0,04. При плотности магнезиальной изоляции, равной 1,9 — 2 г/смг ε =3,8/4,5. При повышении температуры до 250° С и частоты до 400 Мгц ε возрастает незначительно. При влажности 1,5—2% ε увеличивается до 5,2.

При помещении открытого конца кабеля с магнезиальной изоляцией в воду влага в течение 6 мес. проникает не более чем на 200 мм. За 30 ч пребывания в атмосфере с относительной влажностью 95±3% влага проникает на глубину 40—60 мм. Подогрев концов кабеля обеспечивает испарение всей поглощенной изоляцией влаги.

Прессованную окись магния применяют для изоляции силовых, контрольных и термоэлектродных кабелей

1.2.6.2 Эмалевая изоляция

Эмалевая изоляция проводов — многослойное покрытие эмальлаками с последующей их сушкой и полимеризацией.

Эмальлак на поливинилацетатной основе — винифлекс (ВЛ-931) состоит из смолы винифлекс и раствора термореактивной фенольно-формальдегидной (резольной) смолы в этилцеллозольве. В качестве растворителя лака применяют смесь этилцеллозольва и хлорбензола (растворитель РВЛ). Лак винифлекс содержит 23—25% лаковой основы.

Эмальлак металвин (ВЛ-941) представляет собой раствор поливинилформаля, резольной смолы и стабилизатора в метапарокрезоле с разбавлением последнего сольвентнафтой. Готовый лак содержит 15,8—16,2 лаковой основы.

Эмалированные провода с изоляцией из лаков винифлекс и металвин предназначены для длительной работы при 105°С (класс А). По электроизоляционным свойствам, механической прочности, эластичности и нагревостойкости эмалированные провода винифлекс и металвин равноценны. По бензолостойкости провода с изоляцией металвин превосходят провода винифлекс. Стойкость изоляции на основе этих лаков к спирто-толуоловой смеси почти равноценна. Провода с изоляцией винифлекс и металвин выпускают диаметром 0,06—2,44 мм двух типов по толщине изоляции: ПЭВ-1 и ПЭМ-1 с максимальной двойной толщиной изоляции (D—d) 0,025—0,10 мм и минимальной 0,01—0,05 мм ПЭВ-2 и ПЭМ-2 с максимальной толщиной изоляции (D—d) 0,03—0,13 мм и минимальной 0,012—0,07 мм.

Дополнительное покрытие провода ПЭВ поливинилацеталевым лаком или лаком на основе поливинилбутираля создает термопластичное покрытие, расплавляющееся при температуре 120—150° С и цементирующее витки намотанных катушек без применения пропитывающих лаков (провода ПЭВД диаметром 0,06—0,44 мм). Дополнительное покрытие проводов ПЭВ из термореактивного материала на основе эпоксидной смолы Э-15 с добавкой лака винифлекс и фталевого ангидрида (провода марки ПЭВТР) пригодно для изготовления катушек, не размягчающихся при нагревании.

Эмальлак на основе полиэфирных смол (ПЭ-943, ПЭ-939) изготовляют из терефталевой кислоты, этиленгликоля и глицерина. Растворителем полиэтилентерефталатных лаков является трикрезол с добавкой сольвент-нафты. Сухой остаток лака 40—45%. Провод марки ПЭТВ выпускают диаметром 0,06—2,44 мм с двойной толщиной изоляции (D—d) 0,03—0,13 мм при минимальных значениях 0,01—0,07 мм. Эти провода обладают высокой механической прочностью, химической стойкостью и нагревостойкостью до 130° С (класс В).

В качестве гидроксилолсодержащих продуктов полиуретановых лаков (УЛ-1) используют соединения глицерина, гексан-триола и пентаэритрита. Для изготовления эмальлаков применяют стабилизированные динзоционаты (получаемые при реакциях с фенолами, крезолами и др.). Растворителем этого эмальлака является циклогексанон или смесь циклогексанона, ксилола и бутилацетата. Полиуретановая изоляция эмалированных проводов обладает высокими электроизоляционными свойствами и длительной нагревостойкостью— до 120° С (класс Е). Эти провода подвергаются лужению без зачистки изоляции. При температурах выше 160° С полиуретановая изоляция размягчается и становится ограниченно пригодной для обмоток электрических машин. Провода марки ПЭВТЛ выпускают диаметром 0,06—1,56 мм двух толщин изоляции: ПЭВТЛ-10,012—0,062 мм (минимальные значения 0,01—0,06 мм) и ПЭВТЛ-20,03—0,11 мм (минимальные значения 0,012—0,06 мм).

Эмальлак на основе полиимидных смол (ПАК-1) получают в результате химической реакции диангидрида пиромелитовой кислоты с диаминами. Эти соединения имеют высокую нагревостойкость и нерастворимы в обычно применяемых растворителях. В отличие от других эмальлаков образование пленок на основе полиимидов происходит в результате внутримолекулярной реакции. Благодаря линейно-кольцевой структуре полиимидная изоляция обладает высокой стойкостью против тепловых ударов. По нагревостойкости полиимидная изоляция относится к классу не ниже С (выше 180°С), т.е. превосходит все другие существующие виды эмалевой изоляции. Пробивное напряжение изоляции 2—6 кв. Провода с полиимидной изоляцией ПНЭТ-имид изготовляют в опытном порядке диаметром 0,10—1,40 мм с толщиной изоляции 0,03—0,05 мм.

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

ПЭТ-155, предназначенные для работы при температуре до 155° С (класс F). По диапазону диаметров проводов и толщине изоляции эти провода аналогичны с проводами ПЭТВ (с полиэфирной изоляцией).

Кремний орган и чески й лак (К-62) обеспечивает нагревостойкость эмалированных проводов до 180° С (класс Н), но их изоляция обладает повышенной термопластичностью и пониженной механической прочностью. Поэтому кремнийорганические лаки применяют в случае наличия поверх слоя эмали стекловолокна (провода ПЭТСО и др.).

Полиамидно-резольный лак (ПЛ-2) представляет собой раствор полиамидной смолы № 54 и резольной смолы в смеси этилцеллозольва, воды и остатков фенолов. Содержание сухого остатка в этом лаке 37—47%. Изоляция имеет пониженные электроизоляционные характеристики в условиях повышенной влажности, а также при повышенных температурах. Провод с полиамидно-резольной изоляцией марки ПЭЛР предназначен для длительной работы при температурах до 105°С (класс А).

Масляные эмальлаки на основе полимеризованных натуральных тунгового и льняного масел, ксиленольного копала, резината кальция (получаемого из канифоли), гидрохинона или неозона Д с растворителем (керосин) имеют сухой остаток 55—72%. Эти лаки образуют изоляцию, обладающую высокими электроизоляционными свойствами, но низкой механической прочностью и недостаточной стойкостью к растворителям. Эмалированные провода на масляных лаках предназначены для длительной работы при 105° С (класс А). Провода с масляной изоляцией (ПЭЛ) выпускают диаметром 0,05—2,44 мм с максимальной толщиной изоляции 0,065 — 0,10 мм.

Типовая зависимость среднего срока службы эмалированных проводов различных классов нагревостойкости от температуры (по МЭК) приведена на рис. 4. [3]

Рисунок 4 – Типовая зависимость среднего срока службы различных эмалированных проводов от температуры по методике МЭК.

1.2.6.3 Изоляция из волокнистых материалов

Хлопчатобумажную пряжу для изоляции обмоточных проводов применяют однониточную номеров 170, 134, 100, 85, 54 и 40 высшего и первого сортов по ГОСТ 1119–54, толщина которых по ГОСТ 10878–64 соответствует 5,9, 7,5, 10, 11,8, 18,5 и 25 текс (г/км). Допускаемые отклонения от номинального номера пряжи +2 и —1,5%, неровность по разрывной прочности одиночной нити не более 10,5—16% в зависимости от сорта пряжи, ее номера, величины крутки и рода прочеса. Хлопчатобумажная пряжа обладает высокой гигроскопичностью, поэтому катушки из проводов с этим видом изоляции пропитывают лаками.

Натуральный шелк получают размоткой коконов червя-шелкопряда, живущего на листьях тутового дерева. Для изоляции проводов применяют шелк однониточный, скрученный из шелка-сырца, отваренный в белом или крашеном виде. Средние номера шелка — 818, 529 и 391, толщина которых по ГОСТ 10878–64 соответствует 1,2, 1,9 и 2,6 текс, с неровнотой по номеру 11,3—14,5%, разрывная длина — 27—28,8 км, удлинение при разрыве 10—12%, среднее число кручений на 1 м 200, 190 и 120 соответственно номеру, нормальная влажность шелка 9,5%. Значительная гигроскопичность шелка, особенно при повышенной влажности, вызывает необходимость пропитки катушек электрических машин и аппаратов.

Триацетатное волокно обладает высокими электроизоляционными свойствами, оно имеет механическую прочность 16,4— 21,8 кгс/мм2. Кроме того, триацетатное волокно обладает значительной склонностью к электризации, что усложняет процесс наложения на провод.

Хлопчатобумажную пряжу, натуральный шелк, искусственные и синтетические волокна по нагревостойкости относят к классу У (90°С). Эти материалы, пропитанные масляно-смоляными и подобными лаками или погруженные в минеральное масло или синтетические жидкие диэлектрики, относят по нагревостойкости к классу А (105°С).

Капрон и анид — полиамидные волокна, получаемые из одноименной смолы. Волокна вытягивают в 3—4 раза, при этом предел их прочности повышается до 40—60 кгс/мм2, а удлинение снижается до 15—25%. Волокно выпускают метрическими номерами 150, 200 и 300. Предел прочности и эластичность полиамидных волокон выше, чем натурального и искусственного волокон. Полиамидные волокна обладают малой гигроскопичностью (влажность 3,8%)> стойки против воздействия щелочей, органических кислот, спиртов, бензина и т.п., но растворяются в крезоле, муравьиной и карболовой кислотах. Нагревостойкость полиамидных волокон выше, чем шелка, хлопка или синтетических волокон. При наложении обмотки с большой скоростью волокно капрон растягивается на 18% (против 4% у натурального шелка) это приводит к повышению упругости проводов. Тепловая обработка проводов переводит упругие деформации в остаточные. Нагревостойкость проводов с изоляцией из полиамидных волокон - 105° С. При 200° С и выше волокно капрон размягчается. Капроновое волокно обладает значительной гигроскопичностью, но по стойкости к истирающим усилиям превосходит натуральный шелк и волокно лавсан.

Полиэтилентерефталатные волокна (лавсан) получают путем выдавливания расплава полимера через фильеры, вытяжки, крутки, фиксации крутки и перемотки. Плотность волокна лавсан 1,4 г/см3, предел прочности до 70 кгс/мм2, удлинение при разрыве 18—22%, температура плавления 256°С, а размягчения — 240°С, влажность 0,5—1%. Волокно лавсан более нагревостойко и светостойко, чем полиамидное волокно. По стойкости к истиранию волокно лавсан уступает капрону, но превосходит натуральный шелк. Провода с лавсановой изоляцией по нагревостойкости отнесены к классу В (130°С).

С целью повышения электрической и механической прочности обмоточных проводов применяют комбинированную изоляцию, состоящую из слоя масляных, а для более ответственных типов оборудования - поливинилацеталевую или полиэфирную изоляцию, и слоя (редко двух слоев) натурального шелка, волокна капрон и лавсан или хлопчатобумажной пряжи. Толщина изоляции круглых проводов диаметром 0,05 - 2,02 мм с эмалево-шелковой изоляцией (по ГОСТ 6324-52) равна 0,058 - 0,085 мм, с эмалево-хлопчатобумажной изоляцией диаметром 0,41 - 5,2 мм равна 0,135 - 0,14 мм.

1.2.6.4 Изоляция из нагревостойких волокон

Стеклянное волокно — неорганический изоляционный материал, получаемый путем вытяжки из расплава стекла специального состава (бесщелочное стекловолокно алюмоборосиликатного состава). Для облегчения разматывания волокон их выпускают покрытыми замасливателем, который, кроме того, способствует соединению отдельных нитей в прядь. Стекловолокно выпускают скрученным в два сложения (из двух предварительно скрученных прядей). Для изоляции обмоточных проводов применяют стекловолокно НС-150/2 (6,7 X2 текс) и НС-170/2 (5,9 X2 текс) диаметром волокон 6 мкм, НС-300/2 (3,3 X2 текс) диаметром волокон 4 мкм и НС-500/2 (1,8 Х Х2 текс) диаметром волокон 3 мкм. Плотность стекловолокна 2,203 г/см3. Предел прочности стекловолокна около 100 кгс/мм2. Температура эксплуатации от —250 до +1200° С. Электрические характеристики: tgδ = 0,0015, ε =3/4(f=l Мгц при температуре 0— 700° С).

Изоляция из стекловолокна состоит из одного, двух и реже трех слоев с подклейкой, пропиткой и покрытием глифталевым, полиэфирным или кремнийорганическим лаком. При применении глифталевого и полиэфирного лаков провода пригодны для длительной работы при 130° С (класс В), а кремнийорганического лака — до 180° С (класс Н). Толщина двухслойной изоляции круглых проводов марки ПСД диаметром 0,31 - 5,2 мм составляет 0,23 - 0,33 мм.

Недостатками стекловолокна являются повышенная упругость, малая стойкость к истиранию и малое относительное удлинение при разрыве (2 - 3%). С целью повышения электрической прочности изоляции при малой ее толщине применяют обмотку стекловолокном поверх слоя эмали (кремнийорганической, полиэфирной и др.), подклеенных, пропитанных и покрытых глифталевым, полиэфирным или кремнийорганическим лаком. Такие провода предназначены для работы при 155—180° С.

Асбест - природное волокно различной длины. Для изоляции обмоточных проводов применяют главным образом асбестовую ровницу, представляющую собой рыхлую ленточку из асбестового волокна с добавлением к нему для повышения механических свойств хлопчатобумажной пряжи (до 15%). Плотность хризотилового асбеста 2,5 г/см3. Удельное объемное сопротивление асбеста 1010— 1012 ом*см. Асбест обладает высокой нагревостойкостью. При температуре 400—500° С асбест теряет связанную воду, входящую в состав его молекул, и становится хрупким. При температуре 1000° С асбест плавится.

Дельта-асбестовая изоляция обмоточных проводов состоит из асбестовых волокон, подклеенных к медной жиле и пропитанных глифталевым, полиэфирным или кремнийорганическим лаком. Для повышения электрической прочности и влагостойкости изоляцию кабелей и проводов выполняют с прослойкой из полиэтилентерефталатной пленки (лавсан) или политетрафторэтилена (фторлон-4).

1.2.6.5 Изоляция из полистирола

Полистирол - полимер стирола, получаемого из ксилольно-стирольной фракции, выделяемой при пиролизе или крекинге-нефти. Полимеризацию стирола производят блочным методом в присутствии перекиси бензолила. Предел прочности полистирола 300—500 кгс/см2, ρ =1016/1017 ом*см, ε = 2,2/2,8, tgδ = (2/3) 10–4 (f= 1 Мгц). Значения ε и tgδ мало зависят от температуры и частоты. Размягчение полистирола происходит при температуре 80—90°С, а деполимеризация — 250—300° С.

В кабельной промышленности применяют полистироловые колпачки, нанизываемые на внутренний проводник радиочастотного кабеля. В зависимости от мощности радиочастотного кабеля диаметр колпачка выполняют различным. Наиболее распространены полистироловые колпачки диаметром 10 и 18 мм. Нанизывание колпачков на внутренний проводник производят вручную, поэтому с целью повышения производительности труда этот вид изоляции стремятся заменить спиральной изоляцией кабеля.

Полистироловые кордель и нить, растянутые в 5 - 10 раз для повышения механической прочности, называют стирофлексом. Нитью (корделем) обматывают жилы симметричных кабелей связи с шагом 5 - 10 мм и поверх спирали накладывают лепту из полистирола (рис. 1 - 11,в). Для расцветки жил кабеля применяют кордель или ленту окрашенными. При температуре 68° С ориентированный полистирол (стирофлекс) переходит из гибкого состояния в хрупкое. [3]

1.2.6.6 Минеральная изоляция

Окислы алюминия А12Оз, бериллия ВеО и магния MgO обладают высокой нагревостойкостью и применяются в качестве изоляции закрытых нагревательных элементов. Для изоляции жаростойких кабелей наибольшее распространение получила окись магния. Предварительно обработанную окись магния засыпают в медную, алюминиевую или стальную (из нержавеющей стали) трубу с размещенными в ней медными стержнями или стержнями из других металлов или сплавов. Другой способ изготовления жаростойких кабелей основан на применении заранее спрессованных из окиси магния шашек, вставляемых в медную или из другого металла трубу. а в отверстия шашек вставляются стержни из меди или других металлов. Подготовленная заготовка подвергается многократному волочению и отжигу, в результате которых происходит обжатие оболочки и уплотнение окиси магния с передачей давления на токопроводящие жилы. После уплотнения окиси магния изменение заготовки кабеля происходит так же, как при волочении стержня из сплошного металла.

Сопротивление изоляции кабелей с магнезиальной изоляцией зависит от содержания влаги в изоляции, числа жил в кабеле и их сечения. Кривая зависимости сопротивления изоляции от температуры приведена на рис. 5 Британским стандартом нормируются минимальные сопротивления изоляции кабелей на напряжение 660 в от 4550 до 900 Мом-км, а для кабелей 440 в -от 3650 до 2 740 Мо∙км в зависимости от числа жил и их сечения.

Рисунок 5 - Зависимость сопротивления изоляции кабеля с магнезиальной изоляцией от температуры.

Сопротивление изоляции кабеля с магнезиальной изоляцией в среде с относительной влажностью 95 ±3% в течение первых 30 мин резко уменьшается, затем замедляется и через 3-4 ч становится стабильным и равным примерно 2 Мом o км.

Пробивное напряжение кабелей с магнезиальной изоляцией зависит от плотности изоляции. В изогнутом состоянии плотность изоляции уменьшается, возможно образование трещин, которые снижают пробивное напряжение. При пробое кабеля напряженность электрического поля в магнезиальной изоляции при нормальном ее состоянии равна примерно 6 кв/мм, а при изогнутом состоянии изоляции эта напряженность уменьшается до 3 кв/мм. Электрическая прочность магнезиальной изоляции при постоянном токе в 1,5-2 раза выше, чем при переменном. Импульсная прочность магнезиальной изоляции равна 6-12 кв/мм.

Величина tg δ θзоляции кабеля из прессованной магнезии при 20 °С находится в пределах 0,001-0,004; при 250° С она возрастает до 0,01, а при 800°С - до 0,08. Начало ионизации в изоляции кабеля наблюдается при напряжении около 6 кв. При увлажнении изоляции до 1,5-12,0% tg δ βозрастает до 0,04.

При плотности изоляции из окиси магния, равной 1,9-2,0 г/см 3 , ε = 3,8 - 4,5. Οри уменьшении плотности изоляции е снижается. При повышении температуры до 200-250° С в возрастает незначительно, а при температурах 500-800° С наблюдается резкий рост ε. При частотах от 60 гц до 400 Мгц е практически не зависит от частоты. При влажности 1,5-2,0 % е увеличивается до 5,2.

Легкоплавкие компоненты (флюсы) и связывающие их тугоплавкие компоненты (кварц и др.) в процессе наложения изоляции спекаются. Провода с гибкой неорганической (керамической) изоляцией пригодны для работы. При температурах до 300-600° С.

Керамическая изоляция пригодна для длительной работы при температурах не выше 300° С. При дальнейшем повышении температуры происходит резкое снижение удельного объемного сопротивления. Керамическая изоляция наносится на провод из суспензий малой вязкости с последующей термообработкой в печах при температуре 400-1200°С (в зависимости от состава изоляции). Применение электрофореза повышает скорость наложения слоя изоляции, но при этом способе возможно образование шероховатости поверхности.

Изготовление микропровода со сплошной стеклянной изоляцией по методу проф. А. В. Улитовского производится путем вытяжки его из расплава металла. Кусок металла в стеклянной ампуле или трубке, помещенный в контур высокочастотного генератора, расплавляется, а стекло становится мягким, тягучим. С помощью стеклянной палочки вытягивается стеклянная нить, внутри которой находится проволока малого диаметра из расплавленного металла. Затем микропровод со стеклянной изоляцией подвергается быстрому охлаждению струей воды и наматывается на приемный барабан. Таким способом изготовляют микропровода с токопроводящими жилами из меди, манганина, чугуна и других металлов. Регулированием температуры нагрева и скорости вытяжки можно получить провода со сплошной стеклянной изоляцией диаметром 3-200 мкм. Поверхность изоляции гладкая и блестящая. Хрупкость изоляции этих проводов увеличивается с увеличением диаметра провода. Провода диаметром до 10-12 мкм обладают достаточной эластичностью для намотки на катушки обычным способом, а провода больших диаметров наматывают при температурах 400-600°С, при которых стекло становится пластичным ("горячая" намотка). Сплошная стеклянная изоляция выдерживает навивание на стержень диаметром 200 D. Пробивное напряжение этих проводов при комнатной температуре составляет 2000-4500 в и при 500° С не менее 350 в.

2. Обзор существующих устройств и методов

2.1 Краткое описание методов электрических измерений сопротивления изоляции

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

Методы измерений можно подразделить прямые, при помощи которых непосредственно измеряется нужная величина и косвенные, значение сопротивления при которых может вычисляться исходя из результатов снятых прибором или группой приборов по известным электротехническим соотношениям.

По признаку способа сравнения с мерой  методы разделяют на метод непосредственной оценки и метод сравнения.

Для точных измерений используют мосты, потенциометры и цифровые приборы. При этом сопротивление измеряют прямым или косвенным путём.

Измерение больших сопротивлений (для изоляционных материалов) часто производят при помощи обыкновенного или баллистического гальванометров. Баллистическим гальванометром удаётся измерять сопротивления большие, чем обычным.

Для измерения поверхностного сопротивления используют  схему с особым подключением к поверхности изоляционного материала, так же, используются и цифровые электронные омметры для измерения сопротивления порядка гига- и тераом или очень малых – миллиомы.

Применение нашли и осциллографы, которые предназначены для измерения полных и реактивных сопротивлений.

Часто используются мосты для измерения сопротивлений на постоянном токе. Для измерения малых сопротивлений используют двойные мосты. Наряду с этим используют потенциометры, поочерёдно изменяя падение напряжения на измеряемом и эталонном сопротивлении.

Используются и автоматические мосты,  автоматические потенциометры постоянного тока для измерения косвенными методами, автоматические потенциометры переменного тока.

Широко распространено применение  вольтметров переменного тока, амплитудных вольтметров, омметров либо с использованием мостовой схемы, либо с использованием преобразователя. [4]

2.2 Методика измерения сопротивление изоляции электроустановок

Сопротивления изоляции распределены по сети. Обычно оперируют значениями эквивалентных величин. Вследствие этого линии связи между токоведущими частями и корпусом, показанные в упомянутой статье на схемах замещения (рис. 8), и соответствующие им подключения элементов к фазам (полюсам) сети и земле в природе отсутствуют. Поэтому измерить значение сопротивления изоляции непосредственным подключением какого-либо прибора к схемным линиям связи не представляется возможным. По этой причине обычно используют косвенные методы измерений - активные (с применением вспомогательного источника напряжения) или пассивные (с использованием рабочего напряжения сети в качестве оперативного напряжения).

В сетях с заземленной нейтралью выполняют периодический контроль при снятом рабочем напряжении, а в сетях, изолированных от земли, согласно п. 1.6.12 Правил устройства электроустановок - автоматический контроль под рабочим напряжением. [1]

Представление о значении сопротивления изоляции дает лишь сила тока в измерительной цепи в установившемся режиме, так как в первые моменты после приложения измерительного напряжения, а также при каждом изменении структуры и состава сети (например, при подключении новых электроприемников) в измерительной цепи протекают токи переходных режимов, обусловленные перезарядом емкости полюсов сети относительно корпуса или зарядом емкости подключаемого участка сети. Кроме того, на результат измерений оказывает влияние рабочее напряжение электроустановки.

Правильный результат может быть получен лишь при соответствии принятого метода измерений параметрам контролируемой сети. Без соблюдения этого условия в одной и той же сети при измерении различными средствами могут быть получены данные, противоречащие одни другим. 

2.2.1 Измерения при снятом рабочем напряжении.

 При снятом рабочем напряжении применяют метод наложения постоянного напряжения. Измерительный прибор - переносной либо щитовой мегаомметр И- содержит источник постоянного напряжения Е и миллиамперметр А (рис. 8).

Рисунок 2.1. Измерение при снятом рабочем напряжении

Один полюс прибора (обычно положительный) подключается к токоведущей части (например, к клемме 1), а второй полюс - к корпусу проверяемого электротехнического изделия.В установившемся режиме после заряда емкостей С1 и С2 относительно корпуса ток Iизм, протекающий под действием источника Е, на полюсе 1 разветвляется: его часть I’изм протекает через эквивалентное сопротивление изоляции R1 полюса 1, а другая часть I’’изм – через сопротивление нагрузки RН и эквивалентное сопротивление изоляции R2 полюса 2. Далее ток протекает по корпусу и суммируется в цепи миллиамперметра А.

Силу тока Iизм определяет выражение:

Iизм=E/(Rвн+R)

(

где Rвн – внутреннее сопротивление мегаомметра (миллиамперметра, источника измерительного напряжения и добавочного сопротивления ), R – эквивалентное сопротивление изоляции. Строго говоря, в последнем следовало бы учесть сопротивление Rн, но обычно Rн << R2 поэтому его влиянием допустимо пренебрегать (в тех случаях, когда внутреннее сопротивление контролируемого изделия соизмеримо с величиной сопротивления изоляции, такое допущение может приводить к ошибочным результатам, завышенным против фактических).

При Rвн = const и Е = const сила тока в измерительной цепи зависит только от величины R, поэтому миллиамперметр градуируют непосредственно в единицах сопротивления. На практике обычно применяют переносные мегаомметры с питанием от сети переменного тока (типа Ml27) или с автономным источником (типа М4100). В качестве последнего используют индукторный генератор с ручным приводом (скорость вращения рукоятки около 2 об/с). Чтобы уменьшить погрешность измерений из-за непостоянства скорости вращения рукоятки, в таких мегаомметрах в качестве измерительного прибора используют не миллиамперметр, а логометр, одна рамка которого подключена непосредственно к источнику напряжения, а вторая, жестко связанная с ней, включена в измерительную цепь.

Для повышения достоверности измерений измерительное напряжение выбирают близким к рабочему напряжению контролируемой цепи. Для электрооборудования напряжением от 100 В до 400 В применяют мегаомметры напряжением 500 В. Безопасность измерений при этом достигается за счет ограничения силы тока в измерительной цепи до величины 1 мА добавочным сопротивлением Rд = 0,5 МОм.

2.2.2 Измерения в сетях постоянного тока

Норвежская фирма Autronica создала автоматизированную систему контроля сопротивления изоляции System AJ-1 с генератором оперативного напряжения частотой 5 Гц. Фирма Merlin Gerin (Франция) выпускает приборы Vigilohm System XM-200 с оперативным источником частотой 2,5 Гц.В ряде случаев вместо источника напряжения непромышленной частоты используют вспомогательный источник постоянного напряжения переменной полярности. Так, фирма Bender (Германия), выпускает прибор IRDH 265-4. Метод уравновешенного моста.

Рисунок 2.2 - Измерение сопротивления изоляции сети постоянного тока методом уравновешенного моста.

На этом методе, как правило, основана работа отечественных щитовых мегаомметров в сетях постоянного тока. Схема измерений этим методом приведена на рис. 9, где использованы следующие обозначения: А - миллиамперметр; Rд – добавочное сопротивление; П – переключатель; Е – источник измерительного напряжения (до 150 В); Rп- потенциометр. Плечами моста являются сопротивления изоляции R1 и R2 и сопротивления r1 и r2 плеч потенциометра Rп. Измерительный прибор и ограничительное сопротивление Rд включены в диагональ моста. Сила тока Iизм в диагонали моста определяется выражением:

(

где R – эквивалентное сопротивление изоляции сети. Измерение производится в два этапа. На первом этапе переключатель П устанавливают в положение 1 и перемещением движка потенциометра балансируют мост – добиваются отсутствия тока в диагонали моста. На втором этапе переключатель устанавливают в положение 2, подключая в диагональ моста источник измерительного напряжения Е. После окончания процессов перезаряда емкостей снимают показание миллиамперметра. В сбалансированном мосте составляющая тока, определяемая вторым слагаемым, отсутствует. Поэтому при Е = const, Rд = const и при условии r1r2/Rп << R сила тока Iизм однозначно определяется сопротивлением изоляции R (приборы типа Ml54, M1508, M1608, M1428, M1628). Обычно при работе с сетями постоянного тока применяют методы измерений, основанные на использовании рабочего напряжения сети в качестве оперативного напряжения. Рассмотрим один из них.

Рисунок 2.3 - Измерение сопротивления изоляции сети постоянного тока вольтметрами: а) – по методу двух вольтметров; б) и в) – по методу трех отсчетов вольтметра. 

2.2.2.1 Метод трех отсчетов вольтметра.

Этот метод заключается в последовательном измерении вольтметром с известным сопротивлением r трех напряжений: U – рабочего; U1 – между положительным полюсом сети и землей; U2 – между отрицательным полюсом и землей. Расчет искомой величины сопротивления изоляции сети производится по формуле:

Рассмотрим физические основания этого метода.

На рисунке 3,а показана эквивалентная схема сети постоянного тока с сопротивлениями изоляции полюсов R1, R2 и рабочим напряжением U. Напряжения между полюсами сети и корпусом U’ и U’, пропорциональны соответствующим сопротивлениям изоляции, то есть всегда выполняются следующие соотношения:

Если для измерения этих напряжений между полюсами сети и корпусом включить вольтметры V1 и V2 c равными внутренними сопротивлениями r, то получим:

При r>>R выражение (4) будет совпадать с предыдущим. Такой способ контроля (с использованием двух вольтметров) ранее применялся для индикации однополюсных снижений сопротивления изоляции и однополюсных замыканий на землю. Вольтметр, соответствующий полюсу с меньшим сопротивлением изоляции, имеет меньшее показание (зачастую вместо вольтметров включали две лампы накаливания). Пользуясь результатами измерения напряжений U’ и U’’, определить величины сопротивлений R1 и R2, соответственно и значение эквивалентного сопротивления изоляции сети R, не представляется возможным, так как система уравнений неполная: эквивалентная схема состоит из трех контуров, в то время как сама система содержит только два уравнения. Чтобы ее все-таки можно было разрешить, в сеть вносят нормированные искажения.

При включении вольтметра V по схеме рис. 3,б меняется эквивалентное сопротивление между положительным полюсом сети и землей (за счет шунтирования сопротивления изоляции R1 внутренним сопротивлением вольтметра r). Оно становится равным:

Так как при этом сопротивление между отрицательным полюсом сети и корпусом не изменится, то уменьшается напряжение между положительным полюсом и землей: U1 < U’(соответственно U’2>U’’). При измерении по схеме рис. 3,в аналогично получаем: U2 < U’’. С условием того, что U’+U’’ =U, при измерении методом трех отсчетов всегда справедливо неравенство

U1+ U2 < U

Следует еще раз подчеркнуть, что оно образуется за счет намеренного поочередного уменьшения сопротивлений между полюсами сети и землей путем шунтирования сопротивлений изоляции R1 и R2 известным сопротивлением r. Теперь система уравнений, составленных для напряжений U1 и U2, оказывается разрешимой, так как она содержит известные величины U, U1, U2, r и две неизвестные величины: R1 и R2. Решая систему относительно последних, получаем выражение для эквивалентного сопротивления изоляции сети.

Соотношение величин напряжений U и U1+U2, определяющее точность измерений при данном сопротивлении изоляции сети, зависит от величины сопротивления вольтметра r. Если r>>R (например, при измерении ламповым, цифровым или электростатическим вольтметром), то при подключении вольтметра в сеть вносятся несущественные искажения, так как сопротивления между полюсами сети и землей практически не изменяются. Как следствие этого получаем U1+U2 =U. Соответственно нулевыми будут результаты при расчетах по формуле (3). Наибольшая точность измерений достигается при выполнении следующего соотношения: r =0,8R, при котором U1+U2= 0,44U. Обычно рекомендуется выбирать вольтметр с внутренним сопротивлением, приблизительно равным измеряемому сопротивлению изоляции. Изложенное справедливо не только для силовых сетей, но и для низковольтных систем автоматики. В последних опасно выполнять контроль сопротивления изоляции с использованием щитовых мегаомметров, содержащих источник измерительного напряжения 100-150 В. Под действием этого источника при определенных условиях могут выйти из строя комплектующие систему полупроводниковые приборы и микросхемы.
Этот метод прост в выполнении и доступен, так как не требует применения специальной аппаратуры. Однако он имеет и ряд недостатков, связанных с необходимостью выполнения вычислений. Опыт показывает, что целесообразна подмена расчетов работой с соответствующими номограммами. В качестве примера на рис. 2.4 приведена номограмма, предназначенная для определения значения сопротивления изоляции сетей постоянного тока напряжением от 150 до 600 В. Номограмма имеет три шкалы – рабочего напряжения U, суммы напряжений полюсов сети относительно корпуса U1+U2 и искомого значения сопротивления изоляции R. Порядок работы с номограммой таков: к точкам шкал U и U1+U2, соответствующим полученным результатам измерений, прикладывается линейка; искомое значение считывается по шкале R. В практической деятельности не всегда имеется в наличии вольтметр с предусмотренным номо-граммой значением внутреннего сопротивления. Поэтому на рис. 2.5 приведена номограмма, пригодная для работы с различными типами вольтметров. Она состоит из двух параллельных шкал (U1 + U2 и R) и бинарного поля с координатами «напряжение сети – внутреннее сопротивление вольтметра». Работа с такой номограммой также не составляет труда.


Рисунок 2.4 - Номограмма для определения сопротивления изоляции сетей постоянного тока напряжением от 150 В до 600 В при измерении вольтметром с внутренним сопротивлением 100 кОм


Рисунок 2.5 - Номограмма для определения сопротивления изоляции сетей постоянного тока напряжением от 150 В до 600 В при измерении вольтметром с внутренним сопротивлением от 50 до 200 кОм

Существует пять основных элементов, имеющих влияние на деградацию изоляции: повреждения электрические и механические, химическая агрессия, повреждения термические, а также загрязнение среды. По причине их воздействия во время нормальной работы электроустановок и электрических устройств изоляция стареет.

Факторами, влияющими на измерение параметров, характеризующих сопротивление изоляции, являются:

  1.  влажность;
  2.  температура;
  3.  измерительное напряжение;
  4.  время измерения;
  5.  чистота поверхности изоляционного материала.

Сопротивление изоляции — это параллельное подключение внутреннего сопротивления, зависящего от материала изоляции, и поверхностного сопротивления, зависящего от чистоты поверхности.

Ток утечки изоляции — это малый ток, протекающий между зажимами измерительных проводов, который можно разделить на две составляющие: ток, протекающий через изоляционный материал, и ток, протекающий по поверхности изоляционного материала. Этот ток быстро нарастает до постоянной величины и остаётся неизменным для выбранного измерительного напряжения. Увеличение тока утечки может стать в дальнейшем источником повреждений. Ток утечки должен быть измерен тогда, когда конденсатор, представляющий собой ёмкость изоляции, заряжен, а явление абсорбции установилось.

Ток абсорбции, имеющий сначала значительную величину, через определённое время (большее, чем время заряда ёмкости изоляционного материала) стремится к нулю.

С представлением абсорбции связан ток диэлектрического поглощения. Этот ток является результатом перемещения заряженных частиц и диполей в изоляции под воздействием электрического поля. Диполи устанавливаются параллельно линиям внутреннего электрического поля.

2.2.3 Измерение сопротивления изоляции мегаомметром

Количество замеров сопротивления изоляции зависит от количества проводов в линии (в общем, от 4 до 15 замеров на линию). По итогам проверки изоляции принимается решение – заменить или починить неисправную изоляцию или оставить ее как есть, если она в хорошем состоянии и соответствует всем нормам.

Специально для выполнения замеров сопротивления изоляции кабелей и проводов был создан прибор мегомметр (мегаомметр) – в отличие от омметра он используется при высоких напряжениях (1000-2500 В).

Перед замерами проводится визуальный осмотр всех кабелей и проводки, осмотр электрооборудования и распределительных коробок, особенное внимание следует уделить местам, где изоляция имеет оплавленные концы (это значит, что в этих местах кабель или провод перегревается, что является также неполадкой и подлежит устранению). После визуального осмотра проводятся замеры сопротивления изоляции. Для этого необходимо отключить от всех измеряемых кабелей и проводов все оборудование, сами кабели отключить от электропитания, снять все лампы в энергосистеме, проверить, чтобы все выключатели были включены. Только после выполнения всех этих условий можно проводить измерения сопротивления изоляции. Последним, но тоже важным условием можно назвать проверку приборов на актуальность – мегомметры ежегодно должны проходить испытания, без которых они не допускаются к работе.

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

3. Разработка устройства

3.1 Разработка методики измерения процессов старения изоляции

Анализ работ Кучинского Г.С., Мостового С.Е., Федорова Г.С. Показал, что контроль частичных разрядов — перспективный и удобный метод контроля состояния изоляции.

Частичными разрядами (ЧР) называют разрядные процессы в изоляции, которые развиваются под действием приложенного напряжения и распространяются лишь на часть изоляционного промежутка.

Частичные разряды могут возникать в ослабленных местах изоляции, например, в газовых включениях, или в местах резкого усиления электрического поля, в частности, у острых краев электродов. Наибольшую опасность представляют ЧР в газовых включениях, так как в этом случае ЧР возникают при меньших напряжениях, чем в жидких или твердых компонентах внутренней изоляции.

Согласно работам Кучинского Г.С., можно утверждать, что темпы электрического старения и срок службы изоляции, зависят от средней мощности Рч.р и энергии Wч.р. Поэтому Рч.р и Wч.р являются важнейшими характеристиками ЧР. Однако непосредственное измерение Рч.р и Wч.р в большинстве случаев практически невозможно, так как они очень малы. В связи с этим в качестве мер интенсивности ЧР применяют другие величины, пропорциональные Рч.р и Wч.р, но поддающиеся прямому измерению.

Чтобы пояснить физический смысл используемых мер интенсивности ЧР, рассмотрим кратко основы электрического метода измерения характеристик ЧР. В этом методе используется одно из внешних проявлений ЧР – снижение при каждом ЧР напряжения на испытуемой изоляции скачком (точнее, за время     10-7…10-8 с) на величину ΔU.

Скачок напряжения ΔU объясняется тем, что в канале ЧР рассеивается часть энергии, запасенной в электрическом поле изоляции.

При таком методе измерения характеристик ЧР, получившем наибольшее распространение из-за высокой чувствительности, в качестве меры интенсивности единичного ЧР принимают величину q = ΔUxCx, которую называют кажущимся зарядом ЧР.

Опытным путем установлено, что в различных видах внутренней изоляции, в зависимости от качества изоляции и значения приложенного напряжения, ЧР могут иметь кажущиеся заряды от 10-14 до 10-16 Кл. При ЧР с кажущимися зарядами 10-14 …10-16 Кл происходит относительно медленное старение изоляции. В ряде случаев такие ЧР допустимы при рабочем напряжении, так как обусловленное ими старение оказывается настолько медленным, что обеспечивается необходимый срок службы (около 20 лет и более). При ЧР с q=10-9…10-6 Кл за короткое время происходит значительное разрушение изоляции; такие ЧР недопустимы даже при кратковременных перенапряжениях и, следовательно, при испытательных напряжениях.

Согласно [3], было решено использовать метод регистрации высокочастотных колебаний, возникающих при ЧР в изоляции, так как этот метод позволяет надежно и точно измерять основные характеристики ЧР и обеспечивает чувствительность порядка 10-14 — 10-15 Кл. Согласно метода, между жилой и землей включается резистивный делитель напряжения, к одному из резисторов которого подключается вход АЦП.

3.2 Разработка структурной схемы устройства.

Устройство создано для измерения характеристик ЧР, но, при этом разработано несколько методов контроля состояния изоляции – накопление статистических данных о процессах в изоляции и их влияние на картину ЧР и сравнение динамики значений снимаемых характеристик ЧР с экспериментально полученной динамикой этих характеристик при искусственном состаривании изоляции.

Суть первого метода заключается в контроле сопротивления изоляции и контроле параметров ЧР в изоляции кабелей с различным возрастом и измерение зависимостей параметров ЧР от сопротивления изоляции, что позволит контролировать сопротивление изоляции любой кабельной линии не выводя ее из работы и не разрушая изоляцию повышенным напряжением и рассчитывать примерный остаточный срок службы кабельной линии. Второй метод заключается в том, что зная картины ЧР при развитии повреждений и старении, этот метод позволит определить

Упрощенный алгоритм действия разрабатываемой системы показан на рис. 3.1.

Рис. 3.1. Упрощенный алгоритм работы системы прогнозирующей защиты.

Алгоритм работы прибора будет пояснен на основе блок-схемы, представленной на рис. 3.2.

  1.  Блок измерения характеристик ЧР – служит для проведения измерений и передачи информации для дальнейшей обработки. Представляет собой внутренний АЦП микроконтроллера. Предусмотрена возможность использования внешних АЦП с улучшенными характеристиками.
  2.  Блок обработки информации – буфер между АЦП и контроллером, предназначен для обеспечения гальванической развязки устройства и цепи на которой проводятся измерения, а так же развязки устройства и сетевого интерфейса.
  3.  Внешнее ЗУ с информацией и настройками – представляет собой внешний носитель (Micro SD карта) с экспериментальной информацией о динамике изменения характеристик ЧР.
  4.  Внешний интерфейс для отладки – представляет собой последовательный порт для подключения прошивальщиков/дамперов и т.д.
  5.  Основной микроконтроллер будет выполнять вычисление оставшегося времени службы изоляции и прогнозирование аварии исходя из измерений и данных получаемых от внешнего ЗУ, содержащего информацию о КЛ.

Рисунок 3.2 Блок-схема устройства.

Вывод: разработана структурная и блок-схема устройства, обладающего необходимыми для достижения поставленных задач характеристиками с возможностью дальнейшего наращивания возможностей и улучшения эксплуатационных характеристик за счет блочной структуры.

3.3 Разработка печатной платы и создание устройства

Прибор создан на основе микроконтроллера АТ Mega 32, на котором, при помощи ассемблера, реализована многозадачная операционная система, многозадачность которой реализована на прерываниях. Это позволило постепенно наращивать возможности устройства и запускать измененные алгоритмы анализа либо расчетов не прибегая к перепрограммированию микроконтроллера, а просто записав их на Micro SD карту. Прибор имеет внешний SD контроллер, внешний АЦП, буфер СОМ интерфейса программирования, внешний USB контроллер, буфер LAN. Таким образом, обеспечена полная развязка между программатором, сервером, прибором и измерительной аппаратурой, все контроллеры связаны друг с другом по протоколу I2C. Прибор имеет графический дисплей, СОМ порт для программирования, USB и LAN для связи с сервером, Micro SD для сохранения настроек и архивных данных при отсутствии возможности работы с сервером онлайн, разъём для подключения измерительной аппаратуры к внешнему либо внутреннему АЦП, разъем основного питания, часы и календарь с питанием от перезаряжаемого аккумулятора, разъем для управления внешним оборудованием (через электромагнитные реле с цепью управления рассчитанной на +5 Вольт), термодатчиком для ведения статистики износа изоляции.

Прибор в режиме анализа, при помощи внешнего, либо внутреннего АЦП анализирует форму сигнала на делителе напряжения и передает ее на сервер по интерфейсу USB (виртуальный COM — до 1 Мбит/с), либо по LAN (до 100 Мбит/с), либо записывает на SD карту используя GZIP алгоритм компрессии для дальнейшего анализа. Контроль состояния изоляции осуществляется при помощи измерения частоты и кажущегося заряда частичных разрядов в исследуемом кабеле. Любое изменение характеристик изоляции сказывается на количестве и кажущемся заряде частичных разрядов, таким образом, можно экспериментально установить характерные картины развития пробоя и сравнивать с ними снимаемые показания. Соответствие снимаемых показаний с одной из картин развития пробоя считается началом развития аварии.

Внешний вид печатной платы показан в приложении А.

Вывод: созданный прибор соответствует поставленной задаче и позволяет наращивать свои возможности для увеличения точности расчета времени до конца срока службы, времени до аварии (пробоя), реализации алгоритма расчета мест наиболее вероятных повреждений.

3.4 Разработка программного обеспечения для устройства

Программное обеспечение устройства написано на Ассемблере и представляет собой многозадачную операционную систему на прерываниях, что позволяет не останавливая измерений производить оценку ситуации. Реализована возможность запуска предварительно скомпилированной программы, записанной на Micro SD карту начиная с нулевого сектора, все настройки хранятся на Micro SD карте в бинарном виде, таблицы по которым описывается опасная динамика характеристик хранятся в текстовом виде без сжатия, снимаемые осциллограммы записываются в виде текстовых таблиц с GZIP компрессией для экономии места, снимаемые характеристики ЧР записываются в виде текста с разделителями.

Исходные тексты операционной системы и подпрограмм с комментариями приведены в приложении Б.

Вывод: разработана многозадачная операционная система, способная удовлетворить все требования, предъявляемые поставленной задачей — реализовать одновременный сбор, анализ, вывод данных и управление внешними устройствами. Операционная система построена по архитектуре микроядра, основной системы и драйверов устройств, что позволяет гибко изменять состав и количество внешних устройств.

4. Проведение экспериментов

Для получения необходимых характерных картин изменения параметров ЧР при пробое, накопления статистики о характеристиках ЧР в изоляции при ее старении, были поставлены эксперименты. Согласно [1], было решено использовать метод регистрации высокочастотных колебаний, возникающих при ЧР в изоляции, так как этот метод позволяет надежно и точно измерять основные характеристики ЧР. Осциллограф и АЦП устройства подключались на резистивный делитель напряжения, включенный параллельно образцу исследуемой изоляции. По результатам экспериментов можно сказать, что существует проблема различения ЧР и помех в линии, проблема различения

ЧР в образце и в масле повышающего трансформатора испытательного стенда,

проблема быстродействия и разрядности АЦП, что практически не влияет на собранную статистику, хотя и увеличивает погрешность измерений.

5. Заключение

Разработана методика контроля состояния изоляции, основанная на предложенной в Кучинским Г.С. зависимости частоты следования и кажущегося заряда ЧР от времени службы изоляции, разработана структурная схема и алгоритм работы устройства, разработана печатная плата, создано устройство, разработано программное обеспечение для устройства.


  1.  Библиографический список

1. Правила устройства электроустановок. Раздел 1. Общие правила. – Седьмое издание. – СПБ.: издательство ДЕАН, 2004.-176с.

2. Беркович М.А. Автоматика энергосистем: Учеб. для техникумов / М.А. Беркович, В.А. Гладышев, В.А. Семенов. // 3-е изд., перераб. и доп. – М.: Энергоатомиздат, 1991. - 240с.

3. Ресурсы интернет сайта http://www.mitsar.ru

4 Электрические измерения. Средства и методы измерений. Под ред. Е.Г. Шрамкова . М., “Высшая школа ”, 1972.

5. Справочник электромонтажника. Е. Г. Пантелеев. Монтаж и ремонт кабельных линий.

3. Нормы приемо-сдаточных испытаний силовых кабельных линий - Испытание кабелей

6. Как правильно измерить сопротивление изоляции электроустановок. Е. Иванов. Новости электротехники - №1(13)2002 С. 58-61.

7. Беркович М.А. Автоматика энергосистем: Учеб. для техникумов / М.А. Беркович, В.А. Гладышев, В.А. Семенов. // 3-е изд., перераб. и доп. – М.: Энергоатомиздат, 1991. - 240с.

8. Никитин К.И. Возможные направления совершенствования релейной защиты / К.И. Никитин, А.А., Вырва, М.М. Сарычев // Омский научный вестник, 2009, № 1 (77), С130-133.

9. Никитин К.И. Прогнозирование отказов кабельных линий электропередачи (статья) / К.И. Никитин, Б.Н Коврижин, П.С Рыбин // Энергетика на рубеже веков. Сборник материалов научно-практической конференции, посвященной 60-летию ОАО АК «Омскэнерго» и Омского механико-технологического техникума. Омск, ОмГТУ, 2003 . – с. 134-135.

10. Фризен А.Н., Петров А.В., Свойства изоляции нефтепогружных кабелей и возможность их  прогнозирования в условиях эксплуатации,  Кабели  и  провода, 2007, № 4.

11. Петров А.В., Фризен А.Н., Полтарыхина В.Н., Влияние старения в агрессивной среде на температурную зависимость электропроводности изоляции кабелей.// Материалы всероссийской научной конференции молодых ученых «Наука, технологии, инновации» – Новосибирск, 2004, ч.2, с. 179-181.

12. Аникеенко В.М., Петров А.В., Фризен А.Н., Электрические свойства изоляции нефтепогружных кабелей, Материалы международной научно-технической конференции «Электромеханические преобразователи  энергии», Россия, Томск, 20-22 октября 2005 г., с. 399-400.

13. Фризен А.Н., Аникеенко В.М., Баклыков А.С., Влияние защитных покрытий на электрические свойства изоляции кабелей.// Материалы всероссийской научной конференции молодых ученых «Наука, технологии, инновации» – Новосибирск, 2004, ч.2, с. 195-196;

14. ГОСТ 2990 - 78 Кабели провода и шнуры. Методы испытания напряжением.

15. РД16 14.640 - 88 Кабели провода и шнуры. Испытание напряжением на проход. Типовой технологический процесс.

16. Сельницин А.А., Сидоров А.И., Бендяк Н.А. Способ определения сопротивления изоляции сетей с изолированной нейтралью напряжением 6 —35 кВ // Контроль изоляции в распределительных  сетях:  тезисы  докладов  научно–практической  конференции. Челябинск.  С. 13.1992.

17. Лапченков К.В. Управление состоянием изоляции в распределенных электрических сетях. — Челябинск, 1998. — 116 с.

18. Юрченко Е.Ю., Оценка состояния изоляции городских кабельных линий напряжением 6-10кВ с разработкой рекомендаций по улучшению условий электробезопасности, диссертация, Челябинск 2009.

19. Патент (51)  МПК G01R31/02   (2006.01) (19)RU(11) 2348939(13)C1 Бородянский Илья Михайлович (RU), Бородянский Михаил Ефимович (RU), Самойлов Леонид Константинович (RU), Косторниченко Владимир Григорьевич (RU)

20. Патент (51) МПК G01R31/02   (2006.01) (19)RU(11)2313799(13)C1 Толочек Сергей Александрович (RU), Грудцинов Григорий Михайлович (RU), Замешин Александр Петрович

21. Патент (51) МПК G01R27/18   (2006.01) 19)RU(11)2275645(13)C2 Галка Виктор Леонидович (RU), Лазаревский Николай Алексеевич (RU), Александров Валентин Петрович (RU), Калашников Николай Семенович (RU), Плазовская Татьяна Николаевна (RU)

22. Патент МПК G01R27/18 (2006.01), G01R31/02   (2006.01) (19)RU(11)22756452(13)C2 Кислов Евгений Александрович (RU), Леонтьев Игорь Викторович (RU), Левичев Юрий Дмитриевич (RU), Кудрин Иван Александрович (RU)

23. Патент МПК G01R27/18 (19)RU(11)2149414(13)C1  Белов В.А.

24. Патент МПК G01R27/08, G01R27/18 (19)RU(11)2092862(13)C1 Григорьев Эдуард Николаевич, Мельников Евгений Георгиевич, Новоторцев Павел Николаевич

25. Патент МПК  Н02Н3/17 (19)RU(11)2027271(13)C1 Покрашенко А.И., Котов К.В., Селиванов М.И.

26. Кудрявцев Д.М. Совершенствование локационных методов дистанционного контроля изоляции линий электропередачи 110-750 кВ. - дис. ... кандидата технических наук : 05.14.02 / Кудрявцев Дмитрий Михайлович; [Место защиты: Иван. гос. энергет. ун-т, Иваново, 2007]

27. Ресурсы интернет сайта www.electronpribor.ru 

28. Кучинский Г.С. Частичные разряды в высоковольтных конструкциях. – Л.: Энергия, 1979.224 с., ил.


Приложение А.

Печатная плата:


Приложение Б.

Исходный код программного обеспечения с комментариями:

Ядро операционной системы:

;=============================================================================

; Процедура очистки очереди

;=============================================================================

ClearTaskQueue:

 push ZL

 push ZH

 ldi ZL, low(TaskQueue)

 ldi ZH, high(TaskQueue)

 

 ldi OSRG, $FF  ;

 ldi Counter, TaskQueueSize

CEQL01: st Z+, OSRG     ;

 dec Counter     ;

 brne CEQL01     ; Loop

 pop ZH

 pop ZL

 ret

;=============================================================================

; Процедура очистки таймеров

;=============================================================================

ClearTimers:

 push ZL

 push ZH

 ldi ZL, low(TimersPool)

 ldi ZH, high(TimersPool)

 ldi Counter, TimersPoolSize

 ldi OSRG, $FF    ; Empty

 ldi Tmp2, $00

CTL01: st Z+, OSRG     ; Event

 st Z+, Tmp2     ; Counter Lo

 st Z+, Tmp2     ; Counter Hi

 dec Counter     ;

 brne CTL01     ; Loop

 

 pop ZH

 pop ZL

 ret

;=============================================================================

; Процедура обработки очереди задач

;=============================================================================

ProcessTaskQueue:

 ldi ZL, low(TaskQueue)

 ldi ZH, high(TaskQueue)

 ld OSRG, Z     ; For Event

 cpi OSRG, $FF    ; No Event or Addr out of Range

 breq PTQL02     ; No Action

 

 clr ZH

 lsl OSRG

 mov ZL, OSRG

 subi ZL, low(-TaskProcs*2)

 sbci ZH, high(-TaskProcs*2) ; Add

 

 lpm       ; mov r0 <- CODE[Z]

 mov OSRG, r0

 ld r0, Z+     ; inc Z

 lpm

 mov ZL, OSRG    ; Get Addr

 mov ZH, r0

 

 push ZL

 push ZH

; Advance Queue

 ldi Counter, TaskQueueSize-1

 ldi ZL, low(TaskQueue)

 ldi ZH, high(TaskQueue)

 

 cli

 

PTQL01: ldd OSRG, Z+1     ; Shift Queues

 st Z+, OSRG     ;

;  cpi OSRG, $FF    ;

;  breq PTQL02     ; For Long Queues

 dec Counter     ;

 brne PTQL01     ; Loop

 ldi OSRG, $FF    ;

 st Z+, OSRG     ;

 

 sei

 pop ZH

 pop ZL

 ijmp       ; Minimize Stack Usage

 

PTQL02: ret

;-------------------------------------------------------------------------

; OSRG - Event

SendTask:

 push ZL

 push ZH

 push Tmp2

 push Counter

 ldi ZL, low(TaskQueue)

 ldi ZH, high(TaskQueue)

 ldi Counter, TaskQueueSize

SEQL01: ld Tmp2, Z+

 cpi Tmp2, $FF

 breq SEQL02

 dec Counter     ;

 breq SEQL03     ; Loop

 rjmp SEQL01

SEQL02: st -Z, OSRG     ; Store EVENT

SEQL03:        ; EXIT

 pop Counter

 pop Tmp2

 pop ZH

 pop ZL

 ret

;------------------------------------------------------------------------

; OSRG - Timer Event

; X - Counter

SetTimer:

 push ZL

 push ZH

 push Tmp2

 push Counter

 ldi ZL, low(TimersPool)

 ldi ZH, high(TimersPool)

 ldi Counter, TimersPoolSize

 

STL01:  ld Tmp2, Z     ; Value / Counter

 cp Tmp2, OSRG    ; Search for Event

 breq STL02

 

 subi ZL, Low(-3)   ; Skip Counter

 sbci ZH, High(-3)   ; Z+=2

 dec Counter     ;

 breq STL03     ; Loop

 rjmp STL01

 

STL02: ;cli

 std Z+1, XL     ; Critical Section

 std Z+2, XH     ; Update Counter

 ;sei      ; leave Critical Section

 rjmp STL06    ; Exit

STL03:

 ldi ZL, low(TimersPool)

 ldi ZH, high(TimersPool)

 ldi Counter, TimersPoolSize

 

STL04: ld Tmp2, Z     ; Value / Counter

 cpi Tmp2, $FF    ; Search for Empty Timer

 breq STL05

 

 subi ZL, Low(-3)   ; Skip Counter

 sbci ZH, High(-3)   ; Z+=2

 

 dec Counter     ;

 breq STL06     ; No Empty Timer

 rjmp STL04

 

STL05: cli

 st Z, OSRG     ; Set Event

 std Z+1, XL

 std Z+2, XH

 sei

STL06:

 pop Counter

 pop Tmp2

 pop ZH

 pop ZL

 ret

;=============================================================================

; Процедура подсчета CRC8 области памяти

;=============================================================================

; Counter - количество байт

; ZL - начало адресного пространства

CRC8:

push tmp4

push tmp3

push tmp2

ldi  tmp3,0x18    ; загрузка полинома

mov  tmp4,tmp3    ; в регистр HiCRC

clr  OSRG     ; обнуление CRC регистра

CRC8_Loop:

 ldi  tmp2,8    ; указываем 8 бит для подсчета ;

 ld  tmp3,Z+    ; берем байт из буфера

CRC8_Bit_Loop:

 push tmp3    ; сохранение байта в стеке

 eor  tmp3,OSRG   ; xor байта и регистра CRC

 lsr  tmp3    ; сдвигаем младший бит получившегося байта в перенос

 brcc CRC8_Zero_0   ; проверяем младший разряд байта

 eor     OSRG,tmp4   ; если там 1, то CRC xor полином

CRC8_Zero_0:

 ror  OSRG    ; если там 0, то просто сдвиг CRC регистра

 pop  tmp3    ; возвращаем байт на место

 lsr  tmp3    ; и сдвигаем его

 dec  tmp2    ;

 brne CRC8_Bit_Loop  ; переход на цикл проверки слеующего бита

dec  Counter    ;

brne CRC8_Loop    ; переход на следующий байт буфера

 pop tmp2

pop tmp3

pop tmp4

ret

Wait255:

push Counter

ser  Counter

Wait255_loop:

 nop

 nop

 nop

 nop

 nop

 dec  Counter

 cpi  Counter, 0x00

 brne Wait255_loop

pop  Counter

ret

=================================================================================

Подпрограмма управления LCD дисплеем:

;===========LCDDefine=============================================================

.equ DATA_PORT = PORTB    ; LCD Data Port

.equ DATA_PIN = PINB

.equ DATA_DDR = DDRB

.equ CMD_PORT = PORTB    ; LCD Control Port

.equ CMD_PIN = PINB

.equ CMD_DDR = DDRB

.equ E   = 3

.equ RW   = 2

.equ RS   = 1

.equ SPEED  = 14 ; 14 для XTAL=16MHz, 10 для XTAL=8MHz, 6 для XTAL=4MHz

==================================================================================

; LCD Init

.equ  LCD_CLR           = 0          ; DB0: clear display

.equ  LCD_HOME          = 1          ; DB1: return to home position

.equ   LCD_ENTRY_MODE    = 2          ; DB2: set entry mode

.equ  LCD_ENTRY_INC     = 1          ; DB1: increment

.equ  LCD_ENTRY_SHIFT   = 0          ; DB2: shift

.equ  LCD_ON         = 3          ; DB3: turn lcd/cursor on

.equ   LCD_ON_DISPLAY    = 2          ; DB2: turn display on

.equ   LCD_ON_CURSOR      = 1          ; DB1: turn cursor on

.equ   LCD_ON_BLINK       = 0          ; DB0: blinking cursor

.equ   LCD_MOVE           = 4          ; DB4: move cursor/display

.equ  LCD_MOVE_DISP       = 3          ; DB3: move display (0-> move cursor)

.equ   LCD_MOVE_RIGHT      = 2          ; DB2: move right (0-> left)

.equ   LCD_F          = 5          ; DB5: function set

.equ  LCD_F_8B      = 4         ; DB4: set 8BIT mode (0->4BIT mode)

.equ   LCD_F_2L   = 3          ; DB3: two lines (0->one line)

.equ   LCD_F_10D   = 2         ; DB2: 5x10 font (0->5x7 font)

.equ   LCD_CGRAM           = 6         ; DB6: set CG RAM address

.equ   LCD_DDRAM           = 7         ; DB7: set DD RAM address

 

.equ SCR_L    = 0b00011000   ; Сдвиг экрана влево

.equ SCR_R    = 0b00011100   ; Сдвиг экрана вправо

  

.equ CUR_L    = 0b00010000    ; Сдвиг курсора влево

.equ CUR_R    = 0b00010100   ; Сдвиг курсора вправо

  

==================================================================================

;===========LCDMacros==============================================================

; Init Config

.MACRO LIB_LCD_Init       ; Инициализация LCD

 RCALL InitHW       ; Настроить контрольный порт

 

RCALL LCD_DELAY        ; Подождать

WR_CMD (1<<LCD_F)|(0<<LCD_F_8B)

; Выдать функции в порт. Команда инициализации адресации ДВА РАЗА!!!

WR_CMD (1<<LCD_F)|(0<<LCD_F_8B)

; Выдать функции в порт. Команда инициализации адресации ДВА РАЗА!!!

WR_CMD (1<<LCD_F)|(0<<LCD_F_8B)    

; Выдать функции в порт. Команда инициализации адресации ДВА РАЗА!!!

WR_CMD (1<<LCD_F)|(0<<LCD_F_8B)|(1<<LCD_F_2L)  

; Так как на 4 байтах нельзя передать сразу второй байт

 WR_CMD (1<<LCD_CLR)      ;0x01

WR_CMD (1<<LCD_ENTRY_MODE)|(1<<LCD_ENTRY_INC) ;0x06

WR_CMD (1<<LCD_ON)|(1<<LCD_ON_DISPLAY)|(0<<LCD_ON_CURSOR)|(0<<LCD_ON_BLINK)        ;0x0C

WR_CMD (1<<LCD_HOME)

.ENDM

==================================================================================

;Write Data

.MACRO WR_DATA

LDI  R17,@0

RCALL DATA_WR

.ENDM

==================================================================================

;Write CMD

.MACRO WR_CMD

LDI  R17,@0

RCALL CMD_WR

.ENDM

==================================================================================

; Read Data

.MACRO RD_DATA

RCALL DATA_RD

.ENDM

==================================================================================

; Read CMD

.MACRO RD_CMD

RCALL CMD_RD

.ENDM

==================================================================================

;Set COORD

;Syntax LCD_COORD X,Y

.MACRO LCD_COORD

LDI  R17,(1<<LCD_DDRAM)|(@0+0x40*@1)

RCALL CMD_WR

.ENDM

==================================================================================

;Shift SCREEN/CURSOR

.MACRO SHIFT

LDI  R17,@0

RCALL CMD_WR

.ENDM

==================================================================================

;LCD Clear

.MACRO LCDCLR

LDI  R17,(1<<LCD_CLR)

RCALL CMD_WR

.ENDM

==================================================================================

;Write CGRAM

.MACRO WR_CGADR

LDI  R17,(1<<LCD_CGRAM)|(@0)

RCALL CMD_WR

.ENDM

;Write DDRAM

.MACRO WR_DDADR

LDI  R17,(1<<LCD_DDRAM)|(@0)

RCALL CMD_WR

.ENDM

;===========LCDProc===================================================================

InitHW:  CBI CMD_PORT,RS  ; Выставляем нужные уровни на управляющих выводах

  CBI CMD_PORT,RW   ; Порты на выход

  CBI CMD_PORT,E   ; И сразу же выставляются на 1

  SBI  CMD_DDR,RS

  SBI  CMD_DDR,RW

  SBI  CMD_DDR,E

  

  RCALL PortIn    ; Порт данных на вход

  RET

==================================================================================

BusyWait: CLI     ; Ожидание флага занятости контроллера дисплея

  RCALL PortIn    ; Порты на вход

  

  CBI  CMD_PORT,RS   ; Идет Команда!

  SBI  CMD_PORT,RW   ; Чтение!

 

BusyLoop: SBI  CMD_PORT,E   ; Поднять строб 

  RCALL LCD_Delay   ; Подождать 

  

  IN  R16,DATA_PIN  ; Считать байт

  

  PUSH R16 Сохранить его в стек. Дело в том, что у нас R16 убивается в LCD_Delay

  CBI CMD_PORT,E  ; Бросить строб - первый цикл (старший полубайт)

  RCALL LCD_Delay   ; Подождем маленько

  SBI CMD_PORT,E   ; Поднимем строб

  RCALL LCD_Delay   ; Подождем

  CBI CMD_PORT,E ; Опустим строб - нужно для пропуска второго полубайта

  RCALL LCD_Delay   ; Задержка снова

  POP R16 ; А теперь достаем спрятанны байт - в нем наш флаг. Может быть.

  ANDI R16,0x80   ; Продавливаем по маске. Есть флаг?

  BRNE BusyLoop   ; Если нет, то переход

 

BusyNo:  SEI       ; Разрешаем прерывания.

  RET

==================================================================================

; Запись команды в дисплей. Код команды в R17

CMD_WR:  CLI       ; Запрет прерываний

  RCALL BusyWait   ; Ждем готовности

  CBI  CMD_PORT,RS   ; Идет команда!

  RJMP WR_END    ; Переход на запись

;-----------------------------------------------------------------------------------------

; Запись данных в дисплей. Код данных в R17

DATA_WR: CLI       ; Запрет прерываний

  RCALL BusyWait   ; Ждем готовности

  

  SBI  CMD_PORT,RS   ; Идут данные!

WR_END:  CBI  CMD_PORT,RW   ; Запись!

  SBI  CMD_PORT,E   ; Поднять строб

  

  RCALL PortOut    ; Порт настроить на выход!

  PUSH R17   ; Сохраним данные которые будем выводить в стеке

  ANDI R17,0xF0   ; Отдавим по маске данным младшую тетраду.

  IN  R16,DATA_PORT ; Возьмем из порта данных старое значение

  ANDI R16,0x0F   ; Отдавим ему старшую тетраду

  PUSH R16    ; Сохраним результа в стеке. Пригодится

  OR R16,R17; Склеим младшую тетраду из порта со старшей тетрадой данных

  OUT  DATA_PORT,R16  ; Выдадим этого мутанта в порт.

  RCALL LCD_Delay   ; Подождем

  CBI CMD_PORT,E  ; Бросим строб вниз - данные ушли в индикатор

  RCALL LCD_Delay   ; Подождем  

  SBI  CMD_PORT,E   ; Поднимем строб

  POP  R16   ; Достанем из стека младшую тетраду из порта

  POP  R17    ; И данные которые мы выводим

 

  SWAP R17    ; Поменяем тетрады местами у байта данных

  ANDI R17,0xF0   ; Отдавим младшую тетраду

  OR  R16,R17    

; Склеим младшую тетраду из порта с старшей тетрадой данных (бывшая младшая)

  OUT  DATA_PORT,R16  ; Выдадим в порт

  RCALL LCD_Delay   ; Подождем 

  CBI  CMD_Port,E   ; Бросим строб 

  RCALL PortIn    ; Порт вернем в прежнее состояние - на вход

  SEI       ; Разрешим прерывания

  RET       ; Возврат

==================================================================================

; Чтение команды из дисплея. Результат в R17

CMD_RD:  CLI       ; Запрет прерываний

  RCALL BusyWait   ; Ждем контроллер

  CBI  CMD_PORT,RS   ; Команда!

  

  RJMP RD_END    ; Идем на чтение

 

;-----------------------------------------------------------------------------------------

; Чтение команды из дисплея. Результат в R17

DATA_RD: CLI       ; Запрет прерываний

  RCALL BusyWait   ; Ждем контроллер

  SBI  CMD_PORT,RS   ; Данные!

RD_END:  SBI  CMD_PORT,RW   ; Чтение!

  SBI  CMD_PORT,E   ; Поднимаем строб

  RCALL LCD_Delay   ; Ждем

  IN  R17,DATA_PIN  ; Читаем из порта байт

  CBI  CMD_PORT,E   ; Бросем строб вниз

  ANDI R17,0xF0   ; Отдавливаем ему младшую тетраду

  SWAP R17     ; Обмениваем тетрады местами

  RCALL LCD_Delay   ; Ждем

  SBI  CMD_PORT,E   ; Поднимаем строб

  MOV  R16,R17   ; Прячем старшую тетраду в R16

  IN  R17,DATA_PIN  ; Берем еще один байт

  CBI  CMD_PORT,E   ; Бросаем строб

  ANDI R17,0xF0   ; Отдавливаем младшую тетраду

  OR  R17,R16  ; Склеиваем результат с старшим байтом

  SWAP R17  ; Разорваичаем байт. Т.к. первой выходила старшая тетрада

  SEI       ; разрешаем прерывания

  RET       ; Возврат.

==================================================================================

PortIn:  IN  R16,DATA_DDR  ; Данные из DDR в регистр

  ANDI R16,0x0F   

; Отдавливаем старшую тетраду - нам нужно сохранить младшую и обнулить старшую

  OUT  DATA_DDR,R16  ; Выдаем результат в порт.

  IN  R16,DATA_PORT  ; Берем данные из порта

  ORI  R16,0xF0   

; Выставляем все биты старшей тетрады, не трогая младшую

  OUT  DATA_PORT,R16  ; Выдаем в порт

  RET  

==================================================================================

PortOut: IN  R16,DATA_DDR  ; Данные из ДДР в регистр

  ORI  R16,0xF0   

; Выставляем все биты старшей тетрады, не трогая младшую

  OUT  DATA_DDR,R16  ; Выдаем данные в порт

  RET  

=================================================================================

LCD_Delay: LDI  R16,SPEED ; Задержка на несколько тактов. Для того чтобы дисплей

L_loop:  DEC  R16 ; Успевал обрабатывать данные

  BRNE L_loop

  RET

=================================================================================

Подпрограмма управления дисплеем в графическом режиме:

===========LCDDefine===============================================================

.dseg

LIB_LCD_GS_Step:   .byte 1        ; Следующее событие в очереди

 LIB_LCD_GS_Buffer:   .byte 2        ; 1 - data; 0 - cmd

.cseg

.equ LIB_LCD_GS_Reset_P  = PORTD        ; Reset (active low)

.equ LIB_LCD_GS_Reset_N  = PIND

.equ LIB_LCD_GS_Reset_D  = DDRD

.equ LIB_LCD_GS_Reset_I  = 5

.equ LIB_LCD_GS_Commit_P  = PORTD        ; Storage Register

.equ LIB_LCD_GS_Commit_N  = PIND

.equ LIB_LCD_GS_Commit_D  = DDRD

.equ LIB_LCD_GS_Commit_I  = 6

.equ LIB_LCD_GS_CLK_P  = PORTD        ; Clock Register

.equ LIB_LCD_GS_CLK_N  = PIND

.equ LIB_LCD_GS_CLK_D  = DDRD

.equ LIB_LCD_GS_CLK_I  = 2

 

.equ LIB_LCD_GS_Data_P  = PORTD        ; Data Register

.equ LIB_LCD_GS_Data_N  = PIND

.equ LIB_LCD_GS_Data_D  = DDRD

.equ LIB_LCD_GS_Data_I  = 7

; Номер бита шины управления дисплея

.equ LIB_LCD_GS_Line_CS1  = 1         ; 1 - on; 0 - off

.equ LIB_LCD_GS_Line_CS2  = 2         ; 1 - on; 0 - off

.equ LIB_LCD_GS_Line_RST  = 3         ; 1 - work; 0 - reset

.equ LIB_LCD_GS_Line_RW  = 4         ; 1 - read; 0 - write

.equ LIB_LCD_GS_Line_DI  = 5         ; 1 - data; 0 - instruction

.equ LIB_LCD_GS_Line_E  = 6         ;

.equ LIB_LCD_GS_Line_DEBUG = 7        ====================================================================================

;Write Data

.MACRO LIB_LCD_GS_Write_CMD

 cli      ; Останавливаем прерывания

 

 push XH

push XL

 ldi  XL, @0

ldi  XH, @1

 

ori  XL, (1<<LIB_LCD_GS_Line_RST)  ; Маска

rcall LIB_LCD_GS_Write

pop  XL

 pop  XH

sei       ; Разрешаем прерывания

.ENDM

.MACRO LIB_LCD_GS_Write_Data

 cli      ; Останавливаем прерывания

 

 push XH

push XL

 ldi  XL, @0

ldi  XH, @1

call LIB_LCD_GS_Write

pop  XL

 pop  XH

sei       ; Разрешаем прерывания

.ENDM

=====================================================================================

LIB_LCD_GS_Init:

sbi  LIB_LCD_GS_Reset_D, LIB_LCD_GS_Reset_I  ; Настроили на выход

sbi  LIB_LCD_GS_Reset_P, LIB_LCD_GS_Reset_I  ; Поднимаем строб

sbi  LIB_LCD_GS_Commit_D, LIB_LCD_GS_Commit_I ; Настроили на выход

cbi  LIB_LCD_GS_Commit_P, LIB_LCD_GS_Commit_I ; Опускаем строб

sbi  LIB_LCD_GS_CLK_D, LIB_LCD_GS_CLK_I  ; Настроили на выход

cbi  LIB_LCD_GS_CLK_P, LIB_LCD_GS_CLK_I  ; Опускаем строб

sbi  LIB_LCD_GS_Data_D, LIB_LCD_GS_Data_I  ; Настроили на выход

cbi  LIB_LCD_GS_Data_P, LIB_LCD_GS_Data_I  ; Опускаем строб

ret

=====================================================================================

LIB_LCD_GS_Write:

push OSRG

ldi  OSRG, (1<<LIB_LCD_GS_Line_E)        ; Маска

eor  XL, OSRG

rcall LIB_LCD_GS_SyncReg

rcall LIB_LCD_GS_Transmit

eor  XL, OSRG

rcall LIB_LCD_GS_SyncReg

rcall LIB_LCD_GS_Transmit

eor  XL, OSRG

rcall LIB_LCD_GS_SyncReg

rcall LIB_LCD_GS_Transmit

 pop  OSRG

 ret

=====================================================================================

LIB_LCD_GS_SyncReg:

; XL - CMD

; XH - Data

 push ZH

push ZL

ldi  ZL, low (LIB_LCD_GS_Buffer)    ; Загружаем адрес буффера.

ldi  ZH, High(LIB_LCD_GS_Buffer)    ; Старший и младший байты.

st  Z+, XL

st  Z, XH

pop  ZL

pop  ZH

ret

=====================================================================================

LIB_LCD_GS_Transmit:   ; Останавливаем прерывания

 push OSRG        ; Сохраняем регистр

push Counter        ; Сохраняем регистр

in   OSRG,SREG            ; Save Sreg

push  OSRG      ; Сохранение регистра состояния SREG

push ZH

push ZL

ldi  Counter, 2      ; Выставляем количество байт

ldi  ZL, low (LIB_LCD_GS_Buffer)    ; Загружаем адрес буффера.

ldi  ZH, High(LIB_LCD_GS_Buffer)    ; Старший и младший байты.

 sbi  LIB_LCD_GS_Reset_P,  LIB_LCD_GS_Reset_I   ; Поднимаем строб

cbi  LIB_LCD_GS_Commit_P, LIB_LCD_GS_Commit_I  ; Опускаем строб

LIB_LCD_GS_Transmit_ByteLoop:         ; Цикл отправки байта

 push Counter

 ldi  Counter, 8    ; Выставляем количество бит   ld  OSRG, Z+     ; Читаем байт из буфера

 LIB_LCD_GS_Transmit_BitLoop:

  cbi  LIB_LCD_GS_CLK_P, LIB_LCD_GS_CLK_I    ; Опускаем строб

  lsl  OSRG           ; Старший бит в перенос

  brcc LIB_LCD_GS_Transmit_bit_put0     

; Если в переносе 0 то переходим

  LIB_LCD_GS_Transmit_bit_put1:

   sbi  LIB_LCD_GS_Data_P, LIB_LCD_GS_Data_I  

; Поднимаем строб

   rjmp LIB_LCD_GS_Transmit_bit_sync

  LIB_LCD_GS_Transmit_bit_put0:

   cbi  LIB_LCD_GS_Data_P, LIB_LCD_GS_Data_I  

; Опускаем строб

   rjmp LIB_LCD_GS_Transmit_bit_sync

  LIB_LCD_GS_Transmit_bit_sync:

   sbi  LIB_LCD_GS_CLK_P, LIB_LCD_GS_CLK_I

; Поднимаем строб

 dec  Counter

 cpi  Counter, 0

 brne LIB_LCD_GS_Transmit_BitLoop

 pop  Counter

dec  Counter

cpi  Counter, 0

brne LIB_LCD_GS_Transmit_ByteLoop

sbi  LIB_LCD_GS_Commit_P, LIB_LCD_GS_Commit_I  ; Поднимаем строб

cbi  LIB_LCD_GS_Reset_P,  LIB_LCD_GS_Reset_I   ; Опускаем строб

 pop  ZL

pop  ZH

pop  OSRG      ; Восстанавливаем регистр состояния SREG

out  SREG,OSRG     ; Восстанавливаем регистр

pop  OSRG      ; Разрешаем прерывания

RCALL LCD_Delay

ret

=====================================================================================

; Functions High

LIB_LCD_GS_On:

LIB_LCD_GS_Write_CMD (1<<LIB_LCD_GS_Line_CS1)|(1<<LIB_LCD_GS_Line_CS2), 0b00111111

ret

LIB_LCD_GS_Off:

LIB_LCD_GS_Write_CMD (1<<LIB_LCD_GS_Line_CS1)|(1<<LIB_LCD_GS_Line_CS2), 0b00111110

ret

LIB_LCD_GS_Load:

LIB_LCD_GS_Write_CMD (1<<LIB_LCD_GS_Line_CS1)|(1<<LIB_LCD_GS_Line_CS2), 0b00111111 ; Display ON

LIB_LCD_GS_Write_CMD (1<<LIB_LCD_GS_Line_CS1)|(1<<LIB_LCD_GS_Line_CS2), 0b01000011 ; Set Address

LIB_LCD_GS_Write_CMD (1<<LIB_LCD_GS_Line_CS1)|(1<<LIB_LCD_GS_Line_CS2), 0b10111011 ; Set Page

LIB_LCD_GS_Write_CMD (1<<LIB_LCD_GS_Line_CS1)|(1<<LIB_LCD_GS_Line_CS2), 0b11000001 ; Display Line

LIB_LCD_GS_Write_Data(1<<LIB_LCD_GS_Line_CS1)|(1<<LIB_LCD_GS_Line_CS2), 0b01010101

LIB_LCD_GS_Write_Data(1<<LIB_LCD_GS_Line_CS1)|(1<<LIB_LCD_GS_Line_CS2), 0b01010101

LIB_LCD_GS_Write_Data(1<<LIB_LCD_GS_Line_CS1)|(1<<LIB_LCD_GS_Line_CS2), 0b01010101

LIB_LCD_GS_Write_Data(1<<LIB_LCD_GS_Line_CS1)|(1<<LIB_LCD_GS_Line_CS2), 0b01010101

LIB_LCD_GS_Write_Data(1<<LIB_LCD_GS_Line_CS1)|(1<<LIB_LCD_GS_Line_CS2), 0b01010101

LIB_LCD_GS_Write_Data(1<<LIB_LCD_GS_Line_CS1)|(1<<LIB_LCD_GS_Line_CS2), 0b01010101

 ret

;LIB_LCD_GS_COORD:

;LIB_LCD_GS_SetY:

=====================================================================================

Подпрограмма реализации сетевого интерфейса

;=============================================================================

; Данные в памяти

;=============================================================================

.equ UART_Packet_Size  = 12

.dseg

UART_Address:   .byte 1

UART_Packet_CRC8:  .byte 1

UART_R_Count:   .byte 1

UART_R_SAddress:  .byte 1

UART_R_DAddress:  .byte 1

UART_R_Command:   .byte 1

UART_R_Data:   .byte 8

UART_R_Data_CRC:  .byte 1

UART_S_Count:   .byte 1

UART_S_SAddress:  .byte 1

UART_S_DAddress:  .byte 1

UART_S_Command:   .byte 1

UART_S_Data:   .byte 8

. UART_S_Data_CRC:  .byte 1

.cseg

;==========================================================================

; Macro

;==========================================================================

.MACRO mk_uart_crc8

; @0 = UART_[R|S]_Address

; OSRG - Out

push Counter

ldi  Counter, UART_Packet_Size-1 ; Пакет из 11+crc байт

ldi ZL, low(@0)

ldi ZH, high(@0)

 rcall  CRC8

pop  Counter

.ENDMACRO

; Добавить управление драйвером приема

.MACRO mk_uart_irq_rx_enable

sbi  UCSRB, RXCIE

.ENDMACRO

.MACRO mk_uart_irq_rx_disable

cbi  UCSRB, RXCIE

.ENDMACRO

.MACRO mk_uart_irq_tx_enable

sbi  UCSRB, TXCIE

sbi  UCSRB, UDRIE

.ENDMACRO

.MACRO mk_uart_irq_tx_disable

cbi  UCSRB, TXCIE

cbi  UCSRB, UDRIE

.ENDMACRO

.MACRO mk_uart_packet_clear

push OSRG

push Counter

clr  OSRG

ldi  ZL, low(@0)

ldi  ZH, high(@0)

ldi  Counter, UART_Packet_Size-1

rcall UART_Packet_Clear

pop  Counter

 pop  OSRG

.ENDMACRO

;=============================================================================

; Команда начала отправки буффера

;=============================================================================

UART_SendBuffer:

StateSave       ; Сохраняем состояние в стек

clr  ZL      ; Очищаем регистр для адреса ячейки

 clr  ZH      ;

lds  Counter, UART_S_Count    ; Читаем значение счетсчика

 cpi  Counter, 0x01     ; Проверяем на 0x01

 brne UART_SendBuffer_Exit     ; Нет, валим

 mk_uart_irq_rx_disable       ; Запрещаем прием данных

sbis  UCSRA,UDRE      ; Пропуск если нет флага готовности

rjmp UART_SendBuffer_Wait      ; ждем готовности - флага UDRE

ldi  ZL, UART_S_Count    ; Записываем начальное положение буфера

add  ZL, Counter   ; Суммируем и получаем [адрес байта для записи]

ld  OSRG, Z    ; Считываем из памяти нужный бай

out  UDR, OSRG     ; Отсылаем текущий байт в порт

INC  Counter    ; Увеличиваем текущее положение каретки на 1

 STS  UART_S_Count, Counter     ; Сохраняем каретку

 mk_uart_irq_tx_enable      ; Разрешаем передачу данных

 rjmp UART_SendBuffer_Exit

UART_SendBuffer_Wait:

 SetTimerTask TS_UART_SendBuffer, 5  ;  Вызываем сами себя через 5 милисекунд

UART_SendBuffer_Exit:

 StateRestore     ; Восстанавливаем состояние из стека

 ret

;=============================================================================

; Процедура разбора входяшего пакета(полного)

;=============================================================================

UART_ReciveParse:

StateSave       ; Сохраняем состояние в стек

lds  Counter, UART_R_Count     ; Читаем значение счетсчика

cpi  Counter, 0xFF       ; Проверяем стоп бит

brne UART_ReciveParse_Exit    ; Стоит не стоп бит, пропускаем обработку

lds  Counter, UART_S_Count     ; Читаем значение счетсчика

cpi  Counter, 0xFF       ; Проверяем стоп бит

brne UART_ReciveParse_Wait   ; Стоит не стоп бит, подождем 50 миллисекунд

lds  Counter, UART_R_Command   ; Читаем из памяти команду

lsl  Counter   ; Сдвигом влево умножаем содержимое Counter на два.

ldi  ZL, low (UART_Commands*2)   ; Загружаем адрес нашей таблицы.

ldi  ZH, High(UART_Commands*2)   ; Старший и младший байты.

clr  OSRG      ; Сбрасываем регистр OSRG - нам нужен ноль.

add  ZL, Counter  ; Складываем младший байт адреса. Если возникнет переполнение

adc  ZH, OSRG    ; То вылезет флаг переноса.

lpm  Counter,Z+    ; Загрузили в Counter адрес из таблицы

lpm  OSRG,Z     ; Старший и младший байт

movw ZH:ZL,OSRG:Counter       ; забросили адрес в Z

ijmp        ; Переходим к обработке команды

UART_ReciveParse_Wait:

 SetTimerTask TS_UART_ReciveParse, 5  ;  Вызываем сами себя через 5 милисекунд

UART_ReciveParse_Exit:

 StateRestore     ; Восстанавливаем состояние из стека

 ret

UART_ReciveParse_Return:

lds  Counter, UART_S_Count    ; Читаем значение счетсчика

 cpi  Counter, 0x01 ; Проверяем на наличае начального положения каретки

brne UART_ReciveParse_ClearAll ; Не стоит: значит сносим буффера и включаем прерывания

 lds  OSRG, UART_Packet_CRC8   ; Получаем параметр о CRC8

 cpi  OSRG, 0x00     ; Если параметр 0x00

 ;breq UART_ReciveParse_SetAddrs   ; то пропускаем проверку CRC8

 mk_uart_crc8 UART_S_Count+1   ; Расчитываем CRC8 (выхлоп в OSRG)

 sts  UART_S_Data_CRC, OSRG ; Сохраняем контрольную сумму

UART_ReciveParse_SetAddrs:

 lds  OSRG, UART_R_SAddress  ; Считываем исходяший адрес

 sts  UART_S_DAddress, OSRG  ; Вписываем адрес получателя

 lds  OSRG, UART_Address   ; Считываем адрес устройства

 sts  UART_S_SAddress, OSRG  ; Вписываем исходяший адрес

 lds  OSRG, UART_R_Command  ; Считываем номер команды

 sts  UART_S_Command, OSRG  ; Вписываем номер команды

 rcall UART_SendBuffer    ; Вызываем функцию отправки первого байта  rjmp UART_ReciveParse_Clear   ; Сносим входящий буфер

UART_ReciveParse_ClearAll:

 ; Сносим данные и выставляем нули

 mk_uart_packet_clear  UART_R_Count

 mk_memory_set   UART_R_Count, 0x01

 mk_memory_set   UART_S_Count, 0xFF

 mk_uart_irq_tx_disable     ; Запрещаем передачу данных

 mk_uart_irq_rx_enable      ; Разрешаем прием данных

 rjmp UART_ReciveParse_Exit

UART_ReciveParse_Clear:

 ; Сносим данные и выставляем нули

 mk_uart_packet_clear  UART_R_Count

 mk_memory_set   UART_R_Count, 0x01

 rjmp UART_ReciveParse_Exit

;=============================================================================

; Список команд протокола

;=============================================================================

; 0x00 - Ping

; пинговалка, спросили - ответили

UART_Command_00:

 mk_memory_set UART_S_Count,   0x01  ; Выставляем каретку, для отправки

mk_memory_set UART_S_Data,    0x07

; Копируем LIB_1Wire_DS1820_Strachpad

; push  OSRG

; push Counter

; push ZL

; push ZH

; push XL

; push XH

; ldi  Counter, 8

; ldi  ZL, low (LIB_1Wire_DS1820_Strachpad) ; Загружаем адрес нашей таблицы.

; ldi  ZH, High(LIB_1Wire_DS1820_Strachpad) ; Старший и младший байты.

; ldi  XL, low (UART_S_Data)   ; Загружаем адрес нашей таблицы.

; ldi  XH, High(UART_S_Data)  ; Старший и младший байты.

; UART_Command_00_data_loop:

;  ld  OSRG, Z+

;  st  X+, OSRG

;

;  dec  Counter

;  cpi  Counter, 0x00

;  brne UART_Command_00_data_loop

;

; pop  XH

; pop  XL

; pop  ZH

; pop  ZL

; pop  Counter

; pop  OSRG

 rjmp UART_ReciveParse_Return   ; Возвращаемся в процедуру проверки буффера

;=============================================================================

UART_Command_01:

mk_memory_set UART_S_Count,   0x01  ; Выставляем каретку, для отправки

mk_memory_set UART_S_Data,    0x00

Debug_Led_Yellow_On

push  OSRG

push Counter

push ZL

push ZH

push XL

push XH

ldi  Counter, 2

ldi  ZL, low (UART_R_Data)    ; Загружаем адрес нашей таблицы.

ldi  ZH, High(UART_R_Data)   ; Старший и младший байты.

ldi  XL, low (LIB_LCD_GS_Buffer)   ; Загружаем адрес нашей таблицы.

ldi  XH, High(LIB_LCD_GS_Buffer)   ; Старший и младший байты.

UART_Command_01_data_loop:

 ld  OSRG, Z+

 st  X+, OSRG

 dec  Counter

 cpi  Counter, 0x00

 brne UART_Command_01_data_loop

rcall  LIB_LCD_GS_Transmit

pop  XH

pop  XL

pop  ZH

pop  ZL

pop  Counter

pop  OSRG           ; Восстанавливаем регистр

Debug_Led_Yellow_Off

rjmp UART_ReciveParse_Return   ; Возвращаемся в процедуру проверки буффера

;=============================================================================

UART_Command_02:

mk_memory_set UART_S_Count,   0x01  ; Выставляем каретку, для отправки

mk_memory_set UART_S_Data,    0xff

Debug_Led_Yellow_Off

push  OSRG

push ZL

push ZH

ldi  ZL, low (UART_R_Data)    ; Загружаем адрес нашей таблицы.

ldi  ZH, High(UART_R_Data)   ; Старший и младший байты.

ld  OSRG, Z

; call LIB_Power_Update

pop  ZH

pop  ZL

pop  OSRG

 rjmp UART_ReciveParse_Return   ; Возвращаемся в процедуру проверки буфера

;=============================================================================

UART_Commands:  

.dw UART_Command_00, UART_Command_01, UART_Command_02

=============================================================================

UART_Packet_Clear:

st  Z+, OSRG

dec  Counter

brne UART_Packet_Clear

 ret

==============================================================================

Основной файл прошивки (generic)

 .include "m32def.inc"    ; Используем Mega32

;=============================================================================

 .include "RTOS-Define.asm"   ; Наши все определения переменных

.include "RTOS-Macros.asm"   ; Все макросы у нас тут

.include "RTOS-Interrupts.asm"  ; Все вектора прерываний

;=============================================================================  .ORG INT_VECTORS_SIZE   ; Конец таблицы прерываний

;=============================================================================

.include "RTOS-Network.asm"   ; Все операции с сетью.+

;=============================================================================

.include "RTOS-InterruptsProcs.asm" ; Все обработчики прерываний

;=============================================================================

; Library Code

;=============================================================================

.include "LIB-LCD.asm"   ; LCD экран.

 .include "LIB-LCD-GraphShift.asm" ; LCD экран графический на сдвиговых регистрах

; .include "LIB-Power.asm"   ; Релюшки.

.include "LIB-1Wire-DS1820.asm"  ; DS1820 Датчик темпиратуры

; .include "LIB-I2C.asm"   ; I2C

; .include "LIB-I2C-PCF8583.asm"  ; PCF8583 - Часы

; .include "LIB-SPI-SDCard.asm"  ; S D Card

; .include "LIB-SPI-AD7705.asm"  ; AD7705 - 2-/3-Channel 16-Bit, Sigma-Delta ADCs

;=============================================================================

; Main code

;=============================================================================

Reset:  

.include "RTOS-Init.asm"   ; Все инициализации тут.

;=============================================================================

; Library Code

;=============================================================================

; LCD

LIB_LCD_Init

rcall LIB_LCD_GS_Init

rcall LIB_LCD_GS_On

rcall LIB_LCD_GS_Load

; rcall LIB_Power_Init

rcall LIB_IR_Init

rcall LIB_1Wire_DS1820_Init

;

; I2C RTS

; LIB_IIC_Init

; SPI

; LIB_SPI_Init

; rcall LIB_SPI_SDCard_Init

; rcall LIB_SPI_AD7705_Init

; LIB_SPI_AD7705_Device_On      ; Выбираем устройство

rcall SW_Display_Init       ; Начинаем отрисовку

;=============================================================================

; Background

;=============================================================================

Background:

rcall Debug_LedBlink

MainLoop:

 wdr  ; Reset Watch DOG (Если не "погладить" "собаку". то она устроит reset для процессора)

rcall  ProcessTaskQueue   ; Обработка очереди процессов

rcall  Idle      ; Простой Ядра

rjmp  MainLoop     ; Основной цикл микроядра РТОС

;=============================================================================

; все задачи которые будет выболнять микроядро

;=============================================================================

Idle:  NOP

  RET

;-----------------------------------------------------------------------------

;Task1:  RET

;-----------------------------------------------------------------------------

;Task2:  RET

;-----------------------------------------------------------------------------

Task3:  RET

;-----------------------------------------------------------------------------

Task4:  RET

;-----------------------------------------------------------------------------

Task5:  RET

;-----------------------------------------------------------------------------

Task6:  RET

;-----------------------------------------------------------------------------

Task7:  RET

;-----------------------------------------------------------------------------

Task8:  RET

;-----------------------------------------------------------------------------

Task9:  RET

;-----------------------------------------------------------------------------

Debug_LedBlink:

SetTimerTask TS_Debug_LedBlink, 500

; rcall LIB_SPI_AD7705_Init

; rcall LIB_SPI_AD7705_Configure_CH1

; LIB_SPI_RWtest

; rcall LIB_SPI_AD7705_Read_CH1

; rcall LIB_SPI_AD7705_Read

;

;LIB_SPI_Device_On

; sbis UCSRA, UDRE

; rjmp Skip

; lds  OSRG, LIB_SPI_AD7705_CH1_Data_H

; out  UDR, OSRD

; rcall Debug_SD

Skip:

lds  OSRG, Debug_Led_Red_State

cpi  OSRG, 0

breq Light

sbic Debug_Led_Red_N, Debug_Led_Red

rjmp Dark

Light:  

 Debug_Led_Red_On

 ldi  OSRG, 0xFF

 sts  Debug_Led_Red_State, OSRG

 RET

Dark:  

 Debug_Led_Red_Off

 ldi  OSRG, 0x00

 sts  Debug_Led_Red_State, OSRG

 RET

;Debug_SD:

; ldi  ZL, low(LIB_SPI_SDCard_Buffer)

; ldi  ZH, high(LIB_SPI_SDCard_Buffer)

 

;  clr  LIB_SPI_SDCard_AdrHH    ; Очищаем Адресацию

;  clr  LIB_SPI_SDCard_AdrHL

;  clr  LIB_SPI_SDCard_AdrLH

clr  LIB_SPI_SDCard_AdrLL

; rcall LIB_SPI_SDCard_ReadSector

; ======

; ldi  ZL, low(LIB_SPI_SDCard_Buffer)

; ldi  ZH, high(LIB_SPI_SDCard_Buffer)

;  clr  LIB_SPI_SDCard_AdrHH    ; Очищаем Адресацию

;  clr  LIB_SPI_SDCard_AdrHL

;  clr  LIB_SPI_SDCard_AdrLH

;  clr  LIB_SPI_SDCard_AdrLL

; rcall LIB_SPI_SDCard_ReadSector

; ldi  ZL, low(LIB_SPI_SDCard_Buffer)

;  ldi  ZH, high(LIB_SPI_SDCard_Buffer)

; ser  Counter

; ML:

;  ld  OSRG, Z+   ; Считываем из памяти нужный бай

;  ML2:

;   sbis UCSRA, UDRE

;   rjmp ML2

;   out  UDR, OSRG  ; Отсылаем текуший байт в порт

; dec  Counter

; brne  ML

; ret

;=============================================================================

; RTOS Here

;=============================================================================

.include "RTOS-Kernel.asm" ; Подклчюаем ядро ОС

TaskProcs:  

.dw Idle       ; [00]

.dw UART_ReciveParse    ; [01]

.dw UART_SendBuffer     ; [02]

.dw LIB_1Wire_DS1820_Task   ; [03] LIB_1Wire_DS1820_Task

.dw Task4       ; [04]

.dw LIB_IR_Task      ; [05]

.dw Task6       ; [06]

.dw Task7       ; [07]

.dw SW_Display_Update    ; [08]

 .dw Debug_LedBlink     ; [09]

;============================================================================

Управление внешними устройствами при помощи электромагнитных реле:

.equ LIB_Power_P  = PORTC

.equ LIB_Power_D  = DDRC

.equ LIB_Power_N  = PINC

.dseg

 LIB_Power_RAM:   .byte 1  ; Буффер для приема\\передачи

.eseg

LIB_Power_EEROM:  .byte 1   ; Буффер для приема\\передачи

.cseg

LIB_Power_Init:

ser  OSRG      ; 0xFF

 out  LIB_Power_D, OSRG    ; Инициализируем порт на выход

        ; Read from EEROM to RAM

ret

; OSRG - New Status

LIB_Power_Update:

push ZL

push ZH

out  LIB_Power_P, OSRG

ldi  ZL, low (LIB_Power_RAM)   ; Загружаем адрес нашей таблицы.

ldi  ZH, High(LIB_Power_RAM)   ; Старший и младший байты.

st  Z, OSRG

pop  ZH

pop  ZL

ret

; OSRG - Status

LIB_Power_Read:

 ret

Работа с датчиком температуры:

.equ LIB_1Wire_DS1820_D   = DDRD     ;

.equ LIB_1Wire_DS1820_P   = PORTD     ;

.equ LIB_1Wire_DS1820_N   = PIND     ;

.equ LIB_1Wire_DS1820_DQ   = 4      ; DQ  

.dseg

LIB_1Wire_DS1820_Step:   .byte 1  ; Следующее событие в очереди

LIB_1Wire_DS1820_Strachpad:  .byte 8    ; Текущее значение

LIB_1Wire_DS1820_Buffer:  .byte 9    ; Временный буффер

.cseg

.equ LIB_1Wire_DS1820_TaskId  = 3   ; ID основного процесса библиотеки

.equ LIB_1Wire_DS1820_TaskParseId= 0xFF ; ID процесса, который надо запустить при получении данных

=====================================================================================

.MACRO LIB_1Wire_DS1820_TaskSet

ldi  OSRG, @0

sts  LIB_1Wire_DS1820_Step, OSRG

SetTask LIB_1Wire_DS1820_TaskId

.ENDM

.MACRO LIB_1Wire_DS1820_TaskSetTimer

ldi  OSRG, @0

sts  LIB_1Wire_DS1820_Step, OSRG

SetTimerTask LIB_1Wire_DS1820_TaskId, @1

.ENDM

=====================================================================================

LIB_1Wire_DS1820_Init:

LIB_1Wire_DS1820_TaskSetTimer 0x00, 100

ret

=====================================================================================

LIB_1Wire_DS1820_Task:

push XH

push XL

push ZH

push ZL

push OSRG

push Counter

 lds  XL, LIB_1Wire_DS1820_Step   ; Читаем из памяти команду

lsl  XL   ; Сдвигом влево умножаем содержимое Counter на два.

ldi  ZL, low (LIB_1Wire_DS1820_Commands*2) ; Загружаем адрес нашей таблицы.

ldi  ZH, High(LIB_1Wire_DS1820_Commands*2) ; Старший и младший байты.

clr  XH     ; Сбрасываем регистр OSRG - нам нужен ноль.

add  ZL, XL   ; Складываем младший байт адреса. Если возникнет переполнение

adc  ZH, XH      ; То вылезет флаг переноса.

lpm  XL,Z+     ; Загрузили в Counter адрес из таблицы

lpm  XH,Z       ; Старший и младший байт

movw ZH:ZL,XH:XL       ; забросили адрес в Z

ijmp        ; Переходим к обработке команды

LIB_1Wire_DS1820_Return:

 pop  Counter

pop  OSRG

pop  ZL

pop  ZH

pop  XL

pop  XH

 ret

=====================================================================================

LIB_1Wire_DS1820_Command_00:    ; Инициализация преобразования

rcall  LIB_1Wire_DS1820_Reset      ; вызов обнуления линии

ldi  OSRG, 0xCC       ; пропуск идентификации

rcall  LIB_1Wire_DS1820_WriteByte

ldi  OSRG, 0x44        ; начало преобразования

rcall  LIB_1Wire_DS1820_WriteByte

 LIB_1Wire_DS1820_TaskSetTimer 0x01, 10

rjmp LIB_1Wire_DS1820_Return

;================

LIB_1Wire_DS1820_Command_01:      ; Получение данных

rcall  LIB_1Wire_DS1820_Reset      ; вызов обнуления линии

ldi  OSRG, 0xCC       ; пропуск идентификации

rcall  LIB_1Wire_DS1820_WriteByte

ldi  OSRG, 0xBE        ; запрос на данные

 rcall  LIB_1Wire_DS1820_WriteByte

LIB_1Wire_DS1820_TaskSet 0x02

rjmp LIB_1Wire_DS1820_Return

;================

LIB_1Wire_DS1820_Command_02:      ; Получение данных

ldi  Counter, 9

ldi  ZL, low (LIB_1Wire_DS1820_Buffer)  ; Загружаем адрес нашей таблицы.

ldi  ZH, High(LIB_1Wire_DS1820_Buffer)   ; Старший и младший байты.

 LIB_1Wire_DS1820_Command_02_loop:

 rcall LIB_1Wire_DS1820_ReadByte

 st  Z+, OSRG

 dec  Counter

 brne LIB_1Wire_DS1820_Command_02_loop

LIB_1Wire_DS1820_TaskSet 0x03

rjmp LIB_1Wire_DS1820_Return

;================

LIB_1Wire_DS1820_Command_03:   Подсчет контрольной суммы и копирование в рабочую область

 ldi  ZL, low(LIB_1Wire_DS1820_Buffer)

 ldi  ZH, high(LIB_1Wire_DS1820_Buffer)

 ldi  Counter, 8

rcall CRC8      ; Считаем контрольную сумму буффера

ld  OSRD, Z

cp  OSRG, OSRD          ; Если не сходится то пропускаем копирование

 brne LIB_1Wire_DS1820_Command_03_skip

 cli              ; Копирование памяти! ОТРУБАЕМ ПРЕРЫВАНИЯ

ldi  XL, low(LIB_1Wire_DS1820_Strachpad)  ; Копируем буфер в страчпад

 ldi  XH, high(LIB_1Wire_DS1820_Strachpad)

ldi  ZL, low(LIB_1Wire_DS1820_Buffer)

 ldi  ZH, high(LIB_1Wire_DS1820_Buffer)

ldi  Counter, 8

LIB_1Wire_DS1820_Command_03_loop:

 ld  OSRG, Z+

 st  X+, OSRG

dec  Counter

brne LIB_1Wire_DS1820_Command_03_loop

sei        ; Включаем прерывания  

ldi  OSRG, LIB_1Wire_DS1820_TaskParseId  ; Загружаем ID процедуры обработки

 cpi  OSRG, 0xFF          ; Если 0xFF то пропускаем обработку

 breq LIB_1Wire_DS1820_Command_03_skip

SetTask LIB_1Wire_DS1820_TaskParseId   ; Ставим в очередь процедуру обработки

LIB_1Wire_DS1820_Command_03_skip:

 LIB_1Wire_DS1820_TaskSet 0x00

rjmp LIB_1Wire_DS1820_Return

;================

LIB_1Wire_DS1820_Commands:  

.dw LIB_1Wire_DS1820_Command_00, LIB_1Wire_DS1820_Command_01, LIB_1Wire_DS1820_Command_02, LIB_1Wire_DS1820_Command_03

=====================================================================================

LIB_1Wire_DS1820_Reset:

cbi   LIB_1Wire_DS1820_P, LIB_1Wire_DS1820_DQ

sbi  LIB_1Wire_DS1820_D, LIB_1Wire_DS1820_DQ

ldi  OSRG,  220        ; обнуление 600мкс

rcall  LIB_1Wire_DS1820_Delay

 

cbi  LIB_1Wire_DS1820_D, LIB_1Wire_DS1820_DQ  

 ldi  OSRG,  220      ; принятие импульса присутствия 600мкс

 rcall  LIB_1Wire_DS1820_Delay

ret

=====================================================================================

; IN - OSRG  - Command

LIB_1Wire_DS1820_WriteByte:

push Counter

ldi  Counter,8

LIB_1Wire_DS1820_WriteByte_loop:

 lsr  OSRG      ; Старший бит в перенос

 brcs  LIB_1Wire_DS1820_WriteByte_loop_put_1  ; пререход если CF=1

 LIB_1Wire_DS1820_WriteByte_loop_put_0:

  push OSRG

  cbi   LIB_1Wire_DS1820_P, LIB_1Wire_DS1820_DQ

  sbi  LIB_1Wire_DS1820_D, LIB_1Wire_DS1820_DQ

  ldi  OSRG,  26        ; 70мкс

  rcall  LIB_1Wire_DS1820_Delay

  cbi  LIB_1Wire_DS1820_D, LIB_1Wire_DS1820_DQ

  rjmp LIB_1Wire_DS1820_WriteByte_loop_wait

 LIB_1Wire_DS1820_WriteByte_loop_put_1:

  push OSRG

  cbi   LIB_1Wire_DS1820_P, LIB_1Wire_DS1820_DQ

  sbi  LIB_1Wire_DS1820_D, LIB_1Wire_DS1820_DQ

  ldi  OSRG,  1       ; 2,7мкс

  rcall  LIB_1Wire_DS1820_Delay

  cbi  LIB_1Wire_DS1820_D, LIB_1Wire_DS1820_DQ

  ldi  OSRG,  20     ; 60мкс - продление "1"

  rcall  LIB_1Wire_DS1820_Delay

  rjmp LIB_1Wire_DS1820_WriteByte_loop_wait

 LIB_1Wire_DS1820_WriteByte_loop_wait:

  ldi  OSRG,  1       ; 2,7мкс

  rcall  LIB_1Wire_DS1820_Delay

  pop  OSRG

dec  Counter

brne  LIB_1Wire_DS1820_WriteByte_loop    ; проверка счетчика

pop  Counter

ret

=====================================================================================

LIB_1Wire_DS1820_ReadByte:

push Counter

push OSRD

clr  OSRD

ldi  Counter, 8

LIB_1Wire_DS1820_ReadByte_loop:

 cbi   LIB_1Wire_DS1820_P, LIB_1Wire_DS1820_DQ

 sbi  LIB_1Wire_DS1820_D, LIB_1Wire_DS1820_DQ

 ldi  OSRG,  1        ; 2,7мкс

 rcall  LIB_1Wire_DS1820_Delay

 cbi  LIB_1Wire_DS1820_D, LIB_1Wire_DS1820_DQ

 ldi  OSRG,  3        ; 2,7мкс

 rcall  LIB_1Wire_DS1820_Delay

 sbic  LIB_1Wire_DS1820_N, LIB_1Wire_DS1820_DQ

; читаем бит с DQ и пропускаем переход если бит пустой

 rjmp  LIB_1Wire_DS1820_loop_get_1

 LIB_1Wire_DS1820_loop_get_0:

  clc

  rjmp LIB_1Wire_DS1820_loop_render

 LIB_1Wire_DS1820_loop_get_1:

  sec

;   rjmp LIB_1Wire_DS1820_loop_render

 LIB_1Wire_DS1820_loop_render:

  ror  OSRD

  ldi  OSRG,  22    ; 2,7мкс 

 rcall  LIB_1Wire_DS1820_Delay

dec  Counter

brne LIB_1Wire_DS1820_ReadByte_loop

mov  OSRG, OSRD

pop  OSRD

pop  Counter

ret

=====================================================================================

; IN - OSRG

LIB_1Wire_DS1820_Delay:

push Counter

LIB_1Wire_DS1820_Delay_loop:

 ldi  Counter, 3    ; 2,75uS*wreg

 LIB_1Wire_DS1820_Delay_loop_sub:

  nop

  dec  Counter

  brne LIB_1Wire_DS1820_Delay_loop_sub

dec  OSRG

brne LIB_1Wire_DS1820_Delay_loop

 pop  Counter

ret

=====================================================================================

Реализация I2C протокола:

..MACRO LIB_IIC_Init

 mk_register_set  TWBR,0xC0  ; Настройка частоты работы TWI

mk_register_set  TWSR, (1<<TWPS1|1<<TWPS0)

.ENDM

; Даем старт на линию I2C

IIC_START:

mk_register_set  TWCR,1<<TWINT|1<<TWSTA|1<<TWEN|0<<TWIE

IIC_S:  

IN  OSRG,TWCR

ANDI OSRG,1<<TWINT   

 BREQ IIC_S   ; Ждем пока передатчик IIC выполнит старт

RET

;-----------------------------------------------------------------------------

;Посылаем байт по IIC

IIC_BYTE:   

 OUT     TWDR,OSRG

mk_register_set  TWCR,1<<TWINT|1<<TWEN|0<<TWIE

IIC_B:  

IN  OSRG,TWCR

ANDI OSRG,1<<TWINT ; Ждем пока передатчик пошлет байт   

 BREQ IIC_B

RET

;-----------------------------------------------------------------------------

; Принять байт.

IIC_RCV:

mk_register_set  TWCR,1<<TWINT|1<<TWEN|1<<TWEA|0<<TWIE

IIC_R:  

IN  OSRG,TWCR

ANDI OSRG,1<<TWINT   

 BREQ IIC_R   ; Ждем пока байт будет принят

RET

;-----------------------------------------------------------------------------

; Принять последний байт.

IIC_RCV2:

 mk_register_set  TWCR,1<<TWINT|1<<TWEN|0<<TWEA|0<<TWIE

IIC_R2:  

IN  OSRG,TWCR

ANDI OSRG,1<<TWINT ; Ждем пока байт будет принят  

BREQ IIC_R2

RET

;-----------------------------------------------------------------------------

; Сгенерировать STOP

IIC_STOP:

mk_register_set  TWCR,1<<TWINT|1<<TWSTO|1<<TWEN|0<<TWIE

IIC_ST:  

IN  OSRG,TWCR

ANDI OSRG,1<<TWSTO   

 BREQ IIC_ST   ; Ждем пока не будет готов стоп.

RET

Реализация часов и календаря:

.equ LIB_SPI_AD7705_D   = DDRB     ;

.equ LIB_SPI_AD7705_P   = PORTB     ;

.equ LIB_SPI_AD7705_N   = PINB     ;

.equ LIB_SPI_AD7705_MOSI   = 5      ;

.equ LIB_SPI_AD7705_MISO   = 6      ;

.equ LIB_SPI_AD7705_SCK   = 7      ;

.equ LIB_SPI_AD7705_DRDY   = 2      ;

.equ LIB_SPI_AD7705_CS   = 1      ;

=====================================================================================

.MACRO  LIB_SPI_AD7705_Device_On

cbi  LIB_SPI_AD7705_P, LIB_SPI_AD7705_CS    ; Опускаем строб(линия инверная)

.ENDM

.MACRO  LIB_SPI_AD7705_Device_Off

sbi  LIB_SPI_AD7705_P, LIB_SPI_AD7705_CS    ; Поднимаем строб

.ENDM

=====================================================================================

LIB_SPI_AD7705_COM:

sbis UCSRA, UDRE

rjmp LIB_SPI_AD7705_COM

out  UDR, OSRG

ret

=====================================================================================

LIB_SPI_AD7705_Init:

cbi  LIB_SPI_AD7705_D, LIB_SPI_AD7705_DRDY ; Порт ны вход

 sbi  LIB_SPI_AD7705_P, LIB_SPI_AD7705_DRDY ; С поддяжкой в 100к до питания

 sbi  LIB_SPI_AD7705_D, LIB_SPI_AD7705_MOSI   ; Порт на выход

sbi  LIB_SPI_AD7705_D, LIB_SPI_AD7705_SCK   ; Порт на выход

sbi  LIB_SPI_AD7705_D, LIB_SPI_AD7705_CS ; Порт на выход

sbi  LIB_SPI_AD7705_P, LIB_SPI_AD7705_CS ; Поднимаем строб

cbi  LIB_SPI_AD7705_D, LIB_SPI_AD7705_MISO ; Порт ны вход

 sbi  LIB_SPI_AD7705_P, LIB_SPI_AD7705_MISO ; С поддяжкой в 100к до питания

mk_register_set GICR, (1<<INT2)    ; Включаем прерывание на DRDY

; mk_register_set SPCR,     ((1<<MSTR)|(1<<CPOL)|(1<<CPHA)|(0<<SPI2X)|(1<<SPR1)|(1<<SPR0))

; mk_register_set SPCR, ((1<<SPE)|(1<<MSTR)|(1<<CPOL)|(1<<CPHA)|(0<<SPI2X)|(1<<SPR1)|(1<<SPR0))

mk_register_set SPCR, 0b1011111

ret

=====================================================================================

; OSRG - Input byte

LIB_SPI_AD7705_WriteToReg:

LIB_SPI_AD7705_Device_On      ; Выбираем устройство

out  SPDR, OSRG          ; Начать передачу

LIB_SPI_AD7705_WriteToReg_wait:

 sbis SPSR, SPIF      ; Ожидаем конца  передачи

 rjmp LIB_SPI_AD7705_WriteToReg_wait

LIB_SPI_AD7705_Device_Off      ; Выбираем устройство

in  OSRG, SPDR          ; Чтение данных

rcall LIB_SPI_AD7705_COM

ret

=====================================================================================

LIB_SPI_AD7705_Read:

rcall LIB_SPI_AD7705_Wait_DRDY

push OSRG

push Counter

ldi  Counter, 2

LIB_SPI_AD7705_Device_On     ; Выбираем устройство  

LIB_SPI_AD7705_Read_loop:

 clr  OSRG

 out  SPDR, OSRG         ; Начать передачу

 LIB_SPI_AD7705_Read_loop_wait:

  sbis SPSR, SPIF        ; Ожидаем конца  передачи

  rjmp LIB_SPI_AD7705_Read_loop_wait

 in  OSRG, SPDR

 rcall LIB_SPI_AD7705_COM

dec  Counter

brne LIB_SPI_AD7705_Read_loop

LIB_SPI_AD7705_Device_Off      ; Выбираем устройство

pop  Counter

pop  OSRG

ret

=====================================================================================

LIB_SPI_AD7705_Configure_CH1:

push OSRG

ldi  OSRG, 0x20     ; Send to Comm Reg: Next Write Clk

rcall LIB_SPI_AD7705_WriteToReg

ldi  OSRG, 0x01    ; Send to ClkReg: Clock Bits and Update rate

rcall LIB_SPI_AD7705_WriteToReg

ldi  OSRG, 0x10    ; Send to Comm Reg: write setup

rcall LIB_SPI_AD7705_WriteToReg

ldi  OSRG, 0x44  ; Send to Setup: FSYNC, Gain, Conditions, Self Calibration

rcall LIB_SPI_AD7705_WriteToReg

rcall LIB_SPI_AD7705_Wait_DRDY

pop  OSRG

ret

LIB_SPI_AD7705_Read_CH1:

push OSRG

ldi  OSRG, 0x38

rcall LIB_SPI_AD7705_WriteToReg

rcall LIB_SPI_AD7705_Read

pop  OSRG

ret

=====================================================================================

LIB_SPI_AD7705_Wait_DRDY:

; sbic  LIB_SPI_AD7705_N, LIB_SPI_AD7705_DRDY   ; читаем бит с DRDY и пропускаем переход если бит пустой

; rjmp  LIB_SPI_AD7705_Wait_DRDY

ret

Реализация Micro SD интерфейса:

.def LIB_SPI_SDCard_CMD   = r19  ; r16

.def LIB_SPI_SDCard_CRC   = r20  ; r17

.def LIB_SPI_SDCard_AdrHH  = r24  ; r4

.def LIB_SPI_SDCard_AdrHL  = r25  ; r5

.def LIB_SPI_SDCard_AdrLH  = r26  ; r6

.def LIB_SPI_SDCard_AdrLL  = r27  ; r7

.dseg

LIB_SPI_SDCard_Buffer:   .byte 512 ; Буффер для приема\\передачи

.cseg

.equ LIB_SPI_SDCard_D   = DDRA

.equ LIB_SPI_SDCard_P   = PORTA

.equ LIB_SPI_SDCard_N   = PINA

.equ LIB_SPI_SDCard_CardDetect = 0 ; Cable Select AD7705

=====================================================================================

LIB_SPI_SDCard_Init:

; Hardware

cbi  LIB_SPI_SDCard_D, LIB_SPI_SDCard_CardDetect ; Настроили на вход

; Software

LIB_SPI_Device_Off       ; Выбираем устройство

 LIB_SPI_Device_On_SD       ; Выбираем устройство

 ldi  Counter, 10      ; 10 раз отсылаем FF

LIB_SPI_SDCard_Init_loop:

  ser  OSRG        ; 0xFF

  rcall LIB_SPI_Transmit

 dec  Counter

  brne LIB_SPI_SDCard_Init_loop

 LIB_SPI_Device_On_SD       ; Выбираем устройство

ser  OSRG     ; 0xFF - Так вроде однозначнее получается

 rcall LIB_SPI_Transmit

 clr  LIB_SPI_SDCard_AdrHH    ; Очищаем Адресацию

 clr  LIB_SPI_SDCard_AdrHL

 clr  LIB_SPI_SDCard_AdrLH

 clr  LIB_SPI_SDCard_AdrLL

 ldi  LIB_SPI_SDCard_CMD, 0x40 ; Отправляем команду переключения в SPI (RESET)

 ldi  LIB_SPI_SDCard_CRC, 0x95

rcall LIB_SPI_SDCard_SendCommand

andi OSRD, 0x01      ; Проверка на in_idle_state = 1

breq LIB_SPI_SDCard_Init_Fault

;ldi LIB_SPI_SDCard_CMD, 0x48

    ; Отправляем команду проверки рабочих условий (напряжение, ...)

;ldi LIB_SPI_SDCard_CMD, 0x7A   ; Отправляем команду чтения регистра OCR

 LIB_SPI_SDCard_Init_wait_idle:

 ldi  LIB_SPI_SDCard_CMD, 0x77    

   ; Команда APP_CMD - следующая команда будет из расширенного набора

 rcall LIB_SPI_SDCard_SendCommandWithoutCRC

 ldi  LIB_SPI_SDCard_CMD, 0x69

   ; Инициализация карты и сообщение ей о том, что High Cap не поддерживается

 rcall LIB_SPI_SDCard_SendCommandWithoutCRC

 andi OSRD, 0x01     ; Проверка на in_idle_state = 0

 brne LIB_SPI_SDCard_Init_wait_idle

 ; Нужно подавать эту команду, пока карта не выйдет из idle state

 ldi  LIB_SPI_SDCard_AdrLH, 2

 ldi  LIB_SPI_SDCard_CMD, 0x50   ; Установка размера блока в 512 байт

 rcall LIB_SPI_SDCard_SendCommandWithoutCRC

rjmp LIB_SPI_SDCard_Init_OK      ; Все хорошо

=====================================================================================

LIB_SPI_SDCard_Init_Fault:

clc

ret

=====================================================================================

LIB_SPI_SDCard_Init_OK:

sec

ret

=====================================================================================

; LIB_SPI_SDCard_CMD | LIB_SPI_SDCard_CRC

; LIB_SPI_SDCard_AdrHH - LIB_SPI_SDCard_AdrLL

LIB_SPI_SDCard_SendCommandWithoutCRC:

ser  LIB_SPI_SDCard_CRC      ; 0xFF

LIB_SPI_SDCard_SendCommand:

ser  OSRG        ; 0xFF

rcall LIB_SPI_Transmit       ; Пустой байт

mov  OSRG, LIB_SPI_SDCard_CMD  

rcall LIB_SPI_Transmit       ; Команда

mov  OSRG, LIB_SPI_SDCard_AdrHH

rcall LIB_SPI_Transmit      ; Старший бит агрумента

mov  OSRG, LIB_SPI_SDCard_AdrHL

rcall LIB_SPI_Transmit       ; 3й байт

mov  OSRG, LIB_SPI_SDCard_AdrLH

rcall LIB_SPI_Transmit       ; 2й байт

mov  OSRG, LIB_SPI_SDCard_AdrLL

rcall LIB_SPI_Transmit      ; Старший бит агрумента

mov  OSRG,LIB_SPI_SDCard_CRC      ;

 rcall LIB_SPI_Transmit       ; CRC

ser  OSRG  ; Выходной байт [при выполнении команды инициализации здесь

rcall LIB_SPI_Transmit   ; проскакивает 3F, что можно перепутать с R1]

 LIB_SPI_SDCard_SendCommand_loop:     ; Ожидание ответа

 ser  OSRG         

 rcall LIB_SPI_Transmit      

 tst  OSRD

 brmi LIB_SPI_SDCard_SendCommand_loop

 push OSRD     ; Если ответ формата R2 - в r0 будет его значение

 ser  OSRG

rcall LIB_SPI_Transmit

mov  r0, OSRD

pop  OSRD

mov  OSRG, OSRD

andi OSRG, 0x7E

breq LIB_SPI_SDCard_SendCommand_Ok

ori  OSRG, 0x80       ; Код ошибки

LIB_SPI_SDCard_SendCommand_Fault:

clc

LIB_SPI_SDCard_SendCommand_Ok:

 ret

=====================================================================================

; Чтение блока данных r4..r7 в Z+

LIB_SPI_SDCard_ReadSector:

LIB_SPI_Device_Off       ; Выбираем устройство

 LIB_SPI_Device_On_SD       ; Выбираем устройство

 rcall LIB_SPI_SDCard_Mul512

ldi  LIB_SPI_SDCard_CMD, 0x51     ; Read single block

rcall LIB_SPI_SDCard_SendCommandWithoutCRC

LIB_SPI_SDCard_ReadSector_wait:

 ser  OSRG

 rcall LIB_SPI_Transmit

  cpi  OSRD, 0xFE    ; Карта готова к передаче данных

  breq LIB_SPI_SDCard_ReadSector_do

 mov  OSRG, OSRD

  andi OSRG, 0xF0

  brne LIB_SPI_SDCard_ReadSector_wait   ; Карта еше не готова

 ori  OSRD, 0x40 ; Старшие четыре бита = 0 - это ситуация ошибки чтения

 rjmp LIB_SPI_SDCard_ReadSector_Fault   ; Ошибка!!

LIB_SPI_SDCard_ReadSector_do:

 clr  Counter     ; Выгружаем данные из карты

 LIB_SPI_SDCard_ReadSector_do_loop:

 ser  OSRG

 rcall LIB_SPI_Transmit

 st Z+, OSRD

 ser  OSRG

 rcall LIB_SPI_Transmit

 

 st Z+, OSRD

  dec  Counter

 brne LIB_SPI_SDCard_ReadSector_do_loop

ser  OSRG         ; CRC

rcall LIB_SPI_Transmit

ser  OSRG         ; CRC

rcall LIB_SPI_Transmit

ser  OSRG

rcall LIB_SPI_Transmit

rjmp LIB_SPI_SDCard_ReadSector_Ok

=====================================================================================

LIB_SPI_SDCard_ReadSector_Ok:

 LIB_SPI_Device_Off       ; Выбираем устройство

 sec

 ret

=====================================================================================

LIB_SPI_SDCard_ReadSector_Fault:

 LIB_SPI_Device_Off      ; Выбираем устройство

clc

ret

=====================================================================================

; Запись блока данных r4..r7 из Z+

LIB_SPI_SDCard_WriteSector:

LIB_SPI_Device_Off       ; Выбираем устройство

 LIB_SPI_Device_On_SD       ; Выбираем устройство

 rcall LIB_SPI_SDCard_Mul512

ldi  LIB_SPI_SDCard_CMD, 0x58     ; Write single block

rcall LIB_SPI_SDCard_SendCommandWithoutCRC

ldi  OSRG, 0xFE

rcall LIB_SPI_Transmit

LIB_SPI_SDCard_WriteSector_do:

 clr  Counter      ; Заряжаем данные в карту

 LIB_SPI_SDCard_WriteSector_do_loop:

 ld  OSRG, Z+

 rcall LIB_SPI_Transmit

 ld  OSRG, Z+

 rcall LIB_SPI_Transmit

  dec  Counter

 brne LIB_SPI_SDCard_WriteSector_do_loop

ser  OSRG

rcall LIB_SPI_Transmit    ; Игнорируемые байты контрольной суммы

 ser  OSRG

rcall LIB_SPI_Transmit

 ser  OSRG        ; Пустой байт

rcall LIB_SPI_Transmit      Ожидаем кода подтверждения

 andi OSRD, 0x1F

 cpi  OSRD, 0x05

 breq LIB_SPI_SDCard_WriteSector_wait    ; Данные были приняты

 ori  OSRD, 0x60      ; Ошибка приёма данных

 rjmp LIB_SPI_SDCard_WriteSector_Fault

 LIB_SPI_SDCard_WriteSector_wait:   ; Здесь мы висим, ждём выполнения записи

  ser  OSRG

 rcall LIB_SPI_Transmit

  cpi  OSRD, 0xFF

  brne LIB_SPI_SDCard_WriteSector_wait

 ldi  LIB_SPI_SDCard_CMD, 0x4D     ; Проверка записи

 rcall LIB_SPI_SDCard_SendCommandWithoutCRC

 tst  r0

 breq LIB_SPI_SDCard_WriteSector_Ok

 clr  OSRG      ; Ошибка R2, код ошибки в r0

 rjmp LIB_SPI_SDCard_WriteSector_Fault

=====================================================================================

LIB_SPI_SDCard_WriteSector_Ok:

 LIB_SPI_Device_Off       ; Выбираем устройство

 sec

 ret

=====================================================================================

LIB_SPI_SDCard_WriteSector_Fault:

 LIB_SPI_Device_Off       ; Выбираем устройство

 clc

ret

=====================================================================================

LIB_SPI_SDCard_Mul512:

 ldi  OSRG, 0x20     ; Код возможной ошибки

tst  LIB_SPI_SDCard_AdrLL

brne LIB_SPI_SDCard_Mul512_Fault    ; Будут потеряны биты адреса

 tst  LIB_SPI_SDCard_AdrLH

brmi LIB_SPI_SDCard_Mul512_Fault  

mov  LIB_SPI_SDCard_AdrLL, LIB_SPI_SDCard_AdrLH

mov  LIB_SPI_SDCard_AdrLH, LIB_SPI_SDCard_AdrHL

mov  LIB_SPI_SDCard_AdrHL, LIB_SPI_SDCard_AdrHH

clr  LIB_SPI_SDCard_AdrHH

lsl  LIB_SPI_SDCard_AdrHL

rol  LIB_SPI_SDCard_AdrLH

rol  LIB_SPI_SDCard_AdrLL

sec

ret

LIB_SPI_SDCard_Mul512_Fault:

 clc

ret


 

А также другие работы, которые могут Вас заинтересовать

7323. Керування пам’яттю в ОС. Сегментна, сторінкова й сегментно-сторінкова організація пам’яті 1.12 MB
  Сегментація памяті дає змогу зображати логічний адресний простір як сукупність незалежних блоків змінної довжини, які називають сегментами. Кожний сегмент звичайно містить дані одного призначення, наприклад в одному може бути стек, в іншому - програмний код і т. д.
7324. География экономического района России. Уральский экономический район 371.5 KB
  География экономического района России. Уральский экономический район Введение Россия представляет собой самый обширный регион всей Евразии и единственную федерацию в рамках СНГ, поэтому региональный анализ ее экономических районов имеет особый смыс...
7325. Система управления электромуфты переключения направления намотки кабеля 180.5 KB
  ВВЕДЕНИЕ Устройство, на ряду со своей основной функцией, способно работать также и в качестве реле аварийной сигнализации. Оно выгодно отличается компактностью, небольшими массой и собственным потреблением электроэнергии. Для автомобилей новых модел...
7326. Кражи и грабежи как преступления против собственности 404 KB
  Кражи и грабежи как преступления против собственности 1. Кража Закон, касающийся кражи и относящихся к ней преступлений таких как грабеж, кража со взломом, различные преступления, включающие обман, шантаж и продажу (передачу) краденного, содержится ...
7327. Информационные технологии управления 468.5 KB
  Информационные технологии управления Информационные технологии и системы, понятие и свойства. Состав и структура экономических информационных систем. Жизненный цикл информационной системы. Классификация автоматизированных инф...
7328. Расчет силового масляного трансформатора 336 KB
  Расчет силового масляного трансформатора. Задание на расчет. Требуется рассчитать конструкцию и параметры силового трансформатора с масляным охлаждением со следующими параметрами: Мощность трансформатора SH = 1000 кВА. Число фаз m = 3. Частота f = 5...
7329. Измеритель активной энергии в однофазной сети на основе микроконтроллера ATMEL 654.5 KB
  Измеритель активной энергии в однофазной сети на основе микроконтроллера ATMEL Разработать измеритель активной энергии в однофазной сети 220 В с токовой нагрузкой 100 А на основе микроконтроллера фирмы ATMEL. Технические требования. В качестве перви...
7330. Исследование сущности и основных аспектов эффективной деятельности риэлторских фирм ООО МЕТР 225 KB
  Основой любой социально-экономической системы является собственность. Переход общества на рыночные основы вызывает ее трансформацию. Собственность от основной государственной преобразуется в многоаспектный комплекс, состоящий из федеральной...
7331. Диэлектрики в электростатическом поле 94.5 KB
  Тема: Диэлектрики в электростатическом поле. 1. Свободные и связанные заряды. Полярные и неполярные молекулы. Поляризуемость молекулы. 2. Типы диэлектриков. Деформационная и ориентационная поляризации диэлектриков. Поляризационные заряды. Поляризова...