Например TDA7294

Форум РадиоКот • Просмотр темы - Вариант энкодера для DSO138
Форум РадиоКот
Здесь можно немножко помяукать :)





Текущее время: Вт апр 16, 2024 07:14:14

Часовой пояс: UTC + 3 часа


ПРЯМО СЕЙЧАС:



Начать новую тему Ответить на тему  [ Сообщений: 11 ] 
Автор Сообщение
Не в сети
 Заголовок сообщения: Вариант энкодера для DSO138
СообщениеДобавлено: Сб май 28, 2016 17:07:45 
Мучитель микросхем

Карма: 4
Рейтинг сообщений: 80
Зарегистрирован: Вс ноя 01, 2015 09:15:16
Сообщений: 445
Откуда: 69.Ржев
Рейтинг сообщения: 0
Скажу сразу - тема до конца не доделана, но то что выкладываю хоть и сырое, но вполне рабочее.
Загорелся идеей таки прикрутить к сабжу энкодер - напрашивается поставить доп. контролер, чеб он имитировал нажатие кнопок "+", "-". У сабжа большая плата, ей бы дисплей 3,2" да энкодер.
Нашел в сети одну реализацию:
https://github.com/kuwatay/AVR/tree/mas ... for-dso138
но приспичило попытаться самому. Мутить как мутить - дополнил еще кнопкой ходить по режимам в обратную сторону (пять "нажатий" на SEL). И чтоб быстрый поворот энкодера отрабатывался как удержание кнопки для "прыжков".

Делается или покупается маленькая платка с attiny13 / attiny85 / atmega328.
МК, стабилизатор и минимум обвязки (в корпусе приклеиваем рядом с энкодером).
К платке: 2 провода от энкодера, 1 - от кнопки, 1 - их общий корпусной;
с платы сабжа: корпусной, +V и от кнопок "+", "-", "SEL".

Пока прошивку написал только под atmega328p (Mini Pro, других у меня пока нет), во фьюзах изменил один бит - включил прескалер на 8. Писал в eclipse. В свойствах проекта: atmega328p, частота 2000000. Не все еще гладко, для эргономики надо с задержками поиграться, да и 60-ю сабжевую надо попробовать поковырять - время удержания кнопки уменьшить до секунды и "прыжок" увеличить с 10 до 20-25 точек.
Спойлер/*
энкодер для dso138
пока только на Mini Pro atmega328p 16MГц/8 в фьюзах включен бит деления на 8
имитация нажатия кнопок "+","-","sel"
быстрый поворот энкодера - имитируется удержание кнопки на 2сек.
доп. кнопка - 5 раз имитируется нажатие кн."sel"
подключение к кнопкам прямое, без развязывающих транзистеров
0, 1, 2 линии порта C - энкодер и доп. кнопка
0, 1, 2 линии порта В - в параллель к кнопкам "+","-","sel"
таймер 0 - исп. для определения насколько шустро крутанулся энкодер
таймер watchdog (собака) - для секундного удержания кнопки,
имеется счетчик "прыжков" - напр., 3 быстрых поворота - около трех "нажатий" с удержанием - прыжки
*/

#include <avr/io.h>
#include <avr/interrupt.h>
//#include "bits_macros.h"
#include "util/delay.h"
#include "avr/wdt.h"

#define ENC_F1 (1 << 0) // опрос. фаза энкодера F1
#define ENC_F2 (1 << 1) // опрос. фаза энкодера F2
#define BOTT_F (1 << 2) // опрос. кнопки "5 раз на SEL"
#define UP (1 << 0) // линия на кнопку "+"
#define DOWN (1 << 1) // линия на кнопку "-"
#define SEL (1 << 2) // линия на кнопку "sel"
#define Pin_ENC_F1 (PINC & ENC_F1)
#define Pin_ENC_F2 (PINC & ENC_F2)
#define Pin_BOTT (PINC & BOTT_F)
#define Pin_UP (PINB & UP)
#define Pin_DOWN (PINB & DOWN)

