Femme руководство на русском

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

При выборе ПО, реализующим МКЭ (метод конечных элементов), остановил свой взгляд на бесплатной программе FEMM, которую можно скачать с официального сайта.
Для управления процессом рассчета была выбрана система инженерных расчетов MATLAB R2010b, которая успешно справляется с возложенными на нее обязательствами с помощью надстройки OctaveFEMM, которая идет в дистрибутиве FEMM.

Начало работы

Установка OctaveFEMM происходит автоматически с установкой программы FEMM версии 4.2 и выше, и располагается в субдиректории mfiles. Для интеграции OctaveFEMM с MATLAB необходимо в командной строке системы MATLAB прописать строчки:
addpath(’c:\progra˜1\femm42\mfiles’);
savepath;

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

Основные команды

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

Перечень команд OctaveFEMM для решения электромагнитных задач.

Общие команды:

• clearconsole – очищает окно LUA скрипта.
• newdocument(doctype) — создает новый препроцессорный документ и открывает окно препроцессора. Значение doctype зависит от типа рассматриваемой задачи. 0 – для магнитной задачи, 1 – для электростатической задачи, 2 — для задачи теплового потока, 3 – для задачи переменного потока. Альтернативой данной функции является — create(doctype).
• hideconsole – скрывает LUA консоль.
• hidepointprops – скрывает плавающее окно FEMM Properties.
• messagebox(’message’) – показывает всплывающее окно с сообщением message.
• opendocument(’filename’) – открывает файл с именем filename.
• print(item1,item2,…) – стандартная команда вывода на печать.
• prompt(’message’) – команда выведет сообщение message и будет ожидать от пользователя ввода строки, затем продолжит работу скрипта.
• showconsole – показывает плавающее окно LUA скрипта.
• showpointprops- показыват плавающее окно FEMM Properties.
• main_minimize – минимизирует главное окно FEMM.
• main_maximize – максимизирует главное окно FEMM.
• main_restore – восстанавливает нормальные размеры окна FEMM.
• main_resize(width,height) – изменяет размеры главного окна FEMM в соответствии с шириной и высотой (width и height).

Команды препроцессора.

Отличительной особенностью команд препроцессора является приставка mi_ перед функциями, которые обеспечивают интеграцию FEMM и MATLAB.
Команды добавления/удаления объектов:
• mi_ addnode(x,y) – добавляет точку с координатами x,y.
• mi_addsegment(x1,y1,x2,y2) – добавляет отрезок с координатами начала x1,y1 и координатами конца x2,y2.
• mi_addblocklabel(x,y) – добавляет label для блока с точкой (x,y).
• mi_addarc(x1,y1,x2,y2,angle,maxseg) –добавляет новую дугу от точки (x1,y1) до точки (x2,y2) с углом ‘angle’ через ‘maxseg’ сегментов.
•mi_drawline(x1,y1,x2,y2) – добавляет линию между точками с указаннами координатами.
•mi_drawpolyline([x1,y1;x2,y2’…]) – добавляет точки с указанными координатами и связывает их сегментами.
•mi_drawpolygon([x1,y1;x2,y2’…]) – добавляет точки с указанными координатами и связывает их сегментами до получения закрытого контура.
•mi_drawarc(x1,y1,x2,y2,angle,maxseg) – добавляет точки с указанными координатами и соединяет их дугой, с количеством сегментов maxseg.
• mi_drawrectangle(x1,y1,x2,y2) – добавляет точки с указанными координатами в углы прямоугольника, а затем соединяет их.
• mi_deleteselected –удаляет все выделенные объекты.
• mi_deleteselectednodes – удаляет все выделенные точки.
• mi_deleteselectedlabels – удаляет выделенные labels у блоков.
• mi_deleteselectedsegments – удаляет выделенный сегмент.
• mi_deleteselectedarcsegments – удаляет выделенную дугу.
Команды выбора геометрических единиц:
• mi_clearselected – снимает выбор со всех точек, отрезков, сегментов и дуг.
•mi_selectsegment(x,y) – выбирает сегмент, ограниченный точкой с координатами (x,y).
• mi_selectnode(x,y) – выбирает точку, приближенную к координатам (x,y) и возвращает координаты точки.
• mi_selectlabel(x,y) – выбирает label, к которому относится точка.
• mi_selectarcsegment(x,y) – выбирает дугу, с точкой с координатами (x,y).
• mi_selectgroup(n) – выбирает группу с label n.
Команды маркировки объектов:
• mi_setnodeprop(’propname’,groupno)- устанавливает для выбранной точки значение ‘propname’ и присваивает номер группы groupno.
• mi_setblockprop(’blockname’, automesh, meshsize, ’incircuit’, magdir, group,
turns) — Устанавливает для выбранного блока следующие свойства:
– Имя блока ’blockname’.
– automesh: 0 = построение расчетной сетки в соответствии с заданными размерами, 1 = автоматический выбор размера сетки и ее построение.
– meshsize: ограничение размера сетки для указанного Label.
– Блок содержит ток ’incircuit’
– Намагничивание направлено вдоль угла, измеряемого в градусах magdir
– Блок принадлежит к группе с номером group.
– Количество витков, которые связаны с данным блоком.
• mi_setsegmentprop(’propname’, elementsize, automesh, hide, group) – устанавливает свойства для выделенного сегмента:
– Граничные условия ’propname’
–Местный размер элемента не больше, чем elementsize.
– automesh: 0 = размер сетки зависит от величины elementsize, 1 = подбирается автоматическое значение размера расчетной сетки.
– hide: 0 = не скрыт в постпроцессоре, 1 = скрыт в постпроцессоре.
– Относится к группе с номером group.
• mi_setarcsegmentprop(maxsegdeg, ’propname’, hide, group) – устанавливает свойства выделенной дуги:
– Расчетная сетка охватывает не более maxsegdeg градусов.
– Граничные условия ’propname’
– hide: 0 = не скрыт в постпроцессоре, 1 = скрыт в постпроцессоре.
– Относится к группе с номером group.
• mi_setgroup(n) – устанавливает группу связанных элементов n.

