Arduino

Genuino. Конечно все относится к Ардуино нано 2016 + с пандао таобао или алиэкспресс , или ибэй. Делают их в Шеньжене вроде как.

вторая часть и еще – примеры

Для экспериментов нужен компьютер или ноутбук, лучше примерно 2007-2010 года где есть принтерный порт. Но подойдет и совсем новый, с юсб.

Во вложении пакет программ, проще его загрузить с arduino.cc

фонарик используя ардуино шим pwm – здесь. Он использует 10-ваттную матрицу led cob от светодиодного прожектора – 3 по 330 ма параллельно и по 3 последовательно, соответственно 10.9 вольт и 1 ампер вместе. * кроме фонариков здесь есть ламповые часы, ультразвуковой дальномер (лидар будет как война закончится и дрон с лазерным датчиком на 500 метров ) и набор для построения 3-мерной карты например подвала или пещеры. Пока на программе Процессинг и ультразвуке. мощный прожектор использует моторолу 34063 кроме ардуинки, она прекрасно с Ардуино регулируется.

Использована китайская плата Arduino nano –

atmega328p ch340g с разъемом Mini Usb, ams1117 на 3v. Откуда они взялись не знаю но эти отличаются только ценой не в
3500 рублей а примерно 230.

В загрузках должен быть драйвер для конвертера usb com , на windows 10 он ставится сам.

Изменения в переархивированных файлах (делал все на винде 10-ке ltsc 2019 полечить систему сначала 360totalsecurity а потом его временно отключить как бы без матерных слов все сборки в интернете чем то заражены и глючат и находятся вирусы трояны. Заказать в личном кабинете Майкрософт если у кого есть или у знакомых и пришлют 2 диска dvd из Америки) –

добавлен avrdude поддерживающий эту плату – в настройках скорость com порта 57600,
old bootloader старый загрузчик atmega 328 как 168, если на плате не прошит загрузчик в чип – в каталоге есть программатор который подключается через параллельный порт lpt. Есть такой на компах сделанных до 2008 года примерно или на ноутбуках.
на крайний случай на Али продается Willem Eprom или более простые программаторы.

На всех 3 провереных ардуинках загрузчик был.
информацию о плате выдаёт:
NB: Неизвестная плата
VID: 1АВ6
PID: 7523
SN: Загрузить любой скетч , для использования (то есть в новой версии Ардуино ошибка что неизвестная плата, но все загружается)

функция считывания программы – если что то при прошивке не напортачили, там в разных версиях фьюзы ставятся чудесато, то есть если не работает то лучше Ардуину заменить.. повторяю под эту плату -b57600 :

D:\arduino>D:\arduino\hardware\tools\avr/bin/avrdude -CD:\arduino\hardware\tools\avr/etc/avrdude.conf -v -patmega328p -carduino -PCOM3 -b57600 -D -Uflash:r:C:\Users\pc-tesla\arduino_rd_135748LCD_may06a.ino.hex:i

соответственно в каталоге пользователя создается файл .hex который можно в другую ардуинку записать такой же командой, только flash:w
(конечно в винде выполнить cmd.exe и набрать там)

вот еще что пишут на форуме (там другая неполадка) . А загрузчик (он же бутлоадер) это собственно маленькая программа на микроконтроллере, общаясь с которой Arduino IDE заливает прошивку. Он обычно прошит уже продавцом, но бывает и нет. Как прошить гуглится по запросу “прошить загрузчик в ардуино”. Но понадобится или вторая, рабочая, ардуино, или программатор и вот инструкция https://www.youtube.com/watch?v=9HAnr___gkI

16 Дек 2019
В общем я порылся и починил заргузчик обновил через уно
залил. Офлайн режим настроил в бегущей строке даже
теперь выдает такую ошибку на блютус настройке скетче

avrdude: stk500_recv(): programmer is not responding
avrdude: stk500_getsync() attempt 1 of 10: not in sync: resp=0x08

При прошивке надо отключать RX и TX блютуза от Ардуины. .. эта же ошибка при несоответствии скорости 115200 и ли 57600

не провереная инфа (у меня работает и как Nano загружается sketch. – 328p-old bootloader 57600)

Casey L.
4.0 out of 5 stars Works as a duemilanove diecimila in the IDE board setting.
Reviewed in the United States on September 15, 2018
Verified Purchase
The board seems to work fine, however setting the Arduino IDE program to the board setting for ‘nano’ will cause upload errors, after having played with many settings it turns out that you have to go to the board setting and select “Arduino duemilanove or diecimila” under the tools tab. it would have been nice if this board came with some documentation or if it mentioned this on the product description. Hopefully this helps out anyone else who has issues with uploading code to the board.
11 people found this helpful
Helpful
Comment Report abuse
Robert D.
4.0 out of 5 stars It works well. Has older bootloader, though.
Reviewed in the United States on November 17, 2018
Verified Purchase
This works well with the arduino IDE, though I found that you have to select older bootloader option in the GUI. Otherwise, this seems fully compatible with the official Nano.

I really like the Nano as it fits on a breadboard, which makes prototyping very simple and clean.
3 people found this helpful
Helpful
Comment Report abuse
Peter Fox

Это я к чему – для часов на 6 штуках ИН-1 и с 2-мя декатронами или с одним надо прошивать микроконтроллер от Arduino подключив программатор, напрямую без загрузчика.

добавлять буду скетч и hex bin для прошивки.

Вот это устройство очень рекомендую сделать самим (можно и в Китае заказать конечно) . платку придумал willem – энтузиаст из Голландии вроде в 1997 году, с того времени она улучшалась и исправлялась несколько раз, первоначально сделана для программирования стираемых ультрафиолетом ПЗУ типа 2716.

Как все avr программируется с адаптером isp willem eprom soft d12c4

Это не так сложно, ноутбук с параллельным портом lpt и ПРЯМО на него разъем от виллема, у меня версия платы 3.1 это который по голландской схеме и уже переделан примерно 2006 года, но можно заказать готовый 5.0f польской компании, он на Али. В Митино не нашел, да их все делают сами, чертежей плат много. Диск у меня есть во вложениях. Настолько универсальный программатор что в списке больше 2000 типов микросхем. Не совсем открытый код, но исправлен на нескольких компаниях, исправлял сам добавляя несколько типов 25 серии от материнок, уже есть в новых версиях.

Не добавляю диск от sivava он есть – поискать в ослике или в shareaza. 2 версии самодельного программатора willem eprom. ( посмотрите на что способна эта платка с несколькими панельками и микросхемами 40 серии, сколько там типов программируемых микросхем поддерживается, одних только переходников уже коробка целая. Нет смысла покупать коммерческий программатор за 1700 долларов, самодельный больше всего прошивает.) https://vfiuchcikicshuusrch.ddns.net/?post=2

http://willem-eprom.ru/document/http://willem-eprom.ru/document/ на котором автор (собаку съел )не сбежала. Кроме покупки на Али современной версии надо переходник под avr arduino atmega – и может на 3 вольта с 5. Еще на нем делаются прошивки ко всяким модемам роутерам видеоиграм сега денди и даже можно починить стиральную машинку или компьютерный монитор и много еще чего.

на этом варианте нет повышающего до 25 вольт используя mc34063. Многие теперь применяют Моторолу – освоили ее и для понижающих, заменяя линейные стабилизаторы преобразователями напряжения, там чип катушечка конденсаторы и 2 -3 сопротивления. Это вариант Willem Eprom 4.5 под плоский кабель для переходников или EzoFlash
.
плата 3.1 – делал таких 6 штук за несколько лет, парочку подарил. 12 вольт адаптер. (шьет все) Вариант без повышающего преобразователя. Основное применение – прошивка плат от компьютеров и всякий ремонт, часто стираются микросхемки энергонезависимой памяти. Телевизоры, стиральные машины, видеоплаты, телефонная станция, ноутбук – все без этой штуки сложно починить.
adapter Логические элементы по схеме сделают генератор с частотой 8 примерно. на плате willem 3.1 эти сигналы есть на гребенке, смотрим схему программатора. в документах есть адаптер msc51 avr, такой же.

переходник для программирования можно подключать без отпайки. 6 – 12.. 17 и 21

часы и работа с 7-сегментниками (в 1988 вез из Минска десяток цифровых АЛС-324 красные восьмерки светодиодные вроде они потом куда только не ставились – первое применение – регулятор громкости в усилитель 50 ватт . Цифровой на логике, тогда это редкость была. Цифры 2-3 – тихо работает, 49-50 надо затычки на уши, колонки советские Амфитон с тумбочку размером, вполне подойдут для дискотеки или танцевального соревнования. Сейчас 2 платы и десятка 2 логических микросхем заменяет Ардуино, аналоговую часть с точными коммутаторами и операционниками не заменит конечно. Похожее есть в журнале Радио с 1982 -1988. )

ГлавнаяСхемы на Arduino→Часы на Arduino и 4-х разрядном семисегментном индикаторе

Навигация по записям

← Последовательная связь с помощью RS-485 между Raspberry Pi и Arduino UnoОбъезжающий препятствия робот на Arduino →

Часы на Arduino и 4-х разрядном семисегментном индикаторе

