Самодельный мини-эхолот на микроконтроллере Atmel ATMega8L за 500 рублей

Эхолот на ардуино своими руками

Представляю вашему вниманию авторскую разработку – самодельный мини-эхолот на микроконтроллере Atmel ATMega8L и ЖКИ от мобильного телефона nokia3310. Устройство рассчитано для повторения радиолюбителем средней квалификации, но, я думаю, конструкцию может повторить каждый желающий. Материал я старался изложить так, чтобы читателям в доступной форме дать побольше полезной информации по теме. Надеюсь, что повторение конструкции принесет Вам много удовольствия и пользы.

Буду рад ответить на ваши вопросы/пожелания/замечания и помочь в повторении конструкции.

С уважением, Alex

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

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

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

Первый вопрос, который, я уверен, возникнет у читателей «Почему использован такой маленький дисплей?» Поэтому я сразу на него отвечу: этот «мини-эхолотик» разрабатывался по просьбе знакомого из того, что оказалось под рукой. А этими подручными средствами оказались ATMega8L, дисплей от nokia3310 и какой-то излучатель с обозначением f=200kHz. Еще Вы, наверное, спросите возможно ли переделать программу/схему под другой, больший дисплей? Да. Теоретически это возможно.

От эхолотов, описанных в [1, 2, 3] моя конструкция отличается применением графического ЖК дисплея, что дает устройству преимущества в отображении полезной информации.

Вся конструкция собрана в корпусе «Z14». Питание обеспечивается от аккумулятора 9В GP17R9H. Максимальный потребляемый ток не более 30 мА (в авторском варианте 23мА).

Теперь о возможностях эхолота. Рабочая частота 200 кГц и настраивается под конкретный имеющийся излучатель. Программно реализована возможность измерять глубину до 99,9 метров. Но скажу сразу: максимальная глубина, которую сможет «видеть» эхолот, в большой степени будет зависеть от параметров примененного излучателя. Моя конструкция на данное время тестировалась только на водоеме с максимальной глубиной около 4 м. Прибор показал отличные результаты. По мере возможности постараюсь протестировать работу эхолота на более больших глубинах, о чем будет сообщено читателям.

Итак, перейдем к схеме. Схема мини-эхолота показана на рисунке ниже:

Основные функциональные блоки эхолота: схема управления (тоесть микроконтроллер ATMega8L), передатчик, излучатель, приемник, дисплей, клавиатура, схема зарядки аккумуляторной батареи.

Работает эхолот следующим образом: микроконтроллер на выводе РВ7 формирует управляющий сигнал (прямоугольные импульсы лог. «0») длительностью примерно 40 мкс. Этот сигнал запускает на указанное время задающий генератор с рабочей частотой 400 кГц на микросхеме IC4. Далее сигнал подается на микросхему IC5, где частота сигнала делится на 2. Сигнал с IC5 подается на буферный каскад на микросхеме IC6 и далее на ключи Q3 и Q4. Далее сигнал со вторичной обмотки трансформатора Т1 подается на пьезокерамический датчик-излучатель LS2, который посылает ультразвуковые посылки во внешнюю среду.

Отраженный от дна/препятствия сигнал принимается датчиком-излучателем и подается на вход приемника, который собран на микросхеме SA614AD в типовом включении (см. Datasheet на SA614AD). Диодная сборка BAV99 на входе приемника ограничивает входное напряжение приемника в момент работы передатчика.

Читайте также:
Ящик для зимней рыбалки своими руками

Сигнал с приемника подается на компаратор на микросхеме LM2903, чувствительность которого регулируется микроконтроллером.

Далее сигнал обрабатывается в микроконтроллере и отображается в нужном виде на графическом ЖК дисплее 84х48 точек.

Трансформатор Т1 передатчика намотан на сердечнике К16*8*6 из феррита M1000НМ. Первична обмотка наматывается в 2 провода и содержит 2х14 витков, вторичная – 150 витков провода ПЭВ-2 0,21мм. Первой мотается вторичная обмотка. Половины первичной обмотки должны быть «растянуты» по всей длине сердечника. Обмотки необходимо изолировать друг от друга слоем лакоткани или трансформаторной бумаги.

Теперь самая интересная и проблемная часть: датчик-излучатель. У меня эта проблема была решена изначально: у меня уже был готовый излучатель. Как быть Вам? Вариант 1: приобрести готовый датчик. Вариант 2: изготовить самому из пьезокерамики ЦТС-19.

При прошивке микроконтроллера ATMega8L fuse bits выставить согласно картинке ниже :

Полная информация по изготовлению, настройке, прошивке и руководству по использованию мини-эхолота

Эхолот Рыбалки Своими Руками

Самодельный эхолот рыбака своими руками