enum { State0, StateA, StateB, StateAB }; //состояния энкодера
static char EncPrev; //предыдущее состояние энкодера
static char EncPrevPrev; //пред-предыдущее состояние энкодера

volatile uint8_t F1=0; // флаг по таймеру опроса
volatile uint8_t F2=0; // флаг по таймеру удержания (таймер watchdog'a)
volatile int8_t Cj=0; // счетчик прыжков
volatile uint8_t Enc=128; // признак по энкодеру
volatile uint8_t Bott=0; // признак по кнопке

#define TCNT0_const 0 // начальное значение таймера опроса (максимальная длительность), счетчик 8-битный

//---------- Опрос энкодера и кнопки: ----------
void PinScan(void)
{
PORTB |= (1 << 5); // светодиод зажечь - индикация опроса
if(!Pin_BOTT) Bott=1; // проверка кнопки
else {
// for (int i=0; i<2; i++) { //t1 увеличение длительности опроса, 2 - 3 прохода таймера
F1=0;
TCCR0B |=(1<<CS02)|(1<<CS00); // запуск таймера на опрос
while (F1==0){ // опрос энкодера в цикле
char EncCur = 0;
if(!Pin_ENC_F1) EncCur = StateA; //опрос фазы 1 энкодера
if(!Pin_ENC_F2) EncCur |= StateB; //опрос фазы 2 энкодера
if(EncCur != EncPrev) {
if(EncPrev == StateAB && //если предыдущее состояние StateAB
EncCur != EncPrevPrev ) { //и текущее и пред-предыдущее не равны,
if(EncCur == StateB) //если текущее состояние StateB,
Enc++; //шаг вверх
else //иначе
Enc--; //шаг вниз
}
EncPrevPrev = EncPrev; //сохранение пред-предыдущего состояния
EncPrev = EncCur; //сохранение предыдущего состояния
}
}
// } //коментировать/раскоментировать вместе со строкой выше (t1)
EncPrev = State0;
EncPrevPrev = State0;
}
if(!Pin_BOTT) Bott=1; // после таймера, еще раз проверка кнопки
PORTB &= ~(1 << 5); // светодиод потушить
}

ISR(WDT_vect){ // обработчик таймера удержания кнопки (watchdog)
wdt_reset();
wdt_disable(); // выключение таймера удержания
F2=1; // выставляем признак - таймер оттикал
}

ISR(TIMER0_OVF_vect) { // обработчик таймера опроса энкодера
TCCR0B = 0b00000000; // таймеру - стоп
F1=1; // выставляем признак - таймер оттикал
}

