Подскажите схему бортового компьютера на дисплее Nokia 3310
Подскажите схему простого авто БК (температура, обороты,напряжение, топливо). Перерыл много схем, но почти везде индикация идет на 2х строчные дисплеи типа HD44780, что огорчает. Стоят они дорого (у нас в городе пендосские аналоги от 300 руб.), да информации много не улезет. От 3310 дисплей стоит порядка 50-100 рублей да и смотрится получше. Спасибо
Что в цивилизованном мире называют "устаревшие технологии", в России зовется "технологии, проверенные временем"
- Реклама
Можно попробовать найти исходники и подправить на нужный дисплей, все библиотеки в принципе есть.
я ведь в МК полный ноль... опять же кого то просить придется
Что в цивилизованном мире называют "устаревшие технологии", в России зовется "технологии, проверенные временем"
О! то что доктор прописал! Вот только с регистрацией у них беда... То ли статьи пиши, то ли покупай из киты.. эх, но за наводку спасибо!gfgeuf писал(а):Этот потянете?
отпадает нытье) нашел дубль сабжа http://redram.com.ua/sam/top.html
Что в цивилизованном мире называют "устаревшие технологии", в России зовется "технологии, проверенные временем"
- Реклама
набросал схемку в протеусе. Что то не показывает ничего. В протеусе работаю первый раз. Гляньте, кому не сложно, в чем косяк?
В архиве библиотеки экрана 1100, схема и проект протеуса
В архиве библиотеки экрана 1100, схема и проект протеуса
- Вложения
-
- BK.rar
- (454.34 КБ) 434 скачивания
Что в цивилизованном мире называют "устаревшие технологии", в России зовется "технологии, проверенные временем"
Наверное в место кнопки стоит джойстик

Спойлер

