[image]

Стенд и оборудование для испытаний и измерений VIII

 
1 5 6 7 8 9 216

IvanV

опытный

А почему бы не наоборот - запускать схему подачей напряжения на воспламенитель?
   7.07.0

Quazi

новичок
Quazi>> А зачем такая точноcть? Использование байта дает ошибку менее 0,5%.
Serge77> Давай прикинем.
Serge77> Допустим, у тебя стенд на максимальную нагрузку 100кг. При этом частота изменяется с 25000 до 12500, а результирующий байт с 250 до 125. Значит изменение байта на единицу соответствует примерно 1 кг. Значит твой стенд будет давать погрешность 0.5 кг, причём это погрешность только самого процесса преобразования сигнала датчика в цифровой код. А есть ещё погрешности датчика, трение в стенде и т.д.
Serge77> Допустим, ты испытываешь двигатель с тягой 50 кг. Погрешность будет 1%. А если тяга 10 кг, то погрешность 5%. Тоже не сильно много, но уже заметно.
Не совсем так: жесткость измерительного конденсатора подбирается так, чтобы всегда использовался весь диапазон измерений: от 0 до 255. И конденсатор на 100Кг использоваться для измерения нагрузки на 10кг не подойдет, хотя можно использовать рычаг, но это дополнительные погрешности.
А сделать 3-4 разных конденсатор ане особо сложно. Технологически они простые.
Serge77> Но для первого варианта пожалуй это не так важно. А там сам решишь.
Кстати, для частоты от 25500 герц, и частоте измерений 100 на выходе получаем ТОЧНОЕ значение кол-ва тиков генератора в промежуток 1/100 сек, т.к. МК тупо считает эти самые тики. Погрешность 0. Увеличивать частоту нельзя, т.к. нехватает скорости работы МК, и он начинает пропускать тики. С использованием аппаратного счетчика, можно смело поднимать частоту до 255*256*100=6528000 герц. Опять таки, с ТОЧНЫМИ данными, по той-же причине. Правда тут придется использовать слово для хранения данных. Я разобрался с TMR0, щас перепишу прошивку на использование его и хранения тиков в слове.
   3.0.13.0.1

Xan

координатор

IvanV> А почему бы не наоборот - запускать схему подачей напряжения на воспламенитель?

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

Ну а от МК или вручную - дело вкуса.
Лично я бы от МК запускал бы, мне так привычнее.
   7.07.0

Serge77

модератор

Quazi> Не совсем так: жесткость измерительного конденсатора подбирается так, чтобы всегда использовался весь диапазон измерений: от 0 до 255.

От 0 до 255 ты бы смог использовать, если бы частота генератора изменялась от 25000 до 0 Герц. А она так не меняется, я же написал.

Quazi> Кстати, для частоты от 25500 герц, и частоте измерений 100 на выходе получаем ТОЧНОЕ значение кол-ва тиков генератора в промежуток 1/100 сек, т.к. МК тупо считает эти самые тики. Погрешность 0.

Ну и что? Тебе же нужно измерять не точно 100 кг, а тягу от 0 до 100.

Quazi> Увеличивать частоту нельзя, т.к. нехватает скорости работы МК, и он начинает пропускать тики.

Это значит, что нужно исправить программу. МК легко справится с частотой 300-400 кГц.
Да ты и сам пишешь:

Quazi> С использованием аппаратного счетчика, можно смело поднимать частоту до 255*256*100=6528000 герц.

Правда 555 таймер столько не даёт, да столько и не нужно.
   3.03.0

Quazi

новичок
Уважаемые коллеги, подвожу краткий итог:
1) На схеме необходимо предусмотреть стабилизацию питания
2) Необходимо включить резистор в 200ОМ в разрыв между 16 ногой МК и транзистором, управляющим запалом.
3) Между МК и светодиодами, надо включить резисторы. Прошу уточнить какого номинала? От чего зависит номинал?
4) В базах транзисторов выносного пульта надо поставить делители для защиты от наводок.
5) Счетчик генератора будет запущен через модуль TMR0 и хранить измерения в слове (2 байта без знака), что позволит:
А) Считать непосредственно частоту генератора (как и раньше) с погрешностью ~0
Б) Поднять максимальную частоту до 6 мегагерц.
К сожалению я не специались в схемотехнике, прошу тех, кто может и хочет помочь, исправить схему так, чтобы:
1) была стабилизация питания
2) Были делители на транзисторах выносного пульта.
Результаты с коментариями можно присылать мне на почту: basov_mvmail.ru
Я все прочитаю и выложу результат.
Спасибо заранее.
   3.0.13.0.1