Команды, обозначающие проблему:

• mi_ probdef(freq,units,type,precision,depth,minangle,(acsolver)) – изменяет параметры проблемы. Freq устанавливает частоту в Гц. Units устанавливает единицы измерения длины в данной проблеме, возможны следующие варианты — ’inches’, ’millimeters’, ’centimeters’, ’mils’, ’meters’, and ’micrometers’. Параметр type принимает два значения ‘planar’ для рассмотрения 2-D модели и ‘axi’ для рассмотрения осесимметричной модели. Параметр precision определяет точность, с которой необходимо решать задачу, например для точности 10-8 необходимо ввести 1Е-8. Параметр depth, отвечает за глубину модели. Параметр minangle указывает минимальное значение угла между элементами сетка, обычно это значение равно -30. Acsolver параметр отвечает за исследование переменного тока: 0 — последовательная аппроксимация, 1 – ньютоновская аппроксимация.
• mi_analyze(flag) – запускает решатель FEMM, для видимого окна укажите 0, для свернутого – 1.
• mi_loadsolution – загружает и отображает решение соответствующее текущей геометрии.
• mi_setfocus(’documentname’) — переключает программу FEMM на файл ‘documentname’.
• mi_saveas(’filename’) – сохраняет файл под именем ’filename’.
Команды расчетной сетки:
• mi_createmesh – запускает создание расчетной сетки.
• mi_showmesh – отображает сетку.
• mi_purgemesh –освобождает память и экран от расчетной сетки.
Команды масштабирования:
• mi_zoomnatural – активирует масштаб по размеру.
• mi_zoomout – активирует 50% масштаб.
• mi_zoomin – активирует 200% масштаб.
• mi_zoom(x1,y1,x2,y2) – активирует такой масштаб, что точка с координатами (x1,y1) располагается в верхнем правом углу, а точка с координатами (x2,y2) в левом нижнем углу.

Команды просмотра:

• mi_showgrid – показывает точки сетки.
• mi_hidegrid – скрывает точки сетки.
• mi_grid_snap(’flag’) – установка flag в ’on’ привязывает к сетке, установка flag в ’off’ отключает привязку к сетке.
• mi_setgrid(density,’type’) — изменяет свойства сетки. Параметр density указывает на плотность сетки, параметр type может принимать два значения: ’cart’ и ’polar’ для ортоганальных и полярных координат соответственно.
• mi_refreshview – обновляет вид и содержимое главного окна.
• mi_minimize – минимизирует вид активного магнетизма.
• mi_maximize – максимизирует вид активного магнетизма.
• mi_restor – возвращает стандартный вид активного магнетизма.
• mi_resize(width,height) – производит изменение размеров основного окна в соответствии с шириной и высотой.
Свойства объектов:
• mi_addmaterial(’matname’, mu_x, mu_y, H c, J, Cduct, Lam d, Phi hmax, lam fill,
LamType, Phi hx, Phi hy, nstr, dwire) – добавляет новый материал с именем mathname и со свойствами:
– mu_x — магнитная проницаемость по оси x или по оси r.
– mu_y — магнитная проницаемость по оси y или по оси z.
– H_c – постоянная магнитная коэрцитивность в А/м.
– J – плотность тока в А/мм2.
– Cduct – электрическая проводимость материала в MS/m.
– Lam d – толщина пластинки из которой набран материал (применительно к шихтованному материалу).
– Phi hmax – угол задержки кривой гистерезиса, для нелинейных зависимостей BH.
– Lam fill – часть объема, занятая шихтованными листами, применительно к железу.
– Lamtype – может быть:
_ 0 – не шихтовано, либо шихтовано бесконечно плоскими листами;
_ 1 – шихтовано по оси x или r;
_ 2 – шихтовано по оси y или z;
_ 3 – магнитный проводник;
_ 4 – простой жильный провод;
_ 5 – гибкий многожильный провод;
_ 6 – прямоугольный провод;
– Phi hx – угол задержки петли гистерезиса в градусах по оси x для линейных задач.
– Phi hy – угол задержки петли гистерезиса в градусах по оси y для линейных задач.
– nstr — количество жил в многожилном проводе.
– dwire — диаметр каждой жилы многожильного провода в мм.
Обратите внимание, что все свойства должны быть заданы. Если вы не задали какое-либо свойство, то оно принимает значение по-умолчанию.
• mi_addbhpoint(’blockname’,b,h) — добавляет точку, к кривой намагничивания с координатами b и h, где индункция измеряется в Тл, а напряженность магнитного поля в А/м.
• mi_clearbhpoints(’blockname’) – удаляет все точки кривой намагничивания для материала с именем blockname.
• mi_addpointprop(’pointpropname’,a,j) – добавляет новую точку на кривой, с координатами a,j измеряемых в Вб/м и А соответственно.
• mi_addboundprop(’propname’, A0, A1, A2, Phi, Mu, Sig, c0, c1, BdryFormat) – добавляет новую обмотку с именем propname.
– для добавленной обмотки можно установить параметры A0, A1, A2 и Phi
если требуется. По умолчанию все они равны нулю.
• mi_addcircprop(’circuitname’, i, circuittype)- добавляет новый ток, с именем circuitname, значением i и параллельным, либо последовательным соединением проводников, circuittype 0 и 1 соответственно.
• mi_deletematerial(’materialname’) — удаляет материал с именем materialname.
• mi_deleteboundprop(’propname’)- удаляет обмотку ’propname’.
• mi_deletecircuit(’circuitname’) – удаляет ток circuitname.
• mi_deletepointprop(’pointpropname’) – удаляет точку свойств ’pointpropname’.
• mi_modifymaterial(’BlockName’,propnum,value) – данная функция позволяет изменять любое свойство материала в соответствии с таблицей:
propnum Symbol Description
0 BlockName Название материала
1 μx x (or r) магнитная проницаемость
2 μy y (or z) магнитная проницаемость
3 Hc коэрцитивность, А/м
4 J плотность тока, МА/м2
5 s электрическая проводимость, МС/м
6 dlam толщина пластинок, мм
7 fhmax угол задержки петли гистерезиса, градусы
8 LamFill заполняемость железом
9 LamType 0 = нет, 1 = параллельно x, 2= параллельно y
10 fhx угол задержки петли гистерезиса в градусах по оси x
11 fhy угол задержки петли гистерезиса в градусах по оси x
• mi_modifyboundprop(’BdryName’,propnum,value) – функция, с помощью которой можно модифицировать свойства обмотки.
propnum Symbol Description
0 BdryName Имя свойства
1 A0 установка параметра А
2 A1 установка параметра А
3 A2 установка параметра А
4 f установка фазы параметра А
5 μ маленькая удельная магнитная проницаемость
6 s маленькая электрическая проводимость
7 c0 смешанный параметр
8 c1 смешанный параметр
9 BdryFormat тип состояния обмотки
•mi_modifypointprop(’PointName’,propnum,value) — функция для модификации точки свойств.
•mi_modifycircprop(’CircName’,propnum,value) – функция для модификации свойств тока.

Различные команды:

• mi_savebitmap(’filename’) — сохраняет файл в формате .bmp с именем filename.
• mi_savemetafile(’filename’) — сохраняет файл в формате .mtf с именем filename.
• mi_refreshview – перерисовывает текущий вид.
• mi_close – закрывает текущий препроцессорный документ.
• mi_shownames(flag) – функция для показа либо скрытия значения label. Если значение flag равно нулю, то происходит скрытие, при 1 – показ.
• mi_readdxf(’filename’) — эта функция импортирует эскиз из файла .dxf.
• mi_savedxf(’filename’) – функция, которая сохраняет геометрию в файле .dxf.

Команды постпроцессора.

Набор команд, с помощью которых можно работать с моделью после расчета в программе FEMM.
• mo_lineintegral(type) – вычисляет линейный интеграл по указанному контуру.
Type Name Values 1 Values 2 Values 3 Values 4
0 B.n Полное значение Среднее значение — —
1 H.t Полное значение Среднее значение — —
2 Длина контура Площадь поверхности — — — 3 Сила, через тензор натяжения Сила по оси r/x Сила по оси z/y 2x r/x force 2x y/z force
4 Момент, через тензор натяжения Постоянная составляющая момента Двойной момент — —
5 (B.n)2 Полное значение Среднее значение — —

