Вопрос по быстродействию
- Войдите на сайт для отправки комментариев
Задача, считывать показания с промышленного датчика с выходным сигналом 4...20мА с частотой 10раз в секунду и регистрировать их (в любом виде для последующей обработки), имеется arduino duemilanove + модуль RTC на DS1307 и модуль для работы с картой.
Вопроса три.
1. Возможно ли получить данные с модуля RTC со зщначениями точнее 1 секунды, погуглив понял что дискретность DS1307 - одна секунда.
2. С какой максимальной частотой сам контроллер позволит опрашивать датчик и записывать данные. (повторюсь цель - 10Гц)
3. Подключение промышленного датчика 4...20мА к пятивольтовому входу ардуино, тут как я понимаю нужен резистор для приведения напряжения питания датчика (24В) в пятивольтовый сигнал.
На седьмой ножке можно организовать секундные импульсы.
Ну а через внешнее прерывание начинайте считать хоть и микросекунды.
речь о DS1307? что значит внешнее прерывание
Открываем datasheet и читаем:
Адрес 0x07.
Бит 4 - SQWE. Ставим в единицу.
Биты 1, 0 - Rate select. Оба нули - на выходе частота 1 Гц; 01 (MSBFIRST, т. о. RS1=0, RS0=1) - 4096 Гц; 10 - 8192 Гц; 11 - 32768 (частота кварца). Поделить можно счётчиком или T-триггерами (D-триггерами у которых выход _Q соединён с входом D). Делится степенями двойки, так что 10 Гц не получится, только 16. Или уже 8. Либо оставляем частоту кварца и считаем ардуиной до 3277-го импульса, но будет неточно, это 9.99938 Гц. Если считать до 3276-го, будет 10.00244 Гц.
DS1307 тут как собаке пятая лапа. Если нужна высокая точность в измерении отрезков времени, то удобнее сделать специализированный контроллер с хорошим кварцевым генератором на 16МГц (ибо на ардуинах стоит г@вно). Он будет считать время точнее любого ds1307. И производить какие-либо действия точно 10 раз в секунду.
Открываем datasheet и читаем:
Адрес 0x07.
Бит 4 - SQWE. Ставим в единицу.
Биты 1, 0 - Rate select. Оба нули - на выходе частота 1 Гц; 01 (MSBFIRST, т. о. RS1=0, RS0=1) - 4096 Гц; 10 - 8192 Гц; 11 - 32768 (частота кварца). Поделить можно счётчиком или T-триггерами (D-триггерами у которых выход _Q соединён с входом D). Делится степенями двойки, так что 10 Гц не получится, только 16. Или уже 8. Либо оставляем частоту кварца и считаем ардуиной до 3277-го импульса, но будет неточно, это 9.99938 Гц. Если считать до 3276-го, будет 10.00244 Гц.
16Мгц вполне, задача получать данные через равное временные промежутки, а не через максимально точно высчитанные отрезки времени. Это можно сделать силами ардуино и готового модуля с обвязкой DS1307?