Опубликовано автором admin-newhttps://googleads.g.doubleclick.net/pagead/ads?guci=2.2.0.0.2.2.0.0&client=ca-pub-9773002703636166&output=html&h=280&slotname=2467549033&adk=2788265672&adf=3833419269&pi=t.ma~as.2467549033&w=795&fwrn=4&fwrnh=100&lmt=1611740198&rafmt=1&psa=1&format=795×280&url=https%3A%2F%2Fmicrokontroller.ru%2Farduino-projects%2Fchasy-na-arduino-i-semisegmentnyh-displeyah%2F&flash=0&fwr=0&fwrattr=true&rpe=1&resp_fmts=3&wgl=1&adsid=ChAIgLvEgAYQ0vbrhPGIkptFEkwAdUp0syOIYDhDSCUCfKs1MBknhdIA9-BgYMU4-B6Fqcaa_PjrmX5OEYbZrZa5OZQKlj4UXY1T8u4SrA95s4aF-ZBMwc-phnQtLiX8&dt=1611740195369&bpp=9&bdt=8144&idt=3195&shv=r20210120&cbv=r20190131&ptt=9&saldr=aa&abxe=1&cookie=ID%3D9110382969fd88c7-2274cd9ba0b900d1%3AT%3D1611523040%3ART%3D1611523040%3AS%3DALNI_MbmMnN0eBAoRwwEJnKpvJDxShMnTQ&prev_fmts=0x0&nras=1&correlator=2145012158775&frm=20&pv=1&ga_vid=1195319956.1611740199&ga_sid=1611740199&ga_hid=1498706494&ga_fc=0&u_tz=180&u_his=1&u_java=0&u_h=1080&u_w=1920&u_ah=1053&u_aw=1920&u_cd=24&u_nplug=0&u_nmime=0&adx=557&ady=438&biw=1908&bih=979&scr_x=0&scr_y=0&eid=21066922%2C21068769%2C21069720&oid=3&pvsid=1835586822710445&pem=303&ref=https%3A%2F%2Fyandex.ru%2F&rx=0&eae=0&fc=1920&brdim=0%2C27%2C0%2C27%2C1920%2C27%2C1920%2C1053%2C1920%2C979&vis=1&rsz=%7C%7CoeE%7C&abl=CS&pfx=0&fu=8320&bc=31&jar=2021-01-25-22&ifi=1&uci=a!1&fsb=1&xpc=IjRyot5Nhm&p=https%3A//microkontroller.ru&dtd=3615

нашел архив 2004 года по МК и всяким устройствам. Сейчас – большая часть того, что раньше делалось на 8051 или pic16 – делается на Ардуино. *при этом из возможностей микросхемки используется хорошо если десятая часть . а в авто электронике – вообще большинство, особенно самодельных, устройств. (у заводских все таки МК Моторола чаще.)

В настоящее время во встраиваемой электронике (и не только) достаточно широкое применение находят часы на семисегментных дисплеях (индикаторах). Ранее на нашем сайте мы уже рассматривали подключение семисегментного дисплея к плате Arduino Uno, также у нас представлены проекты различных часов на основе Arduino:

Внешний вид часов на Arduino и семисегментных дисплеях

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

Необходимые компоненты

4-х разрядный семисегментный дисплей (4-Digit 7 Segment Display)

Внешний вид 4-х разрядного семисегментного дисплея

4-х разрядный семисегментный дисплей состоит из четырех семисегментных дисплеев, объединенных в единое устройство. Иногда говорят, что эти дисплеи “мультиплексированы вместе”, поэтому для управления ими можно использовать технологию мультиплексирования. Этот дисплей можно использовать для отображения цифр, а также некоторых букв. Дисплей можно использовать в обоих направлениях. 4 символа удобно использовать для изготовления электронных часов или счетчика от 0 до 9999.

Распиновка 4-х разрядного семисегментного дисплея

На следующем рисунке показана внутренняя схема соединений 4-х разрядного семисегментного дисплея.

Внутренняя схема соединений 4-х разрядного семисегментного дисплея

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

Внутренние схемы соединений семисегментных дисплеев

В семисегментном дисплее с общим катодом (ОК) отрицательные выводы всех светодиодов соединены вместе и образую общую землю. В схеме с общим анодом (ОА) положительные выводы всех светодиодов соединены вместе и они образуют общий вывод напряжения постоянного тока (VCC).

На нашем сайте есть достаточно подробные статьи про устройство семисегментных дисплеев и их программированию – они написаны для микроконтроллеров семейства AVR, но я думаю провести аналогию с Arduino вам будет не трудно:

Также можно посмотреть статью о подключении семисегментного дисплея к микроконтроллеру AVR ATmega32.

Использование технологии мультиплексирования

Так каким образом мы можем на подобном 4-х символьном семисегментном дисплее отобразить, к примеру, число 1234? Это возможно сделать с использованием технологии мультиплексирования. Смысл этой технологии достаточно прост – в каждый момент времени мы отображаем только один символ (из 4-х возможных) на данном дисплее. Переключение между отображением всех 4-х символов происходит достаточно быстро – поэтому человеческий глаз воспринимает их непрерывно горящими.

Регистр сдвига 74HC595

Микросхема 74HC595 представляет собой 8-битовый регистр сдвига, работающий по принципу Serial IN – Parallel OUT (последовательный вход – параллельный выход). То есть данный регистр сдвига принимает входные данные последовательно и обеспечивает параллельный вывод этих данных на своих 8 контактах. С его помощью можно значительно уменьшить количество используемых контактов микроконтроллера (в нашем случае платы Arduino). Более подробно о подключении регистра сдвига 74HC595 к платы Arduino можно прочитать в этой статье.

Распиновка регистра сдвига 74HC595

Микросхема 74HC595 использует 3 контакта (Clock, Data & Latch) для подключения к микроконтроллеру и позволяет контролировать 8 своих выходных контактов. Контакт Clock используется для непрерывной подачи синхронизирующих импульсов, а контакт Data предназначен для подачи на него необходимых данных. Регистр сдвига 74HC595 работает по интерфейсу SPI, подробную информацию по использованию данного интерфейса в платах Arduino вы можете почерпнуть в этой статье. Назначение контактов микросхемы 74HC595 приведено на следующих двух рисунках.

Назначение контактов микросхемы 74HC595 (часть 1)
Назначение контактов микросхемы 74HC595 (часть 2)

Расшифровка обозначений контактов регистра сдвига74HC595 на русском языке выглядит следующим образом.

Q0-Q7 – восемь параллельных выходов общего назначения. Данные выходы нужны для того, чтобы мы могли как-то воспользоваться пришедшими данными по SPI – подключить линейку светодиодов, либо сегменты какого-то индикатора, либо дешифратор и т.д.

VCC – напряжение питания.

GND – общий провод.

Q7′ – последовательный выход данных. По сути – это MISO.

DS – последовательный вход данных или MOSI.

MR – это master reset. Сбрасывает все выходы в 0. Для нормального функционирования регистра сдвига на нем должна быть логическая 1.

SH_CP – в нашем случае это будет chip select.

ST_CP – это контакт управления регистром хранения, в нашем случае это будет контакт синхронизации, на который необходимо подавать тактовые импульсы. Но Arduino будет делать для нас это автоматически при использовании соответствующей команды.

OE – задействования выхода. При отрицательном значении последовательный выход включен, при положительном – выключен.

Модуль часов реального времени DS3231

Внешний вид данного модуля представлен на следующем рисунке.

Внешний вид модуля часов реального времени DS3231

Модуль предназначен для хранения времени и даты даже когда общее питание схемы выключено – для этой цели в его состав входит элемент питания CR2032. В состав модуля DS3231 входит также датчик температуры, поэтому его можно использовать в различных встраиваемых устройствах, например, в цифровых часах с индикатором температуры и т.д. Модуль работает по интерфейсу I2C. На нашем сайте вы можете посмотреть следующие проекты с использованием данного модуля:

Назначение контактов (распиновка) модуля DS3231 приведена в следующей таблице.

Наименование контактаНазначение контакта
VCCнапряжение питания
GNDобщий провод (земля)
SDAконтакт последовательной передачи данных (I2C)
SCLконтакт синхронизации (тактирования) (I2C)
SQWвыход прямоугольного сигнала (программируемый меандр)
32Kвыход меандра с частотой 32.768кГц

Теперь перейдем непосредственно к схеме нашего проекта.

Схема проекта

Схема часов на Arduino и 4-х разрядном семисегментном индикаторе представлена на следующем рисунке.

Схема часов на Arduino и 4-х разрядном семисегментном индикаторе

В следующей таблице представлены необходимые соединения между модулем часов реального времени и платой Arduino Uno.

DS3231Arduino Uno
VCC5V
GNDGND
SDAA4
SCLA5

В следующей таблице представлены необходимые соединения между регистром сдвига 74HC595 и платой Arduino Uno.

Регистр сдвига 74HC595Arduino Uno
11-SH_CP (SRCLK)6
12-ST_CP (RCLK)5
14-DS (Data)4
13-OE(Latch)GND
8-GNDGND
10-MR(SRCLR)+5V
16-VCC+5V

В следующей таблице представлены необходимые соединения между регистром сдвига 74HC595, 4-х разрядным семисегментным дисплей и платой Arduino Uno.

4-х разрядный семисегментный дисплейРегистр сдвига 74HC595Arduino Uno
AQ0
BQ1
CQ2
DQ3
EQ4
FQ5
GQ6
D110
D211
D312
D49

Внешний вид собранной конструкции проекта показан на следующем рисунке.

Внешний вид собранной конструкции проекта

Объяснение программы для Arduino

Полный код программы и видео, демонстрирующее работу проекта, приведены в конце статьи. Здесь же мы рассмотрим основные фрагменты кода программы.

В программе мы должны считывать время (часы и минуты в 24-часовом формате) с модуля часов реального времени и конвертировать их в формат для отображения на 4-х символьном семисегментном дисплее.

Для подключения модуля часов реального времени DS3231 к плате Arduino используется шина I2C. Для работы с данным модулем (считывания даты, времени, температуры и т.д.) мы в программе будем использовать библиотеку <DS3231.h>. Скачайте ее по следующей ссылке – DS3231 RTC module Arduino Library. Поскольку мы используем интерфейс I2C нам в программе необходимо будет подключить и библиотеку <wire.h>.

