Наша версия знаменитого ARDUINO

БуратиноЛистая страницы заграничных сайтов, постоянно обращаешь внимание на статьи о чудо-модулях c оригинальным названием ARDUINО. В следствии природного неравнодушия к микроконтроллерной технике, я все-таки решил изучить, что же это за зверь такой - ARDUINO? {nomultithumb}

Итак, начну с того, что ARDUINO  - это аппаратная вычислительная платформа (открытый проект), основными компонентами которой являются простая плата ввода/вывода и среда разработки на языке Processing/Wiring. В микроконтроллере имеется часть памяти, занятая программой-загрузчиком, которая размещается в памяти единожды и позволяет вносить в пользовательскую память контроллера программы посредствам UART интерфейса, имеющего всего 2 линии приема/передачи информации (RXD – TXD). Прошить контроллер ARDUINO можно и без специализированного программатора, так называемым Arduino Bit-Bang способом, о котором написано в http://www.freeduino.ru/arduino/isp.html .

В качестве аппаратной части используются микроконтроллеры серии ATmega, производства компании ATMEL. Самым простым в серии ардуино является модуль на микроконтроллере ATmega8.

arduino-to-atmega8-pins

Как видно на картинке ARDUINO объявила контроллеру свои значения ввода/вывода, а именно:

  • 14 цифровых входа/выхода ( из них 3 можно конфигурировать как выходы ШИМ)
  • 6 аналоговых входа

Главной отличительной особенностью модулей ARDUINO является то, что для программирования контроллера не нужно дополнительного компилятора, заливка ПО в память контроллера производится по средствам USB – UART контроллера, одним нажатием клавиши и практически онлайн. Среднее время прошивки контроллера на примере MEGA8 составляет примерно 3 – 5 секунд. Язык программирования доступен даже начинающему любителю контроллеров, главное чтобы было понятие о построении алгоритмов.

{ads1}

Например, мигание светодиодом подключенному к ARDUINO выглядит так.

{codecitation}Int LED = 13 // Назначаем переменную и присваиваем ей значение 13
void setup() {
   // Укажем, что данная ножка будет использоваться для вывода
   pinMode(LED, OUTPUT);
}

void loop() {
   // Зажжем светодиод, подав напряжение на ножку
    digitalWrite(LED, HIGH);
   // Подождем секунду
    delay(1000);
    // Погасим светодиод, убрав напряжение с ножки
    digitalWrite(LED, LOW);
    // Подождем секунду
    delay(1000);
}{/codecitation}

Все элементарно просто.

В интернете существуем множество сайтов любителей ARDUINO, где представлено море примеров устройств изготовленных на данной платформе.

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

Покопавшись в своих запасах, обнаружил только ATMEGу 8 в планарном исполнении.

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

pcb
В качестве устройства сопряжения с USB портом решил применить надежный, проверенный временем контроллер FT232RL, который не требует использования внешнего кварца на 12МГц. Единственным недостатком применения данного контроллера является трудность монтажа на печатную плату, так как выводы корпуса данной микросхемы имеют высокую плотность расположения. Данную прблему я решаю применением монтажной оплетки. После точного позиционирования микросхемы на плату, я пропаиваю все ее выводы не боясь при этом допустить заливки припоя между выводами микросхемы. После чего излишки припоя я убираю с помощью монтажной оплетки, получается чисто и аккуратно. Но есть и альтернативный способ, например применить готовый интерфейсный контроллер или так называемый телефонный DATA кабель. Стоимость таких кабелей примерно от 300 рублей.

Вот как они выглядят без корпуса:

pl-2303-plata

Можно приобрести например из наборов МАСТЕР КИТа, стоимость такого модуля 360 рублей:

bm8051

Вот что получилось в итоге:

buratino2

А вот пример реализации АМПЕР-ВОЛЬТ-ВАТТ метра с выводом информации на двухстрочный дисплей. И, соответственно пример реализации в программном коде.

buratino3
{codecitation}#include <LiquidCrystal.h> //Указываем библиотеку для LCD

LiquidCrystal lcd(12, 11, 10, 5, 4, 3, 2);// Указываем номера выводов ДУИНО для подключения LCD

