понедельник, 8 марта 2010 г.

Повесил за окно датчик температуры TMP37, так его показания и данные обычного спиртового термометра расходились на 7 градусов... Кому верить - непонятно, однако яндекс показывает температуру, аналогичную датчику. Еще видимо схему не очень хорошо собрал - иногда появляются сильные скачки напряжения с датчика. Устранил их самым простым способом - брал среднее арифметическое двухсот пятидесяти шести показаний =)) Читать дальше......

воскресенье, 7 марта 2010 г.

Недавно решил попробовать в деле smd компоненты :) В принципе ничего сложного, минимальный необходимый инструмент - пинцет. Зато резко уменьшился размер платы готового устройства. 
Сделал "Часы v.2" =) 
Использование стабилизатора LM7805 позволило подавать различное питающее напряжение. Точно не помню, но вроде бы максимум 25 или 35 вольт.
Читать дальше......

воскресенье, 22 ноября 2009 г.

Подключение LCD к Arduino.

 Дисплей необходимо подключать по следующей схеме:



Контакт дисплея
Контакт Arduino
Значение
1
GND
Vss
2
5V
Vdd
3
Vo (контрастность)
4
digital 12
RS
5
digital 11
R/W
6
digital 10
ENABLE
11
digital 5
DB4
12
digital 4
DB5
13
digital 3
DB6
14
digital 2
DB7
15
-
LED+
16
GND
LED-


Её я позаимствовал в блоге http://mk90.blogspot.com/ =)
Также, я подключил переменный резистор, для регулировки контраста дисплея. Крайние выводы резистора подключаем к земле и 5В, а средний к 3 контакту LCD дисплея. Подсветка включается через 15 и 16 контакты, (анод и катод соответственно).


Загружаем в arduino следующую программу:




#include <LiquidCrystal.h>
LiquidCrystal lcd(12, 11, 10, 5, 4, 3, 2);

void setup() {
  lcd.begin(16, 2);
  lcd.print("Hello, world!");
}

void loop() {
}



Включаем - и все работает :)


 


Читать дальше......

воскресенье, 1 ноября 2009 г.

ЖК

Приобрел на днях жидкокристаллический знакосинтезирующий дисплей, производства Winstar. Это WH1602J-YGH-CT, англо-русский, 16х2. Осталось закупить паяльник, припой и т.п. и буду подключать его к Arduino. :) Жаль это будет не так скоро, как хотелось бы... Читать дальше......

суббота, 31 октября 2009 г.

Переменный резистор

Переменный резистор (потенциометр) - позволяет изменять собственное сопротивление. Подключив его к arduino получаем хороший инструмент контроля/настройки чего либо :)

У потенциометра три ноги - крайние подключаем к земле и +5В, а со средней снимаем выходное напряжение - подключим, например, к аналоговому входу 0. В крайнем правом положении на ней будет 0В, а в крайнем левом +5В.

Код программы, загружаемой в Arduino:

#define ANALOG_IN  0 // Порт, к которому подключен переменный резистор


int avalue = 0 // Здесь мы храним данные со второго порта


void setup() {
    Serial.begin(9600); 
}


void loop() {
   avalue = analogRead(ANALOG_IN); // считываем значение с нулевого аналогового порта.
   Serial.println(avalue);  // отправляем данные на COM порт.
}

Вот и все, теперь нажав на кнопку "Serial monitor" в Arduino IDE мы увидим бегущие цифры, а вращая "крутилку" :))) потенциометра - будем наблюдать за их изменением :)
Это можно использовать, например, для ручного изменения яркости светодиода. Есть два варианта:
1) Подключить анод (плюс, длинная нога) светодиода к средней ноге потенциометра, а катод (минус, короткая нога), через резистор (рассчитывается из характеристик светодиода, но обычно 1кОм хватает ) к земле.

2) Либо не меняя первоначальной схемы, подключить анод к цифровому выходу с ШИМ (PWM) (Широтно-импульсная модуляция) Arduino, а дальше как обычно, через резистор, к земле. ШИМ позволяет получить аналоговый сигнал средствами цифровых портов. На выход будет подаваться напряжение в 5В с определенной частотой. Так, например, для получения напряжения 2,5В надо подавать 5В в два раза реже. Необходимо изменить вышеприведенную программу:




#define ANALOG_IN  0 // Порт, к которому подключен переменный резистор
#define ledPin 11 // Порт, к которому подключен светодиод. (11 порт с PWM )

int avalue = 0; // Здесь мы храним данные с нулевого порта

void setup() {
}

void loop() {
   avalue = analogRead(ANALOG_IN); // считываем значение с нулевого порта.
   analogWrite(ledPin, avalue/4); // Т.к. указать надо значение 0..255, а приходит 0..1023 - делим на 4.
}

Читать дальше......

Осциллограф из Arduino

Arduino умеет считывать значения с аналогового порта с помощью analogRead().
Если считывать данные и перенаправлять их на компьютер, а там строить график по полученным данным - получится осциллограф.

#define AINPUT 0 // принимать данные будем на аналоговый порт 0

void setup() {
Serial.begin(57600); //скорость работы с COM портом
}

void loop() {
int avalue;
avalue = analogRead(AINPUT);
Serial.println(avalue);
}

Это код программы, загружаемой в arduino. А теперь получим данные на компьютере и нарисуем график. С этим возникла небольшая проблема - я писал программу в Processing и я его совсем не знаю, так что за код сильно не пинайте - пока это лишь черновик. Но данные принимает, хоть разглядеть можно, а кому надо будет - допишут. Ну или я доделаю :)


import processing.serial.*;

Serial myPort;
int xPos = 0;
float inByte2 = 0;

void setup () {
size(640, 480);
println(Serial.list());
myPort = new Serial(this, Serial.list()[0], 57600);
myPort.bufferUntil('\n');
background(0);
float nul = map(0, 2048, -2048, 0, height);
stroke(255,255,255);
line(0, nul, width, nul);
}

void draw () {
}

void serialEvent (Serial myPort) {
String inString = myPort.readStringUntil('\n');
if (inString != null) {
float inByte = float(inString);
inByte = map(inByte, 2048, -2048, 0, height);
stroke(0,255,0);
line(xPos, inByte, xPos, inByte2);
inByte2 = inByte;
if (xPos >= width) {
xPos = 0;
background(0);
}
else {
float nul = map(0, 2048, -2048, 0, height);
stroke(255,255,255);
line(0, nul, width, nul);
xPos++;
}
}
}

Оно как-то работает... :)) Надо переделать систему рисования графика, добавить сетку, и линию времени. :)

----
Что-то код выводится без отступов, лень уже разбираться, в чем тут дело - спать давно пора. Читать дальше......

вторник, 27 октября 2009 г.

Freeduino 2009

"Аппаратная часть
Плата Arduino состоит из микроконтроллера Atmel AVR (ATmega328 и ATmega168 в новых версиях и ATmega8 в старых) и элементной обвязки для программирования и интеграции с другими схемами. На каждой плате обязательно присутствуют линейный стабилизатор напряжения 5 В и 16 МГц кварцевый генератор (в некоторых версиях керамический резонатор). В микроконтроллер предварительно прошит загрузчик, поэтому внешний программатор не нужен.
На концептуальном уровне все платы программируются через RS-232 (последовательное соединение), но реализация этого способа отличается от версии к версии. Плата Serial Arduino содержит простую инвертирующую схему для конвертирования уровней сигналов RS-232 в уровни ТТЛ, и наоборот. Текущие рассылаемые платы, вроде Diecimila, программируются через USB, что осуществляется благодаря микросхеме конвертера USB-to-serial вроде FTDI FT232. В некоторых вариантах, таких как Arduino Mini или неофициальной Boarduino, для программирования требуется подключение отдельной платы USB-to-serial или кабеля.
Платы Arduino позволяют использовать большую часть I/O выводов микроконтроллера во внешних схемах. Например, в плате Diecimila доступно 14 цифровых вводов/выводов, 6 из которых могут выдавать ШИМ сигнал, и 6 аналоговых входов. Эти выводы доступны в верхней части платы через 0,1 дюймовые разъёмы типа «мама». На рынке доступны несколько внешних плат расширения, известных как «shields»." Википедия.

Зашел на почту и забрал пришедшую бандероль. Уже и поигрался, но жаль что немного - сказывается отсутствие диодов, резисторов и т.п. Написал классический "Hello World" и программу чуть чуть посложнее :)

Arduino - микро-ЭВМ, подключаемая к компьютеру по COM порту (или по USB с эмуляцией COM), позволяющая подключать к себе множество различных периферийных устройств. Программируется на простом языке Wiring. Он представляет собой C/C++, дополненный необходимыми для Arduino библиотеками. Не нужно никаких программаторов. Одно нажатие кнопки "Upload" - и все, программа залита. После чего плата успешно работает автономно.

Дальше немного фотографий :)




Комплектация.





Читать дальше......

Добавить закладку!

clix - ñîöèàëüíûå çàêëàäêè