В нашем проекте часы и минуты считываются с модуля часов реального времени и они потом объединяются вместе, например, 0930 – это будет 09:30 pm. Затем мы выделяем индивидуальные цифры из этого считанного числа. Далее эти индивидуальные цифры преобразуются в двоичный формат и передаются на регистр сдвига, а с него на семисегментный дисплей. Для отображения всех четырех символов мы используем технологию мультиплексирования – то есть в каждый момент времени мы отображаем только один символ, но переключение между символами происходит с высокой частотой, поэтому человеческий глаз этого не замечает.

Итак, первым делом в программе подключим необходимые библиотеки. #include <Wire.h> #include<DS3231.h>

12#include <Wire.h>   #include<DS3231.h>

Далее инициализируем контакты для управления семисегментным дисплеем с помощью технологии мультиплексирования. #define latchPin 5 #define clockPin 6 #define dataPin 4 #define dot 2

1234#define latchPin 5                      #define clockPin 6#define dataPin 4#define dot 2

Далее объявим необходимые переменные. int h; //Variable declared for hour int m; //Variable declared for minute int thousands; int hundreds; int tens; int unit; bool h24; bool PM;

12345678910int h;               //Variable declared for hourint m;              //Variable declared for minuteint thousands;    int hundreds;int tens;int unit;  bool h24;bool PM;

Затем инициализируем объект RTC класса DS3231 – это упростит дальнейшую работу с модулем часов реального времени. DS3231 RTC;

1DS3231 RTC;

Далее с помощью команды wire.begin() инициализируем связь по протоколу I2C, при этом объекту RTC (модулю часов реального времени) присвоится адрес по умолчанию поскольку у нас в схеме больше нет устройств, использующих шину I2C. Wire.begin();

1Wire.begin();

Зададим режимы работы используемых контактов – на ввод или вывод данных. pinMode(9,OUTPUT); pinMode(10,OUTPUT); pinMode(11,OUTPUT); pinMode(12,OUTPUT); pinMode(latchPin, OUTPUT); pinMode(clockPin, OUTPUT); pinMode(dataPin, OUTPUT); pinMode(dot,OUTPUT);

12345678    pinMode(9,OUTPUT);    pinMode(10,OUTPUT);    pinMode(11,OUTPUT);    pinMode(12,OUTPUT);    pinMode(latchPin, OUTPUT);    pinMode(clockPin, OUTPUT);    pinMode(dataPin, OUTPUT);    pinMode(dot,OUTPUT);

Затем в бесконечном цикле loop мы будем непрерывно считывать время (часы и минуты) с модуля часов реального времени (RTC) DS3231. При этом ‘h24’ будет обозначать 24-часовой формат переменной для хранения времени. int h= RTC.getHour(h24, PM); int m = RTC.getMinute();

12    int h= RTC.getHour(h24, PM);     int m = RTC.getMinute();  

Затем часы и минуты упаковываются в одно число. Например, если число часов равно 10, а число минут равно 60, то результирующее число будет равно 10*100=1000+60 =1060. int number = h*100+m;

1int number = h*100+m;

Затем из этого числа мы будем извлекать индивидуальные цифры. Например, в числе 1060: 1 – тысячи, 0 – сотни, 6 – десятки и 0 – последняя цифра (единицы). Для разделения этих цифр мы будем использовать оператор остатка от деления. К примеру, чтобы выделить число тысяч в нашем примере – 1060/1000=1.06%10=1. Все эти цифры мы будем хранить в отдельных переменных. int thousands = number/1000%10; int hundreds = number/100%10; int tens = number/10%10; int unit = number%10;

1234    int thousands = number/1000%10;    int hundreds = number/100%10;     int tens = number/10%10;           int unit = number%10;

После этого с помощью операторов switch case каждую индивидуальную цифру мы конвертировать в соответствующий (двоичный) формат и передавать с помощью регистра сдвига на семисегментный дисплей. То есть мы каждую цифру преобразуем в такое двоичное число, чтобы при подаче его на семисегментный дисплей загоралась именно эта цифра. К примеру, цифра 1 преобразуется в формат 0000 0110 (число 6). После подачи его на семисегментный дисплей на нем высветится цифра 1 (0 for LOW, 1 for HIGH). switch (t) { case 0: unit = 63; break; case 1: unit = 06; break; case 2: unit =91; break; case 3: unit=79; break; case 4: unit=102; break; case 5: unit = 109; break; case 6: unit =125; case 7: unit = 07; break; case 8: unit = 127; break; case 9: unit =103; break; }

1234567891011121314151617181920212223242526272829303132switch (t){  case 0:  unit = 63;  break;  case 1:  unit = 06;  break;  case 2:  unit =91;  break;  case 3:  unit=79;  break;  case 4:  unit=102;  break;  case 5:  unit = 109;  break;  case 6:  unit =125;  case 7:  unit = 07;  break;  case 8:  unit = 127;  break;  case 9:  unit =103;  break;   }

Затем индивидуальные цифры в двоичном формате передаются с помощью функции shiftout. Для реализации технологии мультиплексирования соответствующие контакты сначала устанавливаются в LOW, а потом в HIGH. digitalWrite(9, LOW); digitalWrite(latchPin, LOW); shiftOut(dataPin, clockPin, MSBFIRST,thousands); digitalWrite(latchPin, HIGH); digitalWrite(9, HIGH); delay(5);

123456    digitalWrite(9, LOW);    digitalWrite(latchPin, LOW);    shiftOut(dataPin, clockPin, MSBFIRST,thousands);     digitalWrite(latchPin, HIGH);     digitalWrite(9, HIGH);            delay(5);

Аналогично и для числа сотен, десятков и единиц.

Используемая частота синхронизации (frequency of the clock) будет влиять на качество работы технологии мультиплексирования. Если она будет низкой, то вы будете замечать мерцание при работе наших часов на семисегментных дисплеях.

На следующем рисунке показан пример работы проекта.

Тестирование работы проекта часов на Arduino и 4-х разрядном семисегментном индикаторе

Исходный код программы (скетча)

Видео, демонстрирующее работу часов на 4-х разрядном семисегментном дисплее

Похожие статьи

Бинарные часы на светодиодах с использованием Arduinohttps://googleads.g.doubleclick.net/pagead/ads?guci=2.2.0.0.2.2.0.0&client=ca-pub-9773002703636166&output=html&h=162&adk=3757989320&adf=1228866026&pi=t.aa~a.1409530251~rp.4&w=790&lmt=1611740202&nsk=b8f477ec&rafmt=11&pwprc=9686864792&psa=1&ad_type=text_image&format=790×162&url=https%3A%2F%2Fmicrokontroller.ru%2Farduino-projects%2Fchasy-na-arduino-i-semisegmentnyh-displeyah%2F&flash=0&pra=3&wgl=1&fa=26&adsid=ChAIgLvEgAYQ0vbrhPGIkptFEkwAdUp0syOIYDhDSCUCfKs1MBknhdIA9-BgYMU4-B6Fqcaa_PjrmX5OEYbZrZa5OZQKlj4UXY1T8u4SrA95s4aF-ZBMwc-phnQtLiX8&dt=1611740199711&bpp=3&bdt=12486&idt=4&shv=r20210120&cbv=r20190131&ptt=9&saldr=aa&abxe=1&cookie=ID%3D9110382969fd88c7-2274cd9ba0b900d1%3AT%3D1611523040%3ART%3D1611523040%3AS%3DALNI_MbmMnN0eBAoRwwEJnKpvJDxShMnTQ&prev_fmts=0x0%2C795x280&nras=2&correlator=2145012158775&frm=20&pv=1&ga_vid=1195319956.1611740199&ga_sid=1611740199&ga_hid=1498706494&ga_fc=0&u_tz=180&u_his=1&u_java=0&u_h=1080&u_w=1920&u_ah=1053&u_aw=1920&u_cd=24&u_nplug=0&u_nmime=0&adx=557&ady=15968&biw=1908&bih=979&scr_x=0&scr_y=14915&eid=21066922%2C21068769%2C21069720&oid=3&psts=AGkb-H_xbQjK_jSOJMi19fqqE0mBMEdsYTjSM1gLkkzN6dKtWleOSLuujyiMoI8Ddu07JTDlZq9XlcFuc9cdsQ&pvsid=1835586822710445&pem=303&ref=https%3A%2F%2Fyandex.ru%2F&rx=0&eae=0&fc=1792&brdim=0%2C27%2C0%2C27%2C1920%2C27%2C1920%2C1053%2C1920%2C979&vis=1&rsz=%7C%7Cs%7C&abl=NS&fu=8320&bc=31&jar=2021-01-25-22&ifi=2&uci=a!2&btvi=1&fsb=1&xpc=Z6Alv05WGI&p=https%3A//microkontroller.ru&dtd=2309 Как использовать регистр сдвига 74HC595 с Arduino Uno Часы реального времени с будильником на основе Arduino (Проголосуй первым!)
1 668 просмотров Рубрика: Схемы на Arduino Метки: 74HC595, arduino, arduino uno, DS3231, регистр сдвига, семисегментный дисплей, система реального времени, цифровые часыПостоянная ссылка

Навигация по записям

← Последовательная связь с помощью RS-485 между Raspberry Pi и Arduino UnoОбъезжающий препятствия робот на Arduino →