Лечу лечить WWWашу покалеченную технику.
Все возможно) автор об этом умолчал))
Что в цивилизованном мире называют "устаревшие технологии", в России зовется "технологии, проверенные временем"
- Сообщения: 312
- Зарегистрирован: Вс июл 29, 2012 16:25:39
Свой первый БК, вернее целый "комплекс", делал именно на HD44780. Достаточно туда влезает информации.Ромыч писал(а):Перерыл много схем, но почти везде индикация идет на 2х строчные дисплеи типа HD44780, что огорчает...... да информации много не улезет.
Учитывая, что мой БК был и самим БК и был посредником между магнитолой и плеером
Мне экран от 3310 не понравилсяРомыч писал(а):От 3310 дисплей стоит порядка 50-100 рублей да и смотрится получше. Спасибо
Сейчас как раз делаю для себя новый БК-комплекс, но с экраном от 6100. Стоит у нас он 90-10 рублей, зато цветной и с подсветкой. Только проводки припаять сложно.
- Сообщения: 312
- Зарегистрирован: Вс июл 29, 2012 16:25:39
Насчет протеуса не скажу. А вот по схеме есть ошибки.Ромыч писал(а):набросал схемку в протеусе. ....Гляньте, кому не сложно, в чем косяк?
* Зачем PB4 (MISO) подключил на +5? Не понятен сам смысл такого, и как ты будешь программировать Атмелку?
* Зачем AREF соединен с AVCC? Если хочешь в качестве опоры использовать +5 - это можно в настройках АЦП выставить. А вот как теперь использовать встроенный ИОН?
* PC0 вот так к датчику в баке нельзя. Угробишь Атмелку.. да и всё остальное тоже.
Датчик в баке выдает напряжение от 0 до +12. И эти +12 через резистор пойдут на +5 схемы и прямо на ножку Атмелки.
Ставь делитель, аналогичный замеру напряжения на PC1
Хотя номиналы резисторов у PC1 просто зверские
* Сигнал от подсветки приборки я бы завел тоже на вход АЦП. У меня в машине был регулятор подсветки, и я пропорционально регулировал подсветку индикатора
* Ёмкости у кнопок, имхо, не нужны.
Так все же 3310 или 1100?Ромыч писал(а):В архиве библиотеки экрана 1100, схема и проект протеуса
- Сообщения: 3695
- Зарегистрирован: Пн авг 29, 2011 10:35:30
- Откуда: Україна Дикий Захід - Чортків - Джурин
просто топикстартер зачал тему с 3310 мну предложило ему схему с 1100 человек просто хочет проверить работоспособность ..
всё дело в индикаторах - я так понимаю , что и 3310 и 1100 у Ромыча в городе продаются без проблем и дешевле Winstar-овских ...
всё дело в индикаторах - я так понимаю , что и 3310 и 1100 у Ромыча в городе продаются без проблем и дешевле Winstar-овских ...
пути ТОКА неисповедимы.
Злословец есть самый лютый из диких зверей,
а льстец - самый опасный из ручных животных. (ДИОГЕН)
Злословец есть самый лютый из диких зверей,
а льстец - самый опасный из ручных животных. (ДИОГЕН)
насчет ошибок схемы косяк не мой... не я автор. у нас, в Уфе, действительно проще купить экран 3310 за 80 или 1110 за 68рублей, чем 16х2 за 350р... а у люмпинов и вообще рабочую нокию рублей за 50-100. Решил пойти немного дальше. Товарищ с схем.нет выложил схемку для 3310, сейчас со своими минимальными познаниями в радиостроительстве пытаюсь прикрутить индикацию температуры двигателя. В программной части разберусь как нибудь (ибо сам программист, си-подобные языки они и в африке си-подобные), а вот с элементарной базой будут проблемы...
- Вложения
-
- Безымянный.JPG
- (204.98 КБ) 760 скачиваний
Что в цивилизованном мире называют "устаревшие технологии", в России зовется "технологии, проверенные временем"
- Сообщения: 312
- Зарегистрирован: Вс июл 29, 2012 16:25:39
Схемка в плане LCD малость плохая опятьРомыч писал(а):Товарищ с схем.нет выложил схемку для 3310, сейчас со своими минимальными познаниями в радиостроительстве пытаюсь прикрутить индикацию температуры двигателя. В программной части разберусь как нибудь (ибо сам программист, си-подобные языки они и в африке си-подобные), а вот с элементарной базой будут проблемы...
Для питания LCD надо +3.3. Ставить три диода, и надеяться что они дадут нужный падёж вольтов - как-то рискованно.
И по входным цепям: LCD питается от +3.3 и думает, что и по входу уровень "1" тоже будет не больше +3.3
Есть шансы, что LCD выживет.
Я облазил кучку форумов и накачал доков - у кого-то LCD по такой схеме жил, у кого-то сразу умер или чуть попозже. Ставь делители.
А с температурой. Можно воткнуться в CAN/LIN шину машинки и попробовать вытянуть температуру.
Можно подцепиться к датчику и мерять его напряжение через АЦП.
А можно поставить свой термометр (и даже не один) и получать готовую температуру. Почитай про DS1820 - всего три провода и у тебя точная температура. А то и всего два провода, а в машине можно и всего один попробовать...
На схеме мой опытный метео-модуль с LCD от 3310. Меряет температуру (DS1820), давление (MPX4115) и влажность (HIH4000). Ну и LCD от 3310, правда без подсветки - я учился с экраном работать, а с подсветкой проблем бы не было.
- Вложения
-
- 3310.JPG
- (149.52 КБ) 644 скачивания
ну экран я все таки планирую в будущем поменять на 1110, сказывается лень (хорошую подсветку мутить лень, был одноразовый опыт работы с этим дисплеем). Машинка у меня ваз, 97 года. CAN/LIN она даже не слышала, ибо карбюратор) поговорив с умными людьми, сделал вывод, что снимать показания со штатного вазовского датчика смысла нет - надо править прошивку под конкретный датчик и писать отдельный алгоритм для вычисления градусов (если делать по уму). Вот и думаю сейчас набодяжить на DS18b20. DS1820 у нас в магазинах нетmas123 писал(а):
А с температурой. Можно воткнуться в CAN/LIN шину машинки и попробовать вытянуть температуру.
Можно подцепиться к датчику и мерять его напряжение через АЦП.
А можно поставить свой термометр (и даже не один) и получать готовую температуру. Почитай про DS1820 - всего три провода и у тебя точная температура. А то и всего два провода, а в машине можно и всего один попробовать...
На схеме мой опытный метео-модуль с LCD от 3310. Меряет температуру (DS1820), давление (MPX4115) и влажность (HIH4000). Ну и LCD от 3310, правда без подсветки - я учился с экраном работать, а с подсветкой проблем бы не было.
Что в цивилизованном мире называют "устаревшие технологии", в России зовется "технологии, проверенные временем"
подскажите плиз, кто силен в программировании аврок
пытаюсь снять показания с датчика:
вот так вывожу на экран:
а тут идет считывание и подсчет:
и не работает. подцепил на АДС2
пытаюсь снять показания с датчика:
вот так вывожу на экран:
Код: Выделить всё
w1_search(0xf0,ds18b20_rom_codes);;
temp_lcd();
(VKL_GAB)? (pwm_value=light_level_night):(pwm_value=light_level_day);
delay_ms(50);
а тут идет считывание и подсчет:
Код: Выделить всё
void temp_lcd(void){
#asm("wdr")
result_temp=ds18b20_temperature(&ds18b20_rom_codes[0][0]);
if (result_temp>10000){temp=0x10000-result_temp;flag_minus=1;}
result_temp>>=3; //обязательно
decbin_ds(result_temp);
LcdDrawFont2(buffer[1],25);
LcdDrawFont2(buffer[2],38);
LcdDrawFont2(buffer[3],60);
}
Что в цивилизованном мире называют "устаревшие технологии", в России зовется "технологии, проверенные временем"
- Сообщения: 312
- Зарегистрирован: Вс июл 29, 2012 16:25:39
Кстати, а что умеет экран от 1110 и как у него с подключением проводочков?Ромыч писал(а):ну экран я все таки планирую в будущем поменять на 1110, сказывается лень (хорошую подсветку мутить лень, был одноразовый опыт работы с этим дисплеем).
А то я подсел на экран от 6100, все бы супер: 130х130 точек, цветной, подвсетка в комплекте.
Вот тока плохо что подсветка 6...7 вольт надо, но фигня - собрал на транзюке и дросселе "повышалку".
А вот разъём для подключения... Пришлось покупать хорошие "очки-увеличивалки", но и с ними запинговался паять.
Ты хочешь температуру с какой точностью выводить-то?Ромыч писал(а):Машинка у меня ваз, 97 года. ...сделал вывод, что снимать показания со штатного вазовского датчика смысла нет - надо править прошивку под конкретный датчик и писать отдельный алгоритм для вычисления градусов (если делать по уму).
Я цеплялся к датчику уровня топлива в баке и "калибровал" его через приборку.
Вместо датчика взял переменный резистор, подавал на приборку от 0 до +12 и смотрел сколько показывает стрелка и какое при это напряжение. Т.е. поймал примерно точки "0", "1/4", "1/2", "3/4" и "полный".
Расход топлива считал по открытию форсунки, а потом сравнивал сколько топлива прошло по расходомеру и на сколько уменьшилось в баке. Данные совпадали с достаточной для меня погрешностью.
Просто 1820 уже не купить - снята с производства. Все рекомендуют 18S20, типа совместима с 1820 и ты-пы. А для 18B20 нужно код править.Ромыч писал(а):Вот и думаю сейчас набодяжить на DS18b20. DS1820 у нас в магазинах нет
- Сообщения: 312
- Зарегистрирован: Вс июл 29, 2012 16:25:39
Эм.... в подвале, в дальнем углу смотрел? Если там лежит картошка, то не будет работатьРомыч писал(а):а тут идет считывание и подсчет:
и не работает. подцепил на АДС2Код: Выделить всё
void temp_lcd(void){ #asm("wdr") result_temp=ds18b20_temperature(&ds18b20_rom_codes[0][0]); if (result_temp>10000){temp=0x10000-result_temp;flag_minus=1;}
Короче говоря, данных недостаточно, а телепаты в отпуске
Как именно не работает? не выводит, не меряет, не так меряет?
Не знаю, что у тебя накручено в функции ds18b20_temperature, но попробую предположить...
А в переменную ds18b20_rom_codes[0][0] ты записал адрес термометра? (который нужно ещё прочитать из самого термометра).
Давай подробности
А, ну а резистор то с ноги Data на +5 подцепил? Без него не будет работать.
можно при желании, да и разрешение поболее, чем у 3310Кстати, а что умеет экран от 1110 и как у него с подключением проводочков?
пока не разбирался, но есть библиотеки для протеуса и рабочие примеры)) разобраться
ну до десятых долей точно не надо))Ты хочешь температуру с какой точностью выводить-то?А датчики ты меняешь каждый день?
для 18b20 я руководствовался примером из кодвижинаПросто 1820 уже не купить - снята с производства. Все рекомендуют 18S20, типа совместима с 1820 и ты-пы. А для 18B20 нужно код править.
вот кусок из него (почти полный, поудалял все, что касается вывода на экранчик)
Спойлер
Код: Выделить всё
#asm
.equ __w1_port=0x1b
.equ __w1_bit=6
#endasm
#asm
.equ __lcd_port=0x15
#endasm
#include <lcd.h> // LCD driver routines
#include <ds18b20.h>
#include <delay.h>
#include <stdio.h>
char lcd_buffer[33];
/* maximum number of DS18B20 connected to the 1 Wire bus */
#define MAX_DEVICES 8
/* DS18B20 devices ROM code storage area */
unsigned char rom_code[MAX_DEVICES][9];
main()
{
unsigned char i,j,devices;
devices=w1_search(0xf0,rom_code);
sprintf(lcd_buffer,"%u DS18B20\nDevice detected",devices);
lcd_puts(lcd_buffer);
delay_ms(2000);
/* display the ROM codes for each device */
if (devices)
{
for (i=0;i<devices;i++)
{
sprintf(lcd_buffer,"Device #%u ROM\nCode is:",i+1);
lcd_clear();
lcd_puts(lcd_buffer);
delay_ms(2000);
lcd_clear();
for (j=0;j<8;j++)
{
sprintf(lcd_buffer,"%02X ",rom_code[i][j]);
lcd_puts(lcd_buffer);
if (j==3) lcd_gotoxy(0,1);
};
delay_ms(5000);
};
}
else
while (1); /* stop here if no devices were found */
/* configure each DS18B20 device for 12 bit temperature
measurement resolution */
for (i=0;i<devices;)
if (!ds18b20_init(&rom_code[i++][0],20,30,DS18B20_12BIT_RES))
{
sprintf(lcd_buffer,"Init error for\ndevice #%u",i);
lcd_clear();
lcd_puts(lcd_buffer);
while (1); /* stop here if init error */
};
/* measure and display the temperature(s) */
while (1)
{
j=1;
for (i=0;i<devices;i++)
{
sprintf(lcd_buffer,"t%u=%+.3f\xdfC",j++,ds18b20_temperature(&rom_code[i][0]));
lcd_clear();
lcd_puts(lcd_buffer);
delay_ms(500);
};
};
}
Что в цивилизованном мире называют "устаревшие технологии", в России зовется "технологии, проверенные временем"
канеш подцепил) 4к7, как в мануале) меряет непонятно что... выводит цифры 574 или 974. Откуда они берутся мне так и не удалось понять. Даже при отключеном датчике показываются. Могу скинуть весь проект, если требуется)mas123 писал(а): Короче говоря, данных недостаточно, а телепаты в отпуске
Как именно не работает? не выводит, не меряет, не так меряет?
Не знаю, что у тебя накручено в функции ds18b20_temperature, но попробую предположить...
А в переменную ds18b20_rom_codes[0][0] ты записал адрес термометра? (который нужно ещё прочитать из самого термометра).
Давай подробности
А, ну а резистор то с ноги Data на +5 подцепил? Без него не будет работать.
замена на 18s20 результата не дала.. так же в зависоне непонятное число...
пример пользования 18s20
Спойлер
Код: Выделить всё
/* Multipoint thermometer with LCD display
using the Dallas Semiconductor DS1820/18S20
1 Wire bus temperature sensors
CodeVisionAVR C Compiler
(C) 2000-2007 HP InfoTech S.R.L.
www.hpinfotech.ro
Chip: ATmega8515
Memory Model: SMALL
Data Stack Size: 128 bytes
PLEASE MAKE SURE THAT THE CKSEL0..3 FUSE
BITS ARE PROGRAMMED TO USE THE EXTERNAL
3.6864MHz CLOCK SOURCE OF THE STK500 AND NOT
THE INTERNAL 1MHz OSCILLATOR.
The ATmega8515 chip comes from the factory
with CKSEL0..3 fuse bits set to use the
internal 1 MHz oscillator.
The DS1820/18S20 sensors are connected to
bit 6 of PORTA of the ATmega8515 as follows:
[DS1820/18S20] [STK500 PORTA HEADER]
1 GND - 9 GND
2 DQ - 7 PA6
3 VDD - 10 +5V
All the temperature sensors must be connected
in parallel
AN 4.7k PULLUP RESISTOR MUST BE CONNECTED
BETWEEN DQ (PA6) AND +5V !
*/
#asm
.equ __w1_port=0x1b
.equ __w1_bit=6
#endasm
/* Use an 2x16 alphanumeric LCD connected
to PORTC as follows:
[LCD] [STK500 PORTC HEADER]
1 GND- 9 GND
2 +5V- 10 VCC
3 VLC- LCD contrast control voltage 0..1V
4 RS - 1 PC0
5 RD - 2 PC1
6 EN - 3 PC2
11 D4 - 5 PC4
12 D5 - 6 PC5
13 D6 - 7 PC6
14 D7 - 8 PC7
*/
#asm
.equ __lcd_port=0x15
#endasm
#include <lcd.h> // LCD driver routines
#include <ds1820.h>
#include <delay.h>
#include <stdio.h>
char lcd_buffer[33];
/* maximum number of DS1820/DS18S20 connected to the 1 Wire bus */
#define MAX_DEVICES 8
/* DS1820/DS18S20 devices ROM code storage area */
unsigned char rom_code[MAX_DEVICES][9];
main()
{
unsigned char i,j,devices;
int temp;
lcd_init(16);
lcd_putsf("CodeVisionAVR\n1 Wire Bus Demo");
delay_ms(2000);
lcd_clear();
/* detect how many DS1820/DS18S20 devices
are connected to the 1 Wire bus */
devices=w1_search(0xf0,rom_code);
sprintf(lcd_buffer,"%u DS1820\nDevice detected",devices);
lcd_puts(lcd_buffer);
delay_ms(2000);
/* display the ROM codes for each device */
if (devices)
{
for (i=0;i<devices;i++)
{
sprintf(lcd_buffer,"Device #%u ROM\nCode is:",i+1);
lcd_clear();
lcd_puts(lcd_buffer);
delay_ms(2000);
lcd_clear();
for (j=0;j<8;j++)
{
sprintf(lcd_buffer,"%02X ",rom_code[i][j]);
lcd_puts(lcd_buffer);
if (j==3) lcd_gotoxy(0,1);
};
delay_ms(5000);
};
}
else
while (1); /* stop here if no devices were found */
/* measure and display the temperature(s) */
while (1)
{
for (i=0;i<devices;)
{
temp=ds1820_temperature_10(&rom_code[i][0]);
j='+';
if (temp<0)
{
j='-';
temp=-temp;
};
sprintf(lcd_buffer,"t%u=%c%i.%u\xdfC",++i,j,temp/10,temp%10);
lcd_clear();
lcd_puts(lcd_buffer);
delay_ms(800);
};
};
}
Что в цивилизованном мире называют "устаревшие технологии", в России зовется "технологии, проверенные временем"
- Сообщения: 312
- Зарегистрирован: Вс июл 29, 2012 16:25:39
Ромыч писал(а):хотя мне кажется что неправильно функция ds1820_temperature_10(&rom_code[0]) работает... ведь даже при отключеном датчике она выдает зловещую цифру
Учитывая, что в обоих твоих примерах именно этой функции я и не вижу
Кароче, см. выше про телепатов и подвал с картошкой
Так, попробуй мой сорец. По крайней мере у меня работало
Проект собирал под ATmega16 / 4МГц.
Для работы в самом начале вызываешь init_1wire();
Для запуска замера температуры вызывай Ask_DS18B20();
Далее жди, пока Check_DS18B20() не вернет "1" или просто погоди секунду после запроса.
А после вызывай Read_DS18B20() и получишь знаковое целое температуры с десятками.