В текущее время эхолоты для рыбалки очень популярны посреди рыбаков и спортсменов. Что дает эхолот рыбаку? Ответ на этот вопрос, казалось бы, очень прост – эхолот отыскивает и находит рыбу, и это является его главным назначением. Но однозначность этого ответа может казаться полностью справедливой только начинающему рыболову. Каждый мало-мальски грамотный рыбак знает, что рыба не распределяется умеренно по месту водоемов, а собирается в определенных местах, определяемых рельефом дна, резкими переменами глубин и даже перепадами температур меж слоями воды. Энтузиазм могут представлять коряги, камешки, ямы, растительность. Другими словами, рыба не только лишь отыскивает, где поглубже, да и где ей лучше ночевать, охотиться, маскироваться, питаться. Потому главная задачка эхолота – это определение глубин водоема и исследование рельефа дна. Структурная схема, которая объясняет устройство и работу эхолота, показана на рис. 1. Тактовый генератор G1 управляет взаимодействием узлов устройства и обеспечивает его работу в автоматическом режиме. Генерируемые им недлинные (0,1 с) прямоугольные импульсы положительной полярности повторяются каждые 10 с.

Своим фронтом эти импульсы устанавливают цифровой счетчик РС1 в нулевое состояние и закрывают приемник А2, делая его нечувствительным к сигналам на время работы передатчика. Спадом тактовый импульс запускает передатчик А1, и излучатель-датчик BQ1 испускает в направлении дна маленький (40 мкс) ультразвуковой зондирующий импульс. Сразу раскрывается электрический ключ S1, и колебания примерной частоты 7500 Гц от генератора G2 поступают на цифровой счетчик РС1.

По окончании работы передатчика приемник А2 раскрывается и приобретает нормальную чувствительность. Эхосигнал, отраженный от дна, принимается датчиком BQ1 и после усиления в приемнике закрывает ключ S1. Измерение закончено, и индикаторы счетчика РС1 высвечивают измеренную глубину. Очередной тактовый импульс вновь переводит счетчик РС1 в нулевое состояние, и процесс повторяется.

Принципная схема эхолота с пределом измерения глубины до 59,9 м изображена на рис. 2. Его передатчик представляет собой двухтактный генератор на транзисторах VT8, VT9 с настроенным на рабочую частоту трансформатором Т1. Нужную для самовозбуждения генератора положительную оборотную связь делают цепи R19C9 и R20C11.’ Генератор сформировывает импульсы продолжительностью 40 мкс с радиочастотным наполнением. Работой передатчика управляет модулятор, состоящий из одновибратора на транзисторах VT11, VT12, формирующего модулирующий импульс продолжительностью 40 мкс, и усилителя на транзисторе VT10. Модулятор работает в ждущем режиме, запускающие тактовые импульсы поступают через конденсатор С14.

Приемник эхолота собран по схеме прямого усиления. Транзисторы VT1, VT2 усиливают принятый излучателем-датчиком BQ1 эхосигнал, транзистор VT3 применен а амплитудном сенсоре, транзистор VT4 увеличивает продетектированный сигнал. На транзисторах VT5, VT6 собран одновибратор, обеспечивающий всепостоянство характеристик выходных импульсов и порога чувствительности приемника. От импульса передатчика приемник защищают диодный ограничитель (VD1, VD2) и резистор R1.

Читайте также:
Нож своими руками: простая конструкция

В приемнике использовано принудительное выключение одновибратора приемника при помощи транзистора VT7. На его базу через диодик VD3 поступает положительный тактовый импульс и заряжает конденсатор С8. Открываясь, транзистор VT7 соединяет базу транзистора VT5 одновибратора приемника с положительным проводом питания, предотвращая тем возможность его срабатывания от приходящих импульсов. По окончании тактового импульса конденсатор С8 разряжается через резистор R18, транзистор VT7 равномерно запирается, и одновибратор приемника обретает нормальную чувствительность. Цифровая часть эхолота собрана на микросхемах DD1-DD4. В ее состав заходит ключ на элементе DD1.1, управляемый RS-триггером на элементах DD1.3, DD1.4. Импульс начала счета поступает на триггер от модулятора передатчика через транзистор VT16, окончания. с выхода приемника через транзистор VT15.

Эхолот из двух дальномеров для определения положения объекта

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

Формула Герона позволяет рассчитать площадь треугольника, для которого известны длины всех сторон. Зная площадь треугольника, можно рассчитать положение отдельного объекта (относительно известной базовой линии), используя тригонометрию и теорему Пифагора.

Большие области обнаружения и хорошая точность возможны при использовании общедоступных ультразвуковых датчиков на подобии HC-SR04 или HY-SRF05.

В собранном виде это выглядит так:

Для эксперимента на полу с помощью верёвки и клейкой ленты делаем квадрат со сторонами 100см. От квадрата на расстоянии 50см размещаем дальномеры. К крышке от пластиковой ёмкости клейкой лентой прикрепляем нитку, за которую будет удобно тягать крышку.

Визуализация положения объекта сделана на Processing, объект отображается красным мигающим кругом:

Вот видео, как это всё работает:

Эхолот своими руками

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

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

Такие устройства намного упрощают процесс рыбалки, но стоят дорого. Чтобы сэкономить средства, можно сделать эхолот своими руками.

Введение

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

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

Точность отличная. При использовании распространенных ультразвуковых датчиков HC-SR04 или HY-SRF05 возможны большие области обнаружения.

Рисунок 1 – Собранный эхолокатор на двух датчиках и Arduino

Cамодельный мини-эхолот на микроконтроллере Atmel ATMega8L и ЖКИ от мобильного телефона nokia3310

Cамодельный мини-эхолот на микроконтроллере Atmel ATMega8L и ЖКИ от мобильного телефона nokia3310