Serge77

модератор

IvanV> А почему бы не наоборот - запускать схему подачей напряжения на воспламенитель?

Лучше так: батарея в руках, отсоединена от схемы. От стенда к окопу идут два провода для батареи. Подключаешь батарею, МК даёт секунду выдержки, начинает запись, через 5 секунд запускает двигатель и пишет, пока есть питание. Отключаешь батарею. Полная гарантия безопасности.
   3.03.0

Quazi

новичок
Уточню несколько моментов:
0) Это первая "проба пера". В первом варианте:
1) Запал запускается МК
2) Фактически, запал запускается одной командой и сразу же начинается запись. Т.к. запал обычно разгорается >0.5 сек, то думаю пока этого достаточно для четкого определения нуля в начале.
3) Защита от случайного запуска это светодиод, указывающий на подачу питания на запал. Сам запал подключается в схеме через разьем. Схема работы предполагает, что запал подключается перед самым испытанием, при включенной схеме, но выключенном запале (светодиод не горит).
4) Память не съемная.
Еще раз повторяю, пока идет отработка основных моментов. Снача надо чтобы заработала первая версия. Потом будем ее долизывать, делать удобнее, снабдим цветным LCD монитором, чтобы сразу посмотреть графики и т.д. :)
   3.0.13.0.1

Xan

координатор

Quazi> 1) На схеме необходимо предусмотреть стабилизацию питания

Для начала надо почитать док DS39582B.pdf с сайта майкрочип.
там написано, что питание до 5.5 вольт, не более.
Обычно ставят микруху стабилизатора 7805 (78C05). Перед ней и после неё обязательны керамические конденсаторы (например 2.2 микрофарады).

Quazi> 2) Необходимо включить резистор в 200ОМ в разрыв между 16 ногой МК и транзистором, управляющим запалом.

Можно и больше, зависит от коэффициента усиления транзистора и тока запала.

Quazi> 3) Между МК и светодиодами, надо включить резисторы. Прошу уточнить какого номинала? От чего зависит номинал?

При 200 омах ток получится 12...17 мА (в зависимости от типа диода). Обычно максимальный ток у маленьких диодов = 20 мА. Так что ничего не превысится.
Но если не требуется особая яркость, можно ток уменьшить - резистор увеличить.
Или наоборот, довести до предела. Для этого надо измерить напряжение на резисторе, посчитать ток через него, посчитать величину резистора, при которой ток будет 20...25 мА.

Quazi> 4) В базах транзисторов выносного пульта надо поставить делители для защиты от наводок.

Да.

Quazi> 5) Счетчик генератора будет запущен через модуль TMR0 и хранить измерения в слове (2 байта без знака), что позволит:
Quazi> А) Считать непосредственно частоту генератора (как и раньше) с погрешностью ~0
Quazi> Б) Поднять максимальную частоту до 6 мегагерц.

Можно использовать таймер-1 для прерываний (настроить на 100 Гц), а внутри прерывания считывать таймер-0.
Потери старших битов можно не бояться, так как кривая легко восстанавливается (см.картинку).
Прикреплённые файлы:
005.gif (скачать) [32 кБ]
 
 
   7.07.0

IvanV

опытный

IvanV>> А почему бы не наоборот - запускать схему подачей напряжения на воспламенитель?
Serge77> Лучше так: батарея в руках, отсоединена от схемы. От стенда к окопу идут два провода для батареи. Подключаешь батарею, МК даёт секунду выдержки, начинает запись, через 5 секунд запускает двигатель и пишет, пока есть питание. Отключаешь батарею. Полная гарантия безопасности.


Неплохо. А как потом запись отключаетить?
   7.07.0

Serge77

модератор

IvanV> Неплохо. А как потом запись отключить?

Отключением батареи. Либо дождавшись, когда вся память заполнится, либо не дожидаясь.
   3.03.0

Quazi

