Программатор USBAsp, немного деталей, и что из этого вышло
- Цена: $2,56
- Перейти в магазин
Начитался статей про микроконтроллеры, почитал про основы кода, побаловался с симулятором, и решил потеребить контроллеры вживую. С самого начала мой выбор пал на семейство контроллеров AVR из-за распространенности схем под них, и кучи самоучителей. Заказал данный программатор, немножко радиодеталей, и начал творить. Все в подробностях под катом.
К программатору решил прикупить вот такой переходник, о чем не пожалел ни разу.
В голове уже зрела идея первого серьезного (для меня, чайника) проекта. На работе у меня стоял напольный вентилятор, который мог имитировать ветер, то есть дул не непрерывно, а меняя скорость вращения пропеллера, и мне захотелось заиметь такой же настольный.
микроконтроллер преобразует положение переменного резистора в число, затем это число передается аппаратному ШИМ-контроллеру, который дергает 6 ножкой контроллера, регулируя скорость вентилятора. 3к резистор, идущий на землю — это для светодиода, его можно вообще не ставить, если не нужен светодиод
На Taydaelectronics, не раз упоминавшемся здесь, были закуплены необходимые детали:
Переменный резистор на 1 килоом — 20р.
Ручка для переменника — 9р.
Панелька для микроконтроллера — 1р.
Конденсатор 100нф — 1р.
Конденсатор 330нф — 2р.
Стабилизатор L7805 для питания микроконтроллера — 9р.
Микроконтроллер Attiny 13a — 45р.
Полевой транзистор IRF520 — 15р.
Кусок стеклотекстолита для платы — 110р.
Гнездо для питания — 5р.
Резисторы в расчет не беру, их, как и многое вышеперечисленное можно найти в оффлайне. мне просто удобнее заказывать таким образом.
Вот все компоненты запаяны на плату. Плату травил в хлорном железе, дорожки рисовал простым перманентным маркером, ничего сложного, нужно просто терпение.
Поставил драйвера для программатора по инструкции, и используя программку SinaProg, отлично работающую с обзираемым программатором, прошил микроконтроллер.
Первый запуск. Светодиод припаял для наглядности, чтобы «видеть» работу контроллера
Дальше озадачился корпусом, решил сделать из дерева, это на мой взгляд проще всего и эстетичнее.
Видео работы законченного устройства:
О герое обзора пару слов:
для новичков программатор отлично подходит, стоит копейки, шьет множество контроллеров
Из минусов — нет высоковольтного программирования, и я почему-то не смог подружить его с Attiny85.
При постижении даже азов программирования под AVR открывается куча возможностей, реализация которых не составит большого труда.
К программатору решил прикупить вот такой переходник, о чем не пожалел ни разу.
вот так все это выглядит в сборе:
В голове уже зрела идея первого серьезного (для меня, чайника) проекта. На работе у меня стоял напольный вентилятор, который мог имитировать ветер, то есть дул не непрерывно, а меняя скорость вращения пропеллера, и мне захотелось заиметь такой же настольный.
Схема смоделирована в симуляторе (я использую седьмой протеус)
микроконтроллер преобразует положение переменного резистора в число, затем это число передается аппаратному ШИМ-контроллеру, который дергает 6 ножкой контроллера, регулируя скорость вентилятора. 3к резистор, идущий на землю — это для светодиода, его можно вообще не ставить, если не нужен светодиод
На Taydaelectronics, не раз упоминавшемся здесь, были закуплены необходимые детали:
Переменный резистор на 1 килоом — 20р.
Ручка для переменника — 9р.
Панелька для микроконтроллера — 1р.
Конденсатор 100нф — 1р.
Конденсатор 330нф — 2р.
Стабилизатор L7805 для питания микроконтроллера — 9р.
Микроконтроллер Attiny 13a — 45р.
Полевой транзистор IRF520 — 15р.
Кусок стеклотекстолита для платы — 110р.
Гнездо для питания — 5р.
Резисторы в расчет не беру, их, как и многое вышеперечисленное можно найти в оффлайне. мне просто удобнее заказывать таким образом.
Вот все компоненты запаяны на плату. Плату травил в хлорном железе, дорожки рисовал простым перманентным маркером, ничего сложного, нужно просто терпение.
С помощью Atmel Studio и гугла написал прошивку
//Roman Vagin
//http://vk.com/xynta73
//шим контроллер вентилятора с простым ШИМ и с симуляцией ветра. говнокод на ифах и делеях
// частота контроллера 4.8 MHz, включен делитель на 8 чтобы шим не пищал 4800000/8=600000
#define F_CPU 600000
#include <avr/io.h>
#include <util/delay.h>
#define FAN PB1
int adc_in;
int mode = 1;
void adc_setup (void)
{
// Set the ADC input to PB2/ADC1
ADMUX |= (1 << MUX0);
ADMUX |= (1 << ADLAR); // Comment out for 10-bit resolution
// Set the prescaler to clock/128 & enable ADC
ADCSRA |= (1 << ADPS1) | (1 << ADPS0) | (1 << ADEN);
}
int adc_read (void)
{
// Start the conversion
ADCSRA |= (1 << ADSC);
// Wait for it to finish
while (ADCSRA & (1 << ADSC));
return ADCH;
// return ADC; // For 10-bit resolution
}
void pwm_setup(){
// Set Timer 0 prescaler to clock/8.
// At 9.6 MHz this is 1.2 MHz.
TCCR0B |= (1 << CS01) | (1 << CS00);
// Set to 'Fast PWM' mode
TCCR0A |= (1 << WGM01) | (1 << WGM00);
// Clear OC0B output on compare match, upwards counting.
TCCR0A |= (1 << COM0B1);
}
void pwm_write (int val)
{
OCR0B = val;
}
void __mode1 (){//режимы вентилятора. зависит от положения переменного резистора (0-255)
if ((adc_in>=10) && (adc_in<100)){//если переменник выкручен чуть чуть вправо
pwm_write(adc_in+50);//даем пропеллеру раскрутится, ибо на минимуме может не стартануть
_delay_ms (2000);//крутим 2 сек
pwm_write(0);//снижаем до нуля
_delay_ms (5000);//ждем 5 секунд
pwm_write(adc_in+20);//снова крутим 3 секунды
_delay_ms (3000);
pwm_write(0);
_delay_ms (6000);
}else if((adc_in>=100)&&(adc_in<140)) {//второй режим
pwm_write(adc_in);
_delay_ms (1500);
pwm_write(0);
_delay_ms (3000);
pwm_write(adc_in);
_delay_ms (4000);
pwm_write(0);
_delay_ms (2000);
}else if((adc_in>=140)&&(adc_in<190)){
pwm_write(adc_in);
_delay_ms (1000);
pwm_write(40);
_delay_ms (3000);
pwm_write(adc_in+20);
_delay_ms (5000);
pwm_write(40);
_delay_ms (4000);
}else if((adc_in>=190)&&(adc_in<220)) {//второй режим
pwm_write(adc_in);//даем почти максимум
_delay_ms (1500);//пауза 2 сек
pwm_write(50);//снижаем почти до нуля и тд
_delay_ms (3000);
pwm_write(adc_in);
_delay_ms (7000);
pwm_write(50);
_delay_ms (7000);
}else if(adc_in>=220){
pwm_write(255);//даем максимум
}else{
pwm_write(0);
}//выключаем если не выполняется ни одно условие
}
int main (void)
{
// fan is an output.
DDRB |= (1 << FAN);
adc_setup();
pwm_setup();
while (1) {
adc_in = adc_read();
//_________________если крутилка в минимальном положении,
if (adc_read()<20){
_delay_ms(2000);
if (adc_read()>200){//и если крутилка через секунду в максимальном положении
if (mode==1){//переключаем режим, если режим стоял 1, то ставим второйц, и наоборот
mode=2;
}else{
mode=1;
}
}
}
if(mode==1){//если режим 1 как по умолчанию - крутим функцию __mode1
__mode1 ();
}else{
pwm_write(adc_in);//иначе - просто приравниваем положение крутилки к шим, получая плавную регулировку
}
}
}
Поставил драйвера для программатора по инструкции, и используя программку SinaProg, отлично работающую с обзираемым программатором, прошил микроконтроллер.
Фьюзы
Первый запуск. Светодиод припаял для наглядности, чтобы «видеть» работу контроллера
Дальше озадачился корпусом, решил сделать из дерева, это на мой взгляд проще всего и эстетичнее.
Процесс:
выпилил более-менее приличную деревяшку
Изготовил петли для вентилятора
Покрыл морилкой основание
Залакировал, купил чистенький вентилятор, собрал всё
Вид снизу:
Изготовил петли для вентилятора
Покрыл морилкой основание
Залакировал, купил чистенький вентилятор, собрал всё
Вид снизу:
Видео работы законченного устройства:
О герое обзора пару слов:
для новичков программатор отлично подходит, стоит копейки, шьет множество контроллеров
Список контроллеров
51 serials:
AT89S51, AT89S52
AVR serials:
ATTiny12(L),
ATTiny13(V),
ATTiny15(L),
ATTiny24(V),
ATTiny25(V),
ATTiny26(L),
ATTiny2313(V),
ATTiny44(V),
ATTiny45(V),
ATTiny84(V),
ATTiny85(V),
AT90S2313(L),
AT90S2323(L),
AT90S2343(L),
AT90S1200(L),
AT90S8515(L),
AT90S8535(L),
ATMEGA48(V),
ATMEGA8(L),
ATMEGA88(V),
ATMEGA8515(L),
ATMEGA8535(L),
ATMEGA16(L),
ATMEGA162(V),
ATMEGA163(L),
ATMEGA164(V),
ATMEGA165(V),
ATMEGA168(V),
ATMEGA169(V),
ATMEGA169P(V),
ATMEGA32(L),
ATMEGA324(V),
ATMEGA325(V),
ATMEGA3250(V),
ATMEGA329(V),
ATMEGA3290(V),
ATMEGA64(L),
ATMEGA640(V),
ATMEGA644(V),
ATMEGA645(V),
ATMEGA6450(V),
ATMEGA649(V),
ATMEGA6490(V),
ATMEGA128(L),
ATMEGA1280(V),
ATMEGA1281(V),
ATMEGA2560(V),
ATMEGA2561(V),
AT90CAN32,
AT90CAN64,
AT90CAN128,
AT90PWM2 (B),
AT90PWM3 (B)
AT89S51, AT89S52
AVR serials:
ATTiny12(L),
ATTiny13(V),
ATTiny15(L),
ATTiny24(V),
ATTiny25(V),
ATTiny26(L),
ATTiny2313(V),
ATTiny44(V),
ATTiny45(V),
ATTiny84(V),
ATTiny85(V),
AT90S2313(L),
AT90S2323(L),
AT90S2343(L),
AT90S1200(L),
AT90S8515(L),
AT90S8535(L),
ATMEGA48(V),
ATMEGA8(L),
ATMEGA88(V),
ATMEGA8515(L),
ATMEGA8535(L),
ATMEGA16(L),
ATMEGA162(V),
ATMEGA163(L),
ATMEGA164(V),
ATMEGA165(V),
ATMEGA168(V),
ATMEGA169(V),
ATMEGA169P(V),
ATMEGA32(L),
ATMEGA324(V),
ATMEGA325(V),
ATMEGA3250(V),
ATMEGA329(V),
ATMEGA3290(V),
ATMEGA64(L),
ATMEGA640(V),
ATMEGA644(V),
ATMEGA645(V),
ATMEGA6450(V),
ATMEGA649(V),
ATMEGA6490(V),
ATMEGA128(L),
ATMEGA1280(V),
ATMEGA1281(V),
ATMEGA2560(V),
ATMEGA2561(V),
AT90CAN32,
AT90CAN64,
AT90CAN128,
AT90PWM2 (B),
AT90PWM3 (B)
Из минусов — нет высоковольтного программирования, и я почему-то не смог подружить его с Attiny85.
При постижении даже азов программирования под AVR открывается куча возможностей, реализация которых не составит большого труда.
Самые обсуждаемые обзоры
+58 |
3748
97
|
Искал на али, дешевле чем 3.45 не видел, а за 5.1 и в оффлайне купить уже можно.
И переходник довольно удобный (правда потихоньку на TQFP корпуса перехожу).
Хотел уточнить, программатор только в варианте с 10 пин разьемом ISP, или бывают с 6 пин?
А, там маленький переключаатель. За сколько взяли, если не секрет? Найти смог только на ебее за 450р, коих он не стоит.
Ссылки не осталось, но поиском легко ищется, вот самый дешёвый: Ebay
Вам не под arduino случайно? =)
На этом uspasp только перемычку на ресете можно поставить для прошивки самого программатора(через другой), нет селектора для прошивки низкочастотных МК, нет селектора питания, только 5в, хотя может что-то отпаять или припаять можно.
Мне 6 пин разъем проще разводить.
Молодец, реализовал задуманное!
я понимаю оправданность ее применения при разработке устройств, но готовое устройство на этой плате это как то неоправданно
555 таймер видимо уже забыли, или 34063, только там уже дроссель нужен.
В зависимости от влажности, 2 ступени, низкие обороты и высокие, 2 таймера на отключение после того, как влажность пришла в норму, 2 датчика освещенности, по ним определяется включен свет в ванной или туалете, можно включить режим, что когда в ванной свет, то вытяжка не включается (бывает надо когда маленький ребенок), если свет включен в туалете, то вытяжка отрабатывает по таймеру независимо от влажности.
Все это реализовано на двух микросхемах, 1 компаратор и 1 логика. (ну естественно БП, пара релюшек).
Без микроконтроллеров. За 5 лет ни одного глюка, а все кричать, Ардуино, Ардуино. :))))
Не публиковал, потому, что когда делал, то параллельно делал ремонт дома, времени не было, а сейчас думаю, что никому такое и неинтересно.
Опубликовать здесь врядли получится, своего блога у меня пока нет.
Но насчет публикации серьезно подумаю. Надо только подготовить материалы, так как на многие устройства и схем то нет, 99% вещей делается просто из головы, я и схемы то, выкладываемые здесь, чертил специально для Муськовчан.
Я вообще стараюсь потихоньку выкладывать обзоры подобного типа, например известный многим обзор самодельного лабораторного блока питания и драйвера светодиодов.
Вообще был приятно удивлен, что это кому-то интересно.
Спасибо за поддержку.
На самом деле без микроконтроллеров можно много чего сделать, Просто иногда контроллер банально выгоднее использовать.
Хотя занимаюсь разработками электроники, но работаю в паре с программистом.
Написал программу, как подключить светодиод к процессору.
Электроника и программирование сейчас часто неразлучны.
Кстати, скоро к списку моих радиолюбительских обзоров должен добавиться еще один.
Более дешевые микроконтроллеры надо сразу оптом заказывать, иначе невыгодно.
Автор плату итак пришлось делать и микроконтроллер был, так что он молодец, но всем я б так не посоветовал.
Еще я б текстолит на бике заказал.
а че, ардуина реально проще вот этого всего? чем? там код сам пишется? я просто не видел ни разу ее
Берем плату за 92 рубля.
Припаиваем к ней транзистор и переменный резистор — вот и вся обвязка…
Дальше пишем 5 строчек кода
Всё, это вся программа. Переменный резистор на входе №1 регулирует порывы ветра вентилятора на выходе №9.
Дальше, при желании, эту же плату можно нагрузить еще кучей всего.
Еще динамическую типизацию хочу.
Это же мерзкий гетинакс. Никакой не FR4.
В описании лота есть фотографии и того, и другого, но в названии фигурирует FR4, так что я склоняюсь, что и сейчас шлют его
Правда у меня своя специфика.
Если под производство, то заказываю с маской и лужением.
С точки зрения професионалов — на зеркалке можно достичь лучшего качества (и это так)
Для любителя мыльница проще в пользовании, а разница в снимках незаметна.
Ардуино дешев, не требует использования программатора, для множества задач есть готовый код.
Еще аналогия: некоторые профессиональные фотографы относились к процессу проявки пленки и фотопечати как к некоему магическому ритуалу, которым должен владеть профессионал. К тем, кто не владел «магией» относились как к любителям.
Схема на МК обычно выполняется на плате, изготовление которой — тоже некоторый ритуал.
Недостатки Ардуино:
1) Выше вероятность наводок на выводы МК
2) Размер
3) «Непрофессиональность» платформы
4) Размер скомпилированного кода обычно больше
Во многих проектах-самоделках на эти недостатки можно не обращать внимание.
Не все ж в китае покупать, надо и своему творческому потенциалу давать выход )))
Правда потом я JTAGIce2 купил клон…
Если интересно, пишите, поделюсь. Правда, с наличием копеечных предложений в китайшопах особенно не актуально. Самый гемор там — впаять микросхему преобразователя уровней и разъем угловой.
Я даже до сих пор обхожусь Понипрогом, а там контроллер не нужен.
А потом купил такой для прошивки флеш-памяти:
И пока его хватает.
https://aliexpress.com/item/item/SCM-24-93-series-EEPROM-memory-chips-Programmers-SP200SE-SP200S-enhanced-version-30406/1727288434.html
Рабочий, проверено. Заказал второй такой, жду.
Может лучше вот ТАКОЙ прикрутить к вашей деревяной подставке.
Ну или подобный. В китайских магазинах полно недорогих и симпатичных вентиляторов.
к сожалению завести не удалось. пробовал прошить atmega328 через Arduino IDE.
сначала выдавало такую ошибку:
с помощью arduino uno обновил прошивку программатору, ошибка пропала, но появилась другая:
решения так и не нашел :( пробовал на Win7, WinXp, Ubuntu