http://zelectro.cc/RTC_DS1307_arduino нашел здесь про частоты то о чем вы говорили, и о том как силами ардуино переключить в генератор импульсов и задать частоту. Но как считать эти импульсы с выхода SQW/OUT
DS1307 тут как собаке пятая лапа. Если нужна высокая точность в измерении отрезков времени, то удобнее сделать специализированный контроллер с хорошим кварцевым генератором на 16МГц (ибо на ардуинах стоит г@вно). Он будет считать время точнее любого ds1307. И производить какие-либо действия точно 10 раз в секунду.
нужно решить задачу имеющимися средствами, точность измерений отрезков времени не нужна
ghttoblstr, тогда взять с 1307 частоту 4096Гц, завести её на счётный вход таймера1. Каждые 256 импульсов создавать прерывание -в нём делать свои дела. Это будет 16 раз в секунду.
Задача, считывать показания с промышленного датчика с выходным сигналом 4...20мА с частотой 10раз в секунду
Откуда вообще проблемы с точностью интервала? Датчик с аналоговым выходом, 10Гц это предел его быстродействия или хотелок ТС. Очевидно ТС слабо представляет возможности контроллера, не пугайте его рассказами о хреновом кварце, он восприймет это как "туда-сюда пол лаптя". Тут погрешность до процента не проблема.
По вопросам
1. DS1307 выкинуть и забыть, по постановке задачи не требуется.
2. аналоговый ввод до 75кГц
3. Тут нужен электронщик не ниже начального уровня. На форуме найдутся если нормально изложите суть вопроса, шо за датчик и т.д.
ghttoblstr,
Задача, считывать показания с промышленного датчика с выходным сигналом 4...20мА с частотой 10раз в секунду
Откуда вообще проблемы с точностью интервала? Датчик с аналоговым выходом, 10Гц это предел его быстродействия или хотелок ТС. Очевидно ТС слабо представляет возможности контроллера, не пугайте его рассказами о хреновом кварце, он восприймет это как "туда-сюда пол лаптя". Тут погрешность до процента не проблема.
По вопросам
1. DS1307 выкинуть и забыть, по постановке задачи не требуется.
2. аналоговый ввод до 75кГц
3. Тут нужен электронщик не ниже начального уровня. На форуме найдутся если нормально изложите суть вопроса, шо за датчик и т.д.
10Гц предел моих хотелок, можно больше.
погрешность процент - устраивает, из ваших слов понял что можно использовать встроенный в ардуино кварц для генерации импульсов? (это по п.1)
2. это предел ардуино?
3. датчик давления DMP 330L
Диапазон: 0...400бар
Выходной сигнал: 4...20 мА / 2-х пров.
Питание 12...36В (блок питания есть 24В)
4003-1-100-800-00R
http://www.bdsensors.ru/pdf/doc/dmp330l.pdf
DS1307 тут как собаке пятая лапа. Если нужна высокая точность в измерении отрезков времени, то удобнее сделать специализированный контроллер с хорошим кварцевым генератором на 16МГц (ибо на ардуинах стоит г@вно). Он будет считать время точнее любого ds1307. И производить какие-либо действия точно 10 раз в секунду.
А я бы посчитал сколько импульсов таймера "влезет" в эту секунду.
И иногда корректировал эту "константу". Под изменение кварца 16 МГц.
Можно даже при каждом импульсе.
Время считать по предыдущей "константе времени" , а менять её по окончении текущей секунды
10Гц предел моих хотелок, можно больше.
погрешность процент - устраивает, из ваших слов понял что можно использовать встроенный в ардуино кварц для генерации импульсов? (это по п.1)
Вот пример вашей задачи без использования RTC. Измерение 10 раз в секунду напряжения на аналоговом входе A0, и вывод результата в сериал вместе с текущим временем (часы, минуты, секунды, сотые секунды)
Есть такое впечатление, что ТС ни в электронике, ни в программировании не понимает. Как и где хранить результаты, я так понял следующий вопрос? Если делать некоторую точно без заморочек, хватит МК. То просто поделить на интервалы :
либо пост 9, или этот вариант...
Точность средняя, но интервал стабильно 0,1С +- проблемы кварца.
спасибо, попробую
либо пост 9, или этот вариант...
так и есть, максимум что могу стандартные примеры скетчей подредактировать, с электроникой вообще темный лес. по поводу хранения - верно следующий вопрос, есть разьем для SD карты, нужно будет делать запись на карту.
либо пост 9, или этот вариант...
так и есть, максимум что могу стандартные примеры скетчей подредактировать, с электроникой вообще темный лес. по поводу хранения - верно следующий вопрос, есть разьем для SD карты, нужно будет делать запись на карту.
даже не пытайтесь ближайшие полгода задавать этот вопрос, начните с простого, подключение и отображение на компьютере (в мониторе порта), читайте по теме, пишите сами. Если будут успехи, можно продолжить, а пока рано. Читайте о железе, которое планируете использовать, проекты, которые народ уже реализовал...
UPD
для интереса, познакомьтесь с этим топиком - человек не сдавался до последнего, правда потом куда-то пропал...
3. Подключение промышленного датчика 4...20мА к пятивольтовому входу ардуино, тут как я понимаю нужен резистор для приведения напряжения питания датчика (24В) в пятивольтовый сигнал.
НЕТ. Датчик с так называемым выходом токовая петля. Вам нужен прецинзионный резистор с очень малым ТКС. Значение подобрать так, чтобы при 20 мА не пожечь вход МК (т.е. не более 5 вольт, а лучше меньше во избежании потерь данных). Максимальное значение сопротивления дано в даташите, схема подключения там же (вместо амперметра ваш резистор). Блок питания не абы какой, а с очень низкими параметрами нестабильности по напряжению и температуре. Например, МП36С1. Земли блоков питания не объединять! Если кабель с экраном, то экран землить на ноль МК! Как-то так))))