Представляю вашему вниманию авторскую разработку – самодельный мини-эхолот на микроконтроллере Atmel ATMega8L и ЖКИ от мобильного телефона nokia3310. Устройство рассчитано для повторения радиолюбителем средней квалификации, но, я думаю, конструкцию может повторить каждый желающий. Материал я старался изложить так, чтобы читателям в доступной форме дать побольше полезной информации по теме. Надеюсь, что повторение конструкции принесет Вам много удовольствия и пользы.

Буду рад ответить на ваши вопросы/пожелания/замечания и помочь в повторении конструкции.

С уважением, Alex

Эхолот, сонар (sonar) – сокращение от SOund NAvigation and Ranging. Эхолот известен где-то с 40-х годов, технология была разработана во время Второй мировой войны для отслеживания вражеских подводных лодок. В 1957 году компания Lowrance выпустила первый в мире эхолот на транзисторах для спортивной рыбной ловли.

Читайте также:
Как построить землянку за 1 день

Эхолот состоит из таких основных функциональных блоков: микроконтроллер, передатчик, датчик-излучатель, приемник и дисплей. Процесс обнаружения дна (или рыбы) в упрощенном виде выглядит следующим образом: передатчик выдает электрический импульс, датчик-излучатель преобразует его в ультразвуковую волну и посылает в воду (частота этой ультразвуковой волны такова, что она не ощущается ни человеком, ни рыбой). Звуковая волна отражается от объекта (дно, рыба, другие объекты) и возвращается к датчику, который преобразует его в электрический сигнал .
Приемник усиливает этот возвращенный сигнал и посылает его в микропроцессор. Микропроцессор обрабатывает принятый с датчика сигнал и посылает его на дисплей, где мы уже видим изображение объектов и рельефа дна в удобном для нас виде.

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

Первый вопрос, который, я уверен, возникнет у читателей «Почему использован такой маленький дисплей?» Поэтому я сразу на него отвечу: этот «мини-эхолотик» разрабатывался по просьбе знакомого из того, что оказалось под рукой. А этими подручными средствами оказались ATMega8L, дисплей от nokia3310 и какой-то излучатель с обозначением f=200kHz. Еще Вы, наверное, спросите возможно ли переделать программу/схему под другой, больший дисплей? Да. Теоретически это возможно.

От эхолотов, описанных в [1, 2, 3] моя конструкция отличается применением графического ЖК дисплея, что дает устройству преимущества в отображении полезной информации.

Вся конструкция собрана в корпусе «Z14». Питание обеспечивается от аккумулятора 9В GP17R9H. Максимальный потребляемый ток не более 30 мА (в авторском варианте 23мА).

Теперь о возможностях эхолота. Рабочая частота 200 кГц и настраивается под конкретный имеющийся излучатель. Программно реализована возможность измерять глубину до 99, 9 метров. Но скажу сразу: максимальная глубина, которую сможет «видеть» эхолот, в большой степени будет зависеть от параметров примененного излучателя. Моя конструкция на данное время тестировалась только на водоеме с максимальной глубиной около 4 м. Прибор показал отличные результаты. По мере возможности постараюсь протестировать работу эхолота на более больших глубинах, о чем будет сообщено читателям.

Основные функциональные блоки эхолота: схема управления (тоесть микроконтроллер ATMega8L), передатчик, излучатель, приемник, дисплей, клавиатура, схема зарядки аккумуляторной батареи.

Работает эхолот следующим образом: микроконтроллер на выводе РВ7 формирует управляющий сигнал (прямоугольные импульсы лог. «0») длительностью примерно 40 мкс. Этот сигнал запускает на указанное время задающий генератор с рабочей частотой 400 кГц на микросхеме IC4. Далее сигнал подается на микросхему IC5, где частота сигнала делится на 2. Сигнал с IC5 подается на буферный каскад на микросхеме IC6 и далее на ключи Q3 и Q4. Далее сигнал со вторичной обмотки трансформатора Т1 подается на пьезокерамический датчик-излучатель LS2, который посылает ультразвуковые посылки во внешнюю среду.

Отраженный от дна/препятствия сигнал принимается датчиком-излучателем и подается на вход приемника, который собран на микросхеме SA614AD в типовом включении (см. Datasheet на SA614AD). Диодная сборка BAV99 на входе приемника ограничивает входное напряжение приемника в момент работы передатчика.

Сигнал с приемника подается на компаратор на микросхеме LM2903, чувствительность которого регулируется микроконтроллером.

Далее сигнал обрабатывается в микроконтроллере и отображается в нужном виде на графическом ЖК дисплее 84х48 точек.

Трансформатор Т1 передатчика намотан на сердечнике К16*8*6 из феррита M1000НМ. Первична обмотка наматывается в 2 провода и содержит 2х14 витков, вторичная – 150 витков провода ПЭВ-2 0, 21мм. Первой мотается вторичная обмотка. Половины первичной обмотки должны быть «растянуты» по всей длине сердечника. Обмотки необходимо изолировать друг от друга слоем лакоткани или трансформаторной бумаги.

Читайте также:
Как получить воду из воздуха в экстремальных условиях