Почему я не люблю Arduino
Добавил(а) microsin   
Платформа Arduino как система программирования для микроконтроллеров AVR завоевала заслуженную популярность. Платы Arduino стали очень дешевы (не фирменные конечно, а те, которые делают китайцы и продают на ebay, aliexpress и dx.com), примеров кода очень много, среда программирования и язык хорошо описаны, для большинства электронных устройств и микросхем написаны готовые библиотеки. Однако профессионалы и радиолюбители, которые уже имеют минимальный опыт работы с микроконтроллерами, часто говорят про Arduino с отвращением, и предпочитают использовать традиционные инструменты разработки (avr-libc + gcc, WinAVR, AVR Studio, IAR). Почему?Если Вы относитесь к абсолютным новичкам, которые ничего (или почти ничего) не понимают в схемотехнике, и совсем не умеют программировать (но очень хотят научиться), то вариантов для Вас нет – Arduino подойдет лучше всего. Если Вы продвинутый радиолюбитель, то из Arduino ничего полезного для себя не получите, Вы и так знаете что делать и как превратить микроконтроллер в рабочее устройство. Но если сомневаетесь в выборе, что для Вас лучше, то нужно изучить вопрос поподробнее – в чем преимущество каждого метода программирования?Для того, чтобы понять, в чем тут дело, давайте бросим общий взгляд на принципы программирования в Arduino и на обычном GCC (язык C). Условно назовем программирование на Arduino как AVR Arduino, и традиционное программирование как AVR GCC. Для тестов возьмем обычную Arduino-совместимую плату metaboard [1] (микроконтроллер ATmega328P), попробуем написать для неё код AVR Arduino и код AVR GCC, и подробно разберем, в чем разница.В качестве примера разберем традиционный HelloWorld для микроконтроллеров – мигание светодиодом. Сравнивать обе системы будем по следующим параметрам, которые особо важны для новичков:• Среда программирования
• Обзор языка, как построена программа
• Как прошивать программу в память микроконтроллера платы
• Отладка программы
• Цена железа
• Эффективность кода, дополнительные возможности[Среда программирования]Arduino IDE 1.0.6AVR Studio + WinAVRВ плане простоты установки и использования платформа AVR Arduino (и её среда разработки Arduino IDE) однозначно выигрывает. Но в плане удобства использования и функционала Arduino IDE намного беднее по сравнению с AVR Studio (или Atmel Studio) или другими аналогичными инструментами.[Обзор языка: как построена программа]У нас будет простейшая схема тестового устройства – светодиод через нагрузочный резистор подключен к цифровому порту 13 Arduino, это соответствует ножке порта GPIO PB5 микроконтроллера ATmega328P (подробнее про соответствие нумерации портов Arduino и соответствие этой нумерации ножкам микроконтроллера см. [2]).Программа должна на 0.5 секунды выдавать в порт лог. 1 (светодиод загорится), и затем на 0.5 секунды выдавать лог. 0 (светодиод погаснет). В результате получатся мигания светодиодом с частотой 1 Гц.Hello World для Arduino IDEHello World для GCCОбщая структура программы очень похожа у обоих систем, но очевидно, что у AVR Arduino все сделано намного проще, а у AVR GCC все выглядит для новичка сложнее, но зато для профессионала имеется весь набор возможностей.[Как прошивать программу в память микроконтроллера]AVR Arduino. Программа загружается в память микроконтроллера через USB, прямо в среде программирования. Программатор при этом не нужен. Технология загрузки работает на основе программы UART bootloader, которая прошита в память микроконтроллера Arduino. Обмен данными при этом идет через порты 0 и 1, и порт соединен с USB через специальный, заранее установленный на плате чип FTDI (преобразователь Virtual USB COM – TTL RS-232). Ничего настраивать особо не надо, нужно только подключить к компьютеру плату кабелем USB (драйвер FTDI устанавливается при установке Arduino IDE), и выбрать после компиляции в меню Файл -> Загрузить (Ctrl+U).AVR Studio. Можно так же пользоваться USB-загрузчиками (наподобие USBasp или BootloadHID), но для прошивки надо пользоваться отдельными утилитами – такими как Khazama, AVRDUDE и т. п. Если знать, что и как делать, то никаких проблем нет, но для новичка это не самый лучший выбор.Отдельно стоит остановиться на перепрограммировании фьюзов. В среде AVR Arduino такого понятия не существует как класс. Оно и понятно, так как этот вопрос довольно сложный, и в нем иногда путаются даже знатоки. В среде AVR Studio при наличии внешнего программатора Вы можете управлять фьюзами как хотите, для этого имеется специальная довольно удобная оболочка для управления программатором.[Отладка программы]Для обоих систем программирования, и для AVR Arduino, и для AVR GCC сразу доступна система отладки на основе последовательного порта UART. Отличие только в том, что в Arduino все уже готово и настроено, осталось только вставить в программу операторы отладочного вывода и открыть окно монитора, а в случае AVR GCC все настраивать и подготавливать надо самому [5]. Само собой, это обстоятельство тоже переманивает новичков в сообщество Arduino. Так что способ отладки по типу написал – прошил – проверил – не заработало – снова написал – прошил -… доступен как для Arduino, так и для GCC, но у Arduino все существенно проще и все подготовлено заранее.Зато если у Вас есть отладчик AVR Dragon или AVR JTAGICE mkII, то в среде для AVR Studio для Вас открывается море волшебных возможностей – полноценная отладка и по исходному коду, и по дизассемблированному листингу программы, просмотр регистров и памяти, точки останова, пошаговое выполнение программы! Вместе с отладочным выводом через UART ни о чем больше программисту мечтать не надо, написание программ превращается в удовольствие. Для Arduino это счастье недоступно.[Цена железа]Под этим подразумевается, на каких платах можно изготавливать свои радиолюбительские устройства.AVR Arduino. Ассортимент фирменных плат, которые просто “бери и используй” – довольно большой. Однако они достаточно дороги, цена начинается примерно с $30 (за Arduino UNO) и выше. Можно найти и подешевле, но тогда приготовьтесь встретиться со сложностями – либо нет встроенного в плату USB-TTL RS232, либо в плату не прошит загрузчик (для Arduino Nano 3.0 за $6 это обычное дело), либо придется разбираться в настройках и документации.Примечание: с дешевым железом, которое продается на ebay и в других подобных Интернет-магазинах, часто бывают непреодолимые для новичка трудности. Например, продается Arduino Nano, в которую не прошит загрузчик. Плата абсолютно исправна, определяется на компьютере как виртуальный COM-порт, но вместе со средой Arduino IDE работать отказывается! Для решения проблемы нужно прошить в память микроконтроллера загрузчик Arduino, работающий через UART. Но чтобы загрузчик прошить, его нужно сначала найти в Интернете, или скомпилировать, и затем прошить в память микроконтроллера. И при этом не забыть правильно установить фьюзы. Для тертого спеца это несложно, но у новичка обязательно возникнут проблемы. Так что придется покупать либо дорогую фирменную плату Arduino, либо собирать или покупать программатор, и во всем разбираться самому. Если новичок пройдет этот квест, то среда Arduino ему уже собственно не нужна =).Если Вы делаете свою платку наподобие veroduino, то ограничены в выборе микроконтроллера – среда Arduino поддерживает не все микроконтроллеры, которые есть у Atmel.AVR GCC. Тут просто море возможностей. Можно изготовить плату буквально на коленке (см. [6]), и это будет стоить копейки. И конечно же, Вы можете использовать абсолютно любое железо, любые платы, в том числе и самодельные конструкции на AVR – как Arduino-совместимые, так и не совместимые.[Эффективность кода, дополнительные возможности]Теперь давайте сравним размер кода, который дает скетч AVR Arduino, и программа AVR GCC на языке C. Обе выполняют свою работу, и выполняют её хорошо, но сколько места при этом занимает код?Arduino IDE:Размер скетча в двоичном коде: 1 090 байт (из 32 256 байт максимум) AVR GCC (компиляция с оптимизацией по скорости, это установка по умолчанию):AVR Memory Usage —————- Device: atmega328p Program: 216 bytes (0.7% Full) (.text + .data + .bootloader) Data: 0 bytes (0.0% Full) (.data + .bss + .noinit) Как видите, результирующий код получается 1090 байт у AVR Arduino, и 216 байт у AVR GCC. Даже для такой простейшей программы GCC по размеру кода в 5 раз эффективнее Arduino! Как говорится, комментарии излишни. Если еще добавить, что у Arduino невозможно настроить никакие опции оптимизации и опции библиотек ввода/вывода (stdio/printf), память катастрофически кончается при попытке создать любую более-менее сложную программу, то понятно, почему у профессионалов одно упоминание про Arduino вызывает кривую усмешку.Библиотеки Arduino и библиотеки GCCРезюме – в прямых руках AVR GCC позволяет делать на порядок более эффективные и более сложные программы, чем Arduino.Готовые скетчи Arduino и готовые проекты GCCИз всего вышесказанного не значит, что мне не нравятся платы Arduino. Вовсе нет – они очень удобны, недороги, практичны, их легко купить или даже сделать самому. Как раз платы Arduino я очень люблю, и с удовольствием применяю в разработках. Но мне не нравится именно среда программирования Arduino, и предпочитаю использовать традиционный GCC (AVR Studio или Atmel Studio, или даже Visual Studio [9]).Выводы: если Вам нужно быстренько состряпать что-то типа светофора или новогодней гирлянды, или если надо как можно проще повторить какой-то готовый проект, то тогда Arduino хорошо подходит. Если же нужно решить задачу максимально эффективно, и Вы хотите как можно больше приблизиться к пониманию – как на самом деле все устроено и работает, то Ваш выбор язык C, тулчейн AVR GCC и даташит на используемый микроконтроллер. Arduino обычно выбирают те, кто готов пожертвовать эффективностью, скоростью кода и своими деньгами в угоду простоте использования железа и легкости программирования.[Ссылки]1Макетная плата metaboard.
2. Arduino ATmega328 Pinout site:hobbytronics.co.uk.
3. Я презираю Arduino site:habrahabr.ru.
4. Arduino: спасибо и прощай site:cxem.net.
5AVR: отладочный вывод через UART (RS232 debug).
6veroduino: самодельный дешевый Arduino.
7141122Khazama162.zip – утилита Khazama162, драйвер программатора USBasp для Windows XP, Windows Vista, Windows 7, Windows 8, прошивки загрузчика USBasp для различных микроконтроллеров.
8Arduino: описание процесса сборки скетча.
9Использование MS Visual Studio IDE для программирования AVR/Arduino.
10Arduino: как поменять для скетча значение F_CPU.

