Проект Arduino (Freeduino)
- Автор
- Сообщение
-
Не в сети
- Site Admin
- Сообщения: 2556
- Зарегистрирован: 26 май 2009 04:38
- Откуда: РБ
Проект Arduino (Freeduino)
Arduino — это электронный конструктор и удобная платформа быстрой разработки электронных устройств для новичков и профессионалов. Платформа пользуется огромной популярностью во всем мире благодаря удобству и простоте языка программирования, а также открытой архитектуре и программному коду. Устройство программируется через USB без использования программаторов.
Arduino позволяет компьютеру выйти за рамки виртуального мира в физический и взаимодействовать с ним. Устройства на базе Arduino могут получать информацию об окружающей среде посредством различных датчиков, а также могут управлять различными исполнительными устройствами.
Микроконтроллер на плате программируется при помощи языка Arduino (основан на языке Wiring) и среды разработки Arduino (основана на среде Processing). Проекты устройств, основанные на Arduino, могут работать самостоятельно, либо же взаимодействовать с программным обеспечением на компьютере (напр.: Flash, Processing, MaxMSP). Платы могут быть собраны пользователем самостоятельно или куплены в сборе. Программное обеспечение доступно для бесплатного скачивания. Исходные чертежи схем (файлы CAD) являются общедоступными, пользователи могут применять их по своему усмотрению.
Плата Arduino состоит из микроконтроллера Atmel AVR (ATmega328 и ATmega168 в новых версиях и ATmega8 в старых) и элементной обвязки для программирования и интеграции с другими схемами. На каждой плате обязательно присутствуют линейный стабилизатор напряжения 5 В и 16 МГц кварцевый генератор (в некоторых версиях керамический резонатор). В микроконтроллер предварительно прошит загрузчик, поэтому внешний программатор не нужен.
Простой пример изготовления в домашних условиях http://robocraft.ru/blog/arduino/19.html
Arduino позволяет компьютеру выйти за рамки виртуального мира в физический и взаимодействовать с ним. Устройства на базе Arduino могут получать информацию об окружающей среде посредством различных датчиков, а также могут управлять различными исполнительными устройствами.
Микроконтроллер на плате программируется при помощи языка Arduino (основан на языке Wiring) и среды разработки Arduino (основана на среде Processing). Проекты устройств, основанные на Arduino, могут работать самостоятельно, либо же взаимодействовать с программным обеспечением на компьютере (напр.: Flash, Processing, MaxMSP). Платы могут быть собраны пользователем самостоятельно или куплены в сборе. Программное обеспечение доступно для бесплатного скачивания. Исходные чертежи схем (файлы CAD) являются общедоступными, пользователи могут применять их по своему усмотрению.
Плата Arduino состоит из микроконтроллера Atmel AVR (ATmega328 и ATmega168 в новых версиях и ATmega8 в старых) и элементной обвязки для программирования и интеграции с другими схемами. На каждой плате обязательно присутствуют линейный стабилизатор напряжения 5 В и 16 МГц кварцевый генератор (в некоторых версиях керамический резонатор). В микроконтроллер предварительно прошит загрузчик, поэтому внешний программатор не нужен.
Простой пример изготовления в домашних условиях http://robocraft.ru/blog/arduino/19.html
- Вложения
-
arduino-duemilanove-schematic.pdf
- (47.36 КБ) 1548 скачиваний
Последний раз редактировалось EW2CC 11 окт 2012 15:04, всего редактировалось 2 раза.
_________________
73! Сергей ex.EU2A, UC2CBT, UC2-009-602, Citizen Band - Лайнер, 251. On the air since 1980
Site Admin QRZ.BY
73! Сергей ex.EU2A, UC2CBT, UC2-009-602, Citizen Band - Лайнер, 251. On the air since 1980
Site Admin QRZ.BY
-
Не в сети
- Site Admin
- Сообщения: 2556
- Зарегистрирован: 26 май 2009 04:38
- Откуда: РБ
Re: Проект Arduini (Freeduino)
При изготовлении блока питания для УМ я столкнулся с проблемой правильного включения и выключения
напряжений питания лампы ГУ-43Б. Реализовывать всё это хозяйство на множественных реле времени у меня не было желания. Решил прокансультироватся у Володи EW1ABZ, как лучше всё это реализовать на МК. Вот он и подтолкнул меня
к этой интересной теме.
Вот моя не большая программа реализованная на этом проекте (просьба не пинать, это первая моя программа на Atmega8)
В настоящий момент это уже реализовано в железе и работает !
#include <Bounce.h>
Bounce ON = Bounce(2, 50); //создаем экземпляр класса Bounce для 2 вывода антидребезг
Bounce OFF = Bounce(3, 100); //создаем экземпляр класса Bounce для 3 вывода антидребезг
/*
Включение питающих напряжений ГУ-43Б производится в следующей последовательности:
1 Включить вентилятор
2 подать напряжение накала
3 подать отрицательное напряжение на первую сетку;
4 подать напряжение на анод;
5 подать напряжение на экранную сетку.
При выключении питающих напряжений в первую очередь выключить напряжение второй сетки,
затем напряжение на аноде, затем в любой последовательности напряжение на первой сетке и напряжение накала.
*/
// set pin numbers:
const int pinPowOn = 2; // включение кнопка на pin 2
const int pinPowOff = 3; // выключение pin 3
const int pinNakal1 = 5; //накал предварительный
const int pinNakal2 = 6; //накал полный
const int pinVent = 4; //вентилятор
//const int pinSme = 7; //смещение ????
const int pinEkran = 8; //экранная сетка
const int pinAnod1 = 10; //анод предварительный
const int pinAnod2 = 12; //анод полный
const int pinPTT_OK = 9; // Разрешение на PTT
const int pin13 = 13; // ******** временно для отладки
boolean StatusPowOn = LOW;
boolean StatusPowOff = LOW;
boolean StatusPTT_OK = LOW;
boolean StatusNakal = LOW;
boolean StatusVent = LOW;
byte st = 0;
long previousMillis = 0;
long interval = 240000; //4 min
long lastMillis = 0;
void setup()
{
pinMode(pinPowOn, INPUT_PULLUP); //с подтягивающими резисторами
pinMode(pinPowOff, INPUT_PULLUP); // - "" -
pinMode(pinNakal1, OUTPUT);
pinMode(pinNakal2, OUTPUT);
pinMode(pinVent, OUTPUT);
pinMode(pinEkran, OUTPUT);
pinMode(pinAnod1, OUTPUT);
pinMode(pinAnod2, OUTPUT);
pinMode(pinPTT_OK, OUTPUT);
pinMode(pin13, OUTPUT); ////********
}
void loop()
{
unsigned long currentMillis = millis();
if (OFF.update()) {st = st + 1;} // считаем нажатия
if (ON.update() && StatusPTT_OK == LOW && StatusNakal == LOW) //START 1
{
digitalWrite(pinVent, HIGH); // включение вентилятора
digitalWrite(pinNakal1, HIGH); // включение пред.накала
delay(1000); //задержка прогрева накала 1 - 1,5 сек.
digitalWrite(pinNakal1, LOW); // выключение пред. накала
digitalWrite(pinNakal2, HIGH); //включение полного накала
delay(100);
StatusNakal = HIGH;
StatusPTT_OK = HIGH;
StatusVent = HIGH;
previousMillis = currentMillis;
st = 0;
if (previousMillis - lastMillis < interval / 2) {previousMillis = previousMillis * 2;} // если время выключения менее 1/2 то уменьшаем время прогрева накала
}
if(currentMillis - previousMillis > interval && StatusNakal == HIGH) // START 2 с задержкой в переменной interval
{
digitalWrite(pinAnod1, HIGH); //включение планое анода
delay(500);
digitalWrite(pinAnod1, LOW);
digitalWrite(pinAnod2, HIGH); //
delay(100);
digitalWrite(pinEkran, HIGH); //включение экранного напряжения
digitalWrite(pinPTT_OK, HIGH); //разрешение на PTT
StatusPTT_OK = HIGH;
StatusNakal = LOW;
}
if (st == 1) //STOP 1
{
digitalWrite(pinPTT_OK, LOW);
digitalWrite(pinEkran, LOW);
delay(100);
digitalWrite(pinAnod2, LOW);
}
if (st == 3) //STOP 2
{
st = 0;
digitalWrite(pinNakal2, LOW);
StatusVent = LOW;
StatusPTT_OK = LOW;
StatusNakal = LOW;
previousMillis = currentMillis;
lastMillis = previousMillis;
}
if(currentMillis - previousMillis > interval && StatusVent == LOW && StatusPTT_OK ==LOW ) // STOP вентилятор с задержкой в переменной interval
{
digitalWrite(pinVent, LOW);
StatusVent = HIGH;
StatusPTT_OK = LOW;
StatusNakal = LOW;
}
}// end
напряжений питания лампы ГУ-43Б. Реализовывать всё это хозяйство на множественных реле времени у меня не было желания. Решил прокансультироватся у Володи EW1ABZ, как лучше всё это реализовать на МК. Вот он и подтолкнул меня
к этой интересной теме.
Вот моя не большая программа реализованная на этом проекте (просьба не пинать, это первая моя программа на Atmega8)
В настоящий момент это уже реализовано в железе и работает !
#include <Bounce.h>
Bounce ON = Bounce(2, 50); //создаем экземпляр класса Bounce для 2 вывода антидребезг
Bounce OFF = Bounce(3, 100); //создаем экземпляр класса Bounce для 3 вывода антидребезг
/*
Включение питающих напряжений ГУ-43Б производится в следующей последовательности:
1 Включить вентилятор
2 подать напряжение накала
3 подать отрицательное напряжение на первую сетку;
4 подать напряжение на анод;
5 подать напряжение на экранную сетку.
При выключении питающих напряжений в первую очередь выключить напряжение второй сетки,
затем напряжение на аноде, затем в любой последовательности напряжение на первой сетке и напряжение накала.
*/
// set pin numbers:
const int pinPowOn = 2; // включение кнопка на pin 2
const int pinPowOff = 3; // выключение pin 3
const int pinNakal1 = 5; //накал предварительный
const int pinNakal2 = 6; //накал полный
const int pinVent = 4; //вентилятор
//const int pinSme = 7; //смещение ????
const int pinEkran = 8; //экранная сетка
const int pinAnod1 = 10; //анод предварительный
const int pinAnod2 = 12; //анод полный
const int pinPTT_OK = 9; // Разрешение на PTT
const int pin13 = 13; // ******** временно для отладки
boolean StatusPowOn = LOW;
boolean StatusPowOff = LOW;
boolean StatusPTT_OK = LOW;
boolean StatusNakal = LOW;
boolean StatusVent = LOW;
byte st = 0;
long previousMillis = 0;
long interval = 240000; //4 min
long lastMillis = 0;
void setup()
{
pinMode(pinPowOn, INPUT_PULLUP); //с подтягивающими резисторами
pinMode(pinPowOff, INPUT_PULLUP); // - "" -
pinMode(pinNakal1, OUTPUT);
pinMode(pinNakal2, OUTPUT);
pinMode(pinVent, OUTPUT);
pinMode(pinEkran, OUTPUT);
pinMode(pinAnod1, OUTPUT);
pinMode(pinAnod2, OUTPUT);
pinMode(pinPTT_OK, OUTPUT);
pinMode(pin13, OUTPUT); ////********
}
void loop()
{
unsigned long currentMillis = millis();
if (OFF.update()) {st = st + 1;} // считаем нажатия
if (ON.update() && StatusPTT_OK == LOW && StatusNakal == LOW) //START 1
{
digitalWrite(pinVent, HIGH); // включение вентилятора
digitalWrite(pinNakal1, HIGH); // включение пред.накала
delay(1000); //задержка прогрева накала 1 - 1,5 сек.
digitalWrite(pinNakal1, LOW); // выключение пред. накала
digitalWrite(pinNakal2, HIGH); //включение полного накала
delay(100);
StatusNakal = HIGH;
StatusPTT_OK = HIGH;
StatusVent = HIGH;
previousMillis = currentMillis;
st = 0;
if (previousMillis - lastMillis < interval / 2) {previousMillis = previousMillis * 2;} // если время выключения менее 1/2 то уменьшаем время прогрева накала
}
if(currentMillis - previousMillis > interval && StatusNakal == HIGH) // START 2 с задержкой в переменной interval
{
digitalWrite(pinAnod1, HIGH); //включение планое анода
delay(500);
digitalWrite(pinAnod1, LOW);
digitalWrite(pinAnod2, HIGH); //
delay(100);
digitalWrite(pinEkran, HIGH); //включение экранного напряжения
digitalWrite(pinPTT_OK, HIGH); //разрешение на PTT
StatusPTT_OK = HIGH;
StatusNakal = LOW;
}
if (st == 1) //STOP 1
{
digitalWrite(pinPTT_OK, LOW);
digitalWrite(pinEkran, LOW);
delay(100);
digitalWrite(pinAnod2, LOW);
}
if (st == 3) //STOP 2
{
st = 0;
digitalWrite(pinNakal2, LOW);
StatusVent = LOW;
StatusPTT_OK = LOW;
StatusNakal = LOW;
previousMillis = currentMillis;
lastMillis = previousMillis;
}
if(currentMillis - previousMillis > interval && StatusVent == LOW && StatusPTT_OK ==LOW ) // STOP вентилятор с задержкой в переменной interval
{
digitalWrite(pinVent, LOW);
StatusVent = HIGH;
StatusPTT_OK = LOW;
StatusNakal = LOW;
}
}// end
Последний раз редактировалось EW2CC 12 окт 2012 17:34, всего редактировалось 1 раз.
_________________
73! Сергей ex.EU2A, UC2CBT, UC2-009-602, Citizen Band - Лайнер, 251. On the air since 1980
Site Admin QRZ.BY
73! Сергей ex.EU2A, UC2CBT, UC2-009-602, Citizen Band - Лайнер, 251. On the air since 1980
Site Admin QRZ.BY
-
Не в сети
- Сообщения: 67
- Зарегистрирован: 11 май 2012 13:07
- Откуда: Гродно
-
Не в сети
- Site Admin
- Сообщения: 2556
- Зарегистрирован: 26 май 2009 04:38
- Откуда: РБ
Re: Проект Arduino (Freeduino)
Вот
Это пока на макетной плате. Блок реле нашел у себя в закромах и приспособил, как раз что надо !
Постоянно приходят новые идеи, шлифуем алгоритм
Релюшки счелкают как надо.
Byduino рулит
Это пока на макетной плате. Блок реле нашел у себя в закромах и приспособил, как раз что надо !
Постоянно приходят новые идеи, шлифуем алгоритм
Релюшки счелкают как надо.

