-
Вложений: 10
Осциллограф на Arduino .
Очень часто на Arduino для тестирования аналоговых портов приходится подключать осциллограф для проверки , а его как назло нет под рукой, вот и написал программу осциллографа, теперь при помощи Arduino можно измерять аналоговый сигнал с частотой от 0 до 5000 Гц . В автомобиле можно мерять показания кислородного датчика , импульсы тахометра, форсунки и многое другое .
Скачать программу .
Код для Ардуино:
PHP код:
//oscilloscope
//http://compcar.ru
byte head[3]={170,204,195};
byte MyBuff[800];
unsigned int i=0;
void setup()
{
Serial.begin(115200);
}
void loop()
{
for (i=0; i < 800; i++)
{
MyBuff[i] = analogRead(0)/4;
}
Serial.write(head,3);
Serial.write(MyBuff,800);
}
Вложение 13341
Новая версия скетча Осциллографа, увеличилась предельно измеряемая частота до 50000Гц
Требуется установка библиотеки CyberLib
PHP код:
//oscilloscope
//http://duino.ru
//Для измерений используется вход А0
#include <CyberLib.h>
uint8_t MyBuff[803];
volatile uint16_t i=3;
void setup()
{
MyBuff[0]=170;
MyBuff[1]=204;
MyBuff[2]=195;
UART_Init(115200);
ADCSRA=(1<<ADEN)|(1<<ADIE)|(1<<ADSC)|(1<<ADATE)|(1<<ADPS2)|(1<<ADPS0);
ADMUX=(1<<ADLAR)|(1<<REFS0);
}
void loop(){}
ISR(ADC_vect)
{
MyBuff[i] = ADCH;
i++;
if(i==803)
{
UART_SendArray(MyBuff, sizeof(MyBuff));
i=3;
}
}
Изменился функционал и дизайн программы.
Большое спасибо XsanderS за помошь в создании программы и дизайна
-
Re: Осциллограф на Arduino .
Переделал программу .
Теперь можно плавно растягивать окно осциллографа до полного экрана и наоборот.
Добавил регулировку синхронизации и времени развертки.
Теперь можно поставить на паузу и расмотреть подробно нужный момент осциллограмы.
Убрал мерцание и зависания.
-
Re: Осциллограф на Arduino .
здравствуйте есть ли возможность увидить исходники данной программы?
-
Re: Осциллограф на Arduino .
Здесь есть исходник похожего проекта.
-
Re: Осциллограф на Arduino .
Добавил новую версию осциллографа, увеличил измеряемую частоту до 3000Гц
-
Re: Осциллограф на Arduino .
Сегодня получил ардуино, и первым делом попробовал осцилограф работает :), щас попробую еще вольтметр
-
Re: Осциллограф на Arduino .
Смотри внимательней и на открытый вход больше +5в не подавай
-
Re: Осциллограф на Arduino .
а вот еще можно использовать осцилограф на Atmega32 интересное решение только диапазон маленький - http://radiokot.ru/circuit/digital/measure/21/
-
Re: Осциллограф на Arduino .
-
Re: Осциллограф на Arduino .
Если речь про диапазон напряжений то простой резистивный делитель подойдет, как проекте на вольтметр. Еще делитель нужно расчитывать с учетом нужного вам входного сопротивления
-
Re: Осциллограф на Arduino .
Если не сложно нарисуйте схему для осцилогрофа, к какому контакту цеплять провод с наконечником для измерения...
-
Re: Осциллограф на Arduino .
-
Re: Осциллограф на Arduino .
Эдуард, а второй конец землить на машину нужно? И я так понял что делитель можно так же как на вольтметре собрать.
-
Re: Осциллограф на Arduino .
Землю Carduino на землю автомобиля . Если входные напряжения выше чем +5в то делитель обьязательно, ну желательно что бы он не завалил полезный сигнал. В какой цепи мерять хочешь?
-
Re: Осциллограф на Arduino .
Хочу чтоб универсальный осцилограф был, а то есть стационарный пока подтащишь блин, а так на комп диагностики подвешу и вперед....
-
Re: Осциллограф на Arduino .
Сделай делитель с общим сопротивлением 1мом
-
Re: Осциллограф на Arduino .
Как шкалы проградуировать?
-
Re: Осциллограф на Arduino .
Выложил в шапке новую улучшенную версию осциллографа .
Добавил шкалу .
Выжал максимум , теперь для увеличения частоты нужно писать код на ассемблере
Если кто нарисует хорошую шкалу, то выкладывайте я ее добавлю к программе
-
Re: Осциллограф на Arduino .
В связи с неожиданной необходимостью наличия осцилографа озадачился его поиском... к сожалению на ардуино слишком малая частота получается, но для начала и это сойдет...
Но на просторах интернета нашел еще один Free проект на Pic контроллере который кака японял решает в том числе и эту проблемму:
Цитата:
Сообщение от
Chip
Выжал максимум , теперь для увеличения частоты нужно писать код на ассемблере
Не совсем конечно ардуино... но очень не плохой НЕкомерческий проект оцилографа на базе пик контроллера IC18F2550... тактовая частота 20Мгц(а может и 48Мгц до конца не разобрался)... И что самое хорошее прост в реализации (микросхема 200-350р) думаю цена законченого устройства будет в передлах 1000р... а если совсем ужаться то 500р. Самое сложное для неподготовленных людей будет прошить микросхему...
http://translate.google.com/translat...3D24%26hl%3Dru
Впринципи можно сказать все исходники есть... так что у кого есть желание могут адаптировать для Ардуино... (частота генератора не намного ниже)
Или еще для увеличения частоты используют ADC0820.
http://www.planar.ru/index.php?page=...etail&id=31331
А также MAX114/118
http://www.planar.ru/index.php?page=...etail&id=31367
Но в чем суть я не вдавался.. может кто напишет схему включения и код подкорректирует?
http://aes.at.ua/_pu/1/49310.png
-
Re: Осциллограф на Arduino .
CHIP, а если прикрутить вот такой АЦП к ардуине какую частотку можно будет снять(сколько Msps) ?
ADC1175 8-Bit, 20MHz, 60mW A/D Converter (60руб.)
http://www.national.com/mpf/DC/ADC1175.html#Overview
И вообще на сколько будет сложно прикрутить данный АЦП к Ардуине ?
если интересно вот еще нашел список оптимальных АЦП для Осцилографа
AD9054A 8-Bit 8-Bit, 135/200 MSPS 500 mW ADC - по eFind - 900-1500 руб.;
ADS830 8-Bit, 60MHz 170mW A/D Converter - по eFind - 150-300 руб.;
ADC1175-50 8-Bit, 50 MSPS, 125 mW A/D Converter - по eFind - 60-100 руб.;
AD9283 8-Bit, 50 MSPS/80 MSPS/100 MSPS 3V ADC - по eFind - 130-500 руб.;
AD9057 8-Bit 40/50/80 MSPS 200 mW ADC - по eFind - 140-200 руб.;
ADC08351 8-Bit, 42 MSPS, 40 mW A/D Converter - по eFind - 100-150 руб.;
AD9281 dual channel, 28 MSPS, 8-bit ADC. - по eFind - 170-300 руб.;
AD775 8-Bit 20 MSPS, 60 mW A/D Converter - по eFind - 100-600 руб.;
MAX114/МАХ118 1Msps, 4 & 8-Channel, 8-Bit ADC - по eFind - 250-400 руб.;
-
Re: Осциллограф на Arduino .
Выложил в шапке новую версию осциллографа.
Cпасибо за либу SBorovkov
-
Re: Осциллограф на Arduino .
Попробовал работает хорошо, сейчас побалуемся?
-
Re: Осциллограф на Arduino .
Помогите разобраться с граблями
плата ардуино уно
версия проги для закачки скретчей 0022
когда вгоняю версию скретча с библиотекой SmallUart
при коимпиляции пишет ошибку
sketch_jun07a.cpp: In function 'void setup()':
sketch_jun07a:10: error: a function-definition is not allowed here before '{' token
sketch_jun07a:17: error: a function-definition is not allowed here before '{' token
sketch_jun07a:20: error: expected unqualified-id before string constant
sketch_jun07a:21: error: a function-definition is not allowed here before '{' token
sketch_jun07a:23: error: expected `}' at end of input
типа как скобки не хватает
если вгоняю 1й скретч, он хорошо заливается, но при запуске прога пишет
FT_open - devices not found
как устранить неприятность?
-
Re: Осциллограф на Arduino .
К сожалению программа с UNO работать не будет, потому что программа на прямую обращается к драйверу FTDI.
-
Re: Осциллограф на Arduino .
очень жаль, но всёравно спасибо
-
Re: Осциллограф на Arduino .
Это относится только к программе, скетчь из шапки должен компилироваться и работать.
Сейчас тестирую осциллограф на Carduino Nano, предельная частота измеряемого аналогового сигнала 50000Гц (50кГц)
Уже все отлично работает , осталось только засинхронизировать на компе начала фрейма . Если интересно могу выложить пока в сыром не доделаном виде
-
Re: Осциллограф на Arduino .
Цитата:
Сообщение от
Chip
К сожалению программа с UNO работать не будет, потому что программа на прямую обращается к драйверу FTDI.
У меня те же проблемы со второй версией осциллографа ( первая работает). С мегой тоже не будет работать?
-
Re: Осциллограф на Arduino .
Если мега с FTDI то работать будет.
Чтобы заработало нужно биюлиотеку распаковать и положить в папку libraries
-
Re: Осциллограф на Arduino .
Цитата:
Сообщение от
Chip
Если мега с FTDI то работать будет.
Чтобы заработало нужно биюлиотеку распаковать и положить в папку libraries
У Вас приобрел на днях :), вроде с FTDI. Библиотеки распаковывал.
А так и должно быть?
#include <SmallUart.h>
void setup()
{
#include <SmallUart.h>
void setup()
Хотя, после того, как убрал вторые include и setup ничего не изменилось, ошибка.
-
Re: Осциллограф на Arduino .
нет не должно, наверно с ошибкой скопировал
Исправил, все работает
-
Re: Осциллограф на Arduino .
Цитата:
Сообщение от
Chip
Это относится только к программе, скетчь из шапки должен компилироваться и работать.
Сейчас тестирую осциллограф на Carduino Nano, предельная частота измеряемого аналогового сигнала 50000Гц (50кГц)
Уже все отлично работает , осталось только засинхронизировать на компе начала фрейма . Если интересно могу выложить пока в сыром не доделаном виде
а на UNO ,будет работать? если до то выкладывайте по тестирую
-
Re: Осциллограф на Arduino .
К сожалению программа на UNO работать не будет :(
-
Re: Осциллограф на Arduino .
Подскажите, возможно ли измерять осциллограммы с частотой до 100 kHz на Arduino Mega ?
-
Re: Осциллограф на Arduino .
Теоретически возможно, на практике пробовал пока 50кГц
-
Вложений: 1
Re: Осциллограф на Arduino .
Часто встречал по форуму вопросы чему равно одно деление на шкале. 3 деления это 20 милисекунд, при условии что бегунки развертки находятся в самом верхнем положении. Chip, Выложи плиз картинку с проги хочу шкалу нарисовать, или в личку кинь.
зы: Если есть желание переделать немного прогу могу нарисовать 30 картино со шкалой для каждого деления бегунка, чтобы при выставлении бегунка выставлялась соответствующая шкала.
-
Re: Осциллограф на Arduino .
Постараюсь сделать новую программу будет работать с высокими частотами, тогда и нарисуешь
-
Вложений: 1
Re: Осциллограф на Arduino .
Вета версия программы, частота измеряемого сигнала 50000Гц, частота выборки 150000Гц
Пробуйте
PHP код:
//oscilloscope
//http://compcar.ru
#include <SmallUart.h>
volatile uint8_t MyBuff[800];
volatile uint16_t i=0;
void setup()
{
pinMode(9, OUTPUT);
pinMode(5, OUTPUT);
TCCR1B = TCCR1B & 0b11111000 | 1;
analogWrite(9, 128);
ADCSRA=(1<<ADEN)|(1<<ADIE)|(1<<ADSC)|(1<<ADATE)|(1<<ADPS1)|(1<<ADPS0);
ADMUX=(1<<ADLAR)|(1<<REFS1)|(1<<REFS0);
UART_Init();
}
void loop()
{
}
ISR(ADC_vect)
{
MyBuff[i] = ADCH;
i++;
if(i==800)
{
UART_SendByte(170);
UART_SendByte(204);
UART_SendByte(195);
for (i=0; i<800; i++) UART_SendByte(MyBuff[i]);
i=0;
}
}
-
Re: Осциллограф на Arduino .
Не получается прошить. выдает ошибки, библиотеку SmallUart установил. Может изза того что у меня версия программы 0021? может надо обновить до 0022? просто щас скорость интернета слабая, не охото качать 3 часа если это не от программы зависит. Библиотеку устанавливал так: Распаковал архив с последнего поста и папку SmallUart в которой файлы SmallUart.cpp SmallUart.h поместил в папку libraries
Код HTML:
C:\Dokumente und Einstellungen\XsanderS\Desktop\arduino-0021\libraries\SmallUart\SmallUart.cpp: In function 'void UART_Init()':
C:\Dokumente und Einstellungen\XsanderS\Desktop\arduino-0021\libraries\SmallUart\SmallUart.cpp:13: error: 'UBRRH' was not declared in this scope
C:\Dokumente und Einstellungen\XsanderS\Desktop\arduino-0021\libraries\SmallUart\SmallUart.cpp:14: error: 'UBRRL' was not declared in this scope
C:\Dokumente und Einstellungen\XsanderS\Desktop\arduino-0021\libraries\SmallUart\SmallUart.cpp:17: error: 'UART_DOUBLE' was not declared in this scope
C:\Dokumente und Einstellungen\XsanderS\Desktop\arduino-0021\libraries\SmallUart\SmallUart.cpp:20: error: 'UCRB' was not declared in this scope
C:\Dokumente und Einstellungen\XsanderS\Desktop\arduino-0021\libraries\SmallUart\SmallUart.cpp:20: error: 'TXEN' was not declared in this scope
C:\Dokumente und Einstellungen\XsanderS\Desktop\arduino-0021\libraries\SmallUart\SmallUart.cpp:20: error: 'RXEN' was not declared in this scope
C:\Dokumente und Einstellungen\XsanderS\Desktop\arduino-0021\libraries\SmallUart\SmallUart.cpp:21: error: 'UCRC' was not declared in this scope
C:\Dokumente und Einstellungen\XsanderS\Desktop\arduino-0021\libraries\SmallUart\SmallUart.cpp:21: error: 'UCRC_VALUE' was not declared in this scope
C:\Dokumente und Einstellungen\XsanderS\Desktop\arduino-0021\libraries\SmallUart\SmallUart.cpp: In function 'void UART_SendByte(uint8_t)':
C:\Dokumente und Einstellungen\XsanderS\Desktop\arduino-0021\libraries\SmallUart\SmallUart.cpp:27: error: 'UCRA' was not declared in this scope
C:\Dokumente und Einstellungen\XsanderS\Desktop\arduino-0021\libraries\SmallUart\SmallUart.cpp:27: error: 'UART_TXREADY' was not declared in this scope
C:\Dokumente und Einstellungen\XsanderS\Desktop\arduino-0021\libraries\SmallUart\SmallUart.cpp:28: error: 'UDR' was not declared in this scope
C:\Dokumente und Einstellungen\XsanderS\Desktop\arduino-0021\libraries\SmallUart\SmallUart.cpp: In function 'bool UART_ReadByte(uint8_t&)':
C:\Dokumente und Einstellungen\XsanderS\Desktop\arduino-0021\libraries\SmallUart\SmallUart.cpp:33: error: 'UCRA' was not declared in this scope
C:\Dokumente und Einstellungen\XsanderS\Desktop\arduino-0021\libraries\SmallUart\SmallUart.cpp:33: error: 'UART_RXREADY' was not declared in this scope
C:\Dokumente und Einstellungen\XsanderS\Desktop\arduino-0021\libraries\SmallUart\SmallUart.cpp:35: error: 'UDR' was not declared in this scope
-
Re: Осциллограф на Arduino .
После установки либы IDE нужно закрыть и
запустить по новой.
P.S.
Помню у тебя уже была такая проблема, у тебя было несколько копий IDE и ты положил либу не в ту копию.
-
Re: Осциллограф на Arduino .
Цитата:
Сообщение от
Chip
После установки либы IDE нужно закрыть и
запустить по новой.
P.S.
Помню у тебя уже была такая проблема, у тебя было несколько копий IDE и ты положил либу не в ту копию.
Да нет, перед тем как писать сюда все проверил. Копия у меня щас одна :)