Теперь самая интересная и проблемная часть: датчик-излучатель. У меня эта проблема была решена изначально: у меня уже был готовый излучатель. Как быть Вам?
Вариант 1: приобрести готовый датчик.
Вариант 2: изготовить самому из пьезокерамики ЦТС-19.

Импульсный металлодетектор на ATmega8 + ЖКИ

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

Металодетектор собран по авторским материалам Andy_F http://fandy.vov.ru назван сей девайс “Шанс” (“Chance”)

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

Теперь о том как я его собрал , и какие материалы при этом использовал.

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

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

Так с комплектующими определились, есть всё в наличии

можно приступать к сборке.

Печатную плату применил здесь из принципа блочного построения , основная причина это сделать на имеющихся деталях компактную схему,

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

печатная плата в Sptint Layout прилагается

Получился вот такой “бутерброд”

Изготовление датчика: к датчику не предъявляется каких-то особых требований: поддерживайтесь рекомендации автора по величине сопротивления и величине индуктивности ( авторская катушка L = 400 uH, R = 1,7 Ом , провод медный 0,63- 0.75, толщина каркаса 5мм) . И не применяйте в креплении катушки электро проводимых деталей, (все детали и клей ПХВ).

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

Когда собранная схема заработала

Можно приступать к полной сборке устройства.

Сначала придаём датчику “аэродинамическую” форму, а потом – тонкая ткань, стеклоткань, пропитанная эпоксидкой.

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

Вот так выглядит металлоискатель в сборе

Импульсный металлодетектор на ATmega8 + ЖКИ

В рабочем состоянии

Импульсный металлодетектор

В транспортном состоянии

 металлодетектор на ATmega8

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

Чувствительность на 5коп. (россия) 23см, VDI начинает показывать при 15см

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

Так же один металл может проявляться сразу в трех секторах довольно отчетливо.

1) практически не отличается от режима « нет дискриминации»

2) уверенно определяется никель, нержавейка , но и железяки хорошо пролазят.

Читайте также:
Самодельная походная плита для автопутешествий

3) железо хорошо отсекается, есть отдельные попискивания при слабых откликах, немного режется никель, нержавейка и консервная жесть пролазит.

4) режим режется все кроме 15-16 секторов

Напряжения питания ; начинается какое либо движение уже от 7 вольт.

Потребляемый ток , при напряжении 12В, – в районе 85-110мА.

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

Статья написана , чтобы вселить надежду тем, кто так же начинает заниматься радиолюбительством и идет следом, обобщил, и подвел итог чтобы помочь людям от излишней траты времени и средств, при повторении обращайтесь на первоисточник http://fandy.vov.ru автор Andy_F.

Форум с участием автора http://www.md4u.ru

Архив всех файлов проекта использованных мной для изготовления металлоискателя 528кб.

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

Если ваш proteus неправильно отбражает кирилические знаки на ЖК индикаторе ( это касается только файла Chance ru.нех),

для правильного отображения кирилицы , распаковать эту библиотеку в папку models протеуса,

Архив рубрики: Схемы на AVR

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

Собираем собственную плату Arduino на микроконтроллере AVR ATmega328

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

Подключение светодиодной матрицы 8х8 к микроконтроллеру AVR ATmega8

В этой статье мы рассмотрим подключение светодиодной матрицы 8х8 к микроконтроллеру ATmega8 (семейство AVR), на которой после этого можно отображать буквы алфавита. Типовая светодиодная матрица 8х8 показана на следующем рисунке. Светодиодная матрица 8х8 содержит 64 светодиода, которые упорядочены в форме … Читать далее →

Связь AVR ATmega8 и Arduino Uno через универсальный асинхронный приемопередатчик (UART)

В этой статье мы рассмотрим процесс взаимодействия микроконтроллера ATmega8 (семейство AVR) и платформой Arduino Uno через последовательный порт. Взаимодействие будет осуществляться через универсальный асинхронный приемопередатчик (UART — Universal Asynchronous Receiver Transmitter) – это последовательный порт связи. Подобное взаимодействие часто бывает … Читать далее →

Подключение оптопары к микроконтроллеру AVR ATmega8

В этой статье мы рассмотрим подключение оптопары к микроконтроллеру ATmega8 (семейство AVR). Оптопары представляют собой устройства, предназначенные для изоляции электронных и электрических схем. Это простое устройство может изолировать чувствительную электронику от «грубой» электроники такой, к примеру, как электродвигатели, при этом … Читать далее →

Будильник на микроконтроллере AVR ATmega32

В этой статье мы рассмотрим схему простого будильника на микроконтроллере ATmega32 (семейство AVR). Для реализации этой идеи мы используем 16 битный таймер, присутствующий в данном микроконтроллере. Все цифровые часы имеют в своем составе кварцевый резонатор, который является их «сердцем». Кварцевые … Читать далее →

Пожарная сигнализация на микроконтроллере AVR ATmega8

В этой статье мы рассмотрим пожарную сигнализацию на микроконтроллере ATmega8 (семейство AVR) и датчике огня. Датчик огня может быть любого типа, мы в нашей схеме будем использовать инфракрасный датчик огня – он не отличается точностью, но зато он самый дешевый … Читать далее →

Измерение интенсивности света с помощью фоторезистора и микроконтроллера AVR ATmega8

