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

Рейтинг пользователей: / 22
ХудшийЛучший 
Проекты - Электроника

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

Итак, начну с того, что 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 секунд. Язык программирования доступен даже начинающему любителю контроллеров, главное чтобы было понятие о построении алгоритмов.

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

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

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

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

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

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

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

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

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

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

pl-2303-plata

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

bm8051

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

buratino2

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

buratino3

#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); // Светодиод гасим
      }
}

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

Файлы для загрузки:
ФайлОписаниеРазмер файла
Скачать файл (BURATINO_MEGA8.rar)BURATINO_MEGA8.rarПечатная плата в формате Sprint Layout182 Kb
 Обсудить на форуме (0 комментариев).

Комментарии  

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

Это из-за односторонней разводки?
Цитировать
 
 
+1 #9 potashov 21.04.2011 11:36
Цитирую rogataya88:
Господа! Печатка неправильная! Светодиоды на прием-передачу управляются минусом!!! Так что переправляйте. В общем анод общаковский :P . Автор конечно молодец, но вот можно было бы предупредить


Сорри! Есть такая фигня. Совсем забыл исправить. Смотрите на фото собраной платы. :-)
Цитировать
 

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

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

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


Защитный код
Обновить



Темы форума
Комментарии
Статистика
Просмотров:
mod_vvisit_counterСегодня8326
mod_vvisit_counterВчера3318
mod_vvisit_counterНа этой неделе46500
mod_vvisit_counterНа прошлой неделе40507
mod_vvisit_counterВ этом месяце175311
mod_vvisit_counterЗа все время11537532

Ваш IP: 54.224.4.231
 , 
27 Май. 2017