INT 21h

Домашняя страница самого страшного прерывания

Бортовой компьютер для мопеда

№ 2820 В разделах: Программирование Электроника от May 8th, 2011,

Новая версия этого компьютера

Цели проекта: создать устройство для мониторинга и управления электроникой мопеда.

Функции:

  • отображение температуры двигателя и окружающей среды
  • отображение текущего времени
  • секундомер для замера времени пути
  • дата последней заправки (к сожалению, датчика топлива нет на мопеде)
  • сигнализации с управлением с помощью брелка
  • постоянной памятью, сохраняющей время и действия пользователя
  • синхронизация памяти мопеда с памятью брелка

Кто будет в этом принимать участие: мопед, часы DS1307, 2 датчика DS18B20+, 2 беспроводных модуля TR24F, ATMEGA48, ATmega8535, 4 индикатора АЛ304Г, 2 чипа памяти по 16Кб 24LC16B. Денег на акселерометр не хватило (придется придумывать временную замену), а так детали заказаны и через 2 недели приедут в Томск :) А пока буду писать программную начинку.

Использованые материалы:

Следите за обновлениями записи! Будет много интересного ;)

Update 25 мая 2011
Ура! Приехали детальки!

Update 26 мая 2011
Начал потихоньку грызть схемку.

Подпаял часы (кстати, они уже работают от батарейки), регулятор LM7805, некоторые детали закрыл термоусадкой чтоб не замкнули обо что-нибудь.


Обратите внимание на то, где находится микросхема с часами. Она по высоте с кроваткой и I2C выводы SCL и SDA как раз возле соответствующих выводов МК :)


Ну и конечно же сурово упакованый часовой кварц на обратной стороне, подпаяный максимально близко к выводам часовой микросхемы.


Пара резисторов 4.7 кОм для подтяжки линий IIC к +5.


Места конечно не хватает, поэтому вывел линии IIC на соседние площадки. Как проводники использовал длинные ноги все тех же резисторов :)


Ну и конечно подвел внешнее питание через регулятор LM7805L. Предполагается, что он будет сглаживать скачки и лишнее напряжение от аккумулятора и генератора. Позже на нем появятся 2 конденсатора, рекомендуемые производителем по схеме ниже.

Update 28 мая 2011
Еще раз обновил схему :) Добавил пару кнопок, индикатор “заправся”, трансивер (его подключение нарисую немного позже) и схему питания. Исправил косяк с подключением часовой микросхемы (при рисовании были перепутаны ноги SCL и SDA).


Подпаял первый температурный датчик прямо к плате, т.к. он измеряет просто температуру окружающей среды. Второй пойдет к двигателю :)


А вот и знаменитые советские транзисторы, которые будут питать 4 индикатора в приборной панели.


Резисторы на 1 кОм (также сурово упакованные) до баз транзисторов.


Установил кварц. Ура!


Обещаные конденсаторы на регуляторе напряжения :)


Второй термодатчик. Он уже на двигателе будет висеть.


Установил сердце компьютера на свое законное место :)


А это уже для индикаторов на приборной панели.


Припаял резисторы-подтяжки для ног данных термодатчиков. Спасибо redsh, иначе бы забыл про них :)


А это EEPROM память 24LC16B на 2 килобайта. К сожалению, она может быть только одна на шине I2C, но для начала и такой хватит. Если в будущем перестанет хватать, то куплю память на 32 килобайта. Кстати, у этой eeprom’ки 10 миллионов перезаписей, когда у atmel всего 1 миллион (да еще и при питании 3.3 вольта). Обратите внимание на способ крепления :) Кстати, там осталось место для еще одного устройства IIC. Если есть идея что прицепить – предлагайте :)


А это я готовлюсь припаять транмиттер к SPI микроконтроллера. Трансмиттер довольно маленький и повезло, что я нашел с магазине шлейф с достаточно малым шагом между проводами.

Кстати, когда я буду подключать индикаторы в приборной панели к плате, я буду использовать провода МГТФ. У них очень хорошая изоляция и они достаточно устойчивы к перегибам. Этот провод я уже использовал для крепления термодатчика (3 провода с сечением 0.12 мм2 в металлической оплетке).

Сделал разводку для платы индикаторов. Завтра буду ЛУТить :) Если вам интересна плата для 4х индикаторов АЛ304Г, то вот она.

Поскольку я еще не научился пользоваться лазерным утюгом (ЛУТ), товарищ ZiB сделал мне плату для индикаторов. Получилось просто зашибано!

Ну а теперь нужно всего-лишь припаять индикаторы.

Дырочки в некоторых местах просверлю немного позже. Ваша лапша, сэээр!

Запорол плату при сверлении дырок под кнопки :( Пришлось переделывать. Зато получилось намного круче, чем было!

Сегодня куплю сверла и специальные разъемы, для подключения проводов между индикатором и компом.

Скоро попробую вывести время с уже припаянных к шине I2C и тикающих часиков DS1307 или температуру с датчиков.

Немного изменил схему, подключив к индикатору сдвиговый регистр 74HC595, а на место где раньше были аноды индикаторов подключил часовой кварц для таймера. Аноды перенес все на тот же порт A и в программе выделил весь порт под индикатор. Остался 1 неиспользованый пин у этого порта, но мы его не будем трогать, т.к. на будущее еще есть планы.

А вот и первые результаты :) Прошивка пока может просто выводить разные цифры. Светит кстати ОЧЕНЬ красиво. Один из индикаторов похоже с браком ибо светит он весьма тускло. Лишь бы в магазине не кончились… В любом случае в будущем будет вторая версия компьютера и там уже будет использован жидко-кристаллический индикатор с подсветкой. Он и управлением полегче будет, и выглядит покультурней. Но я хочу одолеть именно этот тип индикатора :)

Добавил USART для отладки шины I2C. И отладил! Последние 3 недели я только это и пытался сделать. Сейчас подключу еще eeprom’ку и будет счас счастье. Спасибо ZiB и Redsh за помощь! Осталось решить незначительные проблемы с асинхронным таймером и все будет хорошо. А вот и видео с консолькой :)

Обновленная схема

Переместил кнопки, чтобы стал доступен USART. Поправил рисунок транзисторов (они хоть на схеме и есть, но я их так и не установил :) все напрямую работает)

Кстати, пришел экран WH1602 с подсветкой. Как только доделаю эту версию компьютера займусь второй, у которой уже будет этот клевый экран :)

А вот и как работает экран. Я его уже установил и запрогал. Скажу сразу управлять им намного легче, чем 7-сегментниками :)

Несколько режимов работы

LM7805 был заменен на LM2574-5.0 из-за своего тепловыделения. Импульсный блок питания довольно компактно уместился на плате.

я наконец купил корпус, а значит скоро можно будет уже прикрепить компьютер на мопед. Осталась мелочь типа разъемов для подключения питания и внешних устройств.

Надеюсь, что сегодня будет последний поход в магазин…

Тестирование датчиков. Датчик температуры двигателя засунул в снег из морозильника :)

Осталось сделать разъем для подключения внешних устройств. Только я не знаю какой взять… Надо что-то типа DB-9, но более компактное.

18 комментариев »

18 комментариев »

Comment by Boten | May 8, 2011 @ 12:54:45

крайне интересная задумка, дашь потом посмотреть и опубликуешь спеки ;)

Comment by Димон | May 11, 2011 @ 18:32:12

Vladimir Smagin жадная скатина.
Заставляет всех смотреть на его убогие баннеры.
Как следствие в его блоге появился этот комментарий.
А содержимое блога я и в кеше гугла посмотрю.

Comment by 21h | May 11, 2011 @ 22:55:36

Димон, а ты неблагодарная скатина.

PS но я то знаю, что ты выключил адблок, чтобы и кеш гугла не блокировал текст ;)

Comment by ZiB | May 15, 2011 @ 08:50:42

ого, не знал что ты электроникой увлекаешся :) может тебе подкинуть барохлишка?

Comment by 21h | May 15, 2011 @ 12:31:26

подкидывай :) жена заставляет все барахло выкинуть? :))))

Comment by ZiB | May 15, 2011 @ 13:43:16

нет, просто я от аврок отошел последнее время, а запасы ещё есть :) а тут смотрю человек что-то руками делает, что очень редко сейчас, думаю нужно помочь, подкинуть для развития :)

Comment by 21h | May 15, 2011 @ 14:11:37

ааа, ну подкидывай :) я люблю новые игрушки, ага :)

Comment by ZiB | May 15, 2011 @ 14:20:01

ок, как соберу в кучку отпишусь

Comment by ZiB | May 15, 2011 @ 16:59:51

такая платка не интересна?
http://ziblog.ru/2011/04/02/msp-exp430g2-ndash-otladochnoe-sredstvo/

to Boten, помниться ты то же хотел с мк повозиться, не пробовал ещё ?

Comment by 21h | May 18, 2011 @ 13:21:10

платка интересна.

я ему тож предлагал на прошлой неделе. пока не хочет :)

Comment by Hashish | June 21, 2011 @ 00:06:14

Мопед не мой, я просто разместил объяву.

Comment by dkuznets | October 23, 2011 @ 17:37:16

21h, а с TR24F разобрался? Если не жалко, кусочек кода обмена с ним можно?

Comment by 21h | October 24, 2011 @ 12:11:28

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

Comment by dkuznets | October 25, 2011 @ 02:40:05

ОК, посмотрим. Доки на него китайцы прислали. Но вот обмен не идет. Вообще глухо. Может, просто статикой убил? Попробую другой припаять.

Comment by 21h | October 27, 2011 @ 01:04:54

Все, что есть на TR24F и подобные платки http://blindage.org/?p=3760

Присылай либы, если получится завести.

Comment by chubik | March 1, 2012 @ 19:20:43

Здравствуйте! Пытаюсь связать два модуля TR24F – безрезультатно. Написал код(привожу ниже). По SPI регистры параметрируются, но как-то через раз, читаются отлично. Прерывание при отсылке на передатчике происходит, значит пакет с данными прошел, а вот на приемнике глухо. Регистры 0, 9-16 на стороне приемника и передатчика учтены и поставлены правильно. Помогите найти ошибку.
Пишу на CVAVR под Atmega8

Код:

Код:
#define RDY PORTC.4 //27 out
#define SCK PORTC.2 //25 out
#define DAT PORTC.0 // 23 in/out
#define INDAT PINC.0// 23
#define DAT_DDR DDRC.0 // 23
#define EN PORTC.5 //28 out
#define PSB PORTD.1 //3 out
#define INT PIND.2 // 4 in
//#define DRSSI PIND.6

flash unsigned char regs[25]={
0xA8,// 0x28 T/R Channel index
0x03,// Crystal Frequency and RF Power
0x78,// Data Function Control
0x87,// RSSI Function Control
0x20,// RSSI Value
0x0F,// Data format control
0x30,// Multi Burst Packet Repeat Control
0x21,// Power Ramp Control
0x03,// Addres Length
0x02,// Destination Addres 0x34
0x02,// Destination Addres 0x22
0x02,// Destination Addres 0x55
0x00,// Destination Addres
0x00,// Destination Addres
0x01,// Device Addres
0x01,// Device Addres
0x01,// Device Addres
0x00,// Device Addres
0x00,// Device Addres
0x00,// Reserved
0x00,// PLL Pre-Turn-On Time
0xB4,// PLL Lock Time
0x00,// Reserved
0x22,// Option
0x04 // RX Turn On Time
} ;

void spi_access_mode(void)
{
DAT=1;
PSB=1;
EN=1;
RDY=0;
SCK=0;
#asm(“nop”)
};

void active_mode(void)
{
DAT=1;
PSB=1;
EN=0;
SCK=0;
RDY=1;
#asm(“nop”)

};

// Output eight-bit value using selected bit-bang pins
void spi_bitbang_out(char value)
{
char x;
for(x=8;x>0;x–){
if(value & 0x80)DAT=1;
else DAT=0;
#asm(“nop”)
SCK=1;
value<0;y–){
SCK=1;
#asm(“nop”)
x<<=1;
if(INDAT==1){x|=0b00000001;}
SCK=0;
#asm("nop")

} // Store next bit
return(x);
}

void spi_write_regs(unsigned char addres,unsigned char data)
{
spi_access_mode();
DAT_DDR=1;
spi_bitbang_out(addres|0x80); // Send address
spi_bitbang_out(data); // Send data
EN=0;
} ;

unsigned char spi_read_reg(unsigned char addres)
{ unsigned char data;
spi_access_mode();
DAT_DDR=1;
spi_bitbang_out(addres); // Send address
DAT_DDR=0;
data=spi_bitbang_in(); //read data
EN=0;
return(data);
};

void tr24f_init(void)
{unsigned char y;
for(y=0;y0;y–)
data[y]=spi_bitbang_in();
return(data);
};

void fifo_write(unsigned char *data,unsigned char data_length)
{
unsigned char y;
active_mode();
DAT_DDR=1;
delay_us(20);
spi_bitbang_out(regs[0x09]);
spi_bitbang_out(regs[0x0A]);
spi_bitbang_out(regs[0x0B]);
for(y=data_length;y>0;y–)
spi_bitbang_out(data[y]);
spi_bitbang_out(1);
spi_bitbang_out(1);
spi_bitbang_out(1);
RDY=0;
};

Comment by 21h | March 2, 2012 @ 11:12:07

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

Comment by Petr | May 27, 2012 @ 23:27:43

здравствуйте Владимир)))
интересный данный Ваш проект для мопеда)))
у меня есть интересная идея для дополнения к Вашему проекту)))
в решении этой идеи мне нужна Ваша помощь)))
хотелось бы с Вами связаться по донной теме)))
diablopetr@gmail.com
буду рад Вашему ответу)))

Форма отправки комментария

CAPTCHA
*

Разрешенные HTML-теги:
<a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <strike> <strong>

RSS RSS Feed только для этого поста |


Комментарии
  • Игорь: Все настроил, еще раз просмотрел видео и методом научного тыка все настроил и сохранил, все работает и обе...
  • 21h: Здравствуйте, Игорь! Я не знаю :) Думаю аналогично согласно инструкции к вашей радиостанции.
  • Игорь: Добрый день, просмотрел Ваше видео все доступно и ясно для 8 ми канальных радеек, но мне нада настроить 69...
  • Гоги: Есть инструкция к Моторолкам – она подходит к серии Motorola TLKR T4… Т8. В конце сетка частот и...
  • 21h: торчок давно уже не обновлял, как только закрыл сайт где он работал. да, это морда для opentracker. без...
  • Buter: Какова дальнейшая жизнь торчка? Он кстати веб-интерфейсом для OpenTracker выступает? Без OpenTracker работать...
  • 21h: понятия не имею. гуглите инструкцию к вашей радейке и сверяйтесь с ней.
  • Денис: хочу их подружить с uv5r
  • Денис: t-388 walkie talkie на эти шпаргалочек нет,или как приминить ваши к их настройке?
  • John: Стекла для электроник – техночас.ру