Byduino рулит

_________________
73! Сергей ex.EU2A, UC2CBT, UC2-009-602, Citizen Band - Лайнер, 251. On the air since 1980
Site Admin QRZ.BY
73! Сергей ex.EU2A, UC2CBT, UC2-009-602, Citizen Band - Лайнер, 251. On the air since 1980
Site Admin QRZ.BY
-
Не в сети
- Сообщения: 645
- Зарегистрирован: 12 ноя 2011 14:02
- Откуда: KO13WQ
- Контактная информация:
Re: Проект Arduino (Freeduino)
http://www.qsl.net/on7eq/projects/arduino_pwr_swr.htm - ксв метр на основе ардуино,
вообще то это плата для HAM'ов имеет огромный потенциал
Вот тут описание простого антенного тюнера на основе ардуинки:) и при том без датчика
http://zinvit.com/arduino.shtml
вообще то это плата для HAM'ов имеет огромный потенциал
Вот тут описание простого антенного тюнера на основе ардуинки:) и при том без датчика
http://zinvit.com/arduino.shtml
_________________
ЕW4RF 73:)
ЕW4RF 73:)
-
Не в сети
- Site Admin
- Сообщения: 2556
- Зарегистрирован: 26 май 2009 04:38
- Откуда: РБ
Re: Проект Arduino (Freeduino)
Arduino based Kenwood TS-480 CAT sniffer
http://www.youtube.com/watch?feature=pl ... MEZd9nJmTs
Arduino всё быстрее и быстрее набирает популярность, что только на ней не делают, начиная
от примитивных простых поделок, до автопилота летающих авиамоделей
http://www.youtube.com/watch?feature=pl ... MEZd9nJmTs
Arduino всё быстрее и быстрее набирает популярность, что только на ней не делают, начиная
от примитивных простых поделок, до автопилота летающих авиамоделей