//______________
int main( void )
{
MCUSR = 0x00; //очистка собачих флагов (watchdog'a) - на нем таймер удержания
//настройка портов
DDRB = (1 << 5); // штатный светодиод платки Mini Pro - горит во время опроса
DDRB = 0; // ноги порта В - вход
// DDRB &= ~(UP | DOWN | SEL); // оно же, но только для определенных ног
DDRC &= ~(ENC_F1 | ENC_F2 | BOTT_F); //настройка порта на ввод
PORTC |= ENC_F1 | ENC_F2 | BOTT_F; //включение подтягивающих резисторов

//инициализация таймера т0 (опросный)
TCNT0 = TCNT0_const;
TCCR0A = 0b00000000;
TCCR0B = 0b00000000;
TIMSK0 |= (1<<TOIE0);

F2=0; //обнуление признака
EncPrev = State0; // и статусов энкодера
EncPrevPrev = State0;
//ClearBit(PORTB, 5);

sei(); // разрешение прерываний
while(1)
{
Bott=0;
Enc= 128;
PinScan(); // уходим на опрос обнулив признаки

//--------Обработка - что принес опрос---------------------------

if ((Bott == 1) & (Cj == 0)) { //если кнопка нажата и прыжков нет
Enc = 128; // обнуляем энкодер - игнорируем
for (int i=0; i<5; i++){ // ногодрыг по линии кнопки sel, 5 раз
DDRB |= (SEL); // нога режим - выход
PORTB &= ~(SEL); // в линию "0"
_delay_ms(50);
DDRB &= ~(SEL); // возвращаем по ноге режим - вход
_delay_ms(50);
}
_delay_ms(30); // еще чуток ждем
}

if (Cj !=0) _delay_ms(260); // эргономика. задержка перед следующим опросом, если уже есть прыжки

if (Enc != 128){ //если было вращение энкодера
if (Enc>129) Cj++; // добавляем прыжок на счетчике, направление "+"
if (Enc<127) Cj--; // добавляем прыжок на счетчике, направление "-"
if ((Enc==129)&(Cj == 0)) { // если на энкодере один шаг и нет прыжков имитируем кнопку
DDRB |= (UP); // линию на выход
PORTB &= ~(UP); // в линию "0"
_delay_ms(50);
DDRB &= ~(UP); // возвращаем по ноге режим - вход
_delay_ms(60);
}
if ((Enc==127)&(Cj == 0)) { // щаг в другую сторону - имитируем другую кнопку
DDRB |= (DOWN);
PORTB &= ~(DOWN);
_delay_ms(50);
DDRB &= ~(DOWN);
_delay_ms(60);
}
}
if (Cj > 0) { // если счетчик прыжков выше нейтрали :
if (~(!Pin_UP) & (F2==0)) { // если еще нет удержания и нет признака от таймера
DDRB |= (UP); // линию на выход
PORTB &= ~(UP); // в линию "0"
wdt_enable(WDTO_2S); // таймер (watchdog) на 2сек
WDTCSR=(1<<WDIE); // старт и разрешение прерывания от таймера
}
if (F2==1) { // если есть признак, что таймер отработал :
DDRB &= ~(UP); // возвращаем по ноге режим - вход
F2=0; // очищаем признак
Cj--; // счетчик -1
_delay_ms(60); // пауза между "нажатиями"
}
}
if (Cj < 0) { // если счетчик прыжков ниже нейтрали :
if (~(!Pin_DOWN) & (F2==0)) { // аналогично для другой линии
DDRB |= (DOWN);
PORTB &= ~(DOWN);
wdt_enable(WDTO_2S);
WDTCSR=(1<<WDIE);
}
if (F2==1) {
DDRB &= ~(DOWN);
F2=0;
Cj++;
_delay_ms(60);
}
}

} //while
return 0;
}


Процедура опроса энкодера от уважаемого Леонида Ивановича, остальное сам вымучивал. Это мой первый опыт в программировании МК и в программировании (очень давно сочинял небольшие программки в машкодах для ИК80, да лет 10 назад мутил sql-запросы, чтоб инфу между системами перебросить - это весь мой опыт программирования). По сему - конструктивные советы будут кстати.
Да и если кто свое предложит - милости просим.

В архиве: прошивка и main.c


Вложения:
enc.rar [3.67 KiB]
Скачиваний: 325
Вернуться наверх
 
Не в сети
 Заголовок сообщения: Re: Вариант энкодера для DSO138
СообщениеДобавлено: Вс май 29, 2016 08:44:23 
Мучитель микросхем

Карма: 4
Рейтинг сообщений: 80
Зарегистрирован: Вс ноя 01, 2015 09:15:16
Сообщений: 445
Откуда: 69.Ржев
Рейтинг сообщения: 0
Дополню
основная "сырость" (в функционале) - реализация "прыжков". когда боролся с прошивкой у меня исполнителем был штатный светодиод (без dso138), события "шифровал" различным количеством и длительностью моргания. Тогда , вроде, добился - 3-5 быстрых дрынка энкодером - почти столько же прыжков на экране (+- один прыжок), а если приноровиться то и ровно (сколько я дрынкнул - столько он и "отпрыгал"). А вот когда подключился к dso : с доп.кнопкой и шаганием энкодером все нормально (и шагание и спокойное вращение - адекватно отрабатывается), а вот прыжки не складываются (дрынки с прыжками не сходятся). Думаю не всегда stm32 ждет 2сек., бывает что и дольше, поэтому и удержание от 328 воспринимает как одно нажатие. В ближайшие 2-3 дня, если не сильно буду занят, поиграюсь с задержками.