Комментарии  

0#7dmitrys 15.01.2021 21:49Изначально обходил эту Ардуину, работал с AVR только на ассемблере. Но тут столкнулся с 3D-принтером. Надо бы добавить возможности, отключенные в прошивке на основе Marlin, а она на Ардуине написана. Возникает вопрос – что подвигло разработчиков на этот шаг?

microsin: потому что на assembler нет такого разнообразия библиотек для работы с разными стандартами и аппаратными устройствами, как на C и C++.Цитировать0#6Wlad 07.09.2016 12:38Спасибо за статью, теперь есть чем аргументировать , и многое становится понятным.Цитировать+1#5Вячеслав Мезенцев 11.02.2016 10:02На сегодняшний день статья немного устарела. На самом деле вы можете соединить возможности библиотек Arduino и отладки через HappyJTAG2. Другими словами, есть возможность компилировать и отлаживать скетчи традиционным способом через Makefile.

Отладка WebServer (Arduino Mega 2560 + W5100) в AVR Studio 4 через HappyJTAG2: http://img.radiokot.ru/files/4453/uriqk3mf8.png

Краткие подробности тут: http://majordomo.smartliving.ru/forum/viewtopic.php?p=29907#p29907

То же можно делать и через Proteus. Будет время, напишу статью на хабре с подробностями.Цитировать+12#4Инженер-программист 12.08.2015 15:28Arduino придумали для обучения студентов – для этой цели он хорошо подходит и позволяет новичкам приобщиться к миру контроллеров без особых знаний в электронике и программировани и.Цитировать-12#3Инженер-электроник 03.08.2015 13:51Проект Arduino придумывался только для того, чтобы вы покупали эти железки. Это простая игрушка, знаний вы особо не получите, играясь с ней.Цитировать+7#2maxxir 25.12.2014 13:41IMHO вы недостаточно знакомы с этой средой. Почитайте на досуге “Margolis M. – Arduino Cookbook”. Там ничего ни во что не преобразуется – вы можете писать на C с использованием AVR GCC libc. Arduino – не более чем надстройка над GCC.

Существуют добротные порты AVR Arduino на более мощное альтернативное железо для PIC32 – http://chipkit.net (look DIY DP32 – PIC32MX250F128B 40Mhz/66DMIPS 128kbyte_Flash/32kByte_RAM. on DIP28_SOIC28). Для STM32F103xx – www.leaflabs.com.

microsin: все, о чем Вы сейчас пишете, мало коррелирует с темой статьи. Действительно, недостаточно знаком со средой Arduino. Но знаком достаточно, чтобы оценить её эффективность с точки зрения новичка, что я и попытался сделать. В статье раскрыта собственно одна и только одна тема – сравниваются возможности традиционного программировани я в среде Arduino IDE с традиционным программировани ем на чистом C.Цитировать0#1maxxir 25.12.2014 12:02Несколько комментариев:

Только у Arduino(mega328) по умолчанию включены механизмы тайминга millis()[Timer0 used] micros()[4us step], uart c кольцевым буфером IRQ RX на 64 байта.

А по вашему Arduino что? Тот же тулчейн AVR-GCC. Даем в консоли (Arduino 1.05):
>>avr-gcc -v

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

По второму комментарию сказать можно примерно то же самое – таки да, внутри, в кишочках Arduino IDE код скетча преобразуется в C-код, который потом скармливается GCC, и линкуется с используемыми библиотеками. Опять-таки, все это скрыто от пользователя, и перенастроить ничего нельзя, код получается неэффективный. Именно за это я и не люблю Arduino.

основная причина – например квадрокоптер где программа написана не на Ардуино а программистами а железо разработано инженером (Инженер – по англ. – моторист, Слесарь который может разобрать мотор, про собрать не сказано. Словарь 1880г). Цена для покупателя 1900500 руб. и прошивка 30000р.

То же изделие с аналогичными комплектующими, моторчики и корпус на той же фабрике, а управляется от Ардуино стоит от силы 50000р ну 70т. Программист и инженер не требуется, в сильный ветер возвращается, никаких координат не передает пока об этом не попросить. (* есть и за 7000р но там управление только на метров 30, игрушка для детей в помещении).

робот конечно непростое устройство и очень нужное. а вот попроще но тоже нужное – пульт для телека на Ардуино, да еще с запоминанием команд с другого пульта (Кто не знает – у пульта с приставки Акадо есть такая же функция). Одним пультом включаем телек приставку, убавляем кондиционер и приглушаем свет диммером.

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

Включение мотора и прогрев двигателя утром часов в 6 перед поездкой. (проверив установлена ли машина на ручник и не включена ли передача на механике, а заодно нет ли кошек в моторном отсеке).

Умный контроллер солнечной батареи – может работать с розетками управляющимися по bluetooth, заряжать аккумуляторы если появилось солнце или включился генератор, отключать мощные нагрузки когда мало энергии, и при этом не отключить газовый котел ночью и зимой конечно, заменяя бесперебойник . (конечно цена такой системы несравнима с Ардуино, штук 6 курских панцирных аккумуляторов – такие же как немецкие OPZV, нужен газовый котел и конечно же магистральный газ – если он недоступен то банка с газом как на заправке, то есть 200т.р если газ есть и 7- 10 в месяц либо тысяч 600 еще и заправка тысяч на 30 ну на 15 если дом небольшой. Что тоже дешевле раза в 3 чем топить электричеством полностью).

Перехожу на литиевые батареи. В связи доступностью солнечных элементов – цены уже и 2000р есть за 150 ватт и снижения цены по ардуино к 80р с 950 что было после начала спецоперации, сейчас можно все купить без переплаты.