int voltage = 0; // Переменная для хранения данных считаных с АЦП вывода (НАПРЯЖЕНИЕ)

int current = 0; // Переменная для хранения данных считаных с АЦП вывода (ТОК)

float u = 0; // Переменная для вычислений (НАПРЯЖЕНИЕ)

float i = 0; // Переменная для вычислений (ТОК)

float p = 0; // Переменная для вычислений (МОЩНОСТЬ)

int del = 30; // Переменная для паузы

int ledPin = 13; // Переменная номера вывода подключения светодиода.

void setup() // Стартуем с настройками

{

   lcd.begin(16, 2); // Указываем что LCD будет 16 столбов по 2 строки

   pinMode(ledPin, OUTPUT); // Указываем что 13 вывод это ВЫХОД. (светодиод)

}

void loop() // Стартуем

{

   {

      voltage = analogRead(5); // Указываем что данные считаные с аналогово вывода 5 заносим в переменную.

      u = voltage/40.92; // Математика однако, с занесением данных в переменную "u"

      lcd.setCursor(0, 0); // Указываем координаты/ первый 0 столбец, второй строка.

      lcd.print("U="); // Рисуем

      lcd.setCursor(2, 0); // Указываем координаты

      lcd.print(u); // Берем данные из переменной и рисуем их на LCD

      lcd.setCursor(6, 0); // Указываем координаты

      lcd.print("V"); // Рисуем

      delay(del); // Ждем 30 миллисекунд

   }

   {

      current = analogRead(4); // Указываем что данные считаные с аналогово вывода 4 заносим в переменную.

      i = current/40.92; // Математика однако, с занесением данных в переменную "i"

      lcd.setCursor(0, 1); // Указываем координаты/ первый 0 - столбец, второй строка.

      lcd.print("I="); // Рисуем

      lcd.setCursor(2, 1); // Указываем координаты

      lcd.print(i); // Берем данные из переменной и рисуем их на LCD

      lcd.setCursor(6, 1); // Указываем координаты

      lcd.print("A"); // Рисуем

      delay(del); // Ждем 30 миллисекунд

   }

   {

      p = u * i; // Математика из школьного курса физики

      lcd.setCursor(8, 1); // Указываем координаты

      lcd.print("P="); // Рисуем

      lcd.setCursor(10, 1); // Указываем координаты

      lcd.print(p); // Берем данные из переменной и рисуем их на LCD

      lcd.setCursor(13, 1); // Указываем координаты

      lcd.print("W "); // Рисуем

      delay(del); // Ждем 30 миллисекунд

   }

   {

      digitalWrite(ledPin,HIGH); // Включаем светодиод

   }

   if (u <= 12) // Если напряжение на входе меньше 12 Вольт

      {

         digitalWrite(ledPin,LOW); // Светодиод гасим

      }

}

{/codecitation}

Ссылки на дополнительные материалы:

{ads1}

Вложения:
ФайлОписаниеРазмер файла:
Скачать этот файл (BURATINO_MEGA8.rar)BURATINO_MEGA8.rarПечатная плата в формате Sprint Layout182 Кб

Комментарии   

+2 #1 astromir 21.03.2011 21:24
А можно взглянуть на схему?
Хочу повторить, но не знаю номиналы резисторов, конденсаторов.. .
В спринт лайоут маркировки нету.
+1 #2 potashov 07.04.2011 15:20
Цитирую astromir:
А можно взглянуть на схему?
Хочу повторить, но не знаю номиналы резисторов, конденсаторов...
В спринт лайоут маркировки нету.


Напиши на мыло, скину номиналы.

potashov@yandex.ru
#3 rogataya88 09.04.2011 23:22
Помогите пожалуйста!
Те кто смог завладеть схемой и номиналы деталей, не проходите мимо товарищи! Поделитесь инфой.
А то я написал автору, но ответа так и не дождался...
Заранее спасибо
+1 #4 astromir 10.04.2011 12:25
Цитирую rogataya88:
Помогите пожалуйста!
Те кто смог завладеть схемой и номиналы деталей, не проходите мимо товарищи! Поделитесь инфой.
А то я написал автору, но ответа так и не дождался...
Заранее спасибо

