Сообщество - TECHNO BROTHER

TECHNO BROTHER

2 085 постов 13 667 подписчиков

Популярные теги в сообществе:

17

AD7793 + термопара + термометр сопротивления (Arduino)

AD7793 — малошумящий 24-разрядный сигма-дельта АЦП с тремя дифференциальными аналоговыми входами. АЦП AD7793 предназначен для высокоточного измерения постоянного напряжения, может применяться для измерения напряжения термопар и других датчиков с выходным напряжением в несколько единиц или десятков мВ.

Перед прочтением статьи рекомендую ознакомится с двумя первыми статьями про АЦП AD7793:

В статье AD7793 + термопара (Arduino) был рассмотрен пример создания простого но высокоточного измерителя-регулятора температуры с применением в качестве датчика термопару. Большая разрядность АЦП AD7793 и линейность характеристики позволяет весьма точно измерять постоянное напряжение которое не превышает единиц мВ. Ранее описанный измеритель-регулятор преобразует ЭДС термопары в температуру с погрешностью не более ±0,2…±0,3 °С на всем диапазоне, а погрешность измерения ЭДС термопары не превышает 5…10 мкВ.

В этой статье будет рассмотрен пример использования АЦП AD7793 в качестве измерителя-регулятора с использованием датчика термометра сопротивлений.

Для примера была выбрана номинальная статическая характеристика (НСХ) 100П, при желании можно добавить в измеритель-регулятор еще несколько номинальных статических характеристик (НСХ).

Измеритель-регулятор с датчиком термосопротивления не будет отдельным уст-вом, он дополнит уже ранее описанный в термометр-регулятор с использованием в качестве датчиков термопары ТХА и ТХК.

АЦП AD7793 содержит два программируемых источника тока номиналами 10 мкА, 210 мкА, 1 мА. Токовые выходы IOT1 и IOT2 могут независимо работать друг от друга, а источники тока могут быть направлены в один токовый выход.

IO REGISTER управляет работой токовых выходов и источника тока.

Биты IEXCDIR1 IEXCDIR0 позволяю выбрать режим работы токовых выходов, а биты IEXCEN1 IEXCEN0 задают номиналы тока.

В рассматриваемом примере оба источника тока в 1 мА перенаправлены на выход IOT1, что в сумме дает ток 2 мА. Ток подается на термосопротивление, на котором вход АЦП IN2 измеряет падение напряжения, исходя из полученного значения вычисляется сопротивление термометра сопротивления и программно высчитывается температура.

Для уменьшения влияния измерительных проводов используется 4-х проводная схема подключения, при этом пары измерительных проводов соединяются непосредственно на клеммах термосопротивления.

Управление измерителем-регулятором очень простое, кнопка энкодера переключает тип датчика (ХА, ХК, 100П), а поворот ручки энкодера изменяет температуру регулирования. Выбранный последним тип датчика и температура регулирования заносятся в энергонезависимую память.

Внутренние источники тока имею отличную стабильность, но не очень высокую точность выходного тока, поэтому для получения высокой точности измерения температуры при использовании термосопротивления необходимо произвести калибровку.

/// калибровка

  • float gis=0.2;

  • float i_1ma = 1.0137;

  • float r_0_kall = 0.29;

Гистерезис gis общий для всех датчиков, i_1ma калибровочный коэффициент источника тока, фактически это точное значение тока который выдает один источник тока, настраивать этот коэффициент необходимо при подключении ко входу сопротивления 300…400 Ом, меняя коэффициент необходимо добиться максимально точных показаний омметра измерителя-регулятора. r_0_kall — калибровка нуля, для его определения необходимо ко входу подключить сопротивление номиналом 1…5 Ом, а r_0_kall это погрешность измерения. Например, если Вы подключили ко входу сопротивление 1 Ом, а на дисплее Вы видите показание 0,71 Ом, то калибровочный коэффициент нуля будет 0,29. Для точного определения калибровочных значений необходимо повторить ранее описанную процедуру калибровки 2-3 раза.

  1. Температура измеренная термометром сопротивления

  2. Омметр

  3. Индикатор нагрева

  4. Тип датчика

  5. Температура регулирования

Результаты измерений

На вход измерителя регулятора подключен магазин сопротивлений МСР-60М (0,02%)

300 Ом

200 Ом

100 Ом

50 Ом

Тест точности измерения сопротивления и точности преобразования сопротивления в температуру