• mo_makeplot(PlotType,NumPoints,Filename,FileFormat) — позволяет Octave использовать средства программы FEMM для построения графиков. Если заданы значениея PlotType, Numpoints – количество точек в графике, FileName и Fileformat – имя файла и его расширение соответственно, для сохранения информации на жестский диск. Правильным являются следующие значения PlotType:
PlotType Definition
0 Potential
1 |B|
2 B• n
3 B• t
4 |H|
5 H • n
6 H • t
7 Jeddy
8 Jsource+Jeddy
Так же доступны следующие варианты переменной FileFormat:
FileFormat Definition
0 Многоколонный текст с легендой
1 Многоколонный текст без легенды
2 Форматирование в стиле mathematica
•mo_getprobleminfo – возвращает следующие значения, 1 – тип задачи, 2 – частота в Гц, 3- глубина задачи в метрах, 4 – единицу длина задачи.
• mo_getcircuitproperties(’circuit’) – используется для получения информации о токе с именем circuit. Возвращает одно из следующих значений:
– current — значение тока
– volts – падение напряжение на обмотке.
– flux – возвращает потокосцепление обмотки.

Команды выбора:

• mo_seteditmode(mode) – указывает тип объекта, с которым предстоит работать постпроцессору. Значения mode могут быть: point, contour, area.
• mo_selectblock(x,y) – выделяет блок, содержащий точку с данными координатами.
• mo_groupselectblock(n) – выделяет блок, элементы которого принадлежат группе n. Если не указана группа, то выделяются все блоки.
• mo_addcontour(x,y) – добавляет точку контуру с координатами (x,y). Эта функция аналогична работе в постпроцессорном файле .ans, нажатию правой кнопки мыши.
• mo_selectpoint(x,y) – выделяет точку, с координатами (x,y).
• mo_clearcontour – снимает выделение с контура, который был выделен.
• mo_clearblock — снимает выделение с блока.

Команды изменения масштаба:

• mi_zoomnatural – активирует масштаб по размеру.
• mi_zoomout – активирует 50% масштаб.
• mi_zoomin – активирует 200% масштаб.
• mi_zoom(x1,y1,x2,y2) – активирует такой масштаб, что точка с координатами (x1,y1) располагается в верхнем правом углу, а точка с координатами (x2,y2) в левом нижнем углу.
Команды просмотра:
• mo_showmesh – показывает расчетную сетку
• mo_hidemesh – скрывает расчетную сетку.
• mo_showpoints – показывает записи к точкам, попавшим в геометрию.
• mo_hidepoints — скрывает узловые точки от входной геометрии.
• mo_smooth(’flag’) — эта функция определяет необходимо ли производить сглаживание кривых намагничивания материалов. Если flag в состоянии on, то сглаживание будет активировано, если off, то выключено.
• mo_showgrid – показывает сетку точек.
• mo_hidegrid – скрывает сетку точек…
• mo_grid_snap(’flag’) — если flag в состоянии on, следовательно включается привязка к сетке, в противном случае она выключена.
• mo_setgrid(density,’type’) – изменение сетки. Параметр density отвечает за расстояние между точками сетки, а параметр type отвечает за полярные координаты, либо за декартовы.
• mo_hidedensityplot – скрывает плотность магнитного потока.
• mo_showdensityplot(legend,gscale,upper_B,lower_B,type) – показывает плотность магнитного потока:
– legend принимает значение 0 – не показывать, 1- показывать легенду.
– gscale указывает на 0- цветное построение, 1 – в серых тонах.
– upper_B – устанавливает верхний предел для отображения плотности потока.
– lower_B – устанавливает нижний предел для отображения плотности потока.
– type – тип отображения плотности потока.
• mo_hidecontourplot – скрывает участок контура.
• mo_showcontourplot(numcontours,lower_A,upper_A,type)- показывает контур участка со свойствами:
– numcontours – количество эквипотенциальных линий А.
– upper_A – верхний предел А.
– lower_A — нижний предел А.
– type- указывает тип построения — ’real’, ’imag’, ’both’ для отображения реальной части, мнимой части и вещественной части числа.
• mo_ showvectorplot(type,scalefactor) – контролирует отображение векторов, изображающих поле и силу.
• mo_minimize – минимизирует окно результата.
• mo_maximize – максимизирует окно результата.
• mo_restore – восстанавливает окно результата.
• mo_resize(width,height) – производит изменение размера окна результата до ширины и высоты указанных в аргументе.
Разные команды:
• mo_close – закрывает текущую постпроцессорную задачу.
• mo_refreshview – переисовывает текущий вид.
• mo_reload – загружает результат из файла.
• mo_savebitmap(’filename’) — сохраняет результат в .bmp файле с именем filename.
• mo_savemetafile(’filename’) — сохраняет результат в .mtf файле с именем
filename.
• mo_shownames(flag) — при flag=1 отображает названия всех label.
• mo_numnodes – возвращает количество узлов в расчетной сетке.
• mo_numelements — возвращает количество элементов в расчетной сетке.
• mo_getnode(n) – возвращает координаты n-ной точки.
• mo getelement(n) – возвращает следующие свойства n-ного элемента:
1. Индекс первого элемента узла
2. Индекс второго элемента узла
3. Индекс третьего элемента узла
4. x (или r) координату центра тяжести элемента
5. y (или z) координату центра тяжести элемента
6. единицу длины, используемую в задаче
7. номер группы, ассоциированной с данным элементом.

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

Программа, которая поможет вам легко решить электромагнитные проблемы.

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

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

FEMM поставляется с дружественным и простым в использовании интерфейсом, который позволяет вам легко добавлять различные объекты, материалы и символы для описания вашей проблемы. Кроме того, приложение позволяет импортировать макеты из файлов DXF. Также поддерживается Lua-скриптинг, позволяющий автоматизировать различные действия и быстро и легко обработать несколько проблем.

Название FEMM
Версия 4,2
Разработчик
Домашняя страница продукта FEMM
Лицензия Бесплатно (Freeware)
Загрузки прошлой недели 23
Все время загрузки 3574
Имя файла femm42bin_win32.exe
Размер файла 7.0MB
Контрольная сумма MD5 1C301F0F378058C5F4A73831CAFB36D7
Поддержка ОС Windows All
Категория Главная образование

Оставить комментарий

Introduction: Coil Gun Simulation With Femm4.2

This instructable is about simulation of a linear accelerator for slugs, a.k.a. «coil gun», that consists of a coil that works as an electromagnet for slugs, a capacitor as energy source and an electronic switch like an SCR or Thyristor. This opens a path to optimize slug speed and electrical-to-mechanical energy conversion efficiency.

The software tools are free.

While, electrically, a coil gun is a relatively simple RLC circuit, mechanically it is much more difficult to predict its behavior. This is where the femm («finite element magnetic method») magnetic simulation tool is an amazing helper.

Find it here:
http://www.femm.info/wiki/download

femm allows to runs scripts written in lua language. See an example here:
http://www.femm.info/wiki/CoilGun

In this instructable I will explain how to set up femm simulations with a lua script to predict the performance of a setup similar to the one in the picture.

Step 1: Electrical Theory

lua allows measurements to be taken from one simulation step and be used as parameters in the next step.
It is straightforward to create a coil/slug setup in femm and then see what the pulling force is for a given current. There are several examples on the web. What is not so straightforward is to determine the current based on capacitor size, charge voltage, coil inductance and coil resistance values.

To get a good start into understanding what influences what in a coil gun,
Barry’s coilgun website is a must read.
There, the constant current analysis of a slug accelerator is explained allowing a good understanding of how different parameters affect the force on the slug.
There is also a calculator that shows how voltage and current of an RLC combination behave over time.

In order to get answers to the question of how the combination of capacitor and mechanical coil dimensions affect maximum speed, reverse force or «suck-back», a more sophisticated tool is in order.

CG_1.FEM is the mechanical file that gets loaded by the lua script.
CG_001.lua is started in the femm program.
In the same directory the …csv files with the results are generated.

Step 2: Schematic and Simplification Thereof

When using a capacitor as energy source, the current is constantly changing during discharge of the cap.
The inductance of the coil varies with the position of the slug. The change in inductance is linked to the force that pulls the slug.
What I am describing here is a simulation with fixed time steps, translating the differential equations for the current of an RLC circuit. This current is then used in the femm simulation to determine the force on the slug. The force is used to calculate the distance travelled during a timestep. Then the calculation is repeated with the new current and the new position of the slug. It ends when the slug has left the coil of when a time limit is met.

The schematic shows how the individual components of the circuit, after the SCR (silicon controlled rectifier) is switched on, can be condensed into the single R and L and C element that is tackled by the differential equation.

You can start using the lua script to input your data, what capacitor(s) you use, how many volts you can charge your cap to, what your slug looks like, coil size and so on without following the theoretical explanations that I present at the end, but they help when expanding the functionality of the script or writing your own programs.

In some forums and in the wikipedia entry about coil guns, there is talk about using IGBTs and «half bridges» as opposed to using a SCR. From a simulation perspective, the differences can easily be accommodated. On the practical side, designing the IGBT gate drive circuits is much more involved than building a simple SCR trigger circuit. An SCR only needs to be switched on by a brief gate pulse and then keeps conducting by itself until the current from anode to cathode becomes too small to hold the conducting state. The SCR switches off and needs another gate pulse to conduct again — in the next shot.
IGBTs («Insulated Gate Bipolar Transistors») are also switched on by a gate voltage, but they stop conducting when the gate voltage is dropped, like on a regular transistor.
This allows to stop energizing the coil while there is still a large current flowing, which prevents the detrimental «suck back» effect from happening and may help improve the electric-mechanical efficiency of the setup.
IGBTs and their driver circuits are a subject of another instructable.

The three resistive elements of capacitor, switch and coil can be lumped into one resistor. The current-independent voltage drop over the SCR can be subtracted from the start voltage of the capacitor. The spec sheet of an SCR gives an approximation of the current dependent and current independent voltage drop elements.

After switching on the SCR, the voltage of the cap is matched by the voltage over the resistors, internal and external, plus the voltage over the coil.

Step 3: Simulation Parameters; Determining Simulation Inputs

In order to get a simulation started, we need some numbers for a set up with realistic values.

As for the capacitor, it is important to know its internal resistance.
Based on measurements, the big cap used here with 6800uF has an internal resistance of about 40 milliOhm.

Using flash capacitors from recycled disposable cameras, the resistance («ESR») can be estimated by using the Dissipation factor from the spec sheet:
http://www.rubycon.co.jp/en/products/recommend/r0…

It is listed as 0.06 at a frequency of 120Hz.

The resistance («ESR» — equivalent series resistance) is then calculated from that as 0.06 over (2 * pi* 120Hz * cap_value) according to the definition here:

https://en.wikipedia.org/wiki/Dissipation_factor

The larger the cap and the more caps you use in parallel, the smaller the overall resistance is. For a 180uF cap, the ESR is 442milliOhm. Putting ten such caps in parallel, the ESR drops to 44.2milliOhm.

The resistance of the wiring other than the coil should be negligible. Let’s assume about 1 milliOhm per foot of wiring and 1 milliOhm for every connection. Using thick wires and/or copper sheet strips sure helps.

For the coil, the resistance of the wire can be calculated based on the diameter of the wire. In the lua program, the diameter of the wire is entered as an AWG value («American Wire Gauge»). From there, the diameter of the wire, the resistance and how much room it takes up in the coil, is calculated. A lower gage means a lower resistance of the coil and a higher current, but the outer turns are farther away from the slug, creating less force. More turns create more force, but also reduce the current due to higher resistance of the winding and they also create more inductance of the coil, preventing the current from rising fast enough to get really big. The current is also on for a longer duration and may cause «suck back» effect, if it is on while the slug moved past the midpoint of the coil.

Getting the maximum speed out of a coil/slug/cap combination is an optimizing process that requires a tool that takes all those parameters into account.

Step 4: A Practical Example

Now I would like to show an example:
The capacitor of 6800microFarad is charged to 350V, the wiring resistance is set to about 10milliOhm, the coil is 50mm long and I tried 3, 4 and 5 layers of magnet wire of 16 AWG. That’s about 1.37mm in diameter, including insulation varnish. The resistance per meter I got from tables of magnet wire manufacturers. In this case it is about 13.5milliOhm per meter. The length of the wire for a given coil geometry is calculated in the program. The bobbin used here has a inner diameter of 12mm, the length of the bobbin space is 50mm.

The slug is a 9.6mm diameter steel rod of 50mm length with rounded tip. It weighs 25grams.

Almost there…
The last tidbit to know is the output voltage drop vs. current of a typical SCR: The spec sheets of a useful SCRs contain two numbers we need:
Microsemi datasheet of MSFC110

— the «On state threshold voltage» of 0.9V (V_TO on page 2) and
— the «Value of on-state slope resistance .max» of 2milliOhm per Ampere(T_VJ on page 2).

The resulting forward characteristics is shown as «Fig5.» from the data sheet.
This SCR is rated for 110A of average current, but it can take a bit more than 2000A for 10ms without exploding.

The pancake SCR, that is shown in the picture at the top, is rated for 14000Amps for a few milliseconds, it is seriously oversized.

Which leads to the inevitable safety warning:
It could be that something explodes during experiments! Wear eye protection, be super careful with the high voltages of the capacitor and put a sheet of Lexan clear plastic between you and the circuitry. The energy in the capacitor is easily in the kilo-Joule range, very deadly when it flows through your body, while the mechanical energy in the slug is usually less than a few percent of that.
A slug can pierce through soda can metal and wedge themselves into cardboard sheets. Make sure it doesn’t wedge itself into your body. Or any body.

Step 5: Results

These graphs were created by importing the data from the .csv files that the lua script generates into OpenOffice calc and turned into pretty pictures. This way we can see how things develop over time, but also how current, force and velocity develop over the length of the coil.
OpenOffice is also free to download.

The first graph shows how the current rises from 0A through the maximum of 1300A back to zero over time.

The second picture shows how the capacitor is discharged and recharged with opposite voltage until the current flow stops. In a practical circuit, this is dangerous to the electrolytic cap (explosive disintegration) and should be prevented by a protection diode parallel to the cap.

The third graph shows the current, dependent on the slug location. It is highest during the first few mm of motion.
The fourth graph show the corresponding acceleration of the slug over location. After the slug passes the midpoint in the coil, acceleration becomes negative. The remaining current brakes the slug down again («suckback»).

This results in the velocity shown in the fifth graph. The velocity goes up to about 35meter per second, but due to the slight suckback, the exit velocity is only about 33m/s.

Step 6: Freewheeling Diode

When the capacitor is discharged, the current does not just stop, but the energy that is now as current in the coil keeps the current flowing until the resistances dissipate that energy as heat. The current starts to charge the capacitor in reverse. In order to protect the electrolytic cap from being charged to -100V, a freewheeling diode in parallel to the capacitor is added to the circuit. The capacitor voltage is kept at about -1V.
In the first graph, the results of 3 simulation runs are shown for a
circuit without diode (yellow graph),
the circuit with the diode (blue graph) and
the diode in series with a 0.3Ohm resistor (red graph).
The diode by itself prolongs the current flow for quite some time, compared to no diode, which leads to more suckback of the slug. By adding the 300milliOhm to the diode, the current drops much faster.

The effect on final speed is shown in the next graph (speed over position). Differences show after about 30mm of slug travel, after the capacitor is discharged and the coil carries the energy.

The yellow trace is of the circuit without diode — the final speed is the highest of all three.
The blue trace shows the results with the diode alone. Due to the prolonged current flow, the suckback effect lowers the final speed considerably.
The red trace shows the effect of diode plus 0.3Ohm. The capacitor sees a little bit more reverse voltage, but the current reduction over time is much better, because the resistor dissipates a lot of energy from the coil.

Step 7: Details…

I was curious about the best timestep to be used. In this graph I tried 0.25ms as timestep, which resulted in the force-over-distance graph on the right curve. It shows the crossover point where the slug gets decelerated at about 60mm into the coil. This cannot be.
Using 0.1ms per timestep, I achieved the result in the left curve, where the crossover point is pretty close to 50mm. That is more like it, because the slug cannot see acceleration past the point where it fully entered the coil.
The downside of using smaller timesteps is the longer runtime of a simulation.
For simulations where a speed optimum is searched, which needs a lot of simulation runs, I would use a bigger timestep to get into the right region of parameters and then refine the results by simulating with a smaller timestep.

.

Step 8: Optimizing Layer Count

This table shows the maximum speed and end speed for different numbers of layers of the coil. No diode was used in these runs.

With 3 layers, the maximum current is very high, but the force generated is not optimal.
Using 4 layers of wire gives a higher maximum velocity and a higher end velocity at a lower current.
Using 5 layers, the maximum velocity is even higher, but the inductance is bigger, which allows the current to flow longer, which leads to suckback and the end velocity is not as high as with 4 layers.
6 layers is too much and decreases the end velocity.
You can also study the effect of different wire thicknesses, starting position of the slug, cap voltage and more parameters.
If you want to improve on the program, it is helpful to understand the underlying math that makes it possible, which I get into in the next step.

Step 9: Calculation of Momentary Current

Step 10: Discrete Time Steps

Step 11: Rearranging for Current Calculations

Step 12: Mechanical Calculations

Тема: Как установить FEMM и считать в нем.  (Прочитано 21415 раз)

Как установить FEMM и считать в нем.
———————
Файлы взяты с <!— m —>http://gaussguns.narod.ru<!— m —>
———————
Шаг 1.
Качаем саму программу, которая будет считать:
<!— m —>http://gaussguns.narod.ru/soft_femm_ver_4_0.rar<!— m —>
Создаем папку FEMM, распаковываем ее туда.
Шаг 2.
Качаем скрипт, он запускается через MicrosoftExel.
<!— m —>http://gaussguns.narod.ru/Coilgun_odnostup.rar<!— m —>
Распаковываем в ранее созданную папку FEMM.
Шаг 3
Открываем MicrosoftExel через Пуск>Все программы>Папка «MicrosoftOffice»>Microsoft Office Exel (Путь может быть немноо другой)
Находим «Безопасность…»(Сервис>Макросы>Безопасность…), наводим туда стрелочку, нажимаем на левую кнопочку мыши. В открывшемся окошке выбераем среднюю безопасность, нажимаем ОК.
Шаг 4
Открываем и закрываем программку femm.exe из архива, который вы скачали самым первым(Не знаю, зачем это нужно, но иногда не хочет работать, если этого не сделать)
Шаг 5
Открываем сам скрипт в папке FEMM coilgun_odnostup, в открывшемся окошке нажимаем на «Не отключать макросы», и видим следующее:

Вводим свои значения.
Удвоенная толщина изоляции — оставляем как есть
Кол-во секций в катушке — оставляем 1
Толщина магнитопровода — вводим 0 если его нет
Внутренний диаметр пули — оставляем 0
Начальная скорость пули — оставляем 0.1
Приращение времени — оставляем по началу 30мкс, если нужно посчитать по точнее — вводим значение поменьше, в этом случае он будет считать дольше.
В остальные графы вводим свои значения
Нажимаем на «Вычислить скорость…».
Открывается сама программа FEMM, которая сейчаз же начинает считать(долго считает, в зависимости от мощности вашей машины).
Ждем, позже вас опять возращают в окно MicrosoftExel, там уже написаны результаты.
Чтобы начать новый расчет выбираем внизу окна Екселя вкладку Main, и начинаем все по новой.
Да, и вот так надо будет считать каждый раз, пока не найдете оптимальный вариант.