В этой статье мы подключим фоторезистор к микроконтроллеру ATmega8 (семейство AVR) и с его помощью будем измерять интенсивность света. Для этой цели мы будем использовать 10 битный аналого-цифровой преобразователь микроконтроллера (АЦП). Общие сведения о фоторезисторах Фоторезистор представляет собой преобразователь, чье … Читать далее →

Читайте также:
Мобильный обогреватель для рук: делаем своими руками

Амперметр на 100 мА на микроконтроллере AVR ATmega8

В этой статье мы рассмотрим низкодиапазонный амперметр на микроконтроллере ATmega8 (семейство AVR). Для реализации этой идеи мы задействуем 10 битный аналого-цифровой преобразователь (АЦП) данного микроконтроллера. Для упрощения схемы используем резистивный метод, являющийся самым простым способом определения нужных нам параметров. В … Читать далее →

Взаимодействие двух микроконтроллеров AVR ATmega8 через UART

В этой статье мы рассмотрим процесс взаимодействия двух микроконтроллеров ATmega8 (семейство AVR) через последовательный порт. Взаимодействие будет осуществляться с помощью универсальных асинхронных приемопередатчиков (UART — Universal Asynchronous Receiver Transmitter), имеющихся в микроконтроллерах. Подобное взаимодействие часто бывает востребовано в различных системах. … Читать далее →

Сигнализация с датчиком наклона на микроконтроллере AVR ATmega8

В этой статье мы рассмотрим сигнализацию на микроконтроллере ATmega8 (семейство AVR), основанную на анализе колебаний. Данную сигнализацию можно использовать для защиты от воров. Сигнализация основана на использовании датчика наклона (tilt sensor), внешний вид которого показан на следующем рисунке. Одним из … Читать далее →

Arduino без Arduino: работаем с микроконтроллерами напрямую

Если вспомнить историю создания Arduino ( www.drive2.ru/b/2520138/ ), то Arduino стало популярно благодаря трем вещам, составляющим ее основу: Среды программирования Arduino IDE ( на самом деле это среда языка Processing), Языка программирования Wiring (На самом деле такого языка не существует — то что мы видим это самый обычный С, дополненный большим числом библиотек) и Плат Arduino.
Я уже писал ранее, что без каждой из этих трех составляющих можно обойтись и приводил пример того, как можно обойтись без знания С — www.drive2.ru/b/2729013/. Как отказаться от Arduino IDE написано здесь — www.visualmicro.com/page/…what_is_visual_micro.html, а сегодня я хотел бы написать о том, как отказаться от “плат Arduino”.
Итак, что же собой представляет плата, получившая такой коммерческий успех?

Как можно увидеть на плате находятся микроконтроллер AtMega 168 или 328, микросхема питания — DA1, контроллер виртуального com порта — DD1 и кварц 16 МГц — Q1. В общем то на первый взгляд ничего лишнего, но это только на первый: Используемая микросхема питания позволяет питать плату от напряжения от 5 до 12В или кратковременно до 30В, т.е. для авто с его 14,5В не пригодна и нужно делать свой источник питания. Контроллер СОМ порта используется в основном только для заливки программ и не является обязательным (в плате Arduino Pro Micro и ей подобных он отсутствует). Кварц, несомненно, позволяет точно работать с временем, но если погрешность в несколько милисикунд для вас не критична, то можно вспомнить о том, что микроконтроллеры фирмы Atmel, к которым относится и Atmega168/328, содержат внутренний кварц и могут отсчитывать такты сами себе.
Так что же эта плата лишняя? В общем то да. В большинстве случаев без нее действительно можно обойтись и сейчас мы поговорим как.

Поддержка средой программирования
Находим где у вас установлена Arduino и открываем папочку hardware
По умолчанию это здесь — C:Program FilesArduinohardwarearduinoavr
В эту папку мы будем распаковывать архивы с библиотеками, которые будем качать отсюда:
1) Для микроконтроллеров
ATmega8, ATmega8A,
ATmega88, ATmega88A, ATmega88P, ATmega88PA, ATmega88PB
ATmega168, ATmega168A, ATmega168P, ATmega168PA, ATmega168PB
ATmega328, ATmega328P, ATmega328PB
ATmega48, ATmega48A, ATmega48P, ATmega48PA, ATmega48PB

качаем ATmega8 Series (8/48/88/168/328) отсюда — github.com/sleemanj/optib…ob/master/dists/README.md
См. отдельную статью О бедном AtMega замолвите слово
Данные библиотеки позволяют запустить МК на 3 частотах: 1MHz, 8MHz или 16MHz (Для работы требуется внешний кварц 16МГц).
Тут необходимо понимать, что внешний кварц увеличивает быстродействие и стабильность работы (1 миллисекунда выполнения программы всегда будет равняться 1 миллисекунде реального времени), но увеличивает, пусть и ненамного, стоимость конструкции и снижает надежность за счет большего числа деталей. Лично мое мнение, что для большинства конструкций, проектируемых для автомобиля, можно смело обойтись и встроенным кварцем. Для схем зажигания, тахометра можно использовать внешний кварц, подключенный по схеме ниже, но дешевле взять готовую платку типа Arduino Pro Micro.
Достаточно ценное замечание от alexfrance
Был печальный опыт при использовании внутреннего генератора МК тини2313. На морозе при -20 контроллеры зависали, глючили. Установка внешнего кварца помогла. Поскольку внутренний генератор представляет из себя RC цепь, то он очень термозависим