Как видно из таблицы максимальная погрешность при измерении температуры не превышает 0,13 °С при диапазоне 1050 °С (-200…+850 °С), что дает относительную погрешность в 0,0123%. При измерении сопротивления в диапазоне от 0 до 400 Ом относительная погрешность не превысила 0,01%. Полученная погрешность будет немного выше, так как магазин сопротивлений имеет класс точности 0,02%.

Скетч - http://rcl-radio.ru/?p=128979

Показать полностью 10
15

Дисплей 12864b v2.0 (Arduino)

Графический дисплей 12864b v2.0 (ST7920) представляет собой ЖК-матрицу с разрешением в 128  на 64 точек, предназначен для вывода графической и текстовой информации. Поддерживает 8/4-битный параллельный режим работы и поставляется вместе с микросхемой контроллера/драйвера ST7290. Также дисплей поддерживает последовательный режим работы по шине PSB (программный SPI), именно в этом режиме будет работать описанный в этой статье дисплей.

Основное напряжение питания +5 В, дополнительное 3,3 В используется для подсветки дисплея. Рассматриваемый в статье дисплей на плате имеет регулятор контрастности, но может поставляться и без него, тогда на вход Vo подается напряжение с потенциометра (см. схему).

Встроенный потенциометр

Подключение дисплея к Arduino Nano:

При работе с дисплее можно использовать библиотеку U8glib , в папке библиотеки много различных примеров скетчей. Установить библиотеку можно через менеджер библиотек Arduino IDE.

Пример 1

#include <U8glib.h>

#include "rus6x10.h" // http://forum.rcl-radio.ru/misc.php?action=pan_download&amp;i... 

U8GLIB_ST7920_128X64 u8g(10, 11, 12, U8G_PIN_NONE); // настройка пинов 

void draw() {

u8g.setRot180();

u8g.setFont(u8g_font_unifont);

u8g.drawStr(15, 12, "RCL-RADIO.RU");

u8g.drawLine(0, 15, 128, 15);

u8g.setFont(u8g_font_6x12);

u8g.drawStr(45, 25, "ST7920");

u8g.setColorIndex(1);

u8g.drawBox(0, 35, 128, 20);

u8g.setFont(u8g_font_unifont);

u8g.setColorIndex(0);

u8g.drawStr(35, 50, "ARDUINO");

u8g.setColorIndex(1);

u8g.setFont(rus6x10);

u8g.drawStr(45, 64, "ПРИВЕТ");

void setup() { } 

void loop() {

u8g.firstPage();

do { draw(); }

while( u8g.nextPage() );

}

Для поддержки русского шрифта скачайте архив шрифта и распакуйте его в папку со скетчем.

Пример 2

Ниже показан пример создания простых часов, в примере используется модуль часов реального времени DS3231. Время устанавливается по времени компиляции.

Для поддержки семисегментных цифр скачайте архив шрифта и распакуйте его в папку со скетчем.

Скетч - http://rcl-radio.ru/?p=129018

Показать полностью 7
52

Друзья! Ищем ништяки для контента, снова! :) Китайские мобилки - сюда

Привет! Вероятно, половина обитателей Пикабу так или иначе уже видели и читали мои статьи - я пишу о подручном ремонте, моддинге, программировании и использовании гаджетов прошлых лет. Довольно большого количества статей возможно и не вышло бы без вашей помощи - именно читатели помогают мне найти некоторые достаточно экзотические гаджеты, про которые я готовлю подробный материал.

Микросмартфон за 100 рублей: Покупаем смартфон 11-летней давности и… пишем под него приложения

Не дадим Windows Phone умереть! Как я написал свои клиенты VK, YouTube для Nokia Lumia? Сам себе экосистема ч.2

Сам себе Linux смартфон: Как я выкинул Android и написал свою прошивку с нуля

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

Китайские реплики флагманских и дорогих смартфонов начала 2010х годов. Сюда относятся китайские айфоны 4/4s/5/5s/5c/6/6s, galaxy s2/s3/s4/s5/mega/note, htc one x, подделки на Lumia и.т.п. Работали эти реплики на подрисованном в эппловскую систему Android'е и обычно не очень шустро.

Если у кого-то хорошая память на бренды, то вот известные китайцы: ORRO (именно так, не OPPO), SciPhone, Feiteng, HTM, Vinko, BML. Если ваш друг или знакомый когда-то торговал подобными гаджетами (почти в каждом городе были рынки с такими "серыми" телефонами) и ему приносили бракованные подобные девайсы - тоже можно скинуть контакт, поговорить, возможно куплю болячки там обычно не существенные.

Довольно ранние реплики на винде и самых первых андроидах (1.5-1.6). Про них большинство забыли за давностью лет:

И максимальная дичь - реплики айпадов, макбуков и прочей техники Apple. Да, я люблю подобные девайсы собирать в эдаку экосистему))

Показать полностью 13
8

Tesla Cybertruck Giga Press


Источник : Шаг в будущее

Это машина весом в 9 тысяч тонн и размерами с жилой дом: 20 метров в длину, больше семи метров в ширину и шести метров в высоту.

С помощью технологии литья под давлением он позволяет производить часть кузова как единое изделие всего за полторы минуты — или 40-45 изделий в час.

Для размещения гига-прессов на фабриках Tesla были построены специальные цеха с массивными фундаментами под новые прессы.

По словам Маска, из шести крупных производителей литейных машин пять сразу же отвергли его идею, и только итальянская компания IDRA Group согласилась разработать Giga Press совместно с инженерами Tesla. «Мы запросили шестерых. Пятеро сказали «нет», один сказал «может быть». Я понял: «Это звучит как да». Таким образом, благодаря большим усилиям и отличным идеям команды мы получили самую большую и эффективную в мире литейную машину, чтобы создать и радикально упростить производство автомобиля», — сказал Маск.

Показать полностью 1
12

Дисплей 2X16 VFD (Arduino)

Дисплей VDF1602 (16T202DA1E) выполнен на базе вакуумно-люминесцентного индикатора, который может отображать ASCII символы в 2 строки (16 знаков в 1 строке) каждый символ в виде матрицы 5х7 пикселей.

Дисплей 16T202DA1E программно полностью совместим с дисплеем LCD1602 контроллере HD44780, поэтому использует стандартную библиотеку LiquidCrystal которая интегрирована в Arduino IDE.

Для правильной работы базе вакуумно-люминесцентного индикатора требуется два источника питания, это питание сеток и анодов напряжением 12-27 В и питание катода (нити накала) переменным напряжением от 1,2 до 5 В (в зависимости от типа ВЛИ). В дисплее 16T202DA1E все необходимые источники для правильной работы ВЛИ уже встроены в плату, поэтому для питания дисплея Вам понадобится только одно напряжение в 5 В. Так же в отличии от LCD1602 в дисплее 16T202DA1E нет вывода Vo (регулировка контрастности), что делает подключение дисплея к Arduino Nano еще проще.

Распиновка дисплея

Как ранее отмечалось дисплей полностью совместим с библиотекой LiquidCrystal, но в дисплее имеется дополнительно программная регулировка яркости свечения индикатора которую так же можно использовать при помощи библиотеки LiquidCrystal

Ниже показан тестовый скетч который поддерживает ступенчатую регулировку яркости (25, 50, 75, 100 %).

#include <LiquidCrystal.h> /* подключаем встроенную в Arduino IDE библиотеку для дисплея LCD 16x2 */ 

LiquidCrystal lcd(12, 11, 5, 6, 7, 8); /* номер вывода дисплея(вывод Arduino): RS(12),E(11),D4(5),D5(6),D6(7),D7(8) */ 