еще источник напряжения 220 вольт от батарей то есть инвертер (самодельщикам, а так есть eg2002 вроде контроллер, он то же самое делает, и не новый бесперебойник например с Авито. Аккумуляторы 4 штуки если 320 а.ч литиевые то это 12 вольт и 42 т. р. сейчас. уже цена разумная.

** инвертер inverter нужен чтобы запустить болгарку и например холодильник старого типа, а светодиодное освещение, компьютер ноутбук и даже насос могут и от 12 вольт прекрасно работать. с более простыми преобразователями. а вот для газового котла это в самый раз, развязывающий трансформатор только спецы советуют. inverter spwm работает на высокой частоте например 32 кгц или 2 кгц или даже 120 кгц, а формирует чистую синусоиду 50 герц – трансформатор фильтр и снаббер или проходной конденсатор. Реально сделать мощность 1500 ватт а то и 3 киловатта – только если такая нагрузка то надо 500 ампер от 12 вольт и 20 штук полевиков по 1200р либо биполярных – обычных силовых транзисторов, на 30 ампер каждый тогда 30 штук. Самодельный будет только немножко дешевле покупного – Мап Энергия за.. 45т.р а тут деталек на 40т. Можно брать транзисторы не фирменные, но с хорошим запасом и каждый проверять, радиолюбителю это не сложно. При включении трех авто галогенок ток через полевик не идет, подав на затвор 12 вольт – это пример для irf3205 КП812 а для IRF4468 надо 100 ампер проверять, например 15 лампочек или стартер от машины или 5 зеленых резисторов по 100 ватт. Включить на секунду и померить падение напряжения, не ток. Транзистор на большущем радиаторе. К затвору подпаять 2 резистора , 4.7 килоома на землю, 1 килоом на +12 вольт – соединить – транзистор открылся (он конечно с N-ch каналом). вычислить – 6 , 18 или 2 миллиома. Еще можно померить емкость затвора относительно истока, сняв питающее напряжение. 3200, 1900 или 27000 пикофарад. Проверка позвольт закупить транзюки не по 30 .. 20 долларов а по 4 .. 2 чаще всего Корейские. или Советские которые написано 50 ампер а тянут 120 в импульсе..

Навигация по записям

← Беспроводное программирование платы Arduino Uno по BluetoothGPS спидометр на Arduino и OLED дисплее своими руками →

а вот лаборатория микроэл-ки чего передает (это Воронеж если что а может Брянс или Рязань – там же сделали на основе 8086 Советские еще ВМ86 87 286..)

Реверс-инжиниринг микроконтроллера Atmel Atmega328p

История IT Программирование *Процессоры Разработка под Arduino *Реверс-инжиниринг *

Ожидает приглашения

Микроконтроллер ( англ. Micro Controller Unit, MCU)-микросхема, на которой сочетается функции процессора и содержит ОЗУ и ПЗУ на одной системе на чипе. По сути, это однокристальный процессор, на котором размещены все внешние устройства.

Постоянное запоминающее устройство (ПЗУ) — энергонезависимая память, используется для хранения различной информации.

Оперативная память (англ. Random Access Memory, RAM (ОЗУ) —энергозависимая память, в которой во время работы компьютера хранится информация.

Существует несколько разновидностей ПЗУ, предназначенных для различных целей:

Кроме этого, в составе микроконтроллера чаще всего находятся порты ввода/вывода, таймеры, АЦП, последовательные и параллельные интерфейсы. В некоторых даже можно заметить Wi-Fi-/Bluetooth-модуль и даже поддержку NFC.

Первый патент на микроконтроллер был выдан в 1971 году компании Texas Instruments. Инженеры этой компании предложили размещать на кристалле не только процессор, но и память с устройствами ввода/вывода.

Микроконтроллер Atmel Atmega328p

ПараметрЗначение
Тип процессора8-битный AVR
Флэш-память32 КБ
SRAM2 КБ
EEPROM1 КБ
Количество контактов28 или 32 контакта:
Максимальная рабочая частота20 МГц
Внешние прерывания2
Интерфейс USB

Технические характеристики

8-разрядный микроконтроллер Atmel AVR на базе RISC сочетает в себе 32 КБ флэш- памяти ISP с возможностями чтения во время записи, 1 КБ EEPROM , 2 КБ SRAM , 23 линии ввода-вывода общего назначения, 32 рабочих регистра общего назначения , три гибких таймера / счетчики с режимами сравнения, внутренними и внешними прерываниями , последовательным программируемым USART , байтовым 2-проводным последовательным интерфейсом, последовательным портом SPI , 6-канальным 10-битным аналого – цифровым преобразователем (8 каналов в пакетах TQFP и QFN / MLF ) , программируемый сторожевой таймер с внутренним генератором и пять программно выбираемых режимов энергосбережения. Устройство работает в диапазоне 1,8-5,5 вольт. Пропускная способность устройства приближается к 1 MIPS на МГц. 

Микроконтроллер Atmega328p
Микроконтроллер Atmega328p

Микроконтроллер состоит из нескольких вычислительных блоков:

Арифметико-логическое устройство (АЛУ) (англ. arithmetic logic unit, ALU) — блок процессора, который под управлением устройства управления служит для выполнения арифметических и логических преобразований над данными.

 Блок управления процессором (УУ) (control unit, CU) — блок, устройство, компонент аппаратного обеспечения компьютеров. Представляет собой конечный дискретный автомат. Структурно устройство управления состоит из: дешифратора команд (операций), регистра команд, узла формирования (вычисления) текущего исполнительного адреса, счётчика команд. УУ современных процессоров обычно реализуются в виде микропрограммного автомата и в этом случае УУ включает в себя ПЗУ микрокоманд. УУ предназначено для формирования сигналов управления для всех блоков машины.

Сумматорами называют логические устройства, выполняющие арифметические суммирование кодов двоичного числа

Микроконтроллер Atmega328P и Arduino

В классической линейке устройств Arduino в основном применяются микроконтроллеры Atmel AVR. Следующие МК можно встретить на указанных распространённых платах:

Теги:

Хабы:

Чистый синусоидальный инвертор на Arduino

Опубликовано  автором admin-new

i-love.ru

РЕКЛАМА

Инверторы используются в случаях когда невозможно получить напряжение переменного тока (AC) из сети. Инверторы предназначены для преобразования напряжения постоянного тока (DC) в напряжение переменного тока (AC) и разделяются на два типа: чистые синусоидальные инверторы (Pure Sine Wave Inverters) и модифицированные прямоугольные инверторы (Modified Square Wave Inverters). Чистые синусоидальные инверторы достаточно дорого стоят, а модифицированные прямоугольные инверторы стоят существенно дешевле.

В этой статье мы рассмотрим создание чистого синусоидального инвертора (pure sine wave inverter) на основе платы Arduino.

Внешний вид чистого синусоидального инвертора на Arduino

Если вы решили повторить создание рассмотренной в данной статье схемы, то учтите, что она не имеет ни защиты от превышения тока, ни защиты от короткого замыкания, ни защиты от перегрева. Схема данного проекта представлена в образовательных целях и не рекомендуется для промышленного использования. Тем не менее, вы по своему желанию можете добавить в этот проект названные схемы защиты – подробной информации о них достаточно много в сети.

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

Что такое синусоидальная ШИМ (SPWM)

SPWM расшифровывается как Sinusoidal Pulse Width Modulation и переводится как синусоидальная ШИМ (широтно-импульсная модуляция). Ранее мы ее уже рассматривали в генераторе синусоидальных и прямоугольных импульсов на Arduino.

Как мы знаем, в ШИМ мы можем изменять ее скважность (коэффициент занятости, duty cycle), то есть соотношение периодов активности (on-time) и неактивности (off-time). Таким образом, изменяя скважность ШИМ, мы изменяем среднее напряжение импульса. Это наглядно показано на следующей картинке.

Принцип ШИМ (широтно-импульсной модуляции)

Как видно из представленной картинки, при скважности (коэффициенте заполнения) 100% мы получаем среднее выходное напряжение 5V, при скважности 50% получаем среднее выходное напряжение 2.5V, а при скважности 25% – еще в 2 раза меньше.

Синусоидальное напряжение представляет собой аналоговое напряжение, которое изменяет свою амплитуду с течением времени, поэтому мы можем воспроизвести “поведение” синусоидальной волны при помощи непрерывного изменения скважности ШИМ волны (сигнала), что показано на следующем рисунке.

Принцип формирования синусоидальной волны при помощи непрерывного изменения скважности ШИМ сигнала

Если вы посмотрите на схемы, представленные ниже в данной статье, вы увидите, что на выход трансформатора подключается конденсатор – он как раз и ответственен за сглаживание подобного сигнала переменного тока.https://yastatic.net/safeframe-bundles/0.83/1-1-0/protected/render.htmlРЕКЛАМА

Используемый входной сигнал будет заряжать и разряжать конденсатор в соответствии с входным сигналом и нагрузкой. Мы будем использовать SPWM сигнал (синусоидальный ШИМ сигнал) высокой частоты, он будет иметь сначала очень маленькую скважность 1%, этот 1% будет заряжать конденсатор совсем чуть-чуть, сигнал со скважностью 5% будет заряжать конденсатор немного больше, скважность 10% будет заряжать конденсатор еще больше и постепенно мы достигнем скважности 100%, а после этого мы будем уменьшать скважность до 1%. С помощью этого процесса будет сформирована очень гладкая кривая, очень похожая на синусоидальную волну. Таким образом, обеспечивая правильные значения скважности на входе, мы получим хорошую синусоидальную волну на выходе.

Как работает инвертор на основе SPWM сигнала

Схема подобного инвертора показана на следующем рисунке.

Схема инвертора на основе SPWM сигнала

Как вы видите, мы использовали в схеме два MOSFET транзистора N-типа и полумост для управления трансформатором. Для уменьшения нежелательных шумов и защиты MOSFET транзисторов мы использовали два диода 1N5819, включенных параллельно MOSFET транзисторам. Для уменьшения возможных нежелательных импульсов, формируемых в секции управления, мы использовали резисторы сопротивлением 4.7 Ом, включенных параллельно диодам 1N4148. И, наконец, транзисторы BD139 и BD 140 включены по двухтактной схеме для управления затворами MOSFET транзисторов потому что MOSFET транзисторы имеют очень большое емкостное сопротивление затвора и требуют как минимум напряжения 10V на своем затворе чтобы работать корректно.

Для лучшего понимания принципов работы представленной схемы на следующем рисунке мы привели ее половину. Рассмотрим случай когда MOSFET транзистор в ней открыт – в этой ситуации ток протекает сначала через трансформатор и затем через MOSFET транзистор замыкается на землю, таким образом, магнитный поток возникает в том же самом направлении, в котором течет ток, поэтому сердечник трансформатора передает этот магнитный поток на вторую обмотку и, таким образом, на выходе мы получаем положительную половину цикла синусоидального сигнала.

Протекание тока в прямом направлении в инверторе

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

Протекание тока в обратном направлении в инверторе

То есть теперь мы знаем, что направление магнитного потока в трансформаторе изменяется. Таким образом, включая и выключая оба MOSFET транзистора (они инвертированы по отношению друг к другу) и осуществляя эти переключения 50 раз в секунду, мы будем формировать изменяющееся магнитное поле в сердечнике трансформатора, следовательно, будет изменяться направление тока во вторичной обмотке трансформатора в соответствии с законом Фараде. В этом и заключается основной принцип работы инвертора.

Теперь на следующем рисунке рассмотрим полную схему чистого синусоидального инвертора на основе платы Arduino.

Схема чистого синусоидального инвертора на основе платы Arduino

Как вы видите из представленной схемы, переключение циклов работы выше представленной схемы инвертора будет осуществляться с помощью двух цифровых контактов платы Arduino.

Конструкция проекта

В демонстрационных целях мы собрали схему нашего инвертора на стрипборде (Veroboard). На выходе трансформатора схемы будет протекать огромный ток, поэтому в этом месте коннекторы (соединители) необходимо использовать как можно толще.https://yastatic.net/safeframe-bundles/0.83/1-1-0/protected/render.htmlРЕКЛАМА

Внешний вид чистого синусоидального инвертора на Arduino

Необходимые компоненты

Полный список компонентов, необходимых для сборки нашего инвертора, представлен в следующей таблице.

№ п/пНазваниеТип компонентаКоличествоГде купить
1Atmega328Pмикроконтроллер1
2IRFZ44NMosfet транзистор2купить на AliExpress
3BD139транзистор2купить на AliExpress
4BD140транзистор2купить на AliExpress
522pFконденсатор2купить на AliExpress
610K,1%резистор1купить на AliExpress
716MHzкварцевый генератор1купить на AliExpress
80.1uFконденсатор3купить на AliExpress
94.7Rрезистор2купить на AliExpress
101N4148диод2купить на AliExpress
11LM7805регулятор напряжения1купить на AliExpress
12200uF,16Vконденсатор1купить на AliExpress
1347uF, 16Vконденсатор1купить на AliExpress
142.2uF,400Vконденсатор1купить на AliExpress

Внешний вид этих компонентов показан на следующем рисунке.

Внешний вид компонентов для сборки инвертора

Объяснение программы для Arduino

Полный код программы приведен в конце статьи, здесь же мы кратко рассмотрим его основные фрагменты.

Прежде чем переходить непосредственно к программе давайте вспомним основы формирования необходимого нам сигнала. Как выглядит изменяющийся во времени ШИМ сигнал мы изучили в первой части нашей статьи, здесь же стоит проблема как сформировать подобный сигнал с помощью платы Arduino.

Для формирования изменяющего во времени ШИМ сигнала мы будем использовать 16-битный timer1 с коэффициентом деления предделителя равным 1, что обеспечит нам время 1600/16000000 = 0.1ms на каждую единицу счета таймера (более подробно о таймерах Arduino можно прочитать в этой статье). То есть в нашем случае половина цикла нужной нам синусоидальной волны будет соответствовать 100 единицам счета таймера. Другими словами, мы можем разделить полный цикл нашей синусоидальной волны на 200 частей.

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

Чтобы упростить программу нашего проекта мы использовали специальную библиотеку для формирования SPWM сигнала, написанную программистом по имени Kurt Hutten. Скачать ее можно по следующей ссылке.

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

12#include <avr/io.h>#include <avr/interrupt.h>

Далее мы запишем две таблицы преобразования, из которых мы будем брать значения для счетчика таймера.

12int lookUp1[] = {50 ,100 ,151 ,201 ,250 ,300 ,349 ,398 ,446 ,494 ,542 ,589 ,635 ,681 ,726 ,771 ,814 ,857 ,899 ,940 ,981 ,1020 ,1058 ,1095 ,1131 ,1166 ,1200 ,1233 ,1264 ,1294 ,1323 ,1351 ,1377 ,1402 ,1426 ,1448 ,1468 ,1488 ,1505 ,1522 ,1536 ,1550 ,1561 ,1572 ,1580 ,1587 ,1593 ,1597 ,1599 ,1600 ,1599 ,1597 ,1593 ,1587 ,1580 ,1572 ,1561 ,1550 ,1536 ,1522 ,1505 ,1488 ,1468 ,1448 ,1426 ,1402 ,1377 ,1351 ,1323 ,1294 ,1264 ,1233 ,1200 ,1166 ,1131 ,1095 ,1058 ,1020 ,981 ,940 ,899 ,857 ,814 ,771 ,726 ,681 ,635 ,589 ,542 ,494 ,446 ,398 ,349 ,300 ,250 ,201 ,151 ,100 ,50 ,0 ,0 ,0 ,0 ,0 ,0 ,0 ,0 ,0 ,0 ,0 ,0 ,0 ,0 ,0 ,0 ,0 ,0 ,0 ,0 ,0 ,0 ,0 ,0 ,0 ,0 ,0 ,0 ,0 ,0 ,0 ,0 ,0 ,0 ,0 ,0 ,0 ,0 ,0 ,0 ,0 ,0 ,0 ,0 ,0 ,0 ,0 ,0 ,0 ,0 ,0 ,0 ,0 ,0 ,0 ,0 ,0 ,0 ,0 ,0 ,0 ,0 ,0 ,0 ,0 ,0 ,0 ,0 ,0 ,0 ,0 ,0 ,0 ,0 ,0 ,0 ,0 ,0 ,0 ,0 ,0 ,0 ,0 ,0 ,0 ,0 ,0 ,0 ,0 ,0 ,0 ,0 ,0 ,0 ,0 ,0 ,0 ,0 ,0 ,0 ,0};int lookUp2[] = {0 ,0 ,0 ,0 ,0 ,0 ,0 ,0 ,0 ,0 ,0 ,0 ,0 ,0 ,0 ,0 ,0 ,0 ,0 ,0 ,0 ,0 ,0 ,0 ,0 ,0 ,0 ,0 ,0 ,0 ,0 ,0 ,0 ,0 ,0 ,0 ,0 ,0 ,0 ,0 ,0 ,0 ,0 ,0 ,0 ,0 ,0 ,0 ,0 ,0 ,0 ,0 ,0 ,0 ,0 ,0 ,0 ,0 ,0 ,0 ,0 ,0 ,0 ,0 ,0 ,0 ,0 ,0 ,0 ,0 ,0 ,0 ,0 ,0 ,0 ,0 ,0 ,0 ,0 ,0 ,0 ,0 ,0 ,0 ,0 ,0 ,0 ,0 ,0 ,0 ,0 ,0 ,0 ,0 ,0 ,0 ,0 ,0 ,0 ,0 ,50 ,100 ,151 ,201 ,250 ,300 ,349 ,398 ,446 ,494 ,542 ,589 ,635 ,681 ,726 ,771 ,814 ,857 ,899 ,940 ,981 ,1020 ,1058 ,1095 ,1131 ,1166 ,1200 ,1233 ,1264 ,1294 ,1323 ,1351 ,1377 ,1402 ,1426 ,1448 ,1468 ,1488 ,1505 ,1522 ,1536 ,1550 ,1561 ,1572 ,1580 ,1587 ,1593 ,1597 ,1599 ,1600 ,1599 ,1597 ,1593 ,1587 ,1580 ,1572 ,1561 ,1550 ,1536 ,1522 ,1505 ,1488 ,1468 ,1448 ,1426 ,1402 ,1377 ,1351 ,1323 ,1294 ,1264 ,1233 ,1200 ,1166 ,1131 ,1095 ,1058 ,1020 ,981 ,940 ,899 ,857 ,814 ,771 ,726 ,681 ,635 ,589 ,542 ,494 ,446 ,398 ,349 ,300 ,250 ,201 ,151 ,100 ,50 ,0};

Далее, в функции setup мы инициализируем управляющие регистры таймера и установим в них необходимые нам значения. Для подробной информации по данным регистрам вы можете обратиться к даташиту на микроконтроллер atmega328.

123456789101112131415    TCCR1A = 0b10100010;       /*10 clear on match, set at BOTTOM for compA.         10 clear on match, set at BOTTOM for compB.         00         10 WGM1 1:0 for waveform 15.       */    TCCR1B = 0b00011001;       /*000         11 WGM1 3:2 for waveform 15.         001 no prescale on the counter.       */    TIMSK1 = 0b00000001;       /*0000000         1 TOV1 Flag interrupt enable.       */

После этого мы запишем во входной регистр заранее определенное значение 1600, что позволит нам генерировать точно 200 отсчетов на один период синусоиды.

1ICR1   = 1600;  // Period for 16MHz crystal, for a switching frequency of 100KHz for 200 subdivisions per 50Hz sine wave cycle.

Далее мы разрешим все прерывания (глобально) с помощью функции sei().

1sei();

Затем мы установим режим работы для контактов 9 и 10 платы Arduino на вывод данных.

1DDRB = 0b00000110; // Set PB1 and PB2 as outputs.

На этом мы закончим с функцией setup. Функция loop в нашей программе будет оставаться пустой поскольку основной функцией нашей программы будет обработка прерываний от таймера. Более подробно об использовании прерываний в платах Arduino вы можете прочитать в этой статье.

1void loop(){; /*Do nothing . . . . forever!*/}

Далее мы должны задать вектор переполнения для таймера 1 (timer1) и функцию для обработки прерываний от него – эта функция будет вызываться когда будет происходить переполнение таймера 1 и, соответственно, будет генерироваться прерывание от него.

1ISR(TIMER1_OVF_vect){

Затем мы объявим несколько локальных статических переменных и начнем передавать значения в регистры OCR1A и OCR1B.

12345static int num;static char trig;// change duty-cycle every period.OCR1A = lookUp1[num];OCR1B = lookUp2[num];

И, в заключение, мы будем производить предварительный инкремент счетчика чтобы передавать в регистры следующие значения из таблиц преобразования lookUp1 и lookUp2.

12345if(++num >= 200){ // Pre-increment num then check it’s below 200.       num = 0;       // Reset num.       trig = trig^0b00000001;       digitalWrite(13,trig);     }

Тестирование работы инвертора

Набор инструментов для тестирования нашего инвертора

Для тестирования работы инвертора мы использовали:

Выходной сигнал с платы Arduino

После загрузки кода в плату Arduino мы измерили SPWM сигнал на двух ее контактах и получили следующую картину:

Выходной сигнал с платы Arduino

Если мы увеличим это изображение, то мы увидим каждый изменяющийся полуцикл ШИМ волны.

Выходной сигнал с платы Arduino в высоком разрешении

На следующем рисунке показан сигнал на выходе трансформатора.

Сигнал на выходе трансформатора

Инвертор в идеальном состоянии

Инвертор в идеальном состоянии

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

Выходное напряжение без нагрузки

Напряжение на выходе инвертора при неподключенной нагрузке

Как вы видите, без подсоединённой нагрузки напряжение на выходе инвертора составляет примерно 245 В.

Потребление энергии на входе инвертора

Потребление энергии на входе инвертора

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

Потребление энергии на выходе инвертора

Потребление энергии на выходе инвертора

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

** не, по другой схеме делаем, компоненты точно поменять. а то 13 ватт на выходе и еле-еле держится, а на входе 39.

подсказка. Сварочный транс на 4 киловатта. провод для первичной – жгутиком , взять два провода от авто – для подсоединения аккумулятора, _прикурки_ 65 – 90 квадратов. на преобразователь – что то там из irf3205 хотя бы, или на 170-250 ампер корейский irfp4468 Очень желательно без pbf – то есть СО свинцом. к нему подвод 12 вольт (я бы до 48 увеличил-как в моем инвертере дачном) – с помощью плоской шины и листа медного в 1 мм .. в инструментах и на Озоне можно купить – для самодельщиков, увидите цену – передумаете делать. Посмотреть как сделан контур питания в моем фонаре на 22 или 30 ватт с одним светодиодом матрицей – там самое слабое место – 100 амперный шунт на 75 милливольт. К шине питания припаяны в параллель ленточки от 8 или 20 аккумуляторов 2800 Лиитокала – уже известных у нас, с восьми штук снимается 150 ампер 5 минут.

Более подробно все эти процессы вы можете посмотреть на видео, приведенном в конце статьи.

Исходный код программы (скетча)

 

Важно:
Чтобы избежать случайного включения перед загрузкой Arduino, простая задержка в цепи таймера может быть включена в вышеуказанную конструкцию, как показано ниже:

 

еще код программы

 

Видео, демонстрирующее работу инвертора

Источник статьи

Похожие Статьи

Понижающий преобразователь напряжения постоянного тока на ArduinoТестер емкости литиевых аккумуляторов 18650 на основе ArduinoУправление скоростью и направлением вращения электродвигателя с помощью Arduino, реле и MOSFET (1 голосов, оценка: 5,00 из 5)
4 957 просмотровРубрика: Схемы на Arduino Метки: arduinoatmega328LM7805MOSFETпрерываниясиловая электроникатаймертрансформаторШИМПостоянная ссылка
mcu.mikron.ruРЕКЛАМАПервый российский RISC 5 микроконтроллер от ГК «Микрон»elf-light.ruРЕКЛАМАПрограммируемые контроллеры для светодиодов ELFcopycast.ruРЕКЛАМАМелкосерийное литье пластмасс

Навигация по записям

← Беспроводное программирование платы Arduino Uno по BluetoothGPS спидометр на Arduino и OLED дисплее своими руками →


Комментарии

Чистый синусоидальный инвертор на Arduino — 8 комментариев

не комментирую. Индийский электронщик привез мне – еще был СССР – в 1988 году пяток IBM PC из них была одна исправная. Так вот я еще два компьютера починил, осмотрел какие логические чипы неисправны и заменил.. на советские аналогичные. Компы тогда были под строгим эмбарго. История повторяется, только теперь Русские электронщики не хуже Индийских разбираются. Кстати как говорят историки мы один народ пришедший с севера, с Гипербореи лет 20000 назад, кто говорит что была война миров, а кто считает что там похолодало. Надеюсь не дойдет до ядерной войны, вот похоже она тогда и была уже, не повторять же все подряд.. Индийские программисты называют байос основной чип программы а русские биос, а к ардуинке и там и там скетч, то есть простой код, не сложнее чем чертеж-схема. На Ардуино может сделать технику любой конечно кто в школе учился, не обязательно вызывать спеца из Индии. и санкции не помешают, их делают Малайзия Шеньжень Китай Корея и Тайвань, Индия и Россия тоже подключится. (есть уже но называется по – другому, а программируется как atmega328p).

Все таки один комментарий напишу. про сквозной ток смотрим схему подключения и где средняя точка. Железный трансформатор не пропустит высокую частоту, его индуктивность просто будет как бы большим сопротивлением для часто изменяющегося сигнала, а низкая частота 50 герц как раз трансформируется в нагрузку и из 12 вольт на вторичной обмотке будет 220. Доматывать или отмотать витки – если под нужной нагрузкой не то напряжение. Тороидальный трансформатор лучше всего, у меня такой под потолком для лампочек галогенок, сделал мастер с Митинского рынка. Размер 2-квт трансформатора 30 на 30 и на 12 см толщину тороид, вес 24кг. на На 2 киловатта надо 8 + 8 транзисторов параллельно, ток 200 ампер. между примерами программы есть правильная схема управления полевиками, там на затворы должно подаваться 12 вольт а не 3 вольта с ардуинки, а вот схема усилителя правильная – на комплементарной паре – по верхней схеме, их можно объединить, и тогда на эмиттерах будет 12 вольт как и на базах биполярных транзисторов с разной проводимостью и полевики перестанут сильно греться. Ток без нагрузки упадет раза в 3. КПД эффективность повысится до процентов 75 -80 если нет перебора мощности. BD139 BD140 меняются на КТ816 КТ817 .Новичкам – читаем очень внимательно, я надеюсь что сильно ошибок не наделал, у меня работает. (Смотрим прожектор на 20 ватт на Одном транзисторе на других страничках). Можно вместо большого транса поставить ферритовое кольцо, тогда фильтры и металлопленочный кондер после него на выходе 220 вольт. Только этот конденсатор будет немаленький – с кулак и довольно дорогой и он может и рвануть, ему надо мощность 2КВар. Оба варианта рабочие, сердечник из трансформаторной стали надежнее и как работает трансформатор Ууу. * в дорогущем powerware инверторе ИБП на 2000 ватт с двойным преобразованием, ферритовым трансом на 2 киловатта и с обмоткой из 16 проводков жгутиком 0.4 – что бы меньше был скин эффект – все правильно рассчитано и не греется, 8 транзисторов по 120 ампер и с очень малым сопротивлением канала. Все как в американской рекламе – например Уиндовз – красивущий самолет с бело голубой раскраской, улыбающиеся стюардессы, кожаные кресла, все высший класс.. разгоняется и взлетает. клип резко обрывается потому что бабах и красная вспышка.. и в электронике так же.. маленький конденсатор поставили на фильтрацию ВЧ он керамический, нагрелся докрасна и рванул. И с ним весь блок. А надо было рассчитать и поставить пленочные пару с кулак размером или дисковые штук 5 с хорошей реактивной мощностью и на ток в 5000а.

кроме Ардуино и робототехники нажны общие знания и умения – по электронике, радиотехнике. А то получается – квадрокоптер китайский взлетает и на высоте 10 метров теряет связь и падает. а вот и Российским усилителем и передатчиком связь работает на 50 км и видео передает..

да, переделал – и еще один- провода от аккумуляторов толщиной с палец медный – как для машины прикурить и короткий не больше метра, группа транзисторов припаяна к шине 3 на 20 мм тоже из меди, можно и больше. посчитать падение напряжения при токе 1000 ампер (730а средний при 12в если 2 обмотки первичка и транзисторов 2 группы по 4 или 8, каждый транзистор на 200а, импульсный в 4 раза больше). По входному напряжению набор емкостей 20 штук на 60000 мкф минимум а лучше и больше.

Очень нужное устройство если даже есть свет но установлен газовый котел (и умный дом все устройства тянет) . Свет пропал ночью а котел не погас. Есть еще на ардуинке автозапуск генератора. Дизель залит, на топливную трубку надет клапан выключения – 12 вольт подать и топливо открылось (Есть готовый Kipor ) осталось определить что нет напряжения и включить стартер. Если генератор бензиновый то – соленоидом прикрывается подсос, открывается топливо, дается попытка запуска, 30 секунд перерыв, еще две попытки, потом подсос приоткрыть до половины и еще все повторить. как завелся – подсос приоткрывается на половину, как набрались обороты – подождать секунд 30 и открыть полностью. Заглушить проще – отключить топливо.

а вот на дрова переходим уголь и мелкую крошку – купил шнек и бункер для топлива. Газ будет дорогущий. * буду газ подключать – за год все поменялось , 250 это не 4 млн.

чуть новее – на сайте в загрузках есть папка с 16 года, там несколько библиотек.

Сейчас если atmega328 дороговато – есть чисто китайский аналог. LGT8F328p

вот по этим платам – https://alexgyver.ru/lessons/lgt8f328/

изображение 2 3
изображение 2 3
изображение 2 4
изображение 2 4

пришли уже на пробу – если часы заработают на ИНках первых то все подходит. Там программа все 64 почти занимает и с десяток регистров, во флеш памяти 31 из 32, считывает аналог и микросхему часов ds3231, еще чип памяти внешний. или в фонарик – https://www.veed.io/view/38b0ed35-94f5-488b-89d9-8ccc6bd15ca3 туда и 168 на 12мгц пойдет.

фонарики 30 ватт – один с Ардуино, второй на 34063 с регулировкой 2000 лм, 500м освещение, bridgelux сборка светодиодов на керамике с игольчатым радиатором 9 на 9 на 6 см, батарея 3в 24ач

загрузка hex кода для attiny – например фонарик, используя вместо программатора Arduino.

https://habr.com/ru/post/234477/

еще по поводу Российского аналога (не требовался говорят на 2006 примерно, сейчас есть более новые,) есть ВП и делается точно в России но с золочеными лапками в керамическом корпусе и за 3900р – завод в Воронеже на своей страничке подтверждает. И по выводам не совместимый, и там программы другие слегка. Этот кристалл быстрее китайского, 40 мгц даже. но выгоднее купить вот – 10 штук по цене одного – https://aliexpress.ru/item/1005004743127367.html

самое сложное для любителей Ардуино .. изучить основы физики и электроники. И это очень надо.

простой пример – на повышающий преобразователь с 3 до 20 вольт (6 ампер для ноутбука 120 ватт всего ) какой надо транзистор ?

а катушку – на каком сердечнике и каким проводом, а почему микросхема не запускается а индикатор запускается, а зачем драйвер затвора да еще повышающий на два irfp4468pbf? А почему к ним медная полоска сечением 2 на 12 мм, и они на радиаторе ребристом площадью 12 на 25 см. Как 160 ампер? В импульсе больше? И всего 2 витка но жгутиком из 30 штук по миллиметру, толстый медный провод, а кольцо феррита почти 6 на 2 см, и даже два..

про повышающий преобразователь. Напоминаю, ардуинка требует от 5 до 12 вольт питания, но на ней регулятор – линейный стабилизатор маленьки и совсем не надежный.