Последний раз редактировалось EW2CC 23 ноя 2012 17:09, всего редактировалось 1 раз.
_________________
73! Сергей ex.EU2A, UC2CBT, UC2-009-602, Citizen Band - Лайнер, 251. On the air since 1980
Site Admin QRZ.BY
73! Сергей ex.EU2A, UC2CBT, UC2-009-602, Citizen Band - Лайнер, 251. On the air since 1980
Site Admin QRZ.BY
-
Не в сети
- Сообщения: 201
- Зарегистрирован: 22 дек 2010 15:35
- Откуда: KM72LT
- Контактная информация:
-
Не в сети
- Сообщения: 189
- Зарегистрирован: 25 окт 2011 07:26
- Откуда: Вiцебск
Re: Проект Arduino (Freeduino)
CW Contest ключ - NanoKeyer на основе Arduino.
http://nanokeyer.wordpress.com/nanokeyer-info/
Основные характеристики (K3NG Firmware):
CW скорость регулируется от 1 до 999 слов в минуту
K1EL Winkeyer интерфейс эмуляции протокола
Поддерживается основными приложениями регистрации (например N1MM, HRD и т.д. В K1EL Winkeyer режиме через USB порт)
SO2R совместимы через K1EL Winkeyer 2 эмуляции протокола
PS2 интерфейс клавиатуры для работы клавиатуры CW без компьютера
PTT с настраиваемыми параметрами
До 12 мемори с макро-и серийный номерами поддержки
QRSS и HSCW
Iambic А и В, и BuG Ultimatic режим
Энергонезависимое хранение большинства параметров
и многое другое ....
Подробнее - http://nanokeyer.files.wordpress.com/20 ... rev-c2.pdf
http://nanokeyer.wordpress.com/nanokeyer-info/
Основные характеристики (K3NG Firmware):
CW скорость регулируется от 1 до 999 слов в минуту
K1EL Winkeyer интерфейс эмуляции протокола
Поддерживается основными приложениями регистрации (например N1MM, HRD и т.д. В K1EL Winkeyer режиме через USB порт)
SO2R совместимы через K1EL Winkeyer 2 эмуляции протокола
PS2 интерфейс клавиатуры для работы клавиатуры CW без компьютера
PTT с настраиваемыми параметрами
До 12 мемори с макро-и серийный номерами поддержки
QRSS и HSCW
Iambic А и В, и BuG Ultimatic режим
Энергонезависимое хранение большинства параметров
и многое другое ....
Подробнее - http://nanokeyer.files.wordpress.com/20 ... rev-c2.pdf
_________________
73!Виктор -EV6DX RU-QRP# 197 AGB#112
Пойми, студент — теперь к людЯм надо помягше, а на вопросы смотреть — ширше
73!Виктор -EV6DX RU-QRP# 197 AGB#112
Пойми, студент — теперь к людЯм надо помягше, а на вопросы смотреть — ширше