INT 21h

Hi, I am Vladimir Smagin, sysadmin. Telegram Email

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

№ 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 responses to “Бортовой компьютер для мопеда”

  1. Boten says:

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

  2. Димон says:

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

  3. 21h says:

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

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

  4. ZiB says:

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

  5. 21h says:

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

  6. ZiB says:

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

  7. 21h says:

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

  8. ZiB says:

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

  9. ZiB says:

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

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

  10. 21h says:

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

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

  11. Hashish says:

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

  12. dkuznets says:

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

  13. 21h says:

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

  14. dkuznets says:

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

  15. 21h says:

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

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

  16. chubik says:

    Здравствуйте! Пытаюсь связать два модуля 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;
    };

  17. 21h says:

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

  18. Petr says:

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

Leave a Reply

Your email address will not be published. Required fields are marked *

*

Комментарии

  • 21h: нене ) без меня )
  • Серегй: Не совсем грабить)) если грабить можно и без рации, есть...
  • 21h: магазин грабить собрались? ) не, тут я не помощник ;)
  • Серегй: А что бы мне поймать чужую волну, что мне для этого нужно...
  • 21h: слушать никто не запрещает. нет закона, который запрещает...
  • Серегй: Я хотел узнать могу ли я просто прийти с данной рацией baofeng...
  • 21h: У меня есть только эти 2. По другим ничего не знаю. В интернете...

© Vladimir Smagin, 2005-2017. Копирование материалов без разрешения запрещено.
Яндекс.Метрика