Писал автору, о обещал поднять материал и скинуть. А тем временем после переписки с freeduino.ru там появились в продаже отдельно платы. Тож хороший вариант.
#5 rogataya88 10.04.2011 12:30
Весь перец в том, что я хочу сам собрать данный субъект. Так как имею в наличии атмегу и фтшку в смд корпусе. В тех краях где я нахожусь проблематично купить готовую плату, а если и найти, то суммы будут астрономические!
Я собрал уже ардуину, но только на СОМ-порте, но хочу подружить ее с USB
+1 #6 potashov 10.04.2011 15:40
Всем привет добавил в печатку номиналы. Вот файл http://narod.ru/disk/9755022001/BURATINO_MEGA8_NOM.lay.html . Дополнительную информацию по схемам различных версий можно посмотреть на этой страничке http://arduino.cc/en/Main/Hardware. Да и еще, мне приходят письма с вопросами как я прошивал первоначальный загрузчик в MEGу. Я использовал готовый заводской программатор. Если программатора нет не беда БУРАТИно на FT232RL умеет прошивать себя сама. Как это сделать читаем тут http://www.freeduino.ru/arduino/isp.html .
#7 rogataya88 10.04.2011 15:46
Ура! Спасибо огромное автору за схему! Буду собирать))
Первый Blink в Вашу честь :D
#8 rogataya88 21.04.2011 00:41
Господа! Печатка неправильная! Светодиоды на прием-передачу управляются минусом!!! Так что переправляйте. В общем анод общаковский :P . Автор конечно молодец, но вот можно было бы предупредить
+1 #9 potashov 21.04.2011 16:36
Цитирую rogataya88:
Господа! Печатка неправильная! Светодиоды на прием-передачу управляются минусом!!! Так что переправляйте. В общем анод общаковский :P . Автор конечно молодец, но вот можно было бы предупредить


Сорри! Есть такая фигня. Совсем забыл исправить. Смотрите на фото собраной платы. :-)
#10 id 28.04.2011 20:46
Жаль, что оно несовместимо с шилд-платами Arduino.

Это из-за односторонней разводки?
+1 #11 Vanjook 10.11.2011 11:06
Ув. potashov, дайте пожалуста вашу печатку в *.lay формате. Хочу кое-что переправить, а именно восстановить совместимость с оригинальными щилдами, и применить другую микросхему для usb-com преобразователя . Заранее благодарен.
#12 pavlenko_v 14.12.2011 20:03
Подскажите, где взять прошивку загрузчика для вашей платы "Буратино"? Хочу залить фирменным программатором. Если у вас есть возможность, сбросьте мне на эл.почту.
Спасибо.
#13 strannic 06.02.2013 18:40
парни помогите кто собрал данную ардуину - интересует номиналы и расположеие деталей- и может быть есть улучшенная версия печатки? заранее спасибо!
#14 серегй 22.07.2013 21:16
отзовитесь пожалуйста кто собрал данную плату - интерсует прошивка,и фьюзы как правильно поставить заранее спасибо!
+1 #15 kae73 19.12.2013 10:51
здравствуйте, potashov!
Очень хочу заказать Вам изделие . Прошу ответить на mr.kae73@mail.ru
#16 Илья2903 27.04.2014 10:27
Здравствуйте. Меня заинтересовал Ваш пример АМПЕР-ВОЛЬТ-ВАТ Т метр, могли бы Вы написать отдельную статью про него, с принципиальной схемой, пояснениями и т.д. В частности интересует измерение силы тока. Собираюсь изготовить лаб. БП.
#17 Роман Б. 09.01.2015 19:40
Хм... Математика однако... P = U * I; U = 2.13V; I = 2.13A; P = 2.13*2.13 = 4.54W (по моим рассчётам), а на дисплее P = 5.7W. Как так?
#18 George2222 23.12.2015 15:39
Если кто не в курсе: CodeVisionAvr 3.12 хорошо прошивает платы Arduino!
Язык Си cтандартный - не надо Arduino
изучать

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

Обсудить на форуме (0 комментариев).

Copyright 2011 © simple-defices.ru.
При использовании материалов ссылка на www.simple-devices.ru обязательна.