новичок
Quazi>> 1) На схеме необходимо предусмотреть стабилизацию питания
Xan> Для начала надо почитать док DS39582B.pdf с сайта майкрочип.
Xan> там написано, что питание до 5.5 вольт, не более.
Я его читал очень подробно. Даже пришлось написать собственный эмулятор(т.к. SIM не поддерживает I2C), а это без детального понимания как и что работает не возможно. НА схеме кругом написано, что подключается к +5.
Xan> Обычно ставят микруху стабилизатора 7805 (78C05). Перед ней и после неё обязательны керамические конденсаторы (например 2.2 микрофарады).
Если у меня питание от 3-х батареек АА (пальчики), т.е. 4.5 вольта, все равно необходимо стабилизатор ставить?
Важно: питание запала это отдельные батарейки (6 штук А, большие такие), они дают 9 вольт, но только в цепи запала.
Quazi>> 2) Необходимо включить резистор в 200ОМ в разрыв между 16 ногой МК и транзистором, управляющим запалом.
Xan> Можно и больше, зависит от коэффициента усиления транзистора и тока запала.
Понятно.
Quazi>> 3) Между МК и светодиодами, надо включить резисторы. Прошу уточнить какого номинала? От чего зависит номинал?
Xan> При 200 омах ток получится 12...17 мА (в зависимости от типа диода). Обычно максимальный ток у маленьких диодов = 20 мА. Так что ничего не превысится.
Xan> Но если не требуется особая яркость, можно ток уменьшить - резистор увеличить.
Xan> Или наоборот, довести до предела. Для этого надо измерить напряжение на резисторе, посчитать ток через него, посчитать величину резистора, при которой ток будет 20...25 мА.
Понятно.
Xan> Можно использовать таймер-1 для прерываний (настроить на 100 Гц), а внутри прерывания считывать таймер-0.
Xan> Потери старших битов можно не бояться, так как кривая легко восстанавливается (см.картинку).
Я так уже делаю, тока без прерывания (постоянно проверяю сколько тиков прошло). Каким образом настроить его на 100 герц? Если использовать внутренний генератор и максимальный делитель 8, то 100 герц не получается.
И еще: я не понял, как восстанавливать cтаршие биты? Можно подробнее?
   3.0.13.0.1
Это сообщение редактировалось 26.01.2009 в 08:53

Xan

координатор

Quazi> Если у меня питание от 3-х батареек АА (пальчики), т.е. 4.5 вольта, все равно необходимо стабилизатор ставить?

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

Xan>> Можно использовать таймер-1 для прерываний (настроить на 100 Гц), а внутри прерывания считывать таймер-0.
Quazi> Я так уже делаю, тока без прерывания (постоянно проверяю сколько тиков прошло). Каким образом настроить его на 100 герц? Если использовать внутренний генератор и максимальный делитель 8, то 100 герц не получается.

Ай! Промахнулся. Я имел в виду таймер-2 с компаратором, а не таймер-1, чтоб он выдавал заданную частоту прерываний.
На самом деле можно сделать частоту прерываний (например) 14400 Гц, а внутри прерывания сделать софтовый счётчик на 144, чтоб получить 100 Гц.

Xan>> Потери старших битов можно не бояться, так как кривая легко восстанавливается (см.картинку).
Quazi> И еще: я не понял, как восстанавливать cтаршие биты? Можно подробнее?

Если кривая достаточно плавная, то при переходе младшего байта черех ноль очевидно должен случаться перенос в старший байт.
Условие плавности - изменение младшего бита на величину меньшую 128. Это можно обеспечить при записи данных.
На предыдущей картинке в самом низу получается пила, но очевидно, что куски пилы надо сместить на 256, чтоб получить плавную кривую (которая выше).
   7.07.0

Quazi

новичок
Quazi> 5) Счетчик генератора будет запущен через модуль TMR0 и хранить измерения в слове (2 байта без знака), что позволит:
Quazi> А) Считать непосредственно частоту генератора (как и раньше) с погрешностью ~0
Quazi> Б) Поднять максимальную частоту до 6 мегагерц.
Интересное дело: переписал прошивку на использование TMR0 и хранения результата в слове. Стал отлаживать в симуляторе (MPLAB SIM, стандартный от microchip v7.42). Генератор в режиме эмуляции с частотой 250000герц (10 циклов low, 10 циклов High). Программа выдает частоту ~2440(*100) герц. Ошибка ~3%. Искал по форумам, пишут что SIM плохо эмулирует работу TMR0 (Случайная погрешность таймера? - Форум Микро-Чип.
Вопрос: а как будет в чипе?
   3.0.13.0.1

Quazi

новичок
Quazi>> Если у меня питание от 3-х батареек АА (пальчики), т.е. 4.5 вольта, все равно необходимо стабилизатор ставить?
Xan> Тут стабилизатор не поможет уже.
Xan> Напруга на батарейках будет падать при разряде (в основном на светодиоды), может упасть до 3.3 вольта, например.
Xan> Надо в доке посмотреть на график питание-частота.
Понятно.
Xan> Xan>> Можно использовать таймер-1 для прерываний (настроить на 100 Гц), а внутри прерывания считывать таймер-0.
Quazi>> Я так уже делаю, тока без прерывания (постоянно проверяю сколько тиков прошло). Каким образом настроить его на 100 герц? Если использовать внутренний генератор и максимальный делитель 8, то 100 герц не получается.
Xan> Ай! Промахнулся. Я имел в виду таймер-2 с компаратором, а не таймер-1, чтоб он выдавал заданную частоту прерываний.
Xan> На самом деле можно сделать частоту прерываний (например) 14400 Гц, а внутри прерывания сделать софтовый счётчик на 144, чтоб получить 100 Гц.
Примерно так я и делаю (только без прерывания): запоминаю значение таймера1, и периодически смотрю сколько прошло тиков, если >6247 (±3 тика), то прошло еще 1/100 сек. Обновляю показания счетчика (добавляю 6250, чтобы не накапливать ошибку) и далее по алгоритму.
Xan> Xan>> Потери старших битов можно не бояться, так как кривая легко восстанавливается (см.картинку).
Quazi>> И еще: я не понял, как восстанавливать cтаршие биты? Можно подробнее?
Xan> Если кривая достаточно плавная, то при переходе младшего байта черех ноль очевидно должен случаться перенос в старший байт.
Xan> Условие плавности - изменение младшего бита на величину меньшую 128. Это можно обеспечить при записи данных.
Xan> На предыдущей картинке в самом низу получается пила, но очевидно, что куски пилы надо сместить на 256, чтоб получить плавную кривую (которая выше).
Это очевидно нам, а как это будет выглядеть в виде алгоритма? Сейчас я:
1) Запоминаю начальное значение TMR0
2) раз в 40-50 циклов проверяю флаг TMR0 (T0IF). Если установлен, то инкрементирую старший байт частоты (и сбрасываю флаг).
3) По истечении 1/100 сек, вычитаю из текущего TMR0, запомненное на 1 шаге (если есть перенос, то уменьшаю старший байт). Это младший байт.
4) Обновляю начальное значение TMR0.
5) Сохраняю полученное значение частоты (2 байта, без знака).
   3.0.13.0.1

Xan

координатор

Xan>> Если кривая достаточно плавная, то при переходе младшего байта черех ноль очевидно должен случаться перенос в старший байт.
Xan>> Условие плавности - изменение младшего бита на величину меньшую 128. Это можно обеспечить при записи данных.
Xan>> На предыдущей картинке в самом низу получается пила, но очевидно, что куски пилы надо сместить на 256, чтоб получить плавную кривую (которая выше).
Quazi> Это очевидно нам, а как это будет выглядеть в виде алгоритма?

В МК:

static int16 NewValue, OldValue, Delta;
static char NewByte;

NewValue = ...; // Здесь получаем новое значение частоты раз в 100 Гц.

Delta = NewValue - OldValue;
if (Delta < -127) Delta = -127; // Изменение не более чем на ±127.
if (Delta > 127) Delta = 127;
OldValue += Delta;
Newbyte = OldValue; // берём только младший байт.




В компе:

static int16 Value;
static char Newbyte, OldByte, Delta;

Newbyte = ...; // Берём очередной байт.

Delta = Newbyte - OldByte; // Здесь получаем ограниченное изменение частоты.
Value += Delta; // Добавляем к старому значению.
OldByte = Newbyte; // Запоминаем последний байт.




Ну, это всё в уме сгенерировано и без проверки, так что ошибки быть должны! :)
   7.07.0
+
-
edit
 

MartKot

опытный

-
   
Это сообщение редактировалось 03.02.2009 в 03:03

Quazi

новичок
Xan>>> Если кривая достаточно плавная, то при переходе младшего байта черех ноль очевидно должен случаться перенос в старший байт.
Xan> Xan>> Условие плавности - изменение младшего бита на величину меньшую 128. Это можно обеспечить при записи данных.
...
Xan> -----
Xan> Ну, это всё в уме сгенерировано и без проверки, так что ошибки быть должны! :)
Идею понял. А как быть, если тяга вырастет скачком (т.е. очень быстро). Как правило тяга в начале растет именно так. Очеь велика вероятность пропустить один отсчет. Мне кажется, что пока этот подход не актуален. В текущем варианте система уже работает. Правда пока не понятно, что делать с TMR0. Ошибка в 3% есть. Через неделю будет возможность проверить на реальной схеме. Посмотрим что получиться.
   3.0.13.0.1
Это сообщение редактировалось 27.01.2009 в 11:36

Xan

координатор

Quazi> Идею понял. А как быть, если тяга вырастет скачком (т.е. очень быстро).

Ну не за сотую же секунды.

А даже если, то вот же:

Xan>> if (Delta < -127) Delta = -127; // Изменение не более чем на ±127.
Xan>> if (Delta > 127) Delta = 127;

Это, конечно, некоторое искажение данных, но это всего лишь "заваленный фронт".
Ну и если в старшем байте используется 2...3 бита, то исказятся максимум несколько точек.
   7.07.0
+
-
edit
 

Serge77

модератор

Quazi, не цитируй так много! Исправь своё сообщение.
   3.03.0

Quazi

новичок
1) Обещали к выходным (кстати не уточнил к этим или следующим. :( ) отдать плату
2) Написал прошивку:
А) Для отсчета 1/100 секунды использую TMR2. Точность получилась ±10 циклов(2 миллионные секунды). Думаю достаточно. :)
Б) Для подсчета частоты использую TMR1. Он 16 разрядный, т.е. никаких проблем с учетом старших быт нет. Соответственно не надо ничего восстанавливать, учитывать знаки и т.д. И так все само считается.
3) Человек который реализует все в железе, оказывается мне давал общую схему. На самом деле он все запитал от 9-12 вольт. Со стабилизатором. С делителями и т.д. Спасибо за замечания, но не пригодились. ;)

Теперь мы в плотную подошли к вопросу о софте на стороне ПК. Какие будут предложения, пожелания, требования к функционалу?
Из того, что мне пришло в голову сразу:
1) Загрузка данных из стенда
2) Разбиение данных на отдельные измерения
3) Отметка одного из измерений, как калибровочного, с указанием величины нагрузки в заданные моменты времени
4) Отображение измерения, с учетом указанных данных калибровки (выбор из созданных(и сохраненных в бызе) на 3 этапе)
5) Интегрирование измерения (расчет полного импульса)
6) Для удобства работы, мне кажется нужно заложить автоматическое ведение некой локальной базы измерений. Чтобы искать было легче. Сравнивать и т.д.
   3.0.13.0.1
+
-
edit
 

Serge77

модератор

Ещё введение массы топлива и расчёт удельного импульса.
Сохранение графика в файл.
   2.0.0.122.0.0.12

IvanV

опытный

Люди, какое допустимое напряжение можно подать на Line-in вход?
   7.07.0
+
-
edit
 

Serge77

модератор

У меня около 0.6 В. Кажется допустимое до 1 В.
   2.0.0.122.0.0.12

IvanV

опытный

Serge77> У меня около 0.6 В. Кажется допустимое до 1 В.

А сопротивление выходное надо подгонять?

При работе генератора с емкостным датчиком меняется частота, а напряжение на выходе меняется?

И ещё вопрос - ничего, что датчик дырявый (пластины)?
   7.07.0

Serge77

модератор

IvanV> А сопротивление выходное надо подгонять?

Это я не знаю. Посмотри мою схему, сделай так же:


IvanV> При работе генератора с емкостным датчиком меняется частота, а напряжение на выходе меняется?

Нет.

IvanV> И ещё вопрос - ничего, что датчик дырявый (пластины)?

Ничего, если дыры не очень большие. Какая ёмкость датчика?
   3.03.0
1 5 6 7 8 9 216

в начало страницы | новое
 
Поиск
Настройки
Твиттер сайта
Статистика
Рейтинг@Mail.ru