Краткие новости


Главная
Приобщился к высокому :-) (ARDUINO) Печать E-mail
Автор Administrator   
02.02.2010 г.
А именно к микроконтроллерам в лице Arduino

Arduino состоит из микроконтроллера (ATMEGA) с обвязкой, моста USB-COM и светодиода "L". Микроконтроллер сам по себе содержит в себе много интересного, по умолчанию доступно:

* универсальные цифровые пины ввода/вывода - 14 штук ( 0 - 13 )
* аналоговые пины для чтения через АЦП - 6 штук ( 0 - 5 )
* два пина, которые могут быть источником прерываний ( 2 и 3 )
* таймер, который отсчитывает число миллисекунд, прошедших с момента старта.


Если подключить некоторое количество библиотек, можно также получить доступ к таким ресурсам:

* энергонезависимая память (EEPROM) и память программ (FLASH);
* таймеры;
* последовательный порт (UART);
* двупроводная шина, совместимая с I2C.


Программа пишется из собственной среды Arduino на языке высокого уровня (СИ) и программируется одной кнопкой UPLOAD по USB кабелю. ВСЁ!!! Никаких Вам программаторов и прочей непонятной и дорогостоящей хрени. Все просто как дважды два :-)



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



#include <LiquidCrystal.h>

// LiquidCrystal display with:
// rs on pin 12
// rw on pin 11
// enable on pin 10
// d4, d5, d6, d7 on pins 5, 4, 3, 2
LiquidCrystal g_lcd(12, 11, 10, 5, 4, 3, 2);

 const int numRows = 2;
 const int numCols = 16;

void setup() //сетап - запускается один раз, после включения или после ресета
{
   g_lcd.begin(numRows, numCols);// 

    g_lcd.clear();                  	// Start with a blank screen
    g_lcd.setCursor(0, 0);          	// Курсор в начало первой строки
    g_lcd.print("Ozernoy P.I. 2010");   // Выводим текст
    g_lcd.setCursor(0, 1);          	// Курсор в начало второй строки
    g_lcd.print("Hello word!");        // Выводим текст

}

void loop()
{
// тут пусто

}


ps: ОБЯЗАТЕЛЬНО ПОДАТЬ НАПРЯЖЕНИЕ на VO (питание сегментов, пин 3 дисплея). Я взял потенциометр 20К, включил его между GND и 5V, а среднюю точку подключил к VO. Далее вращая в разные стороны отверткой ползунок, находим положение при котором дисплей показвыает символы.

Часть-2

Данное замечательное устройство имеет 6 АЦП. Благодаря наличию АЦП можно сделать, например цифровой вольтметр.



#include  <LiquidCrystal.h>

// LiquidCrystal display with:
// rs on pin 12
// rw on pin 11
// enable on pin 10
// d4, d5, d6, d7 on pins 5, 4, 3, 2
LiquidCrystal g_lcd(12, 11, 10, 5, 4, 3, 2);

 const int numRows = 2;
 const int numCols = 16;

void setup()//Сетап выполняется один раз после включения/ресета
{
   g_lcd.begin(numRows, numCols);// Инициализация дисплея
    g_lcd.clear();                  	// Start with a blank screen
    g_lcd.setCursor(0, 0);          	// курсор на первую строку (верхнюю) и на начало строки
    g_lcd.print("Digital volmeter"); // Пишем в первую строчку надпись "Digital volmeter"

}

void loop()
{

    g_lcd.setCursor(0, 1);          	// Курсор 
    float voltage = 5000.0 / 1024.0 * analogRead(0);//Читаем с АЦП № 0 и пересчитываем в мВ
    g_lcd.print(voltage); // выводим на экран значение мВ
    g_lcd.setCursor(6, 1);      g_lcd.print("mV"); //добавляем надпись "mV"
    delay(100); //делаем задержку 100 mS что бы цифры не скакали как угорелые :)))


}


Данный вольтметр измеряет напряжение от 0 до 5 Вольт.

Практическое применение - поскольку у нас в распоряжение аж 6 АЦП, то мы можем измерять независимо напряжение например на двух входах, и применить данную возможность для создания цифрового измерителя КСВ.
Простейший цифровой измеритель КСВ:

Собираем простой мостовой КСВ метр



КСВ вычисляется по общеизвестной формуле


Изменяем Нашу программу вольтметра на программу вычисления КСВ:

void loop()
{
float voltage1=5000.0 / 1024.0 * analogRead(0);//Измеряем U1 - падающая волна
float voltage2=5000.0 / 1024.0 * analogRead(1);//Измеряем U2 - отраженная волна
float SWR=(1+voltage2/voltage1)/(1-voltage2/voltage1); //Вычисляем КСВ
g_lcd.setCursor(0, 1);          	// Курсор 
g_lcd.print(SWR); // выводим на экран значение КСВ
g_lcd.setCursor(6, 1);      g_lcd.print("SWR"); //добавляем надпись "SWR"
delay(100); //делаем задержку 100 mS что бы цифры не скакали как угорелые :)))
}

Последнее обновление ( 10.02.2010 г. )
 

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

:D:lol::-);-)8):-|:-*:oops::sad::cry::o:-?:-x:eek::zzz:P:roll::sigh:
Жирный Изображение Цитата

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

« Пред.   След. »

Опросы

Ведете ли вы аппаратный журнал, работая /M (из авто)

Кто на сайте?

Сейчас на сайте находятся:
17 гостей

Счетчики и баннеры

Сервер радиолюбителей России - схемы, документация,
 соревнования, дипломы, программы, форумы и многое другое!
Рейтинг@Mail.ru
Rambler's Top100
© 2010 КВ и УКВ антенны, схемы усилителей мощности и трансиверов (UA1CBM - home page)
Joomla! - свободное программное обеспечение, распространяемое по лицензии GNU/GPL.
Русская локализация © 2006 Joom.Ru - Русский дом Joomla CMS
Страница сгенерирована за 0.051077 секунд