Ничего не найдено :(
    В гостях у Самоделкина! » Темы » Советы » Измеритель-фиксатор тока в широком диапазоне, напряжения и температуры

    Измеритель-фиксатор тока в широком диапазоне, напряжения и температуры

    Назначение:
    Для измерения и фиксации во времени на флеш-памяти длительных процессов выраженных в токе и напряжении, типа заряда - разряда аккумуляторов и батареек. Есть возможность одновременно зафиксировать температуру.

    Параметры входных сигналов:
    ток I = 25mka -- 2a
    напряжение U = 0 – 5в
    температура t = -30 -- +120грС
    время задаётся внутренними встроенными кварцевыми часами

    Питание:
    от источника 12в/0,3а
    Iпотребления < 70ma

    Конструкция:
    Измеритель собран на двух модулях Arduino Nano, связанных по протоколу ModBus, смотри схему. Один Arduino установлен на переходную плату с клеммными колодками. Модули подключены через разъёмы. Провода и сами модули изолированы от замыкания термо-кембриком.

    Входные сигналы подводятся через винтовые клеммы

    На лицевой панели жидко-кристаллический индикатор измеряемых параметров и светодиоды индикации переключения диапазона или вне диапазона.

    Измеритель собран в корпусе 145х85х40.
    Датчик температуры вынесен наружу через разъём. Передача сигнала организована по двухпроводной линии. Подпитывающий резистор в разъёме.

    Для удобства программирования USB разъёмы Arduino вынесены наружу.






    Схема

    Схему можно скачать из файла Измеритель.rar

    Два Arduino выбраны по двум причинам: в наличии были Arduino Nano и на одном памяти маловато, и планируется далее добавлять датчики. Кроме того хотелось освоить объединение Arduino, для этого выбран сетевой протокол ModBus. ModBus задаёт один ведущий процессор - Master и несколько ведомых – Slave. В данной работе один Slave, на нём измерение температуры, напряжения и тока. На Master – часы и запись в файл. Flesh память должна быть менее 4Гб и отформатирована в FAT.

    Так как планировалось измерять токи от мкА до А, токи измеряются в 4-х диапазонах (см. таблицу Диапазонов), за переходом с одного диапазона на другой следит Arduino Slave, формируя соответствующий код шунта по текущему измеренному току с М1-2. При подходе к границе диапазона, включается следующий диапазон, то есть отключается действующий ключ из Т1-1 ---Т2-2 и включается следующий. При этом максимальный шунт = 100ом включен постоянно. Если произошло превышение значения в диапазоне, засвечиваются светодиоды D8, D9.

    Разбиение измерения тока на диапазоны
    Uвых_макс=5в КусОУ=20 Δ=Iш/1024

    Коэффициент усиления операционного усилителя М1-2 установлен = 20 и далее не меняется. (На переднюю панель он смонтирован ошибочно).
    Напряжение измеряется через повторитель на ОУ М1-1. Входные цепи ОУ и Arduino защищены диодами (в Arduino стоят стабилитроны, но параметры не знаю, посему лучше перебдеть).

    В качестве индикатора выбран LCD1602. Он подключен к Arduino Master. Причем индикатор можно подключать к обеим Arduino просто переключая разъёмы Arduino. (При выключенном питании.) Подключение к Arduino Slave показано пунктиром (что и использовалось при написании программ). При основном подключении (к Master) на LCD1602 можно вывести 4-ре экрана переключая движки микропереключателя п1-п2.

    Экран1: сверху служебная информация обмена между Arduino: С- число обменов между Arduino, Е- число ошибок в процессе обмена Sh- №шунта;
    внизу день – месяц время.


    Экран2: U1, I1, №шунта, (0,00 внизу справа-резерв)


    Экран3: U2, температура, (ui- резерв)


    Экран4: SD- запись включена, время записи в часах, № строки в файле,
    00- состояние диапазона тока1 0-нормально 1-вне диапазона, состояние диапазона напряжения1, зафиксированная мощность внешнего источника


    При подключении к Slave – 2 экрана. Переключатель п3 включает запись в Micro Flesh память.
    Питание выбрано 12в, чтобы получить линейные характеристики ОУ (избежать завалов по краям диапазона). По этой же причине использовано отрицательное напряжение от формирователя на КР1006ВИ1. Использование генератора от Arduino даёт менее стабильное напряжение. Для формирования питания 5в использован понижающий преобразователь, но можно обойтись без него, подав +12в на входы VIN Arduino Nano.
    Совместное программирование Arduino имеет особенности, так как связь с компьютером занята протоколом ModBus. Для загрузки скетча в один из Arduino, на другом нужно включить сигнал сброса RST. Для этого используются перемычки Блок S, Блок M. Или нажатие и удерживание кнопок сброса на модулях Arduino до окончания загрузки, что менее удобно и есть шанс повредить загрузку. Поскольку я планирую наращивать сеё устройство разъёмы USB Arduino я вытащил наружу корпуса.

    Транзистор Т5 (FR024N) предполагается использовать для включения/отключения какого либо процесса, например заряда-разряда аккумулятора. Пока он не задействован.

    Программное обеспечение.
    Максимально разжёвано, что начинающим (а я таковой) не помешает и может служить справочным материалом, но на оптимальность не претендует.

    Библиотеки и коды программ находятся в файле Izmeritel PRO.rar.
    Скетч для мастера ModBus_Master10_SD_T_10_2. Скетч для ведомого ModBus-Slave10_T_UI_10_2. Остальное библиотеки.
    Программировал в среде Arduino1.6.0. В ней находятся библиотеки SD, LiquidCrystal, Wire скачивать не надо.

    Установка времени в часах осуществляется в Setup так. Задать реальное время и загрузить скетч. Затем закомментировать строки задания даты и времени и снова загрузить скетч.

    Результатом работы программы будет индикация времени и даты (часы), тока, напряжения, температуры на LCD1602 и запись этих параметров в файл IZMER1.TXT в Micro Flesh память. В файле будет находится таблица такого вида:

    0; 13.04.2019; 00:11:10; Zap(h)=0.05; tc=29.31; U1=1.71; I1=0.00; P1=0.00; U2=0.14; DiaI norma; DiaU norma; C=762
    1; 13.04.2019; 00:11:16; Zap(h)=0.05; tc=29.38; U1=1.79; I1=0.00; P1=0.00; U2=0.19; DiaI norma; DiaU norma; C=788
    2; 13.04.2019; 00:11:22; Zap(h)=0.05; tc=29.38; U1=1.54; I1=0.00; P1=0.00; U2=0.16; DiaI norma; DiaU norma; C=813
    3; 13.04.2019; 00:11:28; Zap(h)=0.05; tc=29.31; U1=1.30; I1=0.00; P1=0.00; U2=0.17; DiaI norma; DiaU norma; C=839
    4; 13.04.2019; 00:11:34; Zap(h)=0.05; tc=29.31; U1=1.90; I1=0.00; P1=0.00; U2=0.17; DiaI norma; DiaU norma; C=864
    5; 13.04.2019; 00:11:40; Zap(h)=0.05; tc=29.25; U1=1.53; I1=0.00; P1=0.00; U2=0.16; DiaI norma; DiaU norma; C=890
    6; 13.04.2019; 00:11:46; Zap(h)=0.05; tc=29.19; U1=2.03; I1=0.00; P1=0.00; U2=0.18; DiaI norma; DiaU norma; C=915
    7; 13.04.2019; 00:11:52; Zap(h)=0.05; tc=29.13; U1=1.81; I1=0.00; P1=0.00; U2=0.18; DiaI norma; DiaU norma; C=941
    8; 13.04.2019; 00:11:58; Zap(h)=0.05; tc=29.00; U1=1.30; I1=0.00; P1=0.00; U2=0.16; DiaI norma; DiaU norma; C=966
    9; 13.04.2019; 00:12:04; Zap(h)=0.07; tc=28.94; U1=1.25; I1=0.00; P1=0.00; U2=0.17; DiaI norma; DiaU norma; C=992
    10; 13.04.2019; 00:12:10; Zap(h)=0.07; tc=29.00; U1=1.85; I1=0.00; P1=0.00; U2=0.16; DiaI norma; DiaU norma; C=1017
    11; 13.04.2019; 00:12:16; Zap(h)=0.07; tc=29.00; U1=1.21; I1=0.00; P1=0.00; U2=0.18; DiaI norma; DiaU norma; C=1043
    12; 13.04.2019; 00:12:23; Zap(h)=0.07; tc=28.94; U1=1.55; I1=0.00; P1=0.00; U2=0.18; DiaI norma; DiaU norma; C=1068
    13; 13.04.2019; 00:12:29; Zap(h)=0.07; tc=28.88; U1=1.82; I1=0.00; P1=0.00; U2=0.16; DiaI norma; DiaU norma; C=1094
    14; 13.04.2019; 00:12:35; Zap(h)=0.07; tc=28.88; U1=1.30; I1=0.00; P1=0.00; U2=0.18; DiaI norma; DiaU norma; C=1119

    где столбцами расположены №п/п; дата; время; время записи в часах; температура; измеряемое напряжение U1; измеряемый ток I1; второе измеряемое напряжение U2; информация о выходе/невыходе за пределы диапазона измерения; служебная информация о количестве обменов между Arduino.

    Интервал записи измерений выбран 6 сек, его легко изменить заменив значение константы #define CYCLE_TIME_F 3000 на другое по формуле Тсек=Константа(мс)*2/1000 в Master.
    Далее эту таблицу можно представить в виде симпатичных графиков.



    При написании программ использовал материалы сайта. Автору выражаю благодарность.

    Комфортные поворотники на PIC 12F629

    Изготовление мощных, удобных ручных воздуходувок

    Добавить комментарий

    2 комментария
    Иван_Похмельев #27326
    Странное включение NE555 в формирователе отрицательного питания. ((
    Чтобы на полевики шёл меандр, надо их подключить на выход ИС.
    Korolev #27318
    Приспосабливать Arduino под собственные нужды дело, конечно полезное, но вот недавно приобрёл, цена вопроса менее 1т.р.:
    Спецификации UM24C
    • дисплей: 1.44", 128х128, цветной, углы обзор близки к 180º
    • входные порты: USB Type A male, Micro USB Type B female
    • выходной порт: USB Type A female
    • напряжение: 4.50-24.00В
    • сила тока: 0-3.000А
    • разрешение отображения напряжения: 0.01В
    • разрешение отображения силы тока: 0.001А
    • точность измерения напряжения: ± (0.2% + 1 цифра)
    • точность измерения силы тока: ± (0.8% + 3 цифры)
    • поддержка Qualcomm Quick Charge: QC 2.0 и QC 3.0
    • 10 ячеек памяти для сохранения измеренной емкости и энергии
    • функция измерения сопротивления Micro USB кабеля
    • ручной выбор порога начала измерения: 0.00-0.30А
    • отображение температуры, сопротивления подключенной нагрузки, мощности
    • отображение графиков напряжения и силы тока
    • отображение напряжения на линиях данных USB порта, текущего режима работы
    • автовыключение экрана: 1-9 минут, выкл.
    • яркость экрана: 0-5 (6 уровней)
    • отображение температуры: в градусах Цельсия или Фаренгейта
    • встроенная справка
    • поворот экрана на 90º/180º/270º
    • беспроводное двухстороннее Bluetooth подключение к ПК (SPP — Serial Port Profile)
    smile

    Привет, Гость!


    Зарегистрируйтесь

    Или войдите на сайт, если уже зарегистрированы...

    Войти

    Добавьте самоделку

    Добавьте тему

    Онлайн чат

    Последние комментарии

    Все комментарии