Роторный компрессометр своими руками |
Здравствуйте, гость ( Вход | Регистрация )
Роторный компрессометр своими руками |
26.7.2013, 3:44
Сообщение
#1
|
|
GOLD Группа: Пользователи Сообщений: 1604 Регистрация: 9.1.2011 Из: vl Пользователь №: 4086 |
Для изготовления нам потребуется купить:
На первом пункте останавливаться не буду - нужен тот, у которого есть usb порт, а значит любой Датчик давления нужен с пределом измерения не ниже 10 кг^см2, но и не сильно большим, чтобы обеспечить приемлимую точность. Исполнение - трёх контактное, с питанием = 5вольт. Ардуина. Это плата для разработчиков на основе микроконтроллера atmega. Купить можно в ближайшем радио-магазине. Выбор моделей довольно огромен (http://arduino.cc/en/Main/Products) - подойдет любая 5-вольтовая. (есть 3.3 вольтовые исполнения - они нам не подходят) Железная часть: вкручиваем датчик давления в свечное отверстие (понадобится выточить переходник у любого токаря). Подключаем датчик давления к ардуине: питание датчика на контакт 5V, землю на GND, сигнальный выход на A0. Программная часть: Скачиваем три программы: Arduino IDE Processing Megalog Viewer Все три программы платформо-независимые, можно работать из под винды, мака, линукса. Если немножно исхитриться, то даже под андроидом замер компрессии не сложно организовать. Arduino IDE Процесс замера следующим сообщением... |
|
|
26.7.2013, 5:01
Сообщение
#2
|
|
GOLD Группа: Пользователи Сообщений: 1604 Регистрация: 9.1.2011 Из: vl Пользователь №: 4086 |
Для того чтобы фиксировать замер, и удобно его анализировать, я использую небольшой скетч написан на языке processing.
Открываем эту программку, по интерфейсу она очень похожа на ардуино ide. Вставляем следующий код: Код import processing.serial.*; Serial myPort; // The serial port int xPos = 1; // horizontal position of the graph float logTime=0; boolean converting = false; PrintWriter output; void setup () { // set the window size: size(800, 400); // List all the available serial ports println(Serial.list()); // I know that the first port in the serial list on my linux // is always my Arduino, so I open Serial.list()[0]. // Open whatever port is the one you're using. myPort = new Serial(this, Serial.list()[0], 115200); // don't generate a serialEvent() unless you get a newline character: myPort.bufferUntil('\n'); // set inital background: background(0); } void draw () { } void keyTyped(){ if((key == 's') && (!converting)) { output = createWriter("compression_" + str(hour()) + ":" + str(minute()) + ":" + str(second()) + ".msl"); output.println ("DIY Rotary engine compression tester"); output.println ("Time\tPressure"); output.println ("s\tkg^cm2"); xPos = 0; logTime=0; background (0); myPort.write ("s\n"); converting = true; } if((key == 'p') && (converting)) { myPort.write ("p\n"); output.flush(); output.close(); converting = false; } } void serialEvent (Serial myPort) { // get the ASCII string: String inString = myPort.readStringUntil('\n'); float voltage, pressure; if (inString != null) { // trim off any whitespace: inString = trim(inString); output.print(logTime); logTime+=0.002; //bacause our arduino send values every 2ms. output.print("\t"); float inByte = float(inString); //getting adc value (0-1023) voltage = map(inByte, 0, 1023, 0, 5); //converting adc to voltage (0-5V) pressure = map(voltage, 0.5, 4.5, 0, 10); //last two numbers is sensor pressure for 0.5 & 4.5V output output.println(pressure); inByte = map(inByte, 0, 1023, 0, height); // draw the line: stroke(127,34,255); line(xPos, height, xPos, height - inByte); xPos++; // increment the horizontal position: // at the edge of the screen, go back to the beginning: if (xPos > width) { xPos = 0; background(0); } } } Обязательно отредактировать строчку pressure = map(voltage, 0.5, 4.5, 0, 10); - вместо последней цифры 10 указываем предельные значения своего датчика. Скетч желетельно сохранить, он понадобится каждый раз при замере компрессии. Так же можно ткнуть в меню File->Export Application, чтобы в дальшейшем небыло необходимости запускать редактор. Подключаем через usb наш ардуино к компу, и запускаем скетч на выполнение. Если все прошло гладко - откроется пустое окно. Далее всё просто - нажимаем на клавиатуре кнопку "S" - начнется запись лог файла, крутим стартером - по ходу процесса будет строиться график замера (на него можно не обращать внимание, он не точен - сделан чисто для наглядности) После того как покрутили стартером нажимаем кнопку "P" (латинская ПЭ) на клавиатуре - график остановится, и результат замера сохранится в файл compression_xxxx.msl, где xxxx - текущее время. Вкручиваем датчик во вторую секцию и повторяем заново: Нажимаем "S", крутим стартером, нажимаем "P".... Теперь можно закрыть окно в котором рисовались графики - для анализа оно не понадобится. На данном этапе у нас есть два .msl файла, по одному на каждую секцию соответственно. Эти файлы открываем по-очереди в программе Mega log viewer. Слева, в поле Graph 1 выбираем из выпадающего списка поле Pressure. Если необходимо, подгоняем масштаб графика, пользуясь кнопками лупы в нижнем правом углу. (скорее всего масштаб понадобится уменьшить). Значения компрессии видно сразу. Если нужно посмотреть давление в любой момент времени - тыкаем на график в нужной точке. Остальсь вычислить обороты вращения стартера - нажатием и удержанием кнопки мышки выделяем область между тремя пиками давления: MegaLog.png ( 42.28 килобайт ) Кол-во скачиваний: 132 Снизу появится дельта времени (в моем примере это 0.659с). Открываем калькулятор, и делим цифру 180 на эту дельту - получаем искомые обороты в минуту. 180/0.659=273. |
|
|
Текстовая версия | Сейчас: 21.9.2024, 15:15 |