Еще: если кого смущает прямое соединение ног контроллеров и он хочет подстраховаться - сообщите. Перепишу, выложу. Сейчас управляющая нога переключается с режима вход на реж. выход и прижимается к 0, потом снова на реж. вход; сделаю: управляющая нога всегда выход, управ. сигнал лог. 1, подадите на транзисторы, шунтирующие кнопки - вот и развязка контроллеров. Наверно так не только безопасней, но и надежней.

Для таких как я - начинающих - я напихал толпу комментариев в листинг, Может кто захочет чего подрулить под себя или чего выкинуть (скажем без механизма прыжков все здорово упрощается, и переносимость на другие МК тоже).

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


Вернуться наверх
 
Не в сети
 Заголовок сообщения: Re: Вариант энкодера для DSO138
СообщениеДобавлено: Пн май 30, 2016 17:52:44 
Мучитель микросхем

Карма: 4
Рейтинг сообщений: 80
Зарегистрирован: Вс ноя 01, 2015 09:15:16
Сообщений: 445
Откуда: 69.Ржев
Рейтинг сообщения: 0
Поправил прошивку - с "прыжками" наладилось. Пользоваться правда - не очень, надо копать 60-ю.
В архиве main.c и прошивка.

Если с 60-ой получится выложу вместе с соответствующей прошивкой для энкодера.


Вложения:
enc.rar [3.65 KiB]
Скачиваний: 297
Вернуться наверх
 
PCBWay - всего $5 за 10 печатных плат, первый заказ для новых клиентов БЕСПЛАТЕН

Сборка печатных плат от $30 + БЕСПЛАТНАЯ доставка по всему миру + трафарет

Онлайн просмотровщик Gerber-файлов от PCBWay + Услуги 3D печати
Не в сети
 Заголовок сообщения: Re: Вариант энкодера для DSO138
СообщениеДобавлено: Сб июн 04, 2016 21:52:19 
Мучитель микросхем

Карма: 4
Рейтинг сообщений: 80
Зарегистрирован: Вс ноя 01, 2015 09:15:16
Сообщений: 445
Откуда: 69.Ржев
Рейтинг сообщения: 0
Никто не критикует, вероятно никто еще не собрал.
раскритикую сам:
не достаточная проработка темы на этапе постановки задачи (т.е. ее вообще не было) привела к лишним затратам времени и необоснованным ожиданиям.

собственно я о следующем:
время держать кнопку, чтобы dso138-м это было воспринято как удержание, зависит от загруженности stm32 и сильно варьируется (от секунды в реж.HOLD, до 4-5сек. на длительных развертках);
как уменьшить это время я в 60-ой не нашел.
Посему, решил отказаться от всего этого механизма, выкинул из прошивки MiniPro все что с этим связано. Выкладываю и исходник и два hex'та один скомпилирован под частоту 2МГц(с прескалером на 8 ), другой для 16МГц (вернул фьюзы как было - без бита прескалера на 8 ).
Опрашивается нога с доп.кнопкой, если не нажата - опрашиваются ноги к энкодеру, если и там движухи нет - снова на доп.кнопку. Если была движуха по кнопке или энкодеру - отрабатывается соответствующий ногодрыг на линиях к ногам dso138.