void setup() {

lcd.begin(16, 2);// указываем тип дисплея LCD 16X2

Brightness(100);

lcd.setCursor(1,0); // положение курсора - нулевая строка, первый символ lcd.print("HELLO!!!");// вывод на экран

delay(1000);

lcd.noDisplay();

delay(1000);

lcd.display();

void loop() {

lcd.setCursor(0,0); // положение курсора - нулевая строка, первый символ

lcd.print("RCL-RADIO.RU");// вывод на экран

lcd.setCursor(0,1);// положение курсора - первая срока, первый символ

lcd.print("ARDUINO ");// ввод на экран 

delay(500);// пауза 500 мс

for (int n=25;n<=100;n+=25){

lcd.setCursor(9,1);

lcd.print("BR ");

lcd.print(n);

lcd.print("% ");

Brightness(n);delay(1000);

} } 

void Brightness(byte brig){

switch(brig){

case 25 : lcd.command(0b00101011);break;

ase 50 : lcd.command(0b00101010);break;

case 75 : lcd.command(0b00101001);break; c

ase 100 : lcd.command(0b00101000);break;

} }

Для регулировки яркости используется дополнительная функция управления дисплеем:

Brightness(byte brig);

Переменная brig  может иметь значение 25, 50, 75 и 100 (% яркости)

Примеры использования дисплея 16T202DA1E

Простые часы DS3231

Простые часы DS3231 с кнопками коррекции времени

Простые часы DS3231 + BMP280 (с кнопками коррекции времени)

Индикатор уровня звукового сигнала (VU метр)

Скетчи - http://rcl-radio.ru/?p=129034

Показать полностью 13 1
181

Ответ на пост «Сколько стоит оставить зарядник в розетке на год»3

Ха! Я готов платить 10 долларов в год за то, что НЕ БУДУ ничего вытаскивать из розетки.
Во-первых: мне лень, а за лень тоже надо платить.
Во-вторых: износ и вилки и розетки, да еще вероятность поломки/слома провода.
В-третьих: может надо объяснить обратные токи при выключении, когда именно это опасно для прибора? Потому, лучше не трогать. Спросите у электриков, в какой момент чаще всего горят лампочки. Правильно. При  выключении.
В-четвертых: нихера не обеднею даже на такую сумму.
В-пятых: см. п. 1.

427
TECHNO BROTHER

Сколько стоит оставить зарядник в розетке на год3

"Накапает, а мне потом платить" - как часто вы слышали такое от старшего поколения? Я частенько. Бабушка говорила, что нельзя оставлять зарядник или телевизор в розетке. Давайте посчитаем, сколько это стоит на самом деле и обоснованы ли эти претензии.

А ещё у меня есть ютуб, буду рад подписке - https://www.youtube.com/@Nick_Geek

20

Прошивка LGT8F328P-SSOP20 через Arduino

Плата LGT8F328P-SSOP20 основана на китайском микроконтроллер LGT8F328p и является клоном популярной AVR ATmega328p (Arduino NANO). Микроконтроллер LGT8F328p практически полностью совместим с микроконтроллером ATmega328p и обладает рядом дополнительных функций и возможностей превышающих ATmega328p.

Основные характеристики LGT8F328P

  • FLASH (ПЗУ): 32 Кбайт

  • SRAM (ОЗУ): 2 Кбайт

  • E2PROM (EEPROM): 0K / 1K / 2K / 4K / 8K (эмуляция)

  • PWM (ШИМ): 8

  • Частота: 32 МГц

  • АЦП: 9 пинов, 12 бит

  • ЦАП: 1 пин, 8 бит

  • Силовые пины: 4 (до 80 мА)

  • Таймеры 2x 8bit, 2x 16bit

  • UART: 1

  • SPI: 1

  • I2C: 1

  • PLL: 1

  • Опорное напряжение: 1.024В / 2.048В / 4.09В ± 0,5%

  • Логический уровень: 5В

Для прошивки LGT8F328P-SSOP20 через Arduino (Nano или UNO) необходимо поэтапно выполнить несколько действий:

  1. Добавим поддержку платы LGT8F328P-SSOP20 в Arduino IDE, для этого добавим ссылку в менеджер плат

https://raw.githubusercontent.com/dbuezas/lgt8fx/master/pack...

Далее в менеджере плат находим плату lgt8fx и устанавливаем ее:

2. Откройте для редактирования файл — HardwareSerial.h
Найти его можно в Arduino\hardware\arduino\avr\cores\arduino\

Найдите в файле строку:
#define SERIAL_RX_BUFFER_SIZE 64
и замените ее на:
#define SERIAL_RX_BUFFER_SIZE 250
сохраните файл.

3. Приготовьте плату Arduino Nano или UNO

Откройте в примерах скетч — LarduinoISP (если скетча нет в примерах, выберите в менеджере плат плату LGT8F328P, скетч должен появиться в примерах, откройте его,  после чего в менеджере плат выберите плату Arduino)

Загрузите скетч плату Arduino.

Верните в исходное состояние файл HardwareSerial.h и сохраните файл.

Подключите электролитический конденсатор 47 мкФ к плате Arduino между контактами RST и GND.

4. Подключение плату LGT8F328P-SSOP20 к плате Arduino:

GND  GND
VCC  +5V
SWD  D12
RST  D10
SWC  D13

Настройте параметры платы LGT8F328P-SSOP20 в Arduino IDE как показано на скриншоте:

Если необходимо записать загрузчик нажмите — Записать загрузчик.
Если необходимо записать скетч нажмите — Загрузить через программатор.

Загрузите скетч BLINK, после загрузки скетча на плате LGT8F328P-SSOP20 должен начать мигать светодиод.

void setup() {

pinMode(LED_BUILTIN, OUTPUT); }

void loop() { digitalWrite(LED_BUILTIN, HIGH); delay(1000); digitalWrite(LED_BUILTIN, LOW); delay(100); }

http://rcl-radio.ru/?p=129239

Показать полностью 6
Отличная работа, все прочитано!