Игрушечный осциллограф на Arduino Uno - 200 ksamp/sec

Тема в разделе "Глядите, что я сделал", создана пользователем Андрей Хохлов, 3 апр 2016.

  1. mcureenab

    mcureenab Гуру

    Пробовали подключать внешние АЦП каскадом?
    Это пока один АЦП ведет расчёты, другой делает захват напряжения, третий отдаёт результат в МК и так по кругу. АЦП может быть больше. Если захват напряжения длится 1 такт из 10, то можно ставить 10 АЦП работающих со сдвигом фазы в 1 такт.
     
  2. mcureenab

    mcureenab Гуру

    Прерывания это медленно. Лучше не включать прерывание от АЦП, а циклически проверять флаг запроса прерывания и сбрасывать его и сохранять результат. На проверку и запись в буфер уйдет около 10 тактов.
    А если аккуратно рассчитать такты АЦП и АЛУ, то можно просто читать ADCH и сохранять в буфер.

    В Leonado умеет на АЦП подавать больше энергии, чтобы увеличить разрядность замера на высокой частоте тактирования АЦП.
     
  3. 2 mcureenab
    АЦП один (встроенный), контроллеры с тремя встроенными АЦП могут автоматически дать втрое большую скорость, но не на чем попробовать. Но даже в текущем варианте между двумя отсчетами всего 50 тактов. На запись в буфер (без использования DMA) хватает свободно,
    на логику запуска по-видимому тоже хватает, но при увеличении частоты выборки может и не хватить.

    Насколько я понимаю, реально большие частоты достигаются не на микроконтроллерах и АЦП другие используются. Да и с аналоговой частью тоже все не просто. И, кстати, даже здесь попытка использовать операционные усилители хороших результатов не дала.
     
  4. ostrov

    ostrov Гуру

    Попробуйте MCP3008.
     
  5. А смысл? Официально всего 200 ksamp/sec, про возможность разгона не нашел - или плохо искал, или это невозможно. Чтобы только стать равным STM32 нужен десятикратный разгон или десять штук параллельно - дорого получится.