А теперь, что нашел в 60-ой (в бинарнике):
смещение - было - себе сделал
7536 - 0A - 19 (10 сменил на 25)
754A - 14 - 32 (20 сменил на 50)
75B6 - 0A - 19
75CA - 14 - 32
здесь, через сколько позиций прыгает при удержании кнопки: +10, -10 и +20, -20 для маркера "окна".
hex-редактор, в котором ковырял - Hex Workshop. файл формата hex открывается через импорт. Снова в hex запихивать не обязательно, st'шный Flash Loader и bin и hex понимает.
в прочим ... свою 60-ю то же положил в архив.


Вложения:
lite.rar [29.15 KiB]
Скачиваний: 327
Вернуться наверх
 
Организация питания на основе надежных литиевых аккумуляторов EVE и микросхем азиатского производства

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

Подробнее>>
Не в сети
 Заголовок сообщения: Re: Вариант энкодера для DSO138
СообщениеДобавлено: Вт авг 23, 2016 18:24:06 
Мучитель микросхем

Карма: 4
Рейтинг сообщений: 80
Зарегистрирован: Вс ноя 01, 2015 09:15:16
Сообщений: 445
Откуда: 69.Ржев
Рейтинг сообщения: 0
что-то никто не портирует прошивку на камень по-меньше, типа Attiny45 Attiny85 или не наращивает каким-нибудь генератором, мне пока это ни к чему, а то б прикрутил. А пока ...

Попался мне на днях энкодер из "мыши" - откорректировал под него прошивку.
В отличии от "обычного" энкодера, у которого на один тактильный шаг приходится смена четырех состояний, у мышиного как бы полшага, т.е. тактильный шаг - с 00 на 11 либо с 11 на 00. Это и принял за условие - шаг совершен, направление определяю по последнему состоянию линий перед завершением шага, т.е. перед 11 или 00 в шаге. Ломал голову на предмет устойчивости к дребезгу, что лог."0" (в отличии от "1") не всегда может оставаться 0В (в следствии скользящего контакта), но остановился пока на такой обработке линий. Имеющийся у меня энкодер с этой прошивкой работает стабильно. Остальное как предыдущей прошивке (lite). В архиве main.c и hex для 328Р 16МГц.
Энкодер мелкий, но на счет компактности всего механизма не уверен. В отличии от "обычного" энкодера, которому кроме собственно ручки больше ничего и не нужно, здесь сам энкодер как одна опора колесу, т.е. требуется вторая опора. Да и колесо пожалуй удобней широкое, чем диском.


Вложения:
mouse.zip [2.26 KiB]
Скачиваний: 287
Вернуться наверх
 
Новый аккумулятор EVE серии PLM для GSM-трекеров, работающих в жёстких условиях (до -40°С)

Компания EVE выпустила новый аккумулятор серии PLM, сочетающий в себе высокую безопасность, длительный срок службы, широкий температурный диапазон и высокую токоотдачу даже при отрицательной температуре. Эти аккумуляторы поддерживают заряд при температуре от -40/-20°С (сниженным значением тока), безопасны (не воспламеняются и не взрываются) при механическом повреждении (протыкание и сдавливание), устойчивы к вибрации. Они могут применяться как для автотранспорта (трекеры, маячки, сигнализация), так и для промышленных устройств мониторинга, IoT-устройств.

Подробнее>>
Не в сети
 Заголовок сообщения: Re: Вариант энкодера для DSO138
СообщениеДобавлено: Сб июл 07, 2018 09:34:07 
Встал на лапы
Аватар пользователя

Зарегистрирован: Вт авг 26, 2014 21:42:12
Сообщений: 89
Рейтинг сообщения: 0
Периодически возникают мысли - чего бы там допилить, но ведь работает и так... :)
Есть большое желание таки разгрести родные исходники - я немного в них ковырялся, но пока только "верхний слой" разгреб :) - STM я всего год программирую и пока слаб в разгребании чужого - вот своего наворотить уже немного могу :). Лично мне в сабже не так энкодера нехватает, как нормальной отрисовки на ВЧ диапазонах, без "фантазий" графического фильтра. Ну и второй канал. И опять таки энкодер и кнопки переключения диапазонов сигнала - как в DSO150... В общем - желание есть, а вот с квалификацией пока не очень... :) Кстати - схема DSO150 довольно удачна в смысле организации входной аналоговой части, там и энкодер прикручен - токо производитель туда защиту прошивки ставит...
В общем - ежели кто-нибудь тоже желает погрызть прогу на уровне исходников - мне было бы очень интересно поучаствовать...

_________________
Сделать сложное - просто... А сделать простое - сложнее. Шпагин (конструктор оружейник)


Вернуться наверх
 
Не в сети
 Заголовок сообщения: Re: Вариант энкодера для DSO138
СообщениеДобавлено: Сб авг 18, 2018 11:03:42 
Встал на лапы
Аватар пользователя

Зарегистрирован: Вт авг 26, 2014 21:42:12
Сообщений: 89
Рейтинг сообщения: 0
Не знаю, интересно это еще кому-нибудь - новую тему создавать пока не буду. попробую тут отписаться....
В общем, в рамках освоения STM32 был заказан 3,2 дюймовый TFT ЖК-дисплей 320X240 на ILI9341. На момент заказа я был еще не совсем в теме, потому совершил "небольшую" ошибочку - заказанный дисплей хотя и имел разрешение, как у DSO138, подключался по 16 битной шине (у DSO138 - по 8ми)... Так что идея попробовать собрать на этом дисплее и отладочной плате STM32F103C8T6 :) аналог DSO138 провалилась еще до начала работ...
Ну, раз о совместимости с DSO138 речь уже не шла, для ускорения процессов освоения TFT за основу я взял уже слегка освоенный мной процессор STM32F0R8 на плате Discovery. Задача была поставлена "учебно-боевая" - сделать свою версию карманного осциллографа - больше для удовольствия, чем по необходимости, ибо Интернет полон подобными конструкциями и без меня... :) (ну нравится мне сам процесс программирования и отладки :) )...
В общем - на сегодняшний день прога написана процентов на 60 - осциллограмма отображается и синхронизируется (триггер с внешнего компаратора), но пока не прописан диапазон медленных разверток и не доделана интерфейсная часть. Экран похож (оформлением) на DSO138, немного по-другому я разместил служебную информацию. Пока использую внутренний DAC, максимальная частота семплирования - 1.2 MHz при 24 точках на клетку, что дает мне 50 kHz входного сигнала любой формы с адекватным отображением (у DSO138 на этих частотах "не синус" уже рисует криво), а применяя простейшую линейную интерполяцию мы получим относительно "честное" отображение 100 и, возможно, 200 kHz. Для получения таких частот сэмплирования пришлось слегка "разогнать" процессор, он работает на 72 MHz тактовой частоты (максимальная по даташиту- 48, максимальная еще рабочая - 96 :) ) при тактировании ADC 18 MHz.
Планирую сделать версию с внешним DAC, там есть с чем повозиться :) - синхронный ввод с порта с DMA... Задачка эта решена до меня - но мне интересно разобраться самому - не справлюсь, тогда буду просить помощи у корифеев... При внешнем DAC диапазон расширится (надеюсь) раз в десять, что уже позволит называть конструкцию "прибором" :).
Аналоговую часть еще не делал, но наработки у меня есть (см. https://radiokot.ru/forum/viewtopic.php ... 1#p2862281) - буду делать нечто похожее, хотя и несколько иначе (другие ОУ, ключи, компаратор и т.д.), еще не рисовал начисто.
В интерфейсе будет энкодер (один - точно!), несколько кнопок, уровень триггера и, возможно, уровень сдвига по вертикали будут задаваться потенциометрами. Теоретически хочу оставить возможность добавления второго канала - но пока реализовывать не буду - сначала отработаю схемотехнику на одном, да и частотные параметры двухканальника сразу уполовинятся...

_________________
Сделать сложное - просто... А сделать простое - сложнее. Шпагин (конструктор оружейник)


Вернуться наверх
 
Не в сети
 Заголовок сообщения: Re: Вариант энкодера для DSO138
СообщениеДобавлено: Вт фев 04, 2020 23:17:31 
Встал на лапы
Аватар пользователя

Зарегистрирован: Вт авг 26, 2014 21:42:12
Сообщений: 89
Рейтинг сообщения: 0
Ну вот - не прошло и двух лет! :)
А вдруг кому интересно - маленький отчет. Осцилл я таки сделал! :) На STM32F103C8T6 Экран - 3.2'
Изображение
Параметры - чувствительность 5mV - 5V на клетку(левый энкодер), развертки 100mS - 2uS на клетку(правый энкодер). Полоса пропускания аналогового тракта - около 5 MHz, реально нормально видимый сигнал - 1MHz., при этом еще можно отличить прямоугольник от синуса. Автоизмерение верхнего и нижнего напряжения по экрану и частоты срабатывания триггера развертки (ну точность там не ахти - несколько %, ибо подсчет ведется по пикселям, только чтобы по клеточкам вручную не считать :)), режимы развертки - авто и норм (ждущий), однократный отсутствует, что в некоторых случаях компенсируется ждущим с последующим остановом (Hold). Вход - закрытый/открытый (переменка/постоянка), уровень GND отмечен левым маркером и сдвигается в пределах экрана вверх/вниз (левый энкодер после нажатия на него), уровень триггера отмечен правым маркером и сдвигается в пределах экрана вверх/вниз (правый энкодер после нажатия на него). С помощью кнопок можно выбрать режим и фронт срабатывания триггера, заморозить изображение (Hold/Run) и переключить режим входа (переменка/постоянка). Точка срабатывания триггера отмечена на экране белой линией (первая клетка от левой стороны экрана) и двигаться не может, кольцевой буфер экрана отсутствует - двигать остановленное изображение по экрану вправо/влево нельзя. "Красивостей" в виде менюшек и разнообразных измерительно-вычислительных режимов нет.
Изображение
http://img.radiokot.ru/files/99520/24cu1edyk0.jpg
Прямоугольник не лучшего качества - ну это с самодельного DDS, он такой и есть - с выхода Attiny 2313 :).

Почему именно такой набор функций и органов управления?
Ну - во-первых была поставлена цель - сделать как можно проще схему, потому в ней отсутствуют внешний АЦП, память FIFO и компаратор триггера, как следствие однократный режим развертки реализовать не получилось (я вообще крайне редко его использую, даже когда он есть :) - в основном я занимаюсь звуковыми устройствами).
Во-вторых - я делал прибор "под себя" - мне хотелось сделать удобный осциллограф с привычным (мне) интерфейсом в "аналоговом стиле" - это когда не приходится для переключения входа "на переменный ток" заходить в две менюшки, а потом выходить из них обратно (RIGOL), об "удовольствии" изменить уровень GND в DSO138 я вообще молчу... :) Потому у меня два энкодера (как на "больших" осциллографах :)) и по кнопке на каждый режим. При том удобство цифрового прибора мне хотелось тоже сохранить, потому есть режим Hold, позволяющий в сочетании со ждущим режимом триггера "поймать" нужную волну и разглядывать ее сколько угодно. Да, на медленных развертках там еще и "антиалиасинг" есть..
Что касается экранных измерений - опыт работы с RIGOL'ом показал, что точность там неважная, да и основное назначение осциллографа - визуализация сигналов, потому у меня измеряются только размах напряжения и частота.
Ну и последнее - дома RIGOL'а у меня нет, а DSO138 - все же слабоват - при 100 kHz он уже форму сигнала не отображает - все переводит на синус, все, что выше 10-20 kHz - сплошная аппроксимация, да и синхронизация у него на этих частотах никакая. Да, у него есть однократный режим, токо он не работает на этих частотах...
Потому я "выжал" почти на порядок лучшую частотку - на развертке 2uS на клетку АЦП снимает 12 точек и линейно аппроксимируется до 24 точек на клетку.
Питание - аккумулятор (пока от старой Нокии :)), зарядка - по микроЮСБ (контроллер зарядки ТР4056). Потребление - около 200 мА, на плате стоит DC-DC, повышает до 7.5v, отрицательное напряжение для аналоговой части преобразуется на 7660. В аналоговой части - 2 ОУ AD8065 (поначалу купил подделки, потом перезаказал и заменил первый ОУ, второй так и остался подделкой :)) и пара коммутаторов CD4051/53.
Ну как-то так... :)

_________________
Сделать сложное - просто... А сделать простое - сложнее. Шпагин (конструктор оружейник)


Вернуться наверх
 
Не в сети
 Заголовок сообщения: Re: Вариант энкодера для DSO138
СообщениеДобавлено: Чт фев 06, 2020 07:28:29 
Родился
Аватар пользователя

Зарегистрирован: Пт дек 07, 2018 13:56:33
Сообщений: 19
Рейтинг сообщения: 0
Интересная тема, хотелось бы увидеть продолжение.
А первоначальный автор не развивал тему с энкодером дальше?


Вернуться наверх
 
Не в сети
 Заголовок сообщения: Re: Вариант энкодера для DSO138
СообщениеДобавлено: Чт фев 06, 2020 19:34:31 
Встал на лапы
Аватар пользователя

Зарегистрирован: Вт авг 26, 2014 21:42:12
Сообщений: 89
Рейтинг сообщения: 0
Я где-то встречал... Жаль точно не помню - но вроде была версия с энкодером и для DSO138... Жаль один только энкодер не особенно добавляет функциональности - да и там одним энкодером не обойтись - ведь если делать все управление от энкодера, то нужно чем-то переключать входной делитель... Правда - можно поставить герконовые или твердотельные реле или коммутатор на КМОП... Так все это уже сделано в DSO150, в сети есть его схема
http://img.radiokot.ru/files/99520/medi ... 51phes.jpg
и, возможно, прошивки... Но все остальные-то параметры остается прежними - частотка до 100kHz с неважной синхронизацией!
Да и по сложности получится не проще, чем моя конструкция....

_________________
Сделать сложное - просто... А сделать простое - сложнее. Шпагин (конструктор оружейник)


Вернуться наверх
 
Не в сети
 Заголовок сообщения: Re: Вариант энкодера для DSO138
СообщениеДобавлено: Вт мар 23, 2021 12:55:45 
Родился

Зарегистрирован: Чт ноя 02, 2017 15:24:34
Сообщений: 2
Рейтинг сообщения: 0
Ну вот - не прошло и двух лет! :)
А вдруг кому интересно - маленький отчет. Осцилл я таки сделал! :) На STM32F103C8T6 Экран - 3.2'


Не поделитесь схемой и прошивкой?
А то я тоже модернизировал-модернизировал Dso138, и стал прикидывать что проще новый сделать :)


Вернуться наверх
 
Показать сообщения за:  Сортировать по:  Вернуться наверх
Начать новую тему Ответить на тему  [ Сообщений: 11 ] 

Часовой пояс: UTC + 3 часа


Кто сейчас на форуме

Сейчас этот форум просматривают: BV-Dial, vladzirka и гости: 16


Вы не можете начинать темы
Вы не можете отвечать на сообщения
Вы не можете редактировать свои сообщения
Вы не можете удалять свои сообщения
Вы не можете добавлять вложения

Найти:
Перейти:  


Powered by phpBB © 2000, 2002, 2005, 2007 phpBB Group
Русская поддержка phpBB
Extended by Karma MOD © 2007—2012 m157y
Extended by Topic Tags MOD © 2012 m157y