« Последнее редактирование: 28 Апрель 2020, 08:12:13 от Kurgan »


Записан


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

:D

« Последнее редактирование: 01 Январь 1970, 03:00:00 от Guest »


Записан


Новички, не задавайте вопросы типа «У меня есть такой-то конденсатор, такой-то ствол, такая-та пуля, какую мотать мне к нему катушку? — откуда мы знаем? Мы также юзаем FEMM, и вы его юзайте! Если вам и подсажут, то очень приблизительно.
После частого юзанья FEMM, вы сами будете лучше понимать, для какого случая какая катушка вам нужна!
Насчет скриптов.
Скрипт, который я описал выше — это один из самых новых скриптов, вышедших на сайте

http://www.gaussguns.narod.ru

. Но есть еще и другой скрипт, более старый — данные вводятся через блокнот, скрипты запускаються через катушку(в смысле femm.exe, там просто на ярлыке катушка нарисована=)).
 Мое ИМХО — последний скрипт лучше, и я практически получаю почти те-же результаты, что мне насчитал FEMM.
Еще хочу добавить, что результаты в FEMM — это моделирование все-таки!
Его результаты не дают абсолютной точности, в особенности по точному значению скорости, но все-же он дает посчитать оптимальную катушку в достаточно высокой степени точности.
И сами после намотки катушки и ее испытания не поленитесь подоматыватьпоотматывать 2-4слоя(Естественно, нужно оставить небольшой запас проволоки, не откусывая ее), и отавить так, как лучше стреляло.
Также можно поэкспериментировать с металлическим магнитопроводом — грубо говоря, он позволяет увеличить длину импульса через увеличения индуктивности от внесения в поле ферромагнитных(магнитящихся) материалов, без увеличения геометрических размеров катушки для той-же увеличении индуктивности, но с паразитным увеличением активного сопротивления.
Пока все

:lol:

 

:lol:

« Последнее редактирование: 18 Январь 2011, 19:29:57 от petru-nick »


Записан


Решил написать как устанавливать скрипты с вводом инфы через блокнот.
Итак, будем использовать версию 116(Он вроде самый новый). Сам скрипт взял отсюда:

http://foar.ru/topic.php?forum=35&topic=1&p=9

1 шаг.
Качаем FEMM версию 4.2 вот тут

http://femm.foster-miller.net/Archives/ … m42bin.exe

(3.1Мб). Устанавливаем, по умолчанию папка с программой называется femm42.
2 шаг.
Качаем сам скрипт. Можно с самой первой ссылки в этом сообщении.

http://foar.ru/printfile.php?action=att … &t=1&id=46

3 шаг.
Распаковываем файлы, содержщиеся в этом архиве в папку femm42bin
4 шаг.
открываем файл femm42binprimer.txt, в нем изменяем данные на свои параметры гауса.
5 шаг.
открываем femm42binfemm(там черная загигулина на значке нарисована)
в окне программы выбираем File>Open Lua Script, выбираем файл femm42bincoilgun_116.lua
в открывшемся окошке вводим «primer» без кавычек. В этом файле мы ранее написали параметры гауса.
Фемм считает.
Появляется окошко, который говорит нам в какой файл созранились результаты вычисления(цыфэрки  в имени файла кагбэ показывают скорость).
Ищем этот файл в папке femm42bin
________________________

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

http://www.gaussguns.narod.ru

он не был выложен, а только на Форуме Арсенала.

« Последнее редактирование: 18 Январь 2011, 19:33:59 от petru-nick »


Записан


Внимание при указании неполных чисел не используйте заяпятую !!!
напрример 116 скрипт считает 0,8 как 8мм а 0.8 как 0.8

« Последнее редактирование: 01 Январь 1970, 03:00:00 от Guest »


Записан


Внимание при указании неполных чисел не используйте заяпятую !!!
напрример 116 скрипт считает 0,8 как 8мм а 0.8 как 0.8

Ну вобще-то так и должно быть

« Последнее редактирование: 01 Январь 1970, 03:00:00 от Guest »


Записан

ZADROT MODE COMPLETE
MISSION PASSED


Внимание при указании неполных чисел не используйте заяпятую !!!
напрример 116 скрипт считает 0,8 как 8мм а 0.8 как 0.8

Ну вобще-то так и должно быть

Через эксель запятая катит  

{qip3}

« Последнее редактирование: 01 Январь 1970, 03:00:00 от Guest »


Записан


Понравилась статья? Поделить с друзьями:
  • Парадокс грейдер адью гербицид инструкция по применению
  • Корпусная мебель руководство
  • Как откосить от армии по психиатрии инструкция
  • I7 tws беспроводные наушники инструкция на русском языке андроид
  • Руководство аллюр авто