Читайте также:
Зимняя кормушка своими руками

2) Микроконтроллеры Attiny13 (А)
Библиотеки и файлы для поддержки “Тинек” можно скачать по ссылочке выше, а можно взять версию от разработчика — sourceforge.net/projects/ard-core13/files/
Скачанный файл также кладем в папку hardware

3) Для микроконтроллеров
ATtiny84, ATtiny44, ATtiny24,
ATtiny85, ATtiny45, ATtiny25,
ATtiny2313, ATtiny4313

ссылка для скачивания -code.google.com/p/arduino-tiny/
После распаковки заходим в папку tiny и переименовываем файл C:Program FilesArduinohardwaretinyavrProspective Boards.txt в C:Program FilesArduinohardwaretinyavrBoards.txt

После всех скачиваний и распаковок получим папку hardware с таким содержимым

А запустив Arduino IDE увидим:

Подключение микроконтроллера
Прошить программы в МК можно 2 различными способами:
1) Классический вариант — прошивка при помощи программатора
Тут все просто: покупаем любой программатор из списка поддерживаемых

и вперед
Наиболее распространенным является USBasp, он производится активно китайцами, его несложно сделать и самому. В Украине могу порекомендовать производителя с таким наборчиком (увы, снят уже с производства, ребята делают только плату адаптора) — fix.org.ua/index.php/%D0%…%D1%80%D0%BE%D0%BC-detail

Прошивать им просто: проставил драйвера, вставил МК в нужный слот, выбрал программатор из списка (СОМ выбирать не нужно), указал микроконтроллер и его частоту и лей программу.
Вторым по популярности является USBtinyISP. В продаже я их не видел, а как его сделать самостоятельно подробно рассказано здесь — robocraft.ru/blog/2948.html
Профессиональные программаторы типа STK500 (Эх была у меня такая плата на предыдущей работе, классная вещь) явно не входят в рамки этой статьи. Поэтому идем дальше.

2) Прошивка при помощи заводской платы Arduino
Следует отметить, что далеко не все платы Arduino подходят для сего действия
Возьмите свою плату и проверьте перед тем как пытаться. Расположение выводов интерфейса SPI должно быть следующим:

Если совпадает, то все ок, если нет, то лучше найти другую плату
Итак, последовательность действий:
а) Готовим плату. Для этого подключаем плату Arduino к компу, выбираем пункт меню Файл->Образцы-> ArduinoISP

и “вгружаем” код на плату. Все мы превратили нашу плату в программатор.
б) Подключаем. Схема подключения простая: нужно подключить выводы интерфейса SPI платы к соответствующим им выводам интерфейса SPI микроконтроллера, а вывод Reset микроконтроллера к 10 пину платы (или 53 для плат на основе mega1280 и 2560). На схеме ниже пример подключения Attiny13 (Attiny85 и Attiny45 аналогично, остальные МК смотрим распиновку) к плате на основе микроконтроллера Atmega 168/328

У меня получилось как то так:

Заливаем загрузчик. А нужно ли?
Итак сначало определимся что такое загрузчик и зачем это нужно.
Установка загрузчика дает возможность напрямую, через последовательный порт прошивать микроконтроллер (только имеющие аппаратный последовательный порт).Например так прошиваются пустые ATMEGA328P, которые потом можно использовать вместо установленной штатно микросхемы на Arduino UNO и устанавливать далее на самодельные платы.
Т.е. на ту же Attiny13 заливать загрузчик просто не имеет смысла — у нее нет аппаратного порта (выводов Тх, Dx), хотя некоторые “умельцы”, пишущие обучающие статьи это делают (см UPD ниже). А вот для Atmega8 это можно сделать — она при этом потеряет 1кБайт из 8 своей памяти, но зато залить прошивку уже можно будет не через SPI, а подключив ее к адаптору СОМ порта (как это сделать рассказано здесь — www.drive2.ru/b/2642464/ на примере Arduino Pro Mini, смотрим раздел “Подключаемся”).

Читайте также:
Сушилка для рыбы своими руками

UPD. Добавка написаная много познее
С прошедшим временем понимаю, что на теме загрузчика стоит остановиться отдельно, заодно рассказать подробно, что такое фьюзы.
Но сейчас вкратце: В каждый микроконтроллер, помимо записи прошивки, необходимо записывать биты конфигурации — так называемые фьюзы и локбиты. С завода они идут записанные среднепотолочно и в реале скорее всего вам не подойдут — от этого и происходит неправильный расчет времени, например.
Но записью загрузчика можно обойти этот момент — как раз при записи загрузчика в микроконтроллере прописываются правильные фьюзы. Поэтому, даже если загрузчик не нужен, его можно прописать, чтобы прописались фьюзы, а потом при записи самой прошивки (“скетча”) поставить галочку, что он не нужен и его можно удалить.

Если считаете, что вам это нужно, то устанавливаем микроконтроллер в программатор (подключаем к плате-программатору) и нажимаем “Записать загрузчик”

Прошивка программ
а) Пишем программу. Тут все как обычно, нужно только учесть, что для Attiny поддерживаются не все возможности “языка Arduino”, а только
pinMode()
digitalWrite()
digitalRead()
analogRead()
analogReference(INTERNAL) / (EXTERNAL)
shiftOut()
pulseIn()
analogWrite()
millis()
micros()
delay()
delayMicroseconds()

б) Прошиваем.
Если мы используем плату Ардуино, то выбираем в качестве программатора “Arduino as ISP”, в разделе “платы” наш микроконтроллер и частоту на которой он будет в дальнейшем работать, в разделе “порт” виртуальный СОМ нашей платы-программатора и нажимаем “вгрузить”.
Вариант записи через программатор описан здесь — О бедном AtMega замолвите слово

в) проверяем работоспособность. Тут есть некоторые разногласия что делать с ногой RESET. Кто-то считает, что в процессе работы ее можно оставлять в воздухе, кто-то, что ее нужно подтянуть через резистор 10 кОм к питанию. Работает и так и так, тут больше вопрос религии :)

Виды и устройство микроконтроллеров AVR

AVR – это название популярного семейства микроконтроллеров, которое выпускает компания Atmel. Кроме АВР под этим брендом выпускаются микроконтроллеры и других архитектур, например, ARM и i8051.

Какими бывают AVR микроконтроллеры?

Микроконтроллеры AVR

Существует три вида микроконтроллеров:

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

Микроконтроллеры AVR 8-bit в свою очередь делятся на два популярных семейства:

Attiny – из названия видно, что младшее (tiny – юный, молодой, младший), в основном имеют от 8 пинов и более. Объём их памяти и функционал обычно скромнее, чем в следующем;

Atmega – более продвинутые микроконтроллеры, имеют большее количество памяти, выводов и различных функциональных узлов;

Микроконтроллеры Attiny

Самым мощным подсемейством микроконтроллеров является xMega – эти микроконтроллеры выпускаются в корпусах с огромным количеством пинов, от 44 до 100. Столько необходимо для проектов с большим количеством датчиков и исполнительных механизмов. Кроме того, увеличенный объем памяти и скорость работы позволяют получить высокое быстродействие.

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

Расшифровка: Пин (англ. pin – иголка, булавка) – это вывод микроконтроллера или как говорят в народе – ножка. Отсюда же слово «распиновка» – т.е. информация о назначении каждой из ножек.

Для чего нужны и на что способны микроконтроллеры?

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

Читайте также:
Снасть для ловли щуки своими руками: экономим деньги

Разработчик может использовать аналоговый сигнал подовая его на вход микроконтроллера и манипулировать с данными о его значении. Эту работу выполняет аналогово-цифровой преобразователь (АЦП). Данная функция позволяет общаться пользователю с микроконтроллером, а также воспринимать различные параметры окружающего мира с помощью датчиков.

Микроконтроллер AVR на макетной плате

В распространенных AVR-микроконтроллерах, например, Atmega328, который на 2017 году является сердцем многих плат Arduino, но о них позже. Используется 8 канальный АЦП, с разрядностью 10 бит. Это значит вы сможете считать значение с 8 аналоговых датчиков. А к цифровым выводам подключаются цифровые датчики, что может быть очевидным. Однако цифровой сигнал может являться только 1 (единицей) или 0 (нулем), в то время как аналоговый может принимать бесконечное множество значений.

Цифровой и аналоговый сигналы

Пояснение:

Разрядность – это величина, которая характеризует качество, точность и чувствительность аналогового входа. Звучит не совсем понятно. Немного практики: 10 битный АЦП, записать аналоговую информацию с порта в 10 битах памяти, иначе говоря плавно изменяющийся цифровой сигнал микроконтроллером распознается как числовое значение от 0 до 1024.

12 битный АЦП видит тот же сигнал, но с более высокой точностью – в виде от 0 до 4096, а это значит, что измеренные значения входного сигнала будут в 4 раза точнее. Чтобы понять откуда взялись 1024 и 4096, просто возведите 2 в степени равную разрядности АЦП (2 в степени 10, для 10 разрядного и т.д.)

Чтобы управлять мощностью нагрузки к вашему распоряжению есть ШИМ-каналы, их можно задействовать, например, для регулировки яркости, температуры, или оборотов двигателя. В том же 328 контроллере их 6.

В общем структура AVR микроконтроллера изображена на схеме:

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

АЛУ – арифметико-логическое устройство. Нужно для выполнения вычислении.

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

Прерывания – что-то вроде события которое возникает по внутренним или внешним воздействиям на микроконтроллер – переполнение таймера, внешнее прерывание с пина МК и т.д.

JTAG – интерфейс для внутрисхемного программирования без снятия микроконтроллера с платы.

Flash, ОЗУ, EEPROM – виды памяти – программ, временных рабочих данных, долгосрочного хранения независимая от подачи питания к микроконтроллеру соответственно порядку в названиях.

Таймеры и счетчики – важнейшие узлы в микроконтроллере, в некоторых моделях их количество может быть до десятка. Нужны для того, чтобы отчитывать количество тактов, соответственно временные отрезки, а счетчики увеличивают свое значение по какому-либо из событий. Их работа и её режим зависят от программы, однако выполняются эти действия аппаратно, т.е. параллельно основному тексту программы, могут вызвать прерывание (по переполнению таймера, как вариант) на любом этапе выполнения кода, на любой его строке.

A/D (Analog/Digital) – АЦП, его назначение мы уже описали ранее.

WatchDogTime (Сторожевой таймер) – независимый от микроконтроллера и даже его тактового генератора RC-генератор, который отсчитывает определенный промежуток времени и формирует сигнал сброса МК, если тот работал, и пробуждения – если тот был в режиме сна (энергосбережния). Его работу можно запретить, установив бит WDTE в 0.

Выходы микроконтроллера довольно слабые, имеется в виду то, что ток через них обычно до 20-40 миллиампер, чего хватит для розжига светодиода и LED-индикаторов. Для более мощной нагрузки – необходимы усилители тока или напряжения, например, те же транзисторы.

Научитесь разрабатывать устройства на базе микроконтроллеров и станьте инженером умных устройств с нуля: Инженер умных устройств

Что нужно чтобы начать изучение микроконтроллеров?

Для начала нужно приобрести сам микроконтроллер. В роли первого микроконтроллера может быть любой Attiny2313, Attiny85, Atmega328 и другие. Лучше выбирать ту модель, которая описана в уроках, по которым вы будете заниматься.

Читайте также:
Плот своими руками: интересное занятие для компании друзей

Attiny2313

Следующее что Вам нужно – программатор. Он нужен для загрузки прошивки в память МК, самым дешевым и популярным считается USBASP.

Программатор

Немногим дороже, но не менее распространенный программатор AVRISP MKII, который можно сделать своими руками – из обычной платы Arduino

Программатор AVRISP MKII

Другой вариант – прошивать их через USB-UART переходник, который обычно делается на одном из преобразователей: FT232RL, CH340, PL2303 и CP2102.

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

Микроконтроллер AVR с аппаратной поддержкой USB

Одно лишь «но» – в память микроконтроллера предварительно нужно загрузить UART бутлоадер. Разумеется, для этого все равно нужен программатор для AVR-микроконтроллеров.

Интересно: Bootloader – это обычная программа для микроконтроллера, только с необычной задачей – после его запуска (подключения к питания) он ожидает какое-то время, что в него могут загрузить прошивку. Преимуществом такого метода – можно прошить любым USB-UART переходником, а они очень дешевы. Недостаток – долго загружается прошивка.

Для работы UART (RS-232) интерфейса в микроконтроллерах AVR выделен целый регистр UDR (UART data register). UCSRA (настройки битов приемопередатчика RX, TX), UCSRB и UCSRС – набор регистров отвечающие за настройки интерфейса в целом.

В чем можно писать программы?

Кроме программатора для написания и загрузки программы нужно IDE – среда для разработки. Можно конечно же писать код в блокноте, пропускать через компиляторы и т.д. Зачем это нужно, когда есть отличные готовые варианты. Пожалуй, один из наиболее сильных – это IAR, однако он платный.

Официальным IDE от Atmel является AVR Studio, которая на 6 версии была переименована в Atmel studio. Она поддерживает все микроконтроллеры AVR (8, 32, xMega), автоматически определяет команды и помогает ввести, подсвечивает правильный синтаксис и многое другое. С её же помощью можно прошивать МК.

Наиболее распространённым является – C AVR, поэтому найдите самоучитель по нему, есть масса русскоязычных вариантов, а один из них – Хартов В.Я. «Микроконтроллеры AVR. Практикум для начинающих».

Смотрите также подробные обучающие видеокурсы по программированию микроконтроллеров для начинающих Максима Селиванова: Программирование и создание устройств на микроконтроллерах AVR.

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

Самый простой способ изучить AVR

Купите или сделайте своими руками плату Arduino. Проект ардуино разработан специально для учебных целей. Он насчитывает десятки плат различных формами и количеством контактов. Самое главное в ардуино – это то что вы покупаете не просто микроконтроллера, а полноценную отладочную плату, распаянную на качественной текстолитовой печатной плате, покрытой маской и смонтированными SMD компонентами.

Самые распространенные – это Arduino Nano и Arduino UNO, они по сути своей идентичны, разве что «Нано» меньше примерно в 3 раза чем «Уно».

Arduino UNO

Несколько фактов:

Ардуино может программироваться стандартным языком – «C AVR»;

своим собственным – wiring;

стандартная среда для разработки – Arduino IDE;

для соединения с компьютером достаточно лишь подключить USB шнур к гнезду micro-USB на плате ардуино нано, установить драйвера (скорее всего это произойдет автоматически, кроме случаев, когда преобразователь на CH340, у меня на Win 8.1 драйвера не стали, пришлось скачивать, но это не заняло много времени.) после чего можно заливать ваши «скетчи»;

«Скетчи» – это название программ для ардуино.

Эксперименты с Arduino UNO

Выводы

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

Рейтинг
( Пока оценок нет )
Понравилась статья? Поделиться с друзьями:
Добавить комментарий

;-) :| :x :twisted: :smile: :shock: :sad: :roll: :razz: :oops: :o :mrgreen: :lol: :idea: :grin: :evil: :cry: :cool: :arrow: :???: :?: :!: