MagicianT

Members
  • Публикации

    69
  • Зарегистрирован

  • Посещение

Репутация

13 Обычный

О MagicianT

  • Звание
    Осваивающийся
  • День рождения 19.08.1969

Информация

  • Пол
    Мужчина
  • Город
    Montreal

Электроника

  • Стаж в электронике
    Более 20 лет

Посетители профиля

278 просмотров профиля
  1. Наполеоновские планы. Контроллер странный выбрали, понятно что цена +вай-фай, но я бы дважды подумал, прежде чем его брать. Большинство периферии (датчиков) работает с ардуино посредством подключаемых библиотек, понятно что можно и самому на С/С++, но это отнимает много времени и сил. По сути библа - это драйвер, который скрывает протокольные дела в красивый АПаЙ, датчиков миллионы и на каждый драйвер писать пол жизни уйдёт. Так я к тому, что контроллер надо брать самый распостраннёный для которого создано макс. драйверов и примеров халявных. А это ардуино Уно. Вай-фай она тож сможет, шилд есть для этого, и есть шилды для проводного эзернета и блютуза. Вот, а решайте сами. С андроидом а как-то конектил, через блютуз, но пока вы освоитесь - месяца два -три поиграетесь, вам не до него будет. Си изучить нада будет, и Джаву
  2. Действительно, цифры почти не видно. Не так давно сам обдумывал как показывать время и температуру на 8х8х8 кубе, пришёл к выводу раз места мало, то нужна прокрутка, ну типа той как бегущая строка. Или вглубину, благо куб обьёмный. Недостаток один, ждать пока 4-ре или больше цифр проплывёт. Как пример https://www.youtube.com/watch?v=0dyLX7UZLso&feature=youtu.be
  3. Ток отнимается для NPN: if(transistor == 1) { h21 = (milliAmps - base_current) /base_current; } if(transistor == 2) { h21 = milliAmps /base_current; } Самому не очень нравится ассиметрия для разных типов, но пока так, чтобы не переходить на дифференциальную схему измерения тока с двух отдельных резисторов для PNP & NPN. Как я и писал, там возникли сложности с измерением токов <100 мА, поэтому на дифференциал я всё таки перейду как дождусь ардуино Мегу2560. Пока росчитывал альтернативные по стоимости варианты, как например поставить инструментальный (2 штуки и/ или мультиплексор), или PGA (пришли, класные MCP6S91), но с мегой всё равно преимуществ больше, поэтому подожду ещё от другого интернет магазина, али - забанен.
  4. Чтоб ступеньки по выходу глаза не мозолили, фильтр ставят. Та же АД9850 с частотой 125 МГц, по выходу гарантировано 40 МГц , 1/3. Т.е. для МСР4921 примерно 0.6 МГц, хотя без ДМА АтМега больше 150 кГц в прерывание нырять не сможет, так что ЦАП по быстродействию х4 с запасом
  5. Программа примитивная, пиши на ардуино.
  6. Для светодиодов - стабилизатор тока, но их часто называют драйвер для светодиодов. Есть светодиодные ленты на 12В, для тех вообще ничего не надо, там резисторы прям на ленте распаяны.
  7. Так, давайте по порядку. Здесь топик спектроаналайзера, в нём частота выборки определяется здесь #define SMP_RATE 20480 // Sampling Rate, in Hz #define SMP_TMR1 ((16000000UL/SMP_RATE) -1) // Sampling Period of Timer1 и здесь void adc_init() { ADMUX = 0xC5; // PIN 5 Analog. REF Internal. Bias = 0.55V ADCSRA = ((1<< ADEN)| // 1 = ADC Enable (0<< ADSC)| // ADC Start Conversion (1<<ADATE)| // 1 = ADC Auto Trigger Enable (0<< ADIF)| // ADC Interrupt Flag (0<< ADIE)| // ADC Interrupt Enable (1<<ADPS2)| (0<<ADPS1)| // ADC Prescaler : 1 MHz. (0<<ADPS0)); ADCSRB = ((1<<ADTS2)| // Sets Auto Trigger source - Timer/Counter1 Compare Match B (0<<ADTS1)| (1<<ADTS0)); /* Set up TIMER 1 - ADC sampler */ TIMSK0 = 0x00; TIMSK1 = 0x00; TIMSK2 = 0x00; TCCR1A = 0; TCCR1B = 0; TCCR1C = 0; TCCR1A = ((1<<WGM11) | (1<<WGM10)); // Mode 15, Fast PWM TCCR1B = ((1<<WGM13) | (1<<WGM12)); // Mode 15, Fast PWM TCCR1B |= (1<<CS10); // clk/1 prescaling. OCR1A = SMP_TMR1; OCR1B = SMP_TMR1; TCNT1 = 0; TIFR1 |= (1<<OCF1B); TIMSK1 |= (1<<OCIE1B); } Для низких частот преселектор таймера изменить надо, это вы сами делайте или открывайте другой топик по конфигурации таймеров на АтМеге. Регистр TCCR1C, CS10-CS11-CS12. В примере (скетче) библиотеки всё проще void sampling() { ADCSRA = 0x85; // turn on adc, freq = 1/32, 500 kHz/ 13.5 =~ 36 kHz sampling rate ADMUX = 0x40; //Bit 5 – ADLAR: NO ADC Left Adjust Result ADCSRA |= (1<<ADSC); while(!(ADCSRA & 0x10)); int sum2b; for(int i = 0; i < FFT_SIZE; i++ ) { while(!(ADCSRA & 0x10)); ADCSRA |= (1<<ADSC); sum2b = ADCL; sum2b += (ADCH << 8); f_r[i] = sum2b - sdvig; } ADCSRA = 0x00; } Вопрос в том, надо в реальном времени выборки - сэмплирование делать, или можно периодически, второй вариант намного проще
  8. Библиотека тестировалась на ардуино Уно, 16 МГц, для других тактовых частот там формулу подправить маленько надо будет. Дискретизация любая, какую таймер потянет, кажется до 488 Гц можно уменьшать. На ЖКИ вы чего хотите можете выводить, максимумы или минимумы, после вычисления амплитуд запускайте цикл фор for ( int i = 0; i < FFT_SIZE/dlina; i++) { if ( (data[i]) > peak ){ peak = data[i]; nbr = i; } Там же в библиотеке есть код скетча
  9. Похоже я и мои посты здесь невидимы.
  10. http://forum.cxem.net/index.php?/topic/176078-делаем-спектроаналайзер-из-ардуино/
  11. И не удивительно что не получилось. Я предлагал метод кросс-кореляции, математика предельно проста for(i=0; i < len; i++) { sum = 0; for(k=0; k < len-i; k++) sum += (rawData[k]-128)*(rawData[k+i]-128)/256; } Тут называется авто-корреляция, наверно правильнее, но разницы особой нету как называть. http://www.akellyirl.com/reliable-frequency-detection-using-dsp-techniques/
  12. Альтернативный вариант для БПФ - кросскореляция. Обеспечивает максимальную точность (кстати требования надо сразу указывать), но он ресурсоёмкий.
  13. Делай одним, контролеру не составит труда проинвертировать в софте.
  14. Про ту SAMD21 ничего сказать не могу, в руках не держал. А вот та stm32f103c8t6 у меня есть, даже две, прекрасно сэмплирует на обоих ацп, у неё ДМА и всё работает как часы. Для неё под ардуино (ИДЕ) есть плагин, там я её и компилирую, очень просто и удобно. Не знаю какие данные вам из тензо нужны, но если вибрация, я бы запустил БПФ прям на плате, чтоб шелуху не гонять на комп, т.е. избыточные данные. Я не совсем понимаю почему так всем важно иметь подключение к внешнему опорному, я бы подключил референс-напряжение к любому свободному порту на ацп, и сравнивал в коде. Если подключить больше одного референса, то ещё и нелинейность самого ацп можно "реал-тайм" отслеживать. Или всякие оффсэты, это как иметь возможность перекалибровки на лету.
  15. У STM32 есть АЦП, 12-бит, два штуки, частота сэмплирования 1МГц. По ЮСБ с настройками сериала под тот-же МГц и 2-я байтами на сэмпл скорость можно разогнать на 50-60 к. сэмплов. Тут и вопроса то нет, сразу переходить на ЭсТиЭм